摘要
本文介紹了一種使用ANLOGIC(上海安路信息科技有限公司) AL3 FPGA實現(xiàn)的基于千兆以太網(wǎng)的實時視頻傳輸系統(tǒng),。本文首先對AL3 FPGA的特點,,KSZ9031RNX千兆PHY芯片和視頻傳輸帶寬計算等進行了簡要介紹,然后詳細描述了系統(tǒng)硬件架構(gòu)和FPGA程序架構(gòu),,通過采用乒乓式的頁模式訪問SDRAM解決視頻緩存帶寬瓶頸,實現(xiàn)了1080P 30幀/秒的實時視頻傳輸,。
正文
AL3LA10是上海安路科技最新推出的FPGA器件,。該器件采用自主獨創(chuàng)LUT4/LUT5混合邏輯單元結(jié)構(gòu),包含10K等效邏輯單元,,總共500Kbits RAM塊,,擁有豐富的高性能LVDS差分接口,。該芯片封裝可以兼容ALTERA CYCLONE4和XILINX SPARTAN6等多種芯片,同時比國外同等芯片提供更多的RAM塊和差分IO資源,,非常適合于大容量視頻數(shù)據(jù)的采集,,傳輸和顯示等方面應(yīng)用。
KSZ9031RNX是一款三速自適應(yīng)PHY芯片,,該芯片使用RGMII接口與FPGA(MAC)連接,。該芯片的突出特點是可以通過MDIO接口設(shè)置RGMII接口每一個引腳的延時,降低FPGA端對延時調(diào)整的復雜度,。TFP401A是TI的一款DVI視頻解碼芯片,,最大支持1080P分辨率。該芯片接收顯卡輸出的LVDS信號,,解碼后輸出LVTTL電平的并行場同步數(shù)據(jù),。
一個千兆以太網(wǎng)端口的最大帶寬為1Gb/s,本設(shè)計使用雙端口千兆以太網(wǎng),,因此本設(shè)計支持的最大視頻傳輸帶寬為2Gb/s,。對于1080P 60幀/秒的視頻的帶寬為1920*1080*60*24,大約為3Gb/s,,超過了本系統(tǒng)的最大網(wǎng)絡(luò)傳輸帶寬,。而1080P 30幀/秒的視頻帶寬為1920*1080*30*24,大約為1.5Gb/s,,小于本系統(tǒng)的最大網(wǎng)絡(luò)傳輸帶寬,,因為本系統(tǒng)支持1080P 30幀的視頻實時傳輸。由于本系統(tǒng)使用兩個千兆以太網(wǎng)端口,,因此每個端口的帶寬大約為750Mb/s,,有效帶寬大概為75%。
如圖1所示為本系統(tǒng)的硬件結(jié)構(gòu)框圖,。DVI視頻從顯卡輸出后通過TFP401A解碼后,,輸出R8G8B8的場同步點陣數(shù)據(jù),包括HSYNC,VSYNC,DE,ODCK,DATA等信號,,F(xiàn)PGA根據(jù)HSYNC,VSYNC,DE等場同步信號從視頻源接收以及截取有效視頻數(shù)據(jù),。視頻數(shù)據(jù)進入FPGA后,將通過兩片SDRAM乒乓式的存入與讀出,,每次以DVI視頻源的幀同步為切換信號,,使得每次在SDRAM中存入一幀,然后切換至另外一塊SDRAM,。從SDRAM讀出時會根據(jù)控制信號確定哪些數(shù)據(jù)發(fā)至第一塊PHY,,剩下的數(shù)據(jù)發(fā)送至第二塊PHY。PC機軟件可以通過UART口設(shè)置FPGA的某些參數(shù),,同時還能回讀發(fā)送卡當前的工作狀態(tài)信息,。
圖1 雙端口千兆以太網(wǎng)視頻傳輸卡硬件
圖2為本系統(tǒng)的軟件架構(gòu)圖,,F(xiàn)PGA通過VSYNC信號來判斷每一幀的起點,并以此信號控制SDRAM的切換,,以及內(nèi)部各級FIFO的清空,。FPGA根據(jù)HSYNC和DE信號獲取一幀中點數(shù)據(jù)的坐標,根據(jù)控制從中截取有效的視頻圖像數(shù)據(jù)向后一級傳至異步緩存FIFO1,。該異步緩存FIFO1主要用于DVI數(shù)據(jù)輸入和SDRAM讀寫的異步時鐘域轉(zhuǎn)換,。SDRAM讀寫控制模塊根據(jù)FIFO1深度指示信息從FIFO1中讀出數(shù)據(jù)寫入SDRAM1或者SDRAM2, 同時SDRAM讀寫控制模塊判斷FIFO2和FIFO3的深度,當深度小于某個值時則從SDRAM1或者SDRAM2中讀出寫入FIFO2或者FIFO3,。以太網(wǎng)打包模塊則負責對數(shù)據(jù)進行按照UDP格式打包,,包括添加UDP包頭,從FIFO2或者FIFO3中讀出數(shù)據(jù)填入包中,,同時計算FCS校驗并添加到包尾,。同時該模塊還有一個工作就是將數(shù)據(jù)轉(zhuǎn)換為滿足RGMII時序的雙沿數(shù)據(jù)寫入PHY芯片KSZ9031RNX。
圖2 雙端口千兆以太網(wǎng)視頻傳輸卡軟件架構(gòu)圖
UART是PC軟件與傳輸卡的接口,,用于PC機控制傳輸卡的視頻截取分辨率,,通常不會將DVI接收的視頻全部通過千兆以太網(wǎng)發(fā)送出去,而是截取其中一部分,。另外PC機還可以控制千兆以太網(wǎng)端口1和千兆以太網(wǎng)端口2分別發(fā)送的分辨率,例如從DVI輸出視頻截取1920*768的圖像,,則端口1和端口2可以分別發(fā)送1920*384,。兩個端口分別發(fā)送的行數(shù)可以任意調(diào)整,但總數(shù)保持與截取的高度一致,。
整個系統(tǒng)的時鐘域如圖3所示,,DVI視頻輸入部分使用TFP401A輸入的像素數(shù)據(jù)伴隨時鐘ODCK,該時鐘頻率會隨著輸入視頻分辨率變化而變化,,視頻分辨為1080P,,該時鐘頻率最高,約為157MHz,。SDRAM讀寫控制部分,,使用PLL輸出時鐘,頻率為150MHz,,在該時鐘頻率下實現(xiàn)SDRAM的讀寫,,以及將數(shù)據(jù)寫入到異步FIFO2和FIFO3。以太網(wǎng)打包和發(fā)送部分使用固定時鐘125MHz,,這是因為千兆以太網(wǎng)的發(fā)送時鐘為固定的125MHz,。
圖3 雙端口千兆以太網(wǎng)視頻傳輸卡軟件時鐘域
SDRAM控制模塊負責數(shù)據(jù)寫入和讀出SDRAM的控制,由于該模塊工作時鐘為150MHz,,所以SDRAM的工作時鐘也為150MHz,。SDRAM的地址使用行列地址復用,,同時還需要有預充電和刷新時間,因此SDRAM頁訪問一次有效讀寫數(shù)據(jù)為256個,,而寫入實際花費時鐘數(shù)為285個,,讀出實際花費時鐘數(shù)為300個,由此計算出SDRAM的實際寫入有效帶寬為256/285*150MHz,,SDRAM的實際讀出有效帶寬為256/300*150MHz,。1080P,30幀/秒的圖像數(shù)據(jù)帶寬為1920*1080*30,,大約為62.5MHz,,由于使用乒乓存儲方式,在每一幀圖像的存入與讀出過程中只要滿足SDRAM寫入帶寬265/285*150>62.5和讀出帶寬256/300*150>62.5即可,。通過該處可以看出實際SDRAM的讀寫帶寬相對數(shù)據(jù)帶寬裕量很大,,但實際上SDRAM的工作時鐘并不能降低。因為DVI圖像數(shù)據(jù)每一行數(shù)據(jù)是連續(xù)輸入,, 1080P每行連續(xù)輸入1920*1.2點,,其中前1920點為有效像素,剩下的為行消隱,。要保證下一行數(shù)據(jù)來之前,,將FIFO1中的數(shù)據(jù)寫入SDRAM,而使得FIFO1不至于寫滿,,就必須滿足F_SDRAM*1920>F_ODCK*1920*1.2 , F_ODCK最大時鐘為157MHz,,因此F_SDRAM的時鐘最小為131MHz,因此本設(shè)計最終選用了150MHz的SDRAM工作時鐘,。
總結(jié)
本文設(shè)計了一種雙端口千兆以太網(wǎng)傳輸卡,,他可以最大支持1080P 30幀/秒的視頻發(fā)送,而且發(fā)送的圖像分辨率大小,,圖像區(qū)域均可由PC軟件靈活控制,。本設(shè)計通過SDRAM的乒乓式頁模式訪問提高了SDRAM的讀寫帶寬。最終根據(jù)設(shè)計做出了如圖4的硬件板,,并編寫了相應(yīng)的FPGA程序,,在硬件板上進行測試,系統(tǒng)性能和穩(wěn)定性均滿足要求,。
實踐證明,,安路AL3 FPGA芯片性能穩(wěn)定,邏輯效率,、IP模塊和時序性能方面不輸與國外芯片,,本設(shè)計中涉及幾個高速時鐘時序余量充足,部分性能指標甚至超過國外芯片。另外,,配套TD編譯軟件,,功能較為齊全、編譯速度快,、時序準確,、上手容易、能夠滿足一般開發(fā)需求,。
圖4 雙端口千兆以太網(wǎng)視頻傳輸卡