專家分享:DDR3多端口讀寫存儲係統用FPGA如何設計?
發布時間:2015-03-16 來源:吳連慧 周建江 夏偉傑 責任編輯:sherryyu
【導讀】由於FPGA具有強大邏輯資源、豐富IP核等優點,基於FPGA的嵌入式係統架構是機載視頻圖形顯示係統理想的架構選擇。本文以Kintex-7係列XC7K410T FPGA芯片和兩片MT41J128M16 DDR3 SDRAM芯片為硬件平台,設計並實現了基於FPGA的視頻圖形顯示係統的DDR3多端口存儲管理。
機載視頻圖形顯示係統主要實現2D圖形的繪製,構成各種飛行參數畫麵,同時疊加實時的外景視頻。由於FPGA具有強大邏輯資源、豐富IP核等優點,基於FPGA的嵌入式係統架構是機載視頻圖形顯示係統理想的架構選擇。視頻處理和圖形生成需要存儲海量數據,FPGA內部的存儲資源無法滿足存儲需求,因此需要配置外部存儲器。
與DDR2 SDRAM相比,DDR3 SDRAM帶寬更好高、傳輸速率更快且更省電,能夠滿足吞吐量大、功耗低的需求,因此選擇DDR3 SDRAM作為機載視頻圖形顯示係統的外部存儲器。
本文以Kintex-7係列XC7K410T FPGA芯片和兩片MT41J128M16 DDR3 SDRAM芯片為硬件平台,設計並實現了基於FPGA的視頻圖形顯示係統的DDR3多端口存儲管理。
1 總體架構設計
機載視頻圖形顯示係統中,為了實現多端口對DDR3的讀寫訪問,設計的DDR3存儲管理係統如圖 1所示。主要包括DDR3存儲器控製模塊、DDR3用戶接口仲裁控製模塊和幀地址控製模塊。

圖 1 DDR3存儲管理係統設計框圖
DDR3存儲器控製模塊采用MIG(Memory Interface Generator)方案,通過用戶接口建立FPGA內部控製邏輯到DDR3的連接,用戶不需要管理DDR3初始化、寄存器配置等複雜的控製邏輯,隻需要控製用戶接口的讀寫操作。
DDR3用戶接口仲裁控製模塊將每一個數據讀寫請求設置成中斷,借鑒中斷處理思想來進行仲裁控製,從而解決數據存儲的衝突。
幀地址控製模塊控製幀地址的切換。為了提高並行處理的速度,簡化數據讀寫衝突,將圖形數據和視頻數據分別存儲在不同的DDR3中。
2 DDR3存儲器控製模塊設計
MIG生成的DDR3控製器的邏輯框圖如圖 2所示,隻需要通過用戶接口信號就能完成DDR3讀寫操作,大大簡化了DDR3的設計複雜度。

圖 2 DDR3控製器的邏輯框圖
[page]
2.1 DDR3控製模塊用戶接口寫操作設計
DDR3存儲器控製模塊用戶接口寫操作有兩套係統,一套是地址係統,一套是數據係統。用戶接口寫操作信號說明如表 1所示。

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

圖 3 DDR3寫操作時序圖(突發長度BL=8)
2.2 DDR3控製模塊用戶接口讀操作設計
用戶接口讀操作也分為地址係統和數據係統。用戶接口讀操作信號說明如表 2所示。

地址係統與寫操作相同,在時鍾上升沿且app_rdy為高電平時,用戶端口同時發出讀命令(app_cmd=001)和讀地址,並將app_en拉高,將讀命令和地址寫到FIFO中。對於數據係統,當app_rd_data_valid有效,則讀數據有效,讀回的數據順序與地址/控製總線請求命令的順序相同。
讀操作地址係統和數據係統一般是不對齊的,因為地址係統發送到DDR3後,DDR3需要一定的反應時間,讀操作時序如圖 4所示。

圖 4 DDR3讀操作時序圖(突發長度BL=8)
[page]
3 DDR3用戶接口仲裁控製模塊設計
每片DDR3隻有一組控製、地址和數據總線,因此同一時刻隻能有一個設備在訪問。常見的總線切換方式有兩種:一種是輪詢機製,軟件實現簡單,但實時性不高;一種是仲裁機製,設備發送中斷請求,從而進行總線切換。由於視頻圖形顯示係統對實時性要求高,因此選擇仲裁機製。
DDR3用戶接口仲裁控製框圖如圖 5所suo示shi。為wei了le提ti高gao並bing行xing速su度du,將jiang圖tu形xing和he視shi頻pin分fen別bie進jin行xing中zhong斷duan處chu理li。將jiang設she備bei中zhong斷duan請qing求qiu解jie析xi成cheng多duo個ge子zi請qing求qiu,進jin行xing優you先xian級ji判pan斷duan,每mei個ge子zi請qing求qiu對dui應ying一yi個ge中zhong斷duan處chu理li邏luo輯ji。

