基于FPGA的DDR3多端口讀寫(xiě)存儲管理系統設計

發(fā)布時(shí)間:2015-3-12 14:46    發(fā)布者:designapp
關(guān)鍵詞: 存儲器控制 , 多端口 , 幀地址 , DDR3 , FPGA

        機載視頻圖形顯示系統主要實(shí)現2D圖形的繪制,構成各種飛行參數畫(huà)面,同時(shí)疊加實(shí)時(shí)的外景視頻。由于FPGA具有強大邏輯資源、豐富IP核等優(yōu)點(diǎn),基于FPGA的嵌入式系統架構是機載視頻圖形顯示系統理想的架構選擇。視頻處理和圖形生成需要存儲海量數據,FPGA內部的存儲資源無(wú)法滿(mǎn)足存儲需求,因此需要配置外部存儲器。
與DDR2 SDRAM相比,DDR3 SDRAM帶寬更好高、傳輸速率更快且更省電,能夠滿(mǎn)足吞吐量大、功耗低的需求,因此選擇DDR3 SDRAM作為機載視頻圖形顯示系統的外部存儲器。
本文以Kintex-7系列XC7K410T FPGA芯片和兩片MT41J128M16 DDR3 SDRAM芯片為硬件平臺,設計并實(shí)現了基于FPGA的視頻圖形顯示系統的DDR3多端口存儲管理。
1 總體架構設計
機載視頻圖形顯示系統中,為了實(shí)現多端口對DDR3的讀寫(xiě)訪(fǎng)問(wèn),設計的DDR3存儲管理系統如圖 1所示。主要包括DDR3存儲器控制模塊、DDR3用戶(hù)接口仲裁控制模塊和幀地址控制模塊。


圖 1 DDR3存儲管理系統設計框圖


DDR3存儲器控制模塊采用MIG(Memory Interface Generator)方案,通過(guò)用戶(hù)接口建立FPGA內部控制邏輯到DDR3的連接,用戶(hù)不需要管理DDR3初始化、寄存器配置等復雜的控制邏輯,只需要控制用戶(hù)接口的讀寫(xiě)操作。
DDR3用戶(hù)接口仲裁控制模塊將每一個(gè)數據讀寫(xiě)請求設置成中斷,借鑒中斷處理思想來(lái)進(jìn)行仲裁控制,從而解決數據存儲的沖突。
幀地址控制模塊控制幀地址的切換。為了提高并行處理的速度,簡(jiǎn)化數據讀寫(xiě)沖突,將圖形數據和視頻數據分別存儲在不同的DDR3中。
2 DDR3存儲器控制模塊設計
MIG生成的DDR3控制器的邏輯框圖如圖 2所示,只需要通過(guò)用戶(hù)接口信號就能完成DDR3讀寫(xiě)操作,大大簡(jiǎn)化了DDR3的設計復雜度。


圖 2 DDR3控制器的邏輯框圖


2.1 DDR3控制模塊用戶(hù)接口寫(xiě)操作設計
DDR3存儲器控制模塊用戶(hù)接口寫(xiě)操作有兩套系統,一套是地址系統,一套是數據系統。用戶(hù)接口寫(xiě)操作信號說(shuō)明如表 1所示。



地址系統的內容是app_addr和app_cmd,兩者對齊綁定,app_cmd為000時(shí)為寫(xiě)命令,當app_rdy(DDR3控制)和app_en(用戶(hù)控制)同時(shí)拉高時(shí),將app_addr和app_cmd寫(xiě)到相應FIFO中。數據系統的內容是app_wdf_data,它在app_wdf_rdy(DDR3控制)和app_wdf_wren(用戶(hù)控制)同時(shí)拉高時(shí),將寫(xiě)數據存到寫(xiě)FIFO。
為了簡(jiǎn)化設計,本文設計的用戶(hù)接口寫(xiě)操作時(shí)序如圖 3所示,使兩套系統在時(shí)序上完全對齊。


圖 3 DDR3寫(xiě)操作時(shí)序圖(突發(fā)長(cháng)度BL=8)


2.2 DDR3控制模塊用戶(hù)接口讀操作設計
用戶(hù)接口讀操作也分為地址系統和數據系統。用戶(hù)接口讀操作信號說(shuō)明如表 2所示。



