




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多核DSP和FPGA之间的高速SRIO通信汪安民;韩道文;徐焱【摘要】在高速采样系统中,大量数据需要实时传输到处理器.尤其是系统中存在多个处理器协同工作,就需要高速的总线来交换数据.SRIO总线由于存在连线少、传输速度高等优点,使用较为广泛.本文介绍了多核DSP和FPGA之间使用SRIO进行数据交换的软硬件设计方法,在不同数据需求下,介绍了FPGA将数据直接传输到DSP的DDR3、片内RAM或者多核的共享RAM中.本文研制了硬件系统,给出了各种方式的软件操作方法和实际硬件平台验证,SRIO传输速率达到4Gbps.%Highspeeddatacommunicationbetweenthedifferentprocessorsisneededinthehighsamplingsystem.TheSRIObusisusedwidelybecauseit'shighefficiencyandlowlatency.Inthispaper,thedesignmethodofSRIObusbetweenFPGAandDSPisstudied.ThedatatranslationisrealizedfromFPGAtoDDR3,sharedRAMorprivateRAMofDSP.Inthispaper,thehardwaresystemisdeveloped,andtheoperationmethodofthesoftwareandtheverificationoftheactualhardwareplatformaregiven.Theresultofdatathroughputisupto4GbpsbytheSRIObusintherealsystem.【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2017(017)002【总页数】4页(P4-6,22)【关键词】多核处理器;SRIO;共享RAM【作者】汪安民;韩道文;徐焱【作者单位】同方电子科技有限公司研究所,九江332009;电子工程学院;哈尔滨工业大学【正文语种】中文【中图分类】TP336大规模集成电路的高速发展,使得处理器的能力越来越强,进而处理的事件增多;大数据的应用,使得高速宽带采样成为必然,高速采样每秒采集到的信息量远远大于低速采样。高速采集、高速存储和高速处理成为发展的必然。这其中,高速传输通道是芯片间的数据桥梁,一般要求10Gbps以上的处理速度,实时传输至少要达到几Gbps。在设备之间,采用万兆网、USB3.0、光纤通信等;在板间,采用PCIe、VPX等;而在芯片间,采用SRIO(也称RapidIO)总线是常用方法。多核处理器片内集成多个处理器,目前得到大规模使用;同时多核处理器的强处理能力,也丰富了产品的功能。为了支撑功能使用,一般多核处理器都会配置大容量DDR2或DDR3,运行程序和存储数据,还配置共享RAM空间用于多个核之间的通信,每个核还有自己的私有RAM。一旦其他芯片和多核处理器进行数据交互,可能会和这3个RAM空间进行高速通信。传统的单处理器交换一定需要CPU参与,CPU读取数据,然后存储到芯片的DDR、片内RAM或者片外Flash空间。但这样,每个数据交互都需要CPU参与,严重影响了运行效益。而多核处理器,数据交互远比单核处理器频繁,而且要求交互速率也非常高,这就需要数据总线直接进行交互,而不用CPU参与[2]。本文以8核DSP芯片TMS320C6678(以下简称C6678)和xck7325t芯片为例,通过4线SRIO实现FPGA将数据直接传输到DSP的DDR3、共享片内RAM的方法。笔者给出了软硬件设计方法,研究了硬件平台,实际数据传输验证,该方法可以实现4Gbps的高速传输。C6678是TI公司多核处理器中的一款8核浮点型DSP,最高工作频率达到1.25GHz,单个核具备40GMAC定点计算或20GFLOP浮点计算能力,单芯片具备320GMAC或160GFLOP的计算能力[3]。C6678的部分片内结构如图1所示。图1主要列出了C6678和RAM相关的片内模块,其他部分未列出。从图中可以看出,一个超高速的TeraNet(兆兆网络)总线将大部分模块连接在一起,数据通过TeraNet总线进行交互。核访问共享RAM(图中的MSMSRAM)的速度最快,它们之间不通过TeraNet,而是有专用的数据总线,不会和其他外设产生冲突,核访问共享RAM的速率大概在50Gbps。核访问DDR3的速度仅次于共享RAM,因为DDR3的数据需要通过共享RAM过渡,其读写访问速度有所差别,读速率至少可以达到10Gbps,写速率可以达到20Gbps。核访问其他片内和片外设备都要经过TeraNet,可能存在总线仲裁,但这些外设一般不会长时间占据TeraNet总线。本文关注的SRIO是直接挂在TeraNet总线上的,而C6678的DDR3控制器、共享RAM、512KB的二级Cache都是连接在TeraNet总线上,所以,SRIO可以直接和这3个RAM进行通信,但需要一定的时序控制,否则会造成RAM的互锁,增大仲裁开销,甚至程序死机。具体表现在:和DDR3进行通信。因为DDR3一般会运行主核程序,尤其是需要使用网络接口,TI提供的NDK程序代码很大,必须在DDR3中运行。这样程序运行的DDR3地址,SRIO不能盲目进行读写,尤其是写操作,此外如果SRIO和程序需要同时读某一地址,就会造成总线冲突。和共享RAM进行通信。共享RAM是用于多个核之间的数据交互,几个核对共享RAM的某个地址进行操作,一定需要一个控制权抢占,谁抢占到控制权谁就可以操作,其他核只能等待,这样就避免了多个核同时访问共享RAM的问题。如果SRIO对共享RAM进行操作,一定需要将SRIO加入核之间的控制权抢占以及释放。和每个核私有RAM进行通信。理论上,SRIO可以和每个核的L1数据空间、L1程序空间、L2空间进行通信。但一般程序会将L1的全部数据和程序空间、L2的部分空间定义为Cache,用于存储程序运行的中间结果,例如局部变量。程序在调试过程中的打印输出等也需要较大的堆栈来处理,这些堆栈空间都在私有RAM中由SYS/BIOS自动开辟。如果SRIO将数据写入到这些空间,将很可能造成地址的同时读写,所以建议SRIO不对这些空间进行操作。FPGA和DSP的SRIO硬件连接如图2所示。SRIO总线由收发各4对差分线(一共16根线)组成。DSP的RIORXpO~3为4根收数据的正端,RIORXnO~3为一—对应的4根收数据的负端,它们和FPGA相应的8根发数据连接,形成一个FPGA发、DSP收的回路。另外8根线形成一个DSP发、FPGA收的回路。所以,在物理层,SRIO的收发是完全独立的,可以做到收发全双工。为了提高SRIO传输可靠性,在靠近收方的总线上,需要采用隔离电容,将信号直流隔掉,使得差分信号更加可靠。SRIO的时钟由各自的处理器单独设置,不要求DSP和FPGA共用SRIO时钟。SRIO的传输时钟是叠加在传输数据上的,由SRIO处理器从数据总线提取出时钟信号,用于数据位的对齐。这些处理工作,均由各自芯片的SRIO模块完成,不需要用户设置[4]。图2中,DSP夕卜挂了5片DDR3,每片DDR3为16位数据宽度,4片组成64位数据宽度,直接连接到DSP。第5片连接到DSP的数据校验位,每个64位的数据通过BCH编码生成一个8位的校验码同时存放到第5片DDR3中,DSP读取DDR3数据时,也同时把这个校验码读出,进行BCH译码。如果译码正确,则表示数据可靠,否则会尝试重读或多次失败后丢弃数据。此外BCH码具有一定的数据纠错能力,也可以提高DDR3数据的读写可靠性。经过实际验证,由DSP直接读速度达到10Gbps,写速度达到20Gbps。由于DSP有多个外设,这些外设需要一个基准时钟,这样就方便时序和同步控制,图中采用CDCM62005对输入的125MHz时钟进行分频,输出多路CLK信号,分别提供到SRIO、DDD3模块,以及DSP的运行主时钟。实际上还可以提供给DSP的网络模块、PCIe等模块。软件设计主要包括各个模块的初始化、数据读写、中断响应和任务控制等。DDR3的软件设计DDR3的软件设计包括初始化、读/写数据和刷新控制等。由于DDR3是依靠电容的充放电状态来存储信息,就需要定时刷新来维持电容的状态。定时刷新由处理器的片内模块自动完成,用户不需要参与。DDR3的初始化顺序为:配置DDR3的PLL,通过设置PLL寄存器中的clkr、clkf、clkmod以及bwadj位来确定DDR3的工作时钟。延迟一段时间,等待PLL设置有效。清除RESET,使得PLL进入工作状态,查询PLL锁定标志。锁定标志有效,表示初始化过程结束。如果DDR3芯片及其周边电路存在问题,PLL就会无法锁定。这些问题可能包括:电源不稳定、时钟抖动大以及硬件错误等。SRIO的软件设计SRIO的软件设计包括初始化、数据读写和中断响应等。SRIO的软件设计包括了FPGA和DSP两个芯片,所以两个芯片的大部分参数设置需要保持一致。此外,一旦SRIO的数据链路建立好后,一方不能自行单独复位SRIO模块,否则将出现双方不能同步现象,SRIO数据不能正常通信。所以,一旦一方要求复位,必须通知对方。在程序中,建议在SRIO链路建立后,不进行复位操作。SRIO的初始化顺序为:①配置SRIO的工作时钟,SRIO需要从低速时钟倍频到高速时钟,最低到1.25Gbps,最高支持5Gbps。一般电路板设计和制造后可以达到2.5Gbps或者3.125Gbps的时钟速率。如果再采用4线制传输,传输数据速率可以轻松达到10Gbps或者12.5Gbps。等到SRIO时钟设置好后,按照先使能接收器,再使能发送器的顺序复位自身的模块,如果另外一方也设置好后,会看到连接寄存器的状态位变化,表示双方链路已经建立;如果状态位没有变化,则说明存在硬件或者设置上的问题。设置数据收发中断,可以以SRIO自身中断,也可以以GPIO触发另外中断的方式。3.3SRIO传输数据到DDR3多核DSP的程序代码一般在DDR3中运行,一旦SRIO也对DDR3进行操作,就存在多个主模块共享DDR3的问题。DDR3控制器只有一组总线与DDR3连接,一旦出现多个主模块同时访问DDR3时,必须要根据优先级进行总线仲裁。DDR3的访问以页为基础,一个主模块访问某个页之前,必须要打开该页。DDR3最高具有8个bank,每个bank可以打开一页,最多同时打开8页。但如果想同时访问一个bank中的2页是不可能的,只有关闭掉其中一页,才能访问另外卜一页,这就存在页切换的问题。图3是多个主模块访问同一bank下的不同页,这是切换最频繁的情况,每次访问都要进行页切换,导致传输效率大大降低。如果SRIO将数据传输到这些页,存在很大的风险。虽然
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度安全设备租赁及人工费用综合服务合同
- 胞蔓不动杆菌患者的护理
- 晋升制度培训
- 线性模型诊断
- 2024汪清县第一职业技术高中工作人员招聘考试及答案
- 2024泉州市工商旅游职业中专学校工作人员招聘考试及答案
- 建筑工程施工规范培训
- 眼底出血中医护理方案
- 建筑装修工程分包合同模板
- 艺术标准课程解读课件
- 城镇燃气安全技术与管理
- 鼠疫知识讲座
- 清产核资工作方案
- 房 产 税教学课件
- 2025年广东省公务员省考《行测》联考真题(含答案)
- 保安证考试考前复习试题及答案
- 2025河北中考必考名著:《革命诗抄》考点及中考真题
- 互联网医院医疗服务平台合作协议
- 福建省福州市六校2023-2024学年高一下学期期末联考试题 数学 含解析
- 2024年湖北省襄阳市第四中学第五中学自主招生考试语文试卷
- 2025年江苏苏北四市高三一模高考地理试卷试题(含答案详解)
评论
0/150
提交评论