千兆网络接口具有数据传输速率快、连接方便、可以即插即用的优点,使得其应用较为广泛。随着电子技术和处理器的发展,很多应用场合的数据通信速率超过千兆网口的实际传输速率。例如,在 A/D 采样中,需要直接存储 A/D 转换的采样数据,如果 A/D 转换位数为 16 位,工作在 100MHz,则实际数据量为 1.6Gbps。为了实现高速传输,必须采用更高传输速率的接口,例如 PCIe 或者 RapidIO 接口。但这些接口不具有即插即用功能,与很多工业既有设备不能直接连接,限制了其应用场合。
 
DSP(数字信号处理器)具有较高的工作频率,其内部集成硬件网络 MAC 接口,外接一个物理层芯片就可以方便地实现千兆网络通信。多核 DSP 芯片可以连接多个千兆网口,使得其可以应用到高速数据传输场合。本文介绍一种基于多核数字信号处理器 TMS320C6678 的嵌入式双千兆网络接口,实现单个芯片连接两个千兆网口,这两个网口可以各自独立传输数据,也可以联合传输数据,提高了实际的数据传输速率。
 
1C6678 及其结构
TMS320C6678 是 TI 公司多核处理器中的一款 8 核浮点型 DSP,每个核最高工作频率可达 1.25GHz,每个核可以提供 40GMAC 定点计算或者 20GFLOP 浮点计算能力,单个芯片可以提供 320GMAC 或者 160GFLOP 计算能力。TMS320C6678 的片内结构如图 1 所示。
 
TMS320C6678 的每个核具有 32KB 的程序、32KB 的数据以及 512KB 的 2 级 Cache 存储空间,芯片片内具有一个 4MB 的共享 SRAM。TMS320C6678 具有 DDR3 控制器接口,可以外接 DDR3,直接寻址范围达到 8GB。TMS320C6678 的片内外设有 RapidIO、PCIe、EMIF、SPI、I2C 总线等接口。这些接口通过片内的高速互联总线和各个处理器交互数据。
 
和网络相关的片内设备如图 1 右下角灰色模块所示,主要包括两个对外的 SGMII 接口、以太交换和网络交换模块,以及用于数据管理的安全加速器和包加速器,可以快速检测数据的校验以及协议是否遵循网络标准,对于错误的数据直接丢弃,降低 CPU 的负担。为了加快网络和 CPU 的数据交换,片内的队列管理器用于管理网络包或者网络帧的缓存、分发等功能。这些数据都采用数据包 DMA 读写,不需要 CPU 参与。
 
图 1TMS320C6678 内部结构图
 
TMS320C6678 的其他片内设备包括 PLL、仿真口、信号量、电源管理和复位管理等模块。其中 PLL 配置 CPU 和外设的工作时钟;仿真口用于连接仿真器,实现对软件运行的监控;信号量实现对 DSP/BIOS 操作系统中信号量的控制;电源管理实现整个芯片电流电压的控制;复位管理配置启动的方式,硬复位进行全启动,软复位进行部分启动。
 
288E1111 及其结构
网络物理层芯片很多,一般都兼容 MII、RMII 以及 SGMII 等接口标准之一或者多个。但 TMS320C6678 只提供了 SGMII 接口,所以和 TMS320C6678 连接的物理层芯片必须具有 SGMII 接口。本文使用两片 Marvell 公司的 88E1111 物理层芯片进行双千兆网络的连接。88E1111 的片内结构如图 2 所示。
 
图 288E1111 内部结构图
 
网络 RJ45 接口发送过来的带有调制数据的模拟信号经过 A/D 转换变成数字信号,然后依次经过均衡、整形滤波和译码后由接收单元传输到 MAC 芯片,实现数据的接收。MAC 发送的数据经过整形滤波后由 D/A 转换成模拟信号发送到 RJ45 接口。为了降低误码率,88E1111 内部具有锁相环(PLL)、自动增益控制(AGC)、时序 / 相位控制、回音抵消等模块,这些模块都是为了提高数据传输的可靠性,在不同环境或者不同外接设备下,都可以高速可靠地通信。图 2 中的 LED 控制模块实现数据传输时的灯光显示,MDIO 模块实现链接建立和状态监测,时钟模块提供工作时钟。
 