地址系統與寫(xiě)操作相同,在時(shí)鐘上升沿且app_rdy為高電平時(shí),用戶(hù)端口同時(shí)發(fā)出讀命令(app_cmd=001)和讀地址,并將app_en拉高,將讀命令和地址寫(xiě)到FIFO中。對于數據系統,當app_rd_data_valid有效,則讀數據有效,讀回的數據順序與地址/控制總線(xiàn)請求命令的順序相同。
讀操作地址系統和數據系統一般是不對齊的,因為地址系統發(fā)送到DDR3后,DDR3需要一定的反應時(shí)間,讀操作時(shí)序如圖 4所示。


圖 4 DDR3讀操作時(shí)序圖(突發(fā)長(cháng)度BL=8)




       
3 DDR3用戶(hù)接口仲裁控制模塊設計
每片DDR3只有一組控制、地址和數據總線(xiàn),因此同一時(shí)刻只能有一個(gè)設備在訪(fǎng)問(wèn)。常見(jiàn)的總線(xiàn)切換方式有兩種:一種是輪詢(xún)機制,軟件實(shí)現簡(jiǎn)單,但實(shí)時(shí)性不高;一種是仲裁機制,設備發(fā)送中斷請求,從而進(jìn)行總線(xiàn)切換。由于視頻圖形顯示系統對實(shí)時(shí)性要求高,因此選擇仲裁機制。
DDR3用戶(hù)接口仲裁控制框圖如圖 5所示。為了提高并行速度,將圖形和視頻分別進(jìn)行中斷處理。將設備中斷請求解析成多個(gè)子請求,進(jìn)行優(yōu)先級判斷,每個(gè)子請求對應一個(gè)中斷處理邏輯。


圖 5 DDR3用戶(hù)接口仲裁控制設計框圖

3.1 視頻處理寫(xiě)請求中斷處理器設計
由于視頻處理寫(xiě)請求不涉及到圖形中斷處理,所以對應一個(gè)子請求:視頻處理寫(xiě)子請求。
視頻處理模塊將采集到的視頻經(jīng)過(guò)縮放、旋轉等操作后存儲在緩存區中,當緩存區滿(mǎn)時(shí)發(fā)送視頻處理模塊寫(xiě)請求。視頻處理寫(xiě)中斷處理主要是從視頻處理模塊的緩存區中將地址和數據取出,寫(xiě)入到視頻存儲DDR3中。


圖 6 視頻處理寫(xiě)請求中斷處理流程圖

視頻處理寫(xiě)請求中斷處理流程圖如圖 6所示。當視頻處理模塊寫(xiě)請求信號有效時(shí),生成子中斷請求信號,若總線(xiàn)空閑則響應該中斷。當命令接收就緒(app_rdy=1)且數據接收就緒(app_wdf_rdy=1)時(shí),從視頻處理緩存區中讀取地址和數據,同時(shí)發(fā)送寫(xiě)命令、寫(xiě)地址和寫(xiě)數據。若緩存區為空,說(shuō)明全部寫(xiě)完,視頻處理寫(xiě)中斷結束。
3.2 疊加輸出讀請求中斷處理器設計
疊加輸出模塊需要從DDR3中將待輸出的圖形數據和視頻數據存儲到行緩存中,因此分為兩個(gè)子請求:視頻輸出讀請求和圖形輸出讀請求。由于兩者分別在圖形中斷處理和視頻中斷處理中完成,因此可以同時(shí)進(jìn)行。
視頻輸出讀中斷處理主要從視頻存儲DDR3中讀取1行視頻數據寫(xiě)入到疊加輸出模塊的視頻緩存區中,流程圖如圖 7所示。本系統中突發(fā)長(cháng)度為BL=8,即每個(gè)用戶(hù)時(shí)鐘周期對應接收同一行地址中相鄰的8個(gè)存儲單元的連續數據。輸出視頻分辨率為cols×rows,則地址系統需要發(fā)送cols/8個(gè)突發(fā)讀命令。數據系統接收讀數據時(shí),若讀數據有效(app_rd_data_valid=1),則將讀到的數據存儲到疊加輸出模塊的視頻緩存區中,同時(shí)讀數據個(gè)數加1。當讀數據個(gè)數為cols/8時(shí),所有讀命令對應的讀數據全部接收,視頻輸出讀中斷處理結束。


圖 7視頻輸出讀中斷處理流程圖


