千兆网络接口具有数据传输速率快、连接方便、可以即插即用的优点,使得其应用较为广泛。随着电子技术和处理器的发展,很多应用场合的数据通信速率超过千兆网口的实际传输速率。例如,在A/D采样中,需要直接存储A/D转换的采样数据,如果A/D转换位数为16位,工作在100MHz,则实际数据量为1.6Gbps。为了实现高速传输,必须采用更高传输速率的接口,例如PCIe或者RapidIO接口。但这些接口不具有即插即用功能,与很多工业既有设备不能直接连接,限制了其应用场合。

  DSP(数字信号处理器)具有较高的工作频率,其内部集成硬件网络MAC接口,外接一个物理层芯片就可以方便地实现千兆网络通信。多核DSP芯片可以连接多个千兆网口,使得其可以应用到高速数据传输场合。本文介绍一种基于多核数字信号处理器TMS320C6678的嵌入式双千兆网络接口,实现单个芯片连接两个千兆网口,这两个网口可以各自独立传输数据,也可以联合传输数据,提高了实际的数据传输速率。

  1. C6678及其结构

  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、I2 C总线等接口。这些接口通过片内的高速互联总线和各个处理器交互数据。

  和网络相关的片内设备如图1右下角灰色模块所示,主要包括两个对外的SGMII接口、以太交换和网络交换模块,以及用于数据管理的安全加速器和包加速器,可以快速检测数据的校验以及协议是否遵循网络标准,对于错误的数据直接丢弃,降低CPU 的负担。为了加快网络和CPU的数据交换,片内的队列管理器用于管理网络包或者网络帧的缓存、分发等功能。这些数据都采用数据包DMA读写,不需要CPU参与。

  

  图1 TMS320C6678内部结构图

  TMS320C6678的其他片内设备包括PLL、仿真口、信号量、电源管理和复位管理等模块。其中PLL配置CPU和外设的工作时钟;仿真口用于连接仿真器,实现对软件运行的监控;信号量实现对DSP/BIOS操作系统中信号量的控制;电源管理实现整个芯片电流电压的控制;复位管理配置启动的方式,硬复位进行全启动,软复位进行部分启动。

  2. 88E1111及其结构

  网络物理层芯片很多,一般都兼容MII、RMII以及SGMII等接口标准之一或者多个。但TMS320C6678只提供了SGMII接口,所以和TMS320C6678连接的物理层芯片必须具有SGMII接口。本文使用两片Marvell公司的88E1111 物理层芯片进行双千兆网络的连接。88E1111的片内结构如图2所示。

  

  图2 88E1111内部结构图

  网络RJ45接口发送过来的带有调制数据的模拟信号经过A/D转换变成数字信号,然后依次经过均衡、整形滤波和译码后由接收单元传输到MAC芯片,实现数据的接收。MAC发送的数据经过整形滤波后由D/A转换成模拟信号发送到RJ45接口。为了降低误码率,88E1111内部具有锁相环(PLL)、自动增益控制(AGC)、时序/相位控制、回音抵消等模块,这些模块都是为了提高数据传输的可靠性,在不同环境或者不同外接设备下,都可以高速可靠地通信。图2中的LED控制模块实现数据传输时的灯光显示,MDIO模块实现链接建立和状态监测,时钟模块提供工作时钟。

  3. 硬件设计

  硬件设计主要包括TMS320C6678和两个88E1111的接口、88E1111和RJ45的接口、88E1111的硬件配置设计等几个部分。

  TMS320C6678的网络模块结构如图3所示。片内集成了一个3口的以太交换机,负责将两个千兆网口的数据交换到主机,同时提供交换中断到主机,主机通过中断可以实时接收和发送数据。主机通过总线配置或者监控外部的物理层芯片,配置和监控数据通过MDIO接口连接到物理层芯片。

  

  图3 TMS320C6678网络模块结构

  图4 TMS320C6678和88E1111的接口TMS320C6678和两片88E1111的接口电路如图4所示。TMS320C6678 采用SGMII(Serial Gigabit Media Independent Interface)接口,兼容10/100/1000M 工作方式。SGMII为串行数据收发方式,具有较少的引脚连接。从图4中可以看出,实际上只有两对收发的差分线,分别连接到对应的88E1111引脚上。读写时钟隐含在数据上传输,由硬件自动识别,无须软件参与。

  

  图4 TMS320C6678和88E1111的接口

  MDIO和MDCLK 为TMS320C6678内部MDIO 模块的数据和时钟,用于TMS320C6678和88E1111建立连接,TMS320C6678可以通过该接口配置88E1111,或者读取88E1111的信息。由于88E1111的MDIO模块接口电平为2.5V,而TMS320C6678的MDIO模块接口电平采用1.8V电压,所以两者之间需要增加电压转换芯片,本设计采用PCA9306实现电压转换,接口电路如图5所示。

  

  图5 MDIO接口的电压转换电路

  需要注意的是,由于存在两个88E111芯片,MDIO和MDCLK引脚直接连接到两个芯片上,MDIO可以最多控制32个物理层芯片,物理层芯片地址分别为1~32.88E1111的地址配置如图6所示。

  

  图6 88E1111的硬件配置

  表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提高处理器工作能力,在保证大容量数据传输过程中,处理器仍然具有对数据的计算能力。双网口设计方案可以弥补单网口的传输速率不足,又可以降低其他接口的硬件复杂度,是介于两者之间的有益补充。在嵌入式设备中具有一定的应用价值。

