杨老师 发表于 2022-3-12 16:46:37

(项目经验)明德扬光纤项目概述(上)

光纤项目系统概述--作者:潘文明第一章 项目背景光纤项目是明德扬承接自某研究所的项目。该项目功能是接收4路光纤数据,经过内部DDR3缓存后,通过PCIE接口上送到电脑保存。其中光纤采集到数据后,需要做一定的算法处理,该算法处理由客户实现,明德扬保留易修改、易插入的模块接口。该项目实质就是一个数据采集卡功能:采集到高速数据并保存到电脑本地,具有速率高、数据量大的特点。采集卡项目均可参考此方案实现。该项目使用到光纤接口,可以学习到光纤IP核的应用。本项目可以通过PCIE,实现对FPGA的配置。特别是实现了可分别配置和读取1路接收FPGA、4路发送FPGA寄存器的功能。关于上位机,如DSP、ARM、单片机、电脑 ,如何与FPGA通信交互的,可以参考此方案。(在优化版本中,也提供了通过串口配置的方案,即将PCIE配置改为用串口配置。)PCIE部分不作讲解,要注意。该项目有对应的视频专题课,并提供代码学习。第二章 系统功能和架构上图是本项目整体的简图,包括4个发送板、1个接收板和PC电脑。其中本项目主要实现提接收板功能。接收板包括四片的DDR3、一个PCIE接口、四路光纤接口。当然接收板上还有很多其他接口,但是对于我们的项目来讲,主要的就是这三种接口。接收卡通过PCIE接口,直接插到PC的插槽上,跟PC进行相连。发送板可以通过光纤口发送数据,从接收板看来,可以认为外部有四路光纤口,接受这四种光纤的数据。本项目中,四路发送板,每一个发送板其实它是一个AD采集卡。每个发送板它大概有16路的AD的采集,采集好数据汇总通过光纤送到这个接收卡。接收卡从光纤接受到数据后,把数据汇聚起来,做适当的处理后,将数据保存到DDR3中,等待被读出送给PCIE接口,然后上送给PC电脑 ,这个就是我们整体的功能。
第三章 FPGA架构
上图是FPGA的内部实现架构。根据功能,可以大概划分成光纤功能、存储控制功能、PCIE功能三大部分。
第1节 光纤功能本项目通过光纤模块,实现接收板和发送板的通信,通信速率是2.5Gbps,采用XILINX的官方IP核:7 Series FPGAs Transceivers Wizard(以下简称:GTX IP核)。关于该IP核的设置,有兴趣的读者,可以阅读我们之前发表的文章《XILINX(K7)和CycloneV之间的光纤通信设置》一文。由于使用到4路光纤,在设置高速收发器IP核 时,注意要生成4路通道。当生成后,每路通道给用户侧的数据发送接口只有两个:发送数据tx_data和K码指示tx_kchar。同理,接收方向则是rx_data和rx_kchar。我们注意到,数据接口只有数据和K码指示,而不是明德扬常见的包文形式。事实上,两个较高级的设备之间通信,一般就是采用包文的形式,一次发一组数据,每组数据可以达到几千字节。为实现分组发送,特自定义了光纤协议层包文格式,如下表。

包文头数据长度校验和无效值数据
16位16位16位16位数据长度个数据

上面是光纤协议层的包文格式,其有一个16位的包文头(固定为0x55d5),一个16位的长度指示(指示后面数据的长度,单位为字节),一个16位的校验码,一个16位的无效值,以及数据。在FPGA内部架构图中的光纤打包模块,当从上游模块收到一个包文时,就计算该包文的长度、校验和,然后产生包文头+数据长度+校验和+无效值字段,再加上输入的包文数据,送给GXT IP核。GTX IP核再通过光纤送给发送板。同理,发送板那里,也应该有一个打包模块,其要发送数据给接收卡,就会将包文封装成上面格式,再通过光纤传输到接收板。接收板从GTX IP核接收数据,在光纤解包模块中,搜索包文头55D5。如果搜索到包文头,下一状态就获取数据长度和校验和。根据数据长度,接收后面的数据。边接收数据边计数数据的校验和。当接收数据完毕,校验和也计算完了。这个时候,就对比收到的校验和与计算的校验和,是否相同。如果相同,说明包文是正确的;如果不同,说明包文是错误的。上面就是光纤的基本功能,主要涉及到光纤打包、光纤解包等。事实上,如果光纤采用的是Aurora协议,那么推荐采用另一个IP核:Aurora 8B10B。这个IP核使用AXI4-stream总线接口,并且已经是包文的格式。因此使用起来更加简单。
明德扬已经针对本项目录制了视频课程,感兴趣的同学可以加兰老师微信了解





页: [1]
查看完整版本: (项目经验)明德扬光纤项目概述(上)