圖形輸出讀中斷處理包含兩個(gè)步驟:從圖形存儲DDR3中讀取1行圖形數據寫(xiě)到疊加輸出模塊的圖形緩存區中;將剛剛搬移數據到圖形緩存區的DDR3存儲空間清零。前者與視頻輸出讀中斷的處理過(guò)程類(lèi)似。
圖形數據寫(xiě)入DDR3時(shí)只寫(xiě)入有圖形的位置,而不是全屏掃描,如果不進(jìn)行清屏操作會(huì )導致下一幀圖形畫(huà)面上殘留上一幀的圖形數據。清屏操作指圖形輸出后將DDR3中對應地址的存儲空間全部寫(xiě)入數值0,從而將當前圖形數據清除。
3.3 圖形生成寫(xiě)請求中斷處理器設計
圖形生成是接收CPU的圖形命令并進(jìn)行光柵化,將結果先存儲在直接結果緩存區和插值結果緩存區中,從而存入到DDR3中。當一幀圖形全部繪制完成后發(fā)送圖形生成模塊寫(xiě)請求。圖形生成寫(xiě)請求分為三個(gè)子請求:直接結果寫(xiě)中斷請求、插值背景讀中斷請求、插值結果寫(xiě)中斷請求。
直接結果緩存區存放直接輸出的與背景顏色無(wú)關(guān)的像素值數據;插值結果緩存區存放需要讀回對應位置的背景視頻進(jìn)行插值修正的像素點(diǎn)的數據。插值結果寫(xiě)到DDR3時(shí),首先從視頻存儲DDR3中讀出需要修正的像素點(diǎn)對應位置的視頻像素值作為背景,然后用流水線(xiàn)處理實(shí)現插值修正,最后將修正結果寫(xiě)到圖形存儲DDR3中。
為了提高讀寫(xiě)速度,圖形中斷處理器中先進(jìn)行直接結果寫(xiě)中斷處理;同時(shí)視頻中斷處理器中進(jìn)行插值背景視頻讀中斷處理。同時(shí)完成后再進(jìn)行插值結果寫(xiě)中斷處理。流程與圖 6和圖 7相似。



       
4 幀地址控制模塊設計
幀地址控制模塊主要是將DDR3空間進(jìn)行劃分,同時(shí)控制幀地址的切換。為了簡(jiǎn)化設計,將存儲器劃分為若干塊,每塊存儲一幀數據,在用戶(hù)仲裁控制模塊讀寫(xiě)緩存區時(shí)只生成幀內地址,幀地址的切換由幀讀寫(xiě)控制模塊實(shí)現,幀內地址結合幀地址組合成對應DDR3的內部地址值。DDR3的幀地址劃分如圖 8所示。


圖 8 DDR3幀地址劃分


圖形的讀寫(xiě)和DVI視頻的讀寫(xiě)不涉及幀速率的轉換,因此圖形存儲DDR3中的第0~1幀和視頻存儲DDR3中的第3~4幀地址控制方式相同,都是其中一幀用于將生成數據寫(xiě)入到DDR3中,另一幀用于讀出數據疊加輸出,兩幀交替使用,通過(guò)乒乓操作來(lái)實(shí)現圖形數據的存儲與讀取。
視頻存儲DDR3中,第0~2幀(又稱(chēng)A空間、B空間和C空間)用于PAL視頻處理后輸入幀及視頻輸出幀。由于PAL視頻幀速率為25Hz,而最終輸出DVI的幀速率為60Hz,因此需要實(shí)現幀速率轉換。常見(jiàn)的幀速率轉換算法[8]包括:幀復制法、幀平均法、運動(dòng)補償法等,由于機載系統對實(shí)時(shí)性要求比較高,因此選用幀復制法。
設置三個(gè)幀存儲空間,其中一幀用于讀出,一幀用于寫(xiě)入,還有一幀空閑,分別稱(chēng)作輸入幀、輸出幀和空閑幀。用三者的切換來(lái)實(shí)現幀速率的轉換,確保輸出幀相對于當前輸入幀的延遲最小,即當前輸出幀輸出的是最新寫(xiě)滿(mǎn)的幀。當寫(xiě)入的幀存儲空間已經(jīng)寫(xiě)滿(mǎn),而讀存儲空間還沒(méi)讀完,將下一幀的圖像數據寫(xiě)到當前空閑的幀存儲空間。圖 9為PAL輸入幀和輸出幀讀寫(xiě)控制流程圖。以A空間為輸出幀,B空間為輸入幀,C空間為空閑幀為例。若A空間讀完,B空間寫(xiě)滿(mǎn),則將B空間變成輸出幀并輸出,將C空間變成輸入幀并繼續輸入;若A空間還沒(méi)有讀完,B空間已經(jīng)寫(xiě)滿(mǎn),則將下一幀數據寫(xiě)入到C空間,并繼續從A空間輸出。


