YUV分離的兩種FPGA實現
工作流程如下:首先對雙口RAM0進行寫操作,寫操作完成后經過316個CLK,開始對雙口RAM1進行寫操作。對雙口RAM0進行讀操作時,因為讀操作只用到704個CLK,而寫操作需要1 408個CLK,當對雙口RAM0讀完時,還需繼續對雙口RAM1進行寫操作,等到雙口RAM1輸出ramfull高電平時進入下一個緩沖周期,此時對雙口RAM0進行寫操作,對雙口RAM1進行讀操作,如此循環,則實現了視頻處理的流水操作。完成第一行數據的YUV分離輸出所需要的1 408+316+704個CLK后,各行數據的輸出則只需要1 408+316個CLK。于此同時基于速度的實現方式從提高系統工作時所能達到的最高時鐘頻率為出發點,利用了流水線的設計,提供了系統的頻率,如果系統的工作頻率是100 MHz,那么實際輸出YUV分離視頻數據所需要的時間僅為(1 408+316)×10-8。模塊仿真如圖6所示。本文引用地址:http://www.104case.com/article/190540.htm
4 性能分析
4.1 操作時間
前面已經敘述過基于面積實現方式,完成一行視頻數據的YUV分離輸出需要1 408+704個CLK,而由于需要充分利用行消隱期來完成數據的分離輸出,因此FPGA與SDRAM之間的頻率必須滿足一定的差異,這就使得該方式不能獲得較高的系統最高工作頻率。假設FPGA的工作頻率為48 MHz,SDRAM的工作頻率為100 MHz,那么實際完成一行視頻數據的分離傳輸需要的時間為1 408×10-8+704×(1/48 000 000),而基于速度的實現方式,由于采用了兩片雙口RAM,因此可以在同一緩沖周期分別進行讀/寫操作,而下一緩沖周期兩片雙口RAM的操作方式切換,進而完成了數據的無縫緩存與處理,利用流水線的方式使YUV分離數據的輸出速度得到了很大的提高,并且使得該模塊的系統最高工作頻率得到了很大的提高。完成一行視頻數據的分離輸出需要的CLK個數為1 408+316+704個。假設該模塊的工作頻率為100 MHz,那么實際完成一行分離數據輸出所需的時間為(1 408+316+704)×10-8,通過對比可以發現,基于速度的實現使得系統可以在較高工作頻率下運行,利用流水操作,進而實現了速度上的提升。
4.2 硬件資源
由上述可知,基于面積的實現方式只用到了一片雙口RAM,而基于速度的實現方式用到了兩片雙口RAM,且用到了一個二選一多路選擇器,同時后者的控制信號明顯多于前者,不僅增加了寄存器開銷,同時也增加了輸入/輸出端口的數量。通過對比可以發現,前者在面積上比后者確實有了較大優勢。表1為2種實現方式的資源消耗列表。
5 結語
本文提出了YUV分離的兩種FPGA實現方法,基于面積的實現利用了一片雙口RAM,而基于速度的實現方式利用了兩片雙口RAM。通過對比發現,前者在消耗資源上獲得了較大的改進,對整個系統的集成化有重大作用;而后者采用了兩片雙端口RAM的乒乓操作流水,實現了視頻數據的輸出,對提高整個系統的實時性意義重大。無論從面積還是速度為出發點,二種方案對整個系統性能的提高都意義重大。
電子鎮流器相關文章:電子鎮流器工作原理
評論