文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.175167
中文引用格式: 張鳳麒,,張延彬,,王忠勇. 基于FPGA的DDR3六通道讀寫防沖突設(shè)計[J].電子技術(shù)應(yīng)用,2018,,44(7):68-71,,80.
英文引用格式: Zhang Fengqi,Zhang Yanbin,,Wang Zhongyong. Anti-conflict design for reading and writing of DDR3 six channels based on FPGA[J]. Application of Electronic Technique,,2018,44(7):68-71,,80.
0 引言
基于FPGA的期貨行情數(shù)據(jù)加速處理過程中,,不同的消息類型采用并行處理的方式,,并且每一次的處理結(jié)果需要使用內(nèi)存來緩存一次行情數(shù)據(jù)信息。行情數(shù)據(jù)信息容量巨大,,片上存儲難以滿足需求,,采用DDR3 SDRAM成為首選方法[1]。但由于DDR3只有一套數(shù)據(jù)訪問通道,,不能滿足多個通道同時訪問的需求[2],。此前的對于SDRAM的多通道解決方案中,比如曹一江[3]等設(shè)計的基于NPI總線的片外存儲器,最大帶寬可達(dá)743 Mb/s,;樊博[4]等使用UI接口,,DDR3通信的最大帶寬可達(dá)3.8 Gb/s;張宇嘉[5]等設(shè)計的基于AXI4的DDR3多端口方案雖然傳輸速率有所提高,,但由于AXI4協(xié)議本身的復(fù)雜性增加了開發(fā)使用的難度,。本文實現(xiàn)并驗證了期貨行情數(shù)據(jù)加速處理中基于FPGA的DDR3六通道UI接口讀寫防沖突設(shè)計,簡化了DDR3多通道讀寫的復(fù)雜度,,隨著有效數(shù)據(jù)周期的提升,,最高端口速率可達(dá)5.0 GB/s以上,帶寬利用率可達(dá)80%以上,。
1 總體設(shè)計架構(gòu)
本文所設(shè)計的六通道讀寫防沖突總體架構(gòu)如圖1所示,,主要包括通道判優(yōu)仲裁模塊、讀寫邏輯控制模塊和DDR3存儲器控制模塊,。
DDR3存儲控制器模塊采用Xilinx公司的MIG核,,用戶只需要通過IP核的GUI選擇內(nèi)存芯片并進(jìn)行相關(guān)參數(shù)設(shè)置,即可完成DDR3的配置工作[6],。
通道判優(yōu)仲裁模塊將對六路通道進(jìn)行仲裁,,對于同一時刻有讀寫請求的不同通道,該模塊按照優(yōu)先級的高低判定訪問DDR3的順序,,利用中斷思想解決多通道讀寫的沖突問題,。
讀寫邏輯控制模塊控制DDR3的接口生成,根據(jù)不同操作完成對應(yīng)接口的時序控制[7],,進(jìn)而實現(xiàn)對DDR3的正確讀寫訪問,。
2 DDR3存儲器控制模塊設(shè)計
DDR3 IP核生成的控制器邏輯框圖如圖2所示,采用UI接口的方式相比于AXI4接口,,不需要自己組織數(shù)據(jù),,容易操作,大大簡化了DDR3的使用復(fù)雜度,,為DDR3的擴展使用帶來了方便[8],。
2.1 存儲控制模塊寫操作
DDR3寫操作接口信號如表1所示。
寫操作過程:當(dāng)app_rdy和app_wdf_rdy同時為高的情況下,,寫入DDR3的地址app_addr與app_cmd綁定對齊,,寫入DDR3的數(shù)據(jù)app_wdf_data與數(shù)據(jù)掩碼app_wdf_mask綁定對齊,app_cmd置為3′b000,,與此同時app_en,、app_wdf_wren、app_wdf_end置高,,即可將數(shù)據(jù)寫到對應(yīng)的地址中,。
因為DDR3的寫時序不只一種,,為了簡化系統(tǒng)設(shè)計,本文設(shè)計的用戶接口寫操作時序為地址和數(shù)據(jù)完全對齊,,便于理解和操作[9],。
2.2 存儲控制模塊讀操作
DDR3的讀操作接口信號如表2所示。
讀操作過程:在app_rdy為高時,,用戶發(fā)送讀命令并同時將app_en置高,,則讀命令和讀地址會寫到DDR3中,DDR3會返回數(shù)據(jù)和有效指示信號,,兩者共同決定返回的數(shù)據(jù)是否有效,。
通常情況下,DDR3的讀請求結(jié)束之后不會馬上返回數(shù)據(jù),,需要延遲一定的時鐘周期,。
3 通道判優(yōu)仲裁模塊設(shè)計
通常情況下,由于DDR3只有一組控制,、地址和數(shù)據(jù)總線,,因此同一時刻只能有一個通道在訪問。根據(jù)期貨交易的處理規(guī)則,,優(yōu)先級由高到低的順序依次為合約信息消息、市場狀態(tài)消息,、品種交易狀態(tài)消息,、成交統(tǒng)計行情消息、多檔定單簿行情消息,、多檔成交量統(tǒng)計行情消息,。在通道判優(yōu)的過程中,首先將6種不同的消息經(jīng)封裝后分別寄存到相應(yīng)的消息緩存中,,每一通道寫入消息緩存中的數(shù)據(jù)格式,,從高到低位依次為寫使能、讀使能,、寫數(shù)據(jù),、寫地址、讀地址,;然后首先判斷合約信息消息緩存是否為空,,如果不為空,則證明當(dāng)前有合約信息消息的請求發(fā)生,,此時狀態(tài)機會跳轉(zhuǎn)到合約信息消息處理狀態(tài),;待合約信息消息的緩存全部讀取完畢之后,再次按優(yōu)先級順序判斷其他消息緩存是否為空,,狀態(tài)機隨即做相應(yīng)的跳轉(zhuǎn),,完成不同通道之間的切換,如圖3所示。
對于不同的消息類型,,對應(yīng)著不同的消息處理單元,,目的是增加系統(tǒng)的并行處理操作,降低處理延遲,。
4 讀寫邏輯控制模塊
讀寫邏輯控制模塊主要對不同類型消息做并行化處理,,生成DDR3的接口信號,每個消息的處理流程如圖4所示,。
對于期貨交易中的各種合約行情,,種類多,但占用空間小,,通常DDR3中一個地址就可完成一個行情的存儲,,在行情的還原、計算,、發(fā)布中,,需要讀取多個行情。由于DDR3的突發(fā)長度為8,,為了便于對行情的準(zhǔn)確存取,,6個通道的數(shù)據(jù)位寬均設(shè)定為DDR3位寬的1/8,即一次只存取一個地址的數(shù)據(jù),。
對于通道判優(yōu)仲裁模塊輸出的數(shù)據(jù),,寫使能與讀使能均為1 bit位寬,高電平表示請求發(fā)生,;寫數(shù)據(jù)為64 bit位寬,;寫地址和讀地址為28 bit位寬,DDR3的數(shù)據(jù)位寬在IP核中配置為512 bit,,地址位寬為28 bit,。因?qū)憯?shù)據(jù)位寬與DDR3數(shù)據(jù)位寬不匹配,所以DDR3的寫操作需要掩碼配合共同完成,。
處理過程如下:首先進(jìn)行讀寫判斷,,若寫使能置高,則跳轉(zhuǎn)到寫操作狀態(tài),;若讀使能置高,,則跳轉(zhuǎn)到讀操作狀態(tài),若無讀寫操作,,處于等待狀態(tài),。(期貨行情消息處理中不會出現(xiàn)同一通道讀寫同時進(jìn)行的情況,因此同一通道讀寫使能同為高電平的情況不會出現(xiàn),。)
如果是寫操作,,一方面生成寫入DDR3的地址和命令,,另一方面將寫數(shù)據(jù)封裝成512 bit位寬。其中寫入DDR3的地址app_addr為{寫地址[27:3],,3′d0},,寫入的數(shù)據(jù)app_wdf_data和掩碼app_wdf_mask由寫地址[2:0]確定。數(shù)據(jù)地址命令控制模塊也會相應(yīng)的產(chǎn)生app_en,、app_wdf_wren,、app_wdf_end控制信號,這些信號共同作用關(guān)于DDR3 SDRAM存儲器,,配合完成DDR3的寫入操作,,如圖5所示。
如果是讀操作,,地址命令選擇模塊將讀地址[27:3]賦值給app_addr作為寫入DDR3的基地址,,同時將讀地址[2:0]作為寫入DDR3的偏移地址存入對應(yīng)通道的偏移地址緩存中,在數(shù)據(jù)地址命令控制模塊生成其他的控制信號傳送給DDR3 SDRAM存儲器,。DDR3 SDRAM根據(jù)地址返回相應(yīng)的512 bit位寬的數(shù)據(jù),。在返回數(shù)據(jù)的同時讀取對應(yīng)通道偏移地址緩存中的偏移地址,并根據(jù)此偏移提取對應(yīng)的64 bit數(shù)據(jù)從而完成DDR3的一次讀取操作,,如圖6所示,。
5 實驗結(jié)果與分析
5.1 實驗結(jié)果
本文以Xilinx公司的Kintex-7系列XC7K325T FPGA芯片和Micron公司的JBF9C256x72AKZ DDR3芯片為硬件平臺,并以此來驗證本文設(shè)計的正確性,,分析其性能,。
測試方法:六通道在同一時刻發(fā)起DDR3的讀寫請求,其中1~4通道進(jìn)行DDR3的寫請求,,5、6通道進(jìn)行DDR3的讀請求,,狀態(tài)機按照消息優(yōu)先級的順序依次進(jìn)行狀態(tài)跳轉(zhuǎn)完成處理,,最后將數(shù)據(jù)分別返回到相應(yīng)通道中,ChipScope結(jié)果如圖7所示,。
5.2 實驗分析
為了更好描述設(shè)計的性能,,本文引入以下參數(shù)。仲裁時間:請求信號發(fā)生到通道開始處理的時間間隔,;IP核處理時間:DDR3 IP核從接收指令到返回數(shù)據(jù)的時間,;有效提取時間:從512 bit的DDR3返回數(shù)據(jù)中提取對應(yīng)的64 bit的時間間隔;有效數(shù)據(jù)時間:數(shù)據(jù)有效的維持時間,;總時間:消息請求到數(shù)據(jù)返回的時間,,即仲裁時間、IP核處理時間與有效數(shù)據(jù)時間之和,。因此:
在本設(shè)計中,,實測仲裁時間為3個時鐘周期,,IP核處理時間為22個時鐘周期,有效提取時間2個時鐘周期,,如圖8所示,。
每個通道的有效數(shù)據(jù)時間不相同,性能也不相同,,具體測試結(jié)果如表3所示,。
測試結(jié)果表明,本設(shè)計能穩(wěn)定高效地完成多通道對DDR3的訪問,,隨著有效數(shù)據(jù)周期的提升,,通道速率可達(dá)5 GB/s以上,帶寬利用率可達(dá)80%以上,,能夠滿足期貨行情數(shù)據(jù)處理過程中的實時性要求,。
6 結(jié)論
本文設(shè)計并實現(xiàn)了基于FPGA的DDR3六通道讀寫防沖突設(shè)計,能有效地解決在期貨行情數(shù)據(jù)處理中多通道同時訪問DDR3的沖突問題,,在現(xiàn)有的Kintex-7系列FPGA平臺期貨行情數(shù)據(jù)處理系統(tǒng)中取得了良好的應(yīng)用效果,。測試結(jié)果表明該防沖突設(shè)計能高效正確地完成多通道對DDR3的訪問,具有穩(wěn)定性好,、仲裁時間固定,、效率高等特點。本文設(shè)計的DDR3多通道讀寫防沖突設(shè)計簡化了多通道讀寫DDR3的復(fù)雜度,,降低了在期貨行情數(shù)據(jù)處理過程中的延遲,,提高了并行處理速度。
參考文獻(xiàn)
[1] 曠立強.基于FPGA的DDR3設(shè)計與實現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),,2014.
[2] 吳連慧.基于FPGA的DDR3多端口讀寫存儲管理設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,,2015,14(11):71-74.
[3] 曹一江,,馬寧,,王建民.MPMC高速存儲器接口IP核設(shè)計[J].哈爾濱理工大學(xué)學(xué)報,2012,,17(6):75-80.
[4] 樊博,,王延?xùn)|,孫宏海,,等.FPGA實現(xiàn)高速實時多端口SDRAM控制器的研究[J].計算機工程與應(yīng)用,,2013,49(12):60-64.
[5] 張宇嘉,,楊曉非,,姚行中.基于AXI4的衛(wèi)星接收機DDR3多端口存儲的設(shè)計[J].電子器件,2016,,39(3):74-78.
[6] 梁晨,,趙邦信.基于FPGA和DDR3 SDRAM的大規(guī)模查找表設(shè)計與實現(xiàn)[J].電子器件,,2017,40(4):849-855.
[7] 宋明,,趙英瀟,,林錢強.基于FPGA的DDR3 SDRAM控制器的設(shè)計與優(yōu)化[J].電子科技,2016,,29(11):47-50.
[8] 姜文博,,陳維蛇,司蓉蓉.Xilinx系列FPGA對DDR3的訪問接口設(shè)計[J].通訊世界,,2016,,15(5):243-247.
[9] 潘一飛,余海.基于FPGA的DDR3用戶接口設(shè)計[J].電子制作,,2013,,24(15):9-13.
作者信息:
張鳳麒,張延彬,,王忠勇
(鄭州大學(xué) 產(chǎn)業(yè)技術(shù)研究院,,河南 鄭州450000)