圖 9 PAL輸入幀和輸出幀讀寫(xiě)控制流程圖


5 驗證結果與分析
圖形生成寫(xiě)中斷處理仿真圖如圖 10所示。由于圖形生成數據不是從左往右連續進(jìn)行的,因此每次突發(fā)寫(xiě)操作發(fā)送的128位數據(BL=8),有效的數據只有低16位,高112位直接用掩碼屏蔽(app_wdf_mask=16’hfffc)。當一幀圖形全部繪制完成后發(fā)送圖形生成模塊寫(xiě)請求(graphics_done=1)。此時(shí)圖形中斷處理器執行直接結果寫(xiě)中斷(graphics_wr_interrupt=1),視頻中斷處理器執行插值背景讀中斷(graphics_wr_interrupt_rd_bk=1)。當兩者同時(shí)完成(rd_bk_video_finish=1)時(shí),圖形中斷處理器執行插值結果寫(xiě)請求中斷。其中,c0_app_XXX表示圖形存儲DDR3的用戶(hù)接口,寫(xiě)圖形數據時(shí),用戶(hù)接口地址系統和數據系統是對齊的;c1_app_XXX表示視頻存儲DDR3的用戶(hù)接口,讀視頻背景時(shí),數據系統比地址系統稍有延遲。


圖 10圖形生成寫(xiě)中斷處理波形圖


用本文設計的DDR3存儲管理系統對文獻[9]中圖6.1進(jìn)行中斷處理。視頻分辨率為1600×1200;繪制字符等直接結果點(diǎn)共812個(gè)像素(矩形填充忽略不算);繪制斜線(xiàn)等插值結果點(diǎn)共有4762個(gè)像素。用本文算法測試各中斷處理時(shí)間如表 3所示。



視頻中斷處理器中,視頻處理寫(xiě)中斷將一行視頻處理數據順序寫(xiě)入到DDR3中耗時(shí)1.1us,則將一幀視頻處理數據寫(xiě)入DDR3中耗時(shí)1.32ms;視頻輸出讀中斷從DDR3讀出1行視頻數據耗時(shí)1us,則將一幀視頻讀出需要1.2ms;插值背景讀耗時(shí)54.2us。視頻處理中斷共耗時(shí)2.5742ms。圖形處理中斷中,圖形輸出讀中斷讀出1行圖形數據,并將其內存空間清零,共需要2.1us,即將一幀圖形讀出需要2.52ms,則圖形處理中斷共耗時(shí)2.5851ms。
與文獻[9]結果相比,本文設計的系統對圖形生成讀寫(xiě)中斷速度有了明顯提高。因為文獻[9]中斷類(lèi)型較多,且圖形生成中斷的優(yōu)先級最低,在實(shí)現的過(guò)程中會(huì )多次被打斷,導致圖形生成執行時(shí)間較長(cháng);而本文算法中,插值背景讀操作與直接結果寫(xiě)操作同時(shí)在視頻中斷處理和圖形中斷處理中進(jìn)行,利用并行操作減少時(shí)間,并大大降低了復雜度。
結論
本文設計并實(shí)現了基于FPGA的DDR3多端口存儲管理,主要包括DDR3存儲器控制模塊、DDR3用戶(hù)接口仲裁控制模塊和幀地址控制模塊。DDR3存儲器控制模塊采用Xilinx公司的MIG方案,簡(jiǎn)化DDR3的邏輯控制;DDR3用戶(hù)接口仲裁控制模塊將圖形和視頻分別進(jìn)行中斷處理,提高了并行速度,同時(shí)簡(jiǎn)化仲裁控制;幀地址控制模塊將DDR3空間進(jìn)行劃分,同時(shí)控制幀地址的切換。
經(jīng)過(guò)分析,本文將圖形和視頻中斷分開(kāi)處理,簡(jiǎn)化多端口讀寫(xiě)DDR3的復雜度,提高并行處理速度。



本文地址:http://selenalain.com/thread-146782-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页