北京太速科技有限公司

基于双TMS320C6678+双XC6VSX315T的6U VPX高速数据处理平台

 

一、板卡概述

  板卡由我公司自主研发,基于VPX架构,主体芯片为两片 TI DSP TMS320C6678,两片Virtex-6 XC6VSX315T-ff1156 FPGA,1个RapidIO Switch。FPGA连接FMC子卡。FPGA片外挂接2簇32bit DDRIII SDRAM,最大容量支持2GB。每片FPGA还通过EMIF总线连接一片TMS320C6678型8核心DSP。所有信号处理FPGA与DSP均通过SRIO 4X连接板上一片8端口SRIO 4X交换芯片。DSP芯片外挂最大容量支持2GB的DDRIII SDRAM。两片DSP之间通过HyperLink进行高速直接互联。两片FPGA之间通过8X GTX以及若干LVDS信号互联。
  
可用于软件无线电系统,基带信号处理,无线仿真平台,高速图像采集、处理等。支持热插拔,设计芯片可以满足工业级要求。

二、处理板技术指标

  1. SRIO 4X交换网络连接两片DSP以及两片Virtex-6 FPGA
  2. SRIO 4X交换网络连接4组SRIO 4X至VPX P1;
  3. 具备一个SRIO 4X交换芯片;
  4. 具备高速RocketIO数据传输链路;
  5. 具备I2C接口,实现系统功耗、状态管理;
  6. 可以接入VPX P0参考时钟进行工作;
  7. 通过VPX P0接口定义板卡编号GA[5:0],并设置网络MAC,DSP 网络均可配置交换功能。
  8. 提供2个FMC子卡接口,每个FMC子卡接口与一片Virtex-6 XC6VSX315T FPGA连接;
  9. 支持热插拔,工业级设计。

    FPGA芯片

  1. 具备2片FPGA Virtex-6 XC6VSX315T;
  2. 两片Virtex-6 FPGA直接通过40bit LVDS以及8X GTX互联
  3. 每片Virtex-6 FPGA与一片DSP连接EMIF总线与中断资源
  4. 每片Virtex-6 FPGA对VPX连接28bit LVDS
  5. 每片Virtex-6 FPGA对VPX连接12bit LVCMOS-18
  6. 每片Virtex-6 FPGA对VPX连接8X GTX
  7. 每片Virtex-6 FPGA通过60bit LVDS连接一个FMC-HPC子卡接口
  8. 每片Virtex-6 FPGA外挂两簇32bit最高1GB DDRIII SDRAM
  9. 每片Virtex-6 FPGA外挂一片NOR FLASH用于BPI模式加载
  10. 每片Virtex-6 FPGA对外挂一片SPI接口FRAM

