吳連慧,周建江,夏偉杰
(南京航空航天大學(xué) 電子信息工程學(xué)院,南京 210016)
?
基于FPGA的DDR3多端口讀寫(xiě)存儲(chǔ)管理設(shè)計(jì)※
吳連慧,周建江,夏偉杰
(南京航空航天大學(xué) 電子信息工程學(xué)院,南京 210016)
為了解決視頻圖形顯示系統(tǒng)中多個(gè)端口訪問(wèn)DDR3時(shí)出現(xiàn)的數(shù)據(jù)存儲(chǔ)沖突問(wèn)題,設(shè)計(jì)了一種基于FPGA的DDR3存儲(chǔ)管理系統(tǒng)。DDR3存儲(chǔ)器控制模塊使用MIG生成DDR3控制器,只需通過(guò)用戶接口信號(hào)就能完成DDR3讀寫(xiě)操作。DDR3用戶接口仲裁控制模塊將中斷請(qǐng)求分成多個(gè)子請(qǐng)求,實(shí)現(xiàn)視頻中斷和圖形中斷的并行處理。幀地址控制模塊確保當(dāng)前輸出幀輸出的是最新寫(xiě)滿的幀。驗(yàn)證結(jié)果表明,設(shè)計(jì)的DDR3存儲(chǔ)管理系統(tǒng)降低了多端口讀寫(xiě)DDR3的復(fù)雜度,提高了并行處理的速度。
存儲(chǔ)器控制;多端口;幀地址;DDR3;FPGA
本文以Xilinx公司的Kintex-7系列XC7K410T FPGA芯片和兩片Micron公司的MT41J128M16 DDR3 SDRAM芯片為硬件平臺(tái),設(shè)計(jì)并實(shí)現(xiàn)了基于FPGA的視頻圖形顯示系統(tǒng)的DDR3多端口存儲(chǔ)管理。
機(jī)載視頻圖形顯示系統(tǒng)中,為了實(shí)現(xiàn)多端口對(duì)DDR3的讀寫(xiě)訪問(wèn),設(shè)計(jì)的DDR3存儲(chǔ)管理系統(tǒng)設(shè)計(jì)框圖如圖1所示,主要包括DDR3存儲(chǔ)器控制模塊、DDR3用戶接口仲裁控制模塊和幀地址控制模塊。
圖1 DDR3存儲(chǔ)管理系統(tǒng)設(shè)計(jì)框圖
DDR3存儲(chǔ)器控制模塊采用Xilinx公司的MIG[4](Memory Interface Generator)方案,通過(guò)用戶接口建立FPGA內(nèi)部控制邏輯到DDR3的連接,用戶不需要管理DDR3初始化、寄存器配置等復(fù)雜的控制邏輯,只需要控制用戶接口的讀寫(xiě)操作。
DDR3用戶接口仲裁控制模塊將每一個(gè)數(shù)據(jù)讀寫(xiě)請(qǐng)求設(shè)置成中斷,借鑒中斷處理思想來(lái)進(jìn)行仲裁控制,從而解決數(shù)據(jù)存儲(chǔ)的沖突問(wèn)題。
幀地址控制模塊控制幀地址的切換。為了提高并行處理的速度,減少數(shù)據(jù)讀寫(xiě)沖突,將圖形數(shù)據(jù)和視頻數(shù)據(jù)分別存儲(chǔ)在不同的DDR3中。
MIG生成的DDR3控制器的邏輯框圖[5]如圖2所示,只需要通過(guò)用戶接口信號(hào)就能完成DDR3讀寫(xiě)操作,大大簡(jiǎn)化了DDR3的設(shè)計(jì)。
圖2 DDR3控制器的邏輯框圖
2.1 DDR3控制模塊用戶接口寫(xiě)操作設(shè)計(jì)
DDR3存儲(chǔ)器控制模塊用戶接口寫(xiě)操作有兩套系統(tǒng):一套是地址系統(tǒng),另一套是數(shù)據(jù)系統(tǒng)。用戶接口寫(xiě)操作信號(hào)說(shuō)明如表1所列。
表1 DDR3控制器用戶接口寫(xiě)操作信號(hào)說(shuō)明
地址系統(tǒng)的內(nèi)容是app_addr和app_cmd,兩者對(duì)齊綁定,app_cmd為000時(shí)為寫(xiě)命令。當(dāng)app_rdy(DDR3控制)和app_en(用戶控制)同時(shí)拉高時(shí),將app_addr和app_cmd寫(xiě)到相應(yīng)FIFO中。數(shù)據(jù)系統(tǒng)的內(nèi)容是app_wdf_data,它在app_wdf_rdy(DDR3控制)和app_wdf_wren(用戶控制)同時(shí)拉高時(shí),將寫(xiě)數(shù)據(jù)存到寫(xiě)FIFO中。
為了簡(jiǎn)化設(shè)計(jì),本文設(shè)計(jì)的用戶接口寫(xiě)操作時(shí)序如圖3所示,使兩套系統(tǒng)在時(shí)序上完全對(duì)齊。
圖3 DDR3寫(xiě)操作時(shí)序圖(突發(fā)長(zhǎng)度BL=8)
2.2 DDR3控制模塊用戶接口讀操作設(shè)計(jì)
用戶接口讀操作也分為地址系統(tǒng)和數(shù)據(jù)系統(tǒng)。用戶接口讀操作信號(hào)說(shuō)明如表2所列。
表2 DDR3控制器用戶接口讀操作信號(hào)說(shuō)明
地址系統(tǒng)與寫(xiě)操作相同,在時(shí)鐘上升沿且app_rdy為高電平時(shí),用戶端口同時(shí)發(fā)出讀命令(app_cmd=001)和讀地址,并將app_en拉高,將讀命令和地址寫(xiě)到FIFO中。對(duì)于數(shù)據(jù)系統(tǒng),當(dāng)app_rd_data_valid有效,則讀數(shù)據(jù)有效,讀回的數(shù)據(jù)順序與地址/控制總線請(qǐng)求命令的順序相同。
讀操作地址系統(tǒng)和數(shù)據(jù)系統(tǒng)一般是不對(duì)齊的,因?yàn)榈刂废到y(tǒng)發(fā)送到DDR3后,DDR3需要一定的反應(yīng)時(shí)間,讀操作時(shí)序如圖4所示。
圖4 DDR3讀操作時(shí)序圖(突發(fā)長(zhǎng)度BL=8)
每片DDR3只有一組控制、地址和數(shù)據(jù)總線,因此同一時(shí)刻只能有一個(gè)設(shè)備在訪問(wèn)。常見(jiàn)的總線切換方式有兩種:一種是輪詢機(jī)制[6],軟件實(shí)現(xiàn)簡(jiǎn)單,但實(shí)時(shí)性不高;另一種是仲裁機(jī)制[7],設(shè)備發(fā)送中斷請(qǐng)求,從而進(jìn)行總線切換。由于視頻圖形顯示系統(tǒng)對(duì)實(shí)時(shí)性要求高,因此選擇仲裁機(jī)制。
DDR3用戶接口仲裁控制框圖如圖5所示。為了提高并行速度,將圖形和視頻分別進(jìn)行中斷處理。將設(shè)備中斷請(qǐng)求解析成多個(gè)子請(qǐng)求,進(jìn)行優(yōu)先級(jí)判斷,每個(gè)子請(qǐng)求對(duì)應(yīng)一個(gè)中斷處理邏輯。
圖5 DDR3用戶接口仲裁控制設(shè)計(jì)框圖
3.1 視頻處理寫(xiě)請(qǐng)求中斷處理器設(shè)計(jì)
由于視頻處理寫(xiě)請(qǐng)求不涉及到圖形中斷處理,所以對(duì)應(yīng)一個(gè)子請(qǐng)求——視頻處理寫(xiě)子請(qǐng)求。
視頻處理模塊將采集到的視頻經(jīng)過(guò)縮放、旋轉(zhuǎn)等操作后存儲(chǔ)在緩存區(qū)中,當(dāng)緩存區(qū)滿時(shí)發(fā)送視頻處理模塊寫(xiě)請(qǐng)求。視頻處理寫(xiě)中斷處理主要是從視頻處理模塊的緩存區(qū)中將地址和數(shù)據(jù)取出,寫(xiě)入到視頻存儲(chǔ)DDR3中。
視頻處理寫(xiě)請(qǐng)求中斷處理流程圖如圖6所示。當(dāng)視頻處理模塊寫(xiě)請(qǐng)求信號(hào)有效時(shí),生成子中斷請(qǐng)求信號(hào),若總線空閑則響應(yīng)該中斷。當(dāng)命令接收就緒(app_rdy=1)且數(shù)據(jù)接收就緒(app_wdf_rdy=1)時(shí),從視頻處理緩存區(qū)中讀取地址和數(shù)據(jù),同時(shí)發(fā)送寫(xiě)命令、寫(xiě)地址和寫(xiě)數(shù)據(jù)。若緩存區(qū)為空,說(shuō)明全部寫(xiě)完,視頻處理寫(xiě)中斷結(jié)束。
圖6 視頻處理寫(xiě)請(qǐng)求中斷處理流程圖
3.2 疊加輸出讀請(qǐng)求中斷處理器設(shè)計(jì)
疊加輸出模塊需要從DDR3中將待輸出的圖形數(shù)據(jù)和視頻數(shù)據(jù)存儲(chǔ)到行緩存中,因此分為兩個(gè)子請(qǐng)求:視頻輸出讀請(qǐng)求和圖形輸出讀請(qǐng)求。由于兩者分別在圖形中斷處理和視頻中斷處理中完成,因此可以同時(shí)進(jìn)行。
視頻輸出讀中斷處理主要從視頻存儲(chǔ)DDR3中讀取1行視頻數(shù)據(jù),寫(xiě)入到疊加輸出模塊的視頻緩存區(qū)中,視頻輸出讀中斷處理流程圖如圖7所示。本系統(tǒng)中突發(fā)長(zhǎng)度BL=8,即每個(gè)用戶時(shí)鐘周期對(duì)應(yīng)接收同一行地址中相鄰的8個(gè)存儲(chǔ)單元的連續(xù)數(shù)據(jù)。輸出視頻分辨率為cols×rows,則地址系統(tǒng)需要發(fā)送cols/8個(gè)突發(fā)讀命令。數(shù)據(jù)系統(tǒng)接收讀數(shù)據(jù)時(shí),若讀數(shù)據(jù)有效(app_rd_data_valid=1),則將讀到的數(shù)據(jù)存儲(chǔ)到疊加輸出模塊的視頻緩存區(qū)中,同時(shí)讀數(shù)據(jù)個(gè)數(shù)加1。當(dāng)讀數(shù)據(jù)個(gè)數(shù)為cols/8時(shí),所有讀命令對(duì)應(yīng)的讀數(shù)據(jù)全部接收,視頻輸出讀中斷處理結(jié)束。
圖7 視頻輸出讀中斷處理流程圖
圖形輸出讀中斷處理包含兩個(gè)步驟:從圖形存儲(chǔ)DDR3中讀取1行圖形數(shù)據(jù),寫(xiě)到疊加輸出模塊的圖形緩存區(qū)中;將剛剛搬移數(shù)據(jù)到圖形緩存區(qū)的DDR3存儲(chǔ)空間清零。前者與視頻輸出讀中斷的處理過(guò)程類似。
圖形數(shù)據(jù)寫(xiě)入DDR3時(shí)只寫(xiě)入有圖形的位置,而不是全屏掃描,如果不進(jìn)行清屏操作會(huì)導(dǎo)致下一幀圖形畫(huà)面上殘留上一幀的圖形數(shù)據(jù)。清屏操作指圖形輸出后將DDR3中對(duì)應(yīng)地址的存儲(chǔ)空間全部寫(xiě)入數(shù)值0,從而將當(dāng)前圖形數(shù)據(jù)清除。
3.3 圖形生成寫(xiě)請(qǐng)求中斷處理器設(shè)計(jì)
為了提高讀寫(xiě)速度,圖形中斷處理器中先進(jìn)行直接結(jié)果寫(xiě)中斷處理,同時(shí)視頻中斷處理器中進(jìn)行插值背景視頻讀中斷處理,完成后再進(jìn)行插值結(jié)果寫(xiě)中斷處理。
幀地址控制模塊主要是將DDR3空間進(jìn)行劃分,同時(shí)控制幀地址的切換。為了簡(jiǎn)化設(shè)計(jì),將存儲(chǔ)器劃分為若干塊,每塊存儲(chǔ)一幀數(shù)據(jù),在用戶仲裁控制模塊讀寫(xiě)緩存區(qū)時(shí)只生成幀內(nèi)地址,幀地址的切換由幀讀寫(xiě)控制模塊實(shí)現(xiàn),幀內(nèi)地址結(jié)合幀地址組合成對(duì)應(yīng)DDR3的內(nèi)部地址值。DDR3的幀地址劃分如圖8所示。
圖8 DDR3幀地址劃分
設(shè)置三個(gè)幀存儲(chǔ)空間,其中一幀用于讀出,一幀用于寫(xiě)入,還有一幀空閑,分別稱作輸入幀、輸出幀和空閑幀。用三者的切換來(lái)實(shí)現(xiàn)幀速率的轉(zhuǎn)換,確保輸出幀相對(duì)于當(dāng)前輸入幀的延遲最小,即當(dāng)前輸出幀輸出的是最新寫(xiě)滿的幀。當(dāng)寫(xiě)入的幀存儲(chǔ)空間已經(jīng)寫(xiě)滿,而讀存儲(chǔ)空間還沒(méi)讀完,將下一幀的圖像數(shù)據(jù)寫(xiě)入當(dāng)前空閑的幀存儲(chǔ)空間。
圖9為PAL輸入幀和輸出幀讀寫(xiě)控制流程圖。以A空間為輸出幀,B空間為輸入幀,C空間為空閑幀為例。若A空間讀完,B空間寫(xiě)滿,則將B空間變成輸出幀并輸出,將C空間變成輸入幀并繼續(xù)輸入;若A空間還沒(méi)有讀完,B空間已經(jīng)寫(xiě)滿,則將下一幀數(shù)據(jù)寫(xiě)入到C空間,并繼續(xù)從A空間輸出。
圖9 PAL輸入幀和輸出幀讀寫(xiě)控制流程圖
圖形生成寫(xiě)中斷處理仿真圖略——編者注。
本文算法中,插值背景讀操作與直接結(jié)果寫(xiě)操作同時(shí)在視頻中斷處理和圖形中斷處理中進(jìn)行,利用并行操作減少時(shí)間,并大大降低了復(fù)雜度。
本文設(shè)計(jì)并實(shí)現(xiàn)了基于FPGA的DDR3多端口存儲(chǔ)管理,主要包括DDR3存儲(chǔ)器控制模塊、DDR3用戶接口仲裁控制模塊和幀地址控制模塊。DDR3存儲(chǔ)器控制模塊采用Xilinx公司的MIG方案,簡(jiǎn)化DDR3的邏輯控制;DDR3用戶接口仲裁控制模塊將圖形和視頻分別進(jìn)行中斷處理,提高了并行速度,同時(shí)簡(jiǎn)化了仲裁控制;幀地址控制模塊將DDR3空間進(jìn)行劃分,同時(shí)控制幀地址的切換。
經(jīng)過(guò)分析,本文將圖形和視頻中斷分開(kāi)處理,降低多端口讀寫(xiě)DDR3的復(fù)雜度,提高并行處理速度。
[1] 謝軍,杜黎明,史小白.用SoC實(shí)現(xiàn)視頻圖形引擎功能的研究[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2002(10):6.
[2] Ladbury R L, Berg M D, Wilcox E P, et al. Use of Commercial FPGA-Based Evaluation Boards for Single-Event Testing of DDR2 and DDR3 SDRAMs. 2013.
[3] 劉德保, 汪安民. 多核DSP芯片TMS320C6678的DDR3接口設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2013,13(9):53-55.
[4] Xilinx Inc.Zynq-7000 SoC and 7 Series Devices Memory Interface Solutions v2.0, 2013.
[5] 劉立. 基于 MPSoC 的 DDR3 存儲(chǔ)器接口設(shè)計(jì)[D]. 南京:南京大學(xué), 2013.
[6] 樊博, 王延杰, 孫宏海, 等. FPGA 實(shí)現(xiàn)高速實(shí)時(shí)多端口圖像處理系統(tǒng)的研究[J]. 液晶與顯示, 2013, 28(4): 620-625.
[7] 蘇丹, 任開(kāi)春, 何春晗. ARM 嵌入式系統(tǒng)中觸摸屏的中斷控制方法[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2010(5): 71-72.
[8] 任政. 幀速率上變換算法研究[D]. 上海:上海交通大學(xué), 2013.
[9] 張曉燕. 基于FPGA的機(jī)載視頻處理與圖形生成系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 南京:南京航空航天大學(xué), 2012.
吳連慧(碩士研究生),主要研究方向?yàn)闄C(jī)載信號(hào)處理及其FPGA技術(shù);周建江(教授),研究方向?yàn)闄C(jī)載電子信息系統(tǒng);夏偉杰(副教授),主要研究方向?yàn)樾盘?hào)處理。
Wu Lianhui,Zhou Jianjiang,Xia Weijie
(College of Electronic and Information Engineering,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China)
In order to solve the problem of data storage conflicts of multi-port accessing DDR3 in the video and graphics display system, DDR3 storage management system based on FPGA is designed and implemented.MIG(Memory Interface Generator) is used to generate DDR3 controller in the DDR3 memory control module, so that the read and write operations can be done only through the user interface.The arbitration control module of DDR3 user interface turns interrupt request into multiple sub-requests,then it can complete video and graphics interrupt parallel processing.Frame address control module makes sure that the output frame is the latest filled frame.The results show that the design of storage management system simplifies the complexity of multi-port to read and write DDR3,and the speed of parallel processing is improved.
memory control;multi-port;frame address;DDR3;FPGA
TP333
A
迪娜
2014-07-03)