3 硬件设计
硬件设计主要包括 TMS320C6678 和两个 88E1111 的接口、88E1111 和 RJ45 的接口、88E1111 的硬件配置设计等几个部分。
 
TMS320C6678 的网络模块结构如图 3 所示。片内集成了一个 3 口的以太交换机,负责将两个千兆网口的数据交换到主机,同时提供交换中断到主机,主机通过中断可以实时接收和发送数据。主机通过总线配置或者监控外部的物理层芯片,配置和监控数据通过 MDIO 接口连接到物理层芯片。
 
图 3TMS320C6678 网络模块结构
 
图 4TMS320C6678 和 88E1111 的接口 TMS320C6678 和两片 88E1111 的接口电路如图 4 所示。TMS320C6678 采用 SGMII(SerialGigabitMediaIndependenTInterface)接口,兼容 10/100/1000M 工作方式。SGMII 为串行数据收发方式,具有较少的引脚连接。从图 4 中可以看出,实际上只有两对收发的差分线,分别连接到对应的 88E1111 引脚上。读写时钟隐含在数据上传输,由硬件自动识别,无须软件参与。
 
图 4TMS320C6678 和 88E1111 的接口
 
MDIO 和 MDCLK 为 TMS320C6678 内部 MDIO 模块的数据和时钟,用于 TMS320C6678 和 88E1111 建立连接,TMS320C6678 可以通过该接口配置 88E1111,或者读取 88E1111 的信息。由于 88E1111 的 MDIO 模块接口电平为 2.5V,而 TMS320C6678 的 MDIO 模块接口电平采用 1.8V 电压,所以两者之间需要增加电压转换芯片,本设计采用 PCA9306 实现电压转换,接口电路如图 5 所示。
 
图 5MDIO 接口的电压转换电路

 

 
需要注意的是,由于存在两个 88E111 芯片,MDIO 和 MDCLK 引脚直接连接到两个芯片上,MDIO 可以最多控制 32 个物理层芯片,物理层芯片地址分别为 1~32。88E1111 的地址配置如图 6 所示。
 
图 688E1111 的硬件配置
 
表 1 为对应的配置信息,根据图 6 和表 1,可以看出 88E111 的地址分别为 4 和 8。
 
表 1 配置引脚设置
 
4 软件设计
系统软件设计包括硬件初始化、网络配置以及数据通信流程等。TMS320C6678 复位后的工作流程如图 7 所示。首先配置第一个网口,记录其状态后配置第二个网口。只要两个网口有一个配置成功,将配置 TMS320C6678 的 EMAC 模块,为成功配置的网口设置收发缓冲和收发任务。这些配置好后,就可以实现网络的数据收发。需要注意的是,在用户应用程序中,需要考虑到网口配置失败的情况。例如,用户应用程序通过双网口实时传输 1.2Gbps 的数据,如果一个网口配置失败,则应用程序应有相应的机制将实时传输速率降低到 0.8Gbps 以下(单网口实际传输速率可能低于 0.8Gbps)。本文硬件系统在没有其他任务开销情况下,实测可以传输 1.5Gbps 的数据(传输过程中不考虑错误,不进行重发)。
 
图 7 数据通信流程
 
结语
超过 1Gbps 传输速率的通信接口一般采用光纤、PCE、PCIe 等接口方式。本文采用双网口方式可以降低设备要求,和既有设备方便连接。使用多核 DSP 提高处理器工作能力,在保证大容量数据传输过程中,处理器仍然具有对数据的计算能力。双网口设计方案可以弥补单网口的传输速率不足,又可以降低其他接口的硬件复杂度,是介于两者之间的有益补充。在嵌入式设备中具有一定的应用价值。