DSP芯片

  1. 内建两片TI DSP TMS320C6678型8核心DSP芯片;
  2. 两片DSP通过片内千兆以太网交换网络互联;
  3. 一片DSP的千兆以太网1000 BASE-T连接至板端RJ45;
  4. 一片DSP的千兆以太网1000 BASE-T连接至VPX P2;

、软件系统
   1) 支持PCIe驱动。

   2) 支持千兆网络传输,移植LWIP协议栈,支持ping,TCP、UDP、IP传输协议。
   3) 支持Flash 、PCI
Boot引导方式。
   4) 支持RapidIO X4 EDMA 中断 数据传输。
   5) FPGA 完整的
DDR2控制、网络数据收发传输。
   6) FPGA Rocket 光纤数据传输测试程序。
   7) DSP与FPGA的RapidIO口
EDMA,同步中断传输,满足理论速度10Gbps。
   8) 支持FPGA程序采用 Flash、DSP引导加载。

、子卡配用:

 
子卡类别
板卡名称
板卡标识码
AD/DA子卡
FMC125-基于FMC接口的两路125Msps AD,两路160Msps DA子卡模块 06ADDA000125
FMC145-四路16位125Msps AD FMC子卡模块 06ADDA000145
FMC150-基于FMC接口的2路250Msps AD、2路800Msps DA FMC接口子卡模块 06ADDA000150
FMC141-4路 250Msps/16bits ADC, FMC板卡 06ADDA000141
FMC144-八路14位250MSPS AD FMC-HPC模拟数字转换器板 06ADDA000144
FMC160-两路14位400Msps AD,两路16位1.2Gsps DA FMC子卡模块 06ADDA000160
FMC209-基于FMC的4路125MAD输入、2路1GDA输出子卡 06ADDA000209
FMC210-1路1Gsps AD、2路2.5Gsps DA的FMC子卡 06ADDA000210
图像子卡
基于FMC接口的2路CameraLink输入子卡模块 06CamLink088
基于FMC接口的2路CameraLink输出子卡模块 06CamLink095
基于FMC的8路光纤SFP的子卡模块 06FMCSFP0154
基于FMC的2路万兆光纤SFP+子卡模块 06XFP000165
基于FMC接口的8路LVDS输入 1路DVI输出子卡
06DVILVDS0215
基于FMC接口的1路full Camera Link输入 1路HDMI(DVI)输出子卡
06CamLink216
DSP子卡
基于FMC接口的TI DSP TMS320C6455子卡模块 06TI6455099
基于FMC接口的TI DSP TMS320C6748子卡模块 06C67480162

、物理特性:
   尺寸:6U
CPCI板卡,大小为160X233.35mm。
   工作温度:0℃~ +55℃ ,支持工业级 -40℃~ +85℃
  
工作湿度:10%~80%

六、供电要求:
   双直流电源供电。整板功耗 50W。
   电压:+5V 5A
,+3.3V 6A。
   纹波:≤10%

七、应用领域
  软件无线电系统,基带信号处理,无线仿真平台,高速图像采集、处理等。

 

北京太速科技有限公司
在线客服:QQ:448468544
公司网站:www.orihard.com
联系电话:15084122580

欢迎关注 北京太速科技 微信公众号 啊智能时代