圖 5 DDR3用戶接口仲裁控製設計框圖
3.1 視頻處理寫請求中斷處理器設計
由於視頻處理寫請求不涉及到圖形中斷處理,所以對應一個子請求:視頻處理寫子請求。
視頻處理模塊將采集到的視頻經過縮放、xuanzhuandengcaozuohoucunchuzaihuancunquzhong,danghuancunqumanshifasongshipinchulimokuaixieqingqiu。shipinchulixiezhongduanchulizhuyaoshicongshipinchulimokuaidehuancunquzhongjiangdizhiheshujuquchu,xierudaoshipincunchuDDR3中。

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

圖 7視頻輸出讀中斷處理流程圖
圖形輸出讀中斷處理包含兩個步驟:從圖形存儲DDR3中讀取1行圖形數據寫到疊加輸出模塊的圖形緩存區中;將剛剛搬移數據到圖形緩存區的DDR3存儲空間清零。前者與視頻輸出讀中斷的處理過程類似。
圖形數據寫入DDR3時(shi)隻(zhi)寫(xie)入(ru)有(you)圖(tu)形(xing)的(de)位(wei)置(zhi),而(er)不(bu)是(shi)全(quan)屏(ping)掃(sao)描(miao),如(ru)果(guo)不(bu)進(jin)行(xing)清(qing)屏(ping)操(cao)作(zuo)會(hui)導(dao)致(zhi)下(xia)一(yi)幀(zhen)圖(tu)形(xing)畫(hua)麵(mian)上(shang)殘(can)留(liu)上(shang)一(yi)幀(zhen)的(de)圖(tu)形(xing)數(shu)據(ju)。清(qing)屏(ping)操(cao)作(zuo)指(zhi)圖(tu)形(xing)輸(shu)出(chu)後(hou)將(jiang)DDR3中對應地址的存儲空間全部寫入數值0,從而將當前圖形數據清除。
3.3 圖形生成寫請求中斷處理器設計
圖形生成是接收CPU的圖形命令並進行光柵化,將結果先存儲在直接結果緩存區和插值結果緩存區中,從而存入到DDR3中。當一幀圖形全部繪製完成後發送圖形生成模塊寫請求。圖形生成寫請求分為三個子請求:直接結果寫中斷請求、插值背景讀中斷請求、插值結果寫中斷請求。
直接結果緩存區存放直接輸出的與背景顏色無關的像素值數據;插值結果緩存區存放需要讀回對應位置的背景視頻進行插值修正的像素點的數據。插值結果寫到DDR3時,首先從視頻存儲DDR3中讀出需要修正的像素點對應位置的視頻像素值作為背景,然後用流水線處理實現插值修正,最後將修正結果寫到圖形存儲DDR3中。
為了提高讀寫速度,圖形中斷處理器中先進行直接結果寫中斷處理;同時視頻中斷處理器中進行插值背景視頻讀中斷處理。同時完成後再進行插值結果寫中斷處理。流程與圖 6和圖 7相似。
4 幀地址控製模塊設計
幀地址控製模塊主要是將DDR3kongjianjinxinghuafen,tongshikongzhizhendizhideqiehuan。weilejianhuasheji,jiangcunchuqihuafenweiruogankuai,meikuaicunchuyizhenshuju,zaiyonghuzhongcaikongzhimokuaiduxiehuancunqushizhishengchengzhenneidizhi,zhendizhideqiehuanyouzhenduxiekongzhimokuaishixian,zhenneidizhijiehezhendizhizuhechengduiyingDDR3的內部地址值。DDR3的幀地址劃分如圖 8所示。

圖 8 DDR3幀地址劃分
圖形的讀寫和DVI視頻的讀寫不涉及幀速率的轉換,因此圖形存儲DDR3中的第0~1幀和視頻存儲DDR3中的第3~4幀地址控製方式相同,都是其中一幀用於將生成數據寫入到DDR3中,另一幀用於讀出數據疊加輸出,兩幀交替使用,通過乒乓操作來實現圖形數據的存儲與讀取。
視頻存儲DDR3中,第0~2幀(又稱A空間、B空間和C空間)用於PAL視頻處理後輸入幀及視頻輸出幀。由於PAL視頻幀速率為25Hz,而最終輸出DVI的幀速率為60Hz,因此需要實現幀速率轉換。常見的幀速率轉換算法[8]包括:幀複製法、幀平均法、運動補償法等,由於機載係統對實時性要求比較高,因此選用幀複製法。
設置三個幀存儲空間,其中一幀用於讀出,一幀用於寫入,還有一幀空閑,分別稱作輸入幀、輸(shu)出(chu)幀(zhen)和(he)空(kong)閑(xian)幀(zhen)。用(yong)三(san)者(zhe)的(de)切(qie)換(huan)來(lai)實(shi)現(xian)幀(zhen)速(su)率(lv)的(de)轉(zhuan)換(huan),確(que)保(bao)輸(shu)出(chu)幀(zhen)相(xiang)對(dui)於(yu)當(dang)前(qian)輸(shu)入(ru)幀(zhen)的(de)延(yan)遲(chi)最(zui)小(xiao),即(ji)當(dang)前(qian)輸(shu)出(chu)幀(zhen)輸(shu)出(chu)的(de)是(shi)最(zui)新(xin)寫(xie)滿(man)的(de)幀(zhen)。當(dang)寫(xie)入(ru)的(de)幀(zhen)存(cun)儲(chu)空(kong)間(jian)已(yi)經(jing)寫(xie)滿(man),而(er)讀(du)存(cun)儲(chu)空(kong)間(jian)還(hai)沒(mei)讀(du)完(wan),將(jiang)下(xia)一(yi)幀(zhen)的(de)圖(tu)像(xiang)數(shu)據(ju)寫(xie)到(dao)當(dang)前(qian)空(kong)閑(xian)的(de)幀(zhen)存(cun)儲(chu)空(kong)間(jian)。圖(tu) 9為PAL輸入幀和輸出幀讀寫控製流程圖。以A空間為輸出幀,B空間為輸入幀,C空間為空閑幀為例。若A空間讀完,B空間寫滿,則將B空間變成輸出幀並輸出,將C空間變成輸入幀並繼續輸入;若A空間還沒有讀完,B空間已經寫滿,則將下一幀數據寫入到C空間,並繼續從A空間輸出。

