基于安路FPGA的双端口千兆以太网视频传输卡
2015-07-27
摘要
本文介绍了一种使用ANLOGIC(上海安路信息科技有限公司) AL3 FPGA实现的基于千兆以太网的实时视频传输系统。本文首先对AL3 FPGA的特点,KSZ9031RNX千兆PHY芯片和视频传输带宽计算等进行了简要介绍,然后详细描述了系统硬件架构和FPGA程序架构,通过采用乒乓式的页模式访问SDRAM解决视频缓存带宽瓶颈,实现了1080P 30帧/秒的实时视频传输。
正文
AL3LA10是上海安路科技最新推出的FPGA器件。该器件采用自主独创LUT4/LUT5混合逻辑单元结构,包含10K等效逻辑单元,总共500Kbits RAM块,拥有丰富的高性能LVDS差分接口。该芯片封装可以兼容ALTERA CYCLONE4和XILINX SPARTAN6等多种芯片,同时比国外同等芯片提供更多的RAM块和差分IO资源,非常适合于大容量视频数据的采集,传输和显示等方面应用。
KSZ9031RNX是一款三速自适应PHY芯片,该芯片使用RGMII接口与FPGA(MAC)连接。该芯片的突出特点是可以通过MDIO接口设置RGMII接口每一个引脚的延时,降低FPGA端对延时调整的复杂度。TFP401A是TI的一款DVI视频解码芯片,最大支持1080P分辨率。该芯片接收显卡输出的LVDS信号,解码后输出LVTTL电平的并行场同步数据。
一个千兆以太网端口的最大带宽为1Gb/s,本设计使用双端口千兆以太网,因此本设计支持的最大视频传输带宽为2Gb/s。对于1080P 60帧/秒的视频的带宽为1920*1080*60*24,大约为3Gb/s,超过了本系统的最大网络传输带宽。而1080P 30帧/秒的视频带宽为1920*1080*30*24,大约为1.5Gb/s,小于本系统的最大网络传输带宽,因为本系统支持1080P 30帧的视频实时传输。由于本系统使用两个千兆以太网端口,因此每个端口的带宽大约为750Mb/s,有效带宽大概为75%。
如图1所示为本系统的硬件结构框图。DVI视频从显卡输出后通过TFP401A解码后,输出R8G8B8的场同步点阵数据,包括HSYNC,VSYNC,DE,ODCK,DATA等信号,FPGA根据HSYNC,VSYNC,DE等场同步信号从视频源接收以及截取有效视频数据。视频数据进入FPGA后,将通过两片SDRAM乒乓式的存入与读出,每次以DVI视频源的帧同步为切换信号,使得每次在SDRAM中存入一帧,然后切换至另外一块SDRAM。从SDRAM读出时会根据控制信号确定哪些数据发至第一块PHY,剩下的数据发送至第二块PHY。PC机软件可以通过UART口设置FPGA的某些参数,同时还能回读发送卡当前的工作状态信息。
图1 双端口千兆以太网视频传输卡硬件
图2为本系统的软件架构图,FPGA通过VSYNC信号来判断每一帧的起点,并以此信号控制SDRAM的切换,以及内部各级FIFO的清空。FPGA根据HSYNC和DE信号获取一帧中点数据的坐标,根据控制从中截取有效的视频图像数据向后一级传至异步缓存FIFO1。该异步缓存FIFO1主要用于DVI数据输入和SDRAM读写的异步时钟域转换。SDRAM读写控制模块根据FIFO1深度指示信息从FIFO1中读出数据写入SDRAM1或者SDRAM2, 同时SDRAM读写控制模块判断FIFO2和FIFO3的深度,当深度小于某个值时则从SDRAM1或者SDRAM2中读出写入FIFO2或者FIFO3。以太网打包模块则负责对数据进行按照UDP格式打包,包括添加UDP包头,从FIFO2或者FIFO3中读出数据填入包中,同时计算FCS校验并添加到包尾。同时该模块还有一个工作就是将数据转换为满足RGMII时序的双沿数据写入PHY芯片KSZ9031RNX。
图2 双端口千兆以太网视频传输卡软件架构图
UART是PC软件与传输卡的接口,用于PC机控制传输卡的视频截取分辨率,通常不会将DVI接收的视频全部通过千兆以太网发送出去,而是截取其中一部分。另外PC机还可以控制千兆以太网端口1和千兆以太网端口2分别发送的分辨率,例如从DVI输出视频截取1920*768的图像,则端口1和端口2可以分别发送1920*384。两个端口分别发送的行数可以任意调整,但总数保持与截取的高度一致。
整个系统的时钟域如图3所示,DVI视频输入部分使用TFP401A输入的像素数据伴随时钟ODCK,该时钟频率会随着输入视频分辨率变化而变化,视频分辨为1080P,该时钟频率最高,约为157MHz。SDRAM读写控制部分,使用PLL输出时钟,频率为150MHz,在该时钟频率下实现SDRAM的读写,以及将数据写入到异步FIFO2和FIFO3。以太网打包和发送部分使用固定时钟125MHz,这是因为千兆以太网的发送时钟为固定的125MHz。
图3 双端口千兆以太网视频传输卡软件时钟域
SDRAM控制模块负责数据写入和读出SDRAM的控制,由于该模块工作时钟为150MHz,所以SDRAM的工作时钟也为150MHz。SDRAM的地址使用行列地址复用,同时还需要有预充电和刷新时间,因此SDRAM页访问一次有效读写数据为256个,而写入实际花费时钟数为285个,读出实际花费时钟数为300个,由此计算出SDRAM的实际写入有效带宽为256/285*150MHz,SDRAM的实际读出有效带宽为256/300*150MHz。1080P,30帧/秒的图像数据带宽为1920*1080*30,大约为62.5MHz,由于使用乒乓存储方式,在每一帧图像的存入与读出过程中只要满足SDRAM写入带宽265/285*150>62.5和读出带宽256/300*150>62.5即可。通过该处可以看出实际SDRAM的读写带宽相对数据带宽裕量很大,但实际上SDRAM的工作时钟并不能降低。因为DVI图像数据每一行数据是连续输入, 1080P每行连续输入1920*1.2点,其中前1920点为有效像素,剩下的为行消隐。要保证下一行数据来之前,将FIFO1中的数据写入SDRAM,而使得FIFO1不至于写满,就必须满足F_SDRAM*1920>F_ODCK*1920*1.2 , F_ODCK最大时钟为157MHz,因此F_SDRAM的时钟最小为131MHz,因此本设计最终选用了150MHz的SDRAM工作时钟。
总结
本文设计了一种双端口千兆以太网传输卡,他可以最大支持1080P 30帧/秒的视频发送,而且发送的图像分辨率大小,图像区域均可由PC软件灵活控制。本设计通过SDRAM的乒乓式页模式访问提高了SDRAM的读写带宽。最终根据设计做出了如图4的硬件板,并编写了相应的FPGA程序,在硬件板上进行测试,系统性能和稳定性均满足要求。
实践证明,安路AL3 FPGA芯片性能稳定,逻辑效率、IP模块和时序性能方面不输与国外芯片,本设计中涉及几个高速时钟时序余量充足,部分性能指标甚至超过国外芯片。另外,配套TD编译软件,功能较为齐全、编译速度快、时序准确、上手容易、能够满足一般开发需求。
图4 双端口千兆以太网视频传输卡