八核浮点型DSP的双千兆网接口设计方案的更多相关文章

  1. C#:使用UPnP来穿透NAT使内网接口对外网可见

    在写完Object 672后,软件的一个致命问题暴露出来,如果服务器和客户端都在内网环境下,即双方都通过NAT来接触外网,那么此时客户端是无法直接和服务器交流的. 解决方案可以是: 1:把服务器部署在 ...

  2. dubbo调用外网接口 注册外网ip到zookeeper 暴露外网ip

    dubbo注册时会通过主机名寻找ip,会将内网ip注册到zookeeper 如果我们调用外网服务器server的话是找不到的 会报如下错误 [DUBBO] client reconnect to 12 ...

  3. PHP 调用请求外网接口

    1.类中定义静态方法 class FtpService{ /** * 请求外网 * @param $url 外网接口url * @param bool $params 参数,拼接字符串 post请求可 ...

  4. 快递api网接口快递调用方法

    ----------------实体类 [DataContract] public class SyncResponseEntity { public SyncResponseEntity() { } ...

  5. 中国天气网接口返回json格式分析及接口(XML、图片接口)说明

    实时天气: city        "北京"//城市 cityid      "101010100"//城市编码 temp        "17&qu ...

  6. 一个用httpPost,get访问外网接口,参数json,返回json的示例

    package com.royal.util; import java.io.BufferedReader;import java.io.DataInputStream;import java.io. ...

  7. Altera三速以太网IP核使用(下篇)--- 百兆网接口设计与使用

    MAC IP核的主要作用是:实现数据链路层协议,分为TX方向与RX方向,TX方向实现的是在原包文的前面加上7个55和1个D5,RX方向则相反.在使用这个 MAC IP核之前,首先确认下自己使用的网卡是 ...

  8. C#后台调用Http外网接口(GET, POST)

    1.get方法调用接口获取json文件内容         public void GetFunction()        {            string serviceAddress =  ...

  9. 公司内网接口ip城市查询分析

    require 'rubygems' require 'json' print ARGV print "fist is :",ARGV[0] logfile="#{ARG ...

随机推荐

  1. __getattr__属性查找

    from datetime import date """ __getattr__ : 在查找不到对象的属性时调用 __getattribute__ : 在查找属性之前调 ...

  2. C# windows窗口应用程序切换主界面的显示内容

    不知道说清楚没有?就是我的窗口分为两部分,左边,控制部分,由一些按钮组成右边,显示部分,由些控件(如下拉,文本等等组成) 左边的每个按钮对应显示部分的页面,也就是说,左边换一个按钮点,那么右边就显示其 ...

  3. [CSP-S模拟测试]:砖块(模拟)

    题目描述 在一个二维网格平面上,一个网格的坐标由其左下角的点的坐标定义$(x,y)$.在一个二维网格平面上,一个网格的坐标由其左下角的个点的坐标定义$(0,0)$的区域中,此时存在高度为$k$的初始砖 ...

  4. 如何在微信小程序中使用iconfont

    开篇废话 开发过小程序的童鞋肯定都会遇到这样的问题,当我们在小程序中使用iconfont官方推荐的方法插入字体时,我们总会得到一个打印机(滑稽).那么如何在小程序中正确的使用iconfont呢? 一. ...

  5. selenium中get_cookies()和add_cookie()的用法

    在用selenium爬取网页的时候,有时候需要登陆,这时候用selenium获取cookie和携带cookie是很方便的,获取cookie可以通过内置的函数get_cookies(),它得到的是一组c ...

  6. 洛谷P2661 信息传递(最小环,并查集)

    洛谷P2661 信息传递 最小环求解采用并查集求最小环. 只适用于本题的情况.对于新加可以使得两个子树合并的边,总有其中一点为其中一棵子树的根. 复杂度 \(O(n)\) . #include< ...

  7. thinkphp 级联菜单实现

    养殖场->栋舍级联菜单 //获取默认养殖场和栋舍信息 public function sbjr(){ $yzc_model=M("Yzc"); $list = $yzc_mo ...

  8. ubuntu 16.4下hadoop配置伪分布式时出现的坑

    在ubuntu16.4下spark的单机/伪分布式配置我在此就不在一一赘述,详情请点击如下连接: Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 我出现问题是 ...

  9. springboot异步任务、定时任务

    打开浏览器 http://localhost:8080/hello ,连续刷新可以看到不会 等待 3秒时间了,pom.xml controller service 代码如下. -----------S ...

  10. JavaScript DoublyLinkedList

    function DoublyLinkedList() { var Node = function(element) { this.element = element; this.next = nul ...