圖 9 PAL輸入幀和輸出幀讀寫控製流程圖
[page]
5 驗證結果與分析
圖形生成寫中斷處理仿真圖如圖 10所示。由於圖形生成數據不是從左往右連續進行的,因此每次突發寫操作發送的128位數據(BL=8),有效的數據隻有低16位,高112位直接用掩碼屏蔽(app_wdf_mask=16’hfffc)。當一幀圖形全部繪製完成後發送圖形生成模塊寫請求(graphics_done=1)。此時圖形中斷處理器執行直接結果寫中斷(graphics_wr_interrupt=1),視頻中斷處理器執行插值背景讀中斷(graphics_wr_interrupt_rd_bk=1)。當兩者同時完成(rd_bk_video_finish=1)時,圖形中斷處理器執行插值結果寫請求中斷。其中,c0_app_XXX表示圖形存儲DDR3的用戶接口,寫圖形數據時,用戶接口地址係統和數據係統是對齊的;c1_app_XXX表示視頻存儲DDR3的用戶接口,讀視頻背景時,數據係統比地址係統稍有延遲。

圖 10圖形生成寫中斷處理波形圖
用本文設計的DDR3存儲管理係統對文獻[9]中圖6.1進行中斷處理。視頻分辨率為1600×1200;繪製字符等直接結果點共812個像素(矩形填充忽略不算);繪製斜線等插值結果點共有4762個像素。用本文算法測試各中斷處理時間如表 3所示。

視頻中斷處理器中,視頻處理寫中斷將一行視頻處理數據順序寫入到DDR3中耗時1.1us,則將一幀視頻處理數據寫入DDR3中耗時1.32ms;視頻輸出讀中斷從DDR3讀出1行視頻數據耗時1us,則將一幀視頻讀出需要1.2ms;插值背景讀耗時54.2us。視頻處理中斷共耗時2.5742ms。圖形處理中斷中,圖形輸出讀中斷讀出1行圖形數據,並將其內存空間清零,共需要2.1us,即將一幀圖形讀出需要2.52ms,則圖形處理中斷共耗時2.5851ms。
與文獻[9]結果相比,本文設計的係統對圖形生成讀寫中斷速度有了明顯提高。因為文獻[9]中斷類型較多,且圖形生成中斷的優先級最低,在實現的過程中會多次被打斷,導致圖形生成執行時間較長;而(er)本(ben)文(wen)算(suan)法(fa)中(zhong),插(cha)值(zhi)背(bei)景(jing)讀(du)操(cao)作(zuo)與(yu)直(zhi)接(jie)結(jie)果(guo)寫(xie)操(cao)作(zuo)同(tong)時(shi)在(zai)視(shi)頻(pin)中(zhong)斷(duan)處(chu)理(li)和(he)圖(tu)形(xing)中(zhong)斷(duan)處(chu)理(li)中(zhong)進(jin)行(xing),利(li)用(yong)並(bing)行(xing)操(cao)作(zuo)減(jian)少(shao)時(shi)間(jian),並(bing)大(da)大(da)降(jiang)低(di)了(le)複(fu)雜(za)度(du)。
結論
本文設計並實現了基於FPGA的DDR3多端口存儲管理,主要包括DDR3存儲器控製模塊、DDR3用戶接口仲裁控製模塊和幀地址控製模塊。DDR3存儲器控製模塊采用Xilinx公司的MIG方案,簡化DDR3的邏輯控製;DDR3用戶接口仲裁控製模塊將圖形和視頻分別進行中斷處理,提高了並行速度,同時簡化仲裁控製;幀地址控製模塊將DDR3空間進行劃分,同時控製幀地址的切換。
經過分析,本文將圖形和視頻中斷分開處理,簡化多端口讀寫DDR3的複雜度,提高並行處理速度。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻



