《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的DDR3六通道讀寫防沖突設(shè)計(jì)
基于FPGA的DDR3六通道讀寫防沖突設(shè)計(jì)
2018年電子技術(shù)應(yīng)用第7期
張鳳麒,張延彬,王忠勇
鄭州大學(xué) 產(chǎn)業(yè)技術(shù)研究院,河南 鄭州450000
摘要: 為了解決期貨行情數(shù)據(jù)加速處理中多個(gè)通道同時(shí)訪問DDR3時(shí)出現(xiàn)的數(shù)據(jù)讀寫沖突問題,實(shí)現(xiàn)了一種基于FPGA的DDR3六通道讀寫防沖突設(shè)計(jì),完成了對(duì)單片DDR3內(nèi)存條的多通道實(shí)時(shí)訪問控制需求。通過ChipScope工具采樣結(jié)果證明了設(shè)計(jì)的可行性,提高了并行處理的速度,極大程度地降低了期貨行情數(shù)據(jù)處理中行情計(jì)算的時(shí)間開銷,最高通道速率可達(dá)5.0 GB/s以上,帶寬利用率可達(dá)80%以上,在多通道數(shù)據(jù)讀寫應(yīng)用中具有很高的實(shí)用價(jià)值。
關(guān)鍵詞: 多通道 防沖突 DDR3 FPGA
中圖分類號(hào): TP334.4
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.175167
中文引用格式: 張鳳麒,張延彬,王忠勇. 基于FPGA的DDR3六通道讀寫防沖突設(shè)計(jì)[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.
Anti-conflict design for reading and writing of DDR3 six channels based on FPGA
Zhang Fengqi,Zhang Yanbin,Wang Zhongyong
Industrial Technology Research Institute,Zhengzhou University,Zhengzhou 450000,China
Abstract: In order to solve the problem of data conflict of reading and writing when multiple channels access DDR3 at the same time in the acceleration processing of futures market data, an anti-conflict design for reading and writing of DDR3 six channels based on FPGA is implemented and the requirement of multiple channels′ real-time access control for monolithic DDR3 memory bar is completed. The result of ChipScope sampling proves the feasibility of the design, it improves the parallel processing speed and reduces the prices of time overhead in the calculation of futures market data processing. The highest channel rate can reach more than 5.0 GB/s and the bandwidth utilization rate can reach more than 80%. The design has a very high practical value in the application of multiple channels′ reading and writing.
Key words : multiple channels;anti-conflict;DDR3;FPGA

0 引言

    基于FPGA的期貨行情數(shù)據(jù)加速處理過程中,不同的消息類型采用并行處理的方式,并且每一次的處理結(jié)果需要使用內(nèi)存來緩存一次行情數(shù)據(jù)信息。行情數(shù)據(jù)信息容量巨大,片上存儲(chǔ)難以滿足需求,采用DDR3 SDRAM成為首選方法[1]。但由于DDR3只有一套數(shù)據(jù)訪問通道,不能滿足多個(gè)通道同時(shí)訪問的需求[2]。此前的對(duì)于SDRAM的多通道解決方案中,比如曹一江[3]等設(shè)計(jì)的基于NPI總線的片外存儲(chǔ)器,最大帶寬可達(dá)743 Mb/s;樊博[4]等使用UI接口,DDR3通信的最大帶寬可達(dá)3.8 Gb/s;張宇嘉[5]等設(shè)計(jì)的基于AXI4的DDR3多端口方案雖然傳輸速率有所提高,但由于AXI4協(xié)議本身的復(fù)雜性增加了開發(fā)使用的難度。本文實(shí)現(xiàn)并驗(yàn)證了期貨行情數(shù)據(jù)加速處理中基于FPGA的DDR3六通道UI接口讀寫防沖突設(shè)計(jì),簡(jiǎn)化了DDR3多通道讀寫的復(fù)雜度,隨著有效數(shù)據(jù)周期的提升,最高端口速率可達(dá)5.0 GB/s以上,帶寬利用率可達(dá)80%以上。

1 總體設(shè)計(jì)架構(gòu)

    本文所設(shè)計(jì)的六通道讀寫防沖突總體架構(gòu)如圖1所示,主要包括通道判優(yōu)仲裁模塊、讀寫邏輯控制模塊和DDR3存儲(chǔ)器控制模塊。

qrs3-t1.gif

    DDR3存儲(chǔ)控制器模塊采用Xilinx公司的MIG核,用戶只需要通過IP核的GUI選擇內(nèi)存芯片并進(jìn)行相關(guān)參數(shù)設(shè)置,即可完成DDR3的配置工作[6]

    通道判優(yōu)仲裁模塊將對(duì)六路通道進(jìn)行仲裁,對(duì)于同一時(shí)刻有讀寫請(qǐng)求的不同通道,該模塊按照優(yōu)先級(jí)的高低判定訪問DDR3的順序,利用中斷思想解決多通道讀寫的沖突問題。

    讀寫邏輯控制模塊控制DDR3的接口生成,根據(jù)不同操作完成對(duì)應(yīng)接口的時(shí)序控制[7],進(jìn)而實(shí)現(xiàn)對(duì)DDR3的正確讀寫訪問。

2 DDR3存儲(chǔ)器控制模塊設(shè)計(jì)

    DDR3 IP核生成的控制器邏輯框圖如圖2所示,采用UI接口的方式相比于AXI4接口,不需要自己組織數(shù)據(jù),容易操作,大大簡(jiǎn)化了DDR3的使用復(fù)雜度,為DDR3的擴(kuò)展使用帶來了方便[8]。

qrs3-t2.gif

2.1 存儲(chǔ)控制模塊寫操作

    DDR3寫操作接口信號(hào)如表1所示。

qrs3-b1.gif

    寫操作過程:當(dāng)app_rdy和app_wdf_rdy同時(shí)為高的情況下,寫入DDR3的地址app_addr與app_cmd綁定對(duì)齊,寫入DDR3的數(shù)據(jù)app_wdf_data與數(shù)據(jù)掩碼app_wdf_mask綁定對(duì)齊,app_cmd置為3′b000,與此同時(shí)app_en、app_wdf_wren、app_wdf_end置高,即可將數(shù)據(jù)寫到對(duì)應(yīng)的地址中。

    因?yàn)镈DR3的寫時(shí)序不只一種,為了簡(jiǎn)化系統(tǒng)設(shè)計(jì),本文設(shè)計(jì)的用戶接口寫操作時(shí)序?yàn)榈刂泛蛿?shù)據(jù)完全對(duì)齊,便于理解和操作[9]。

2.2 存儲(chǔ)控制模塊讀操作

    DDR3的讀操作接口信號(hào)如表2所示。

qrs3-b2.gif

    讀操作過程:在app_rdy為高時(shí),用戶發(fā)送讀命令并同時(shí)將app_en置高,則讀命令和讀地址會(huì)寫到DDR3中,DDR3會(huì)返回?cái)?shù)據(jù)和有效指示信號(hào),兩者共同決定返回的數(shù)據(jù)是否有效。

    通常情況下,DDR3的讀請(qǐng)求結(jié)束之后不會(huì)馬上返回?cái)?shù)據(jù),需要延遲一定的時(shí)鐘周期。

3 通道判優(yōu)仲裁模塊設(shè)計(jì)

    通常情況下,由于DDR3只有一組控制、地址和數(shù)據(jù)總線,因此同一時(shí)刻只能有一個(gè)通道在訪問。根據(jù)期貨交易的處理規(guī)則,優(yōu)先級(jí)由高到低的順序依次為合約信息消息、市場(chǎng)狀態(tài)消息、品種交易狀態(tài)消息、成交統(tǒng)計(jì)行情消息、多檔定單簿行情消息、多檔成交量統(tǒng)計(jì)行情消息。在通道判優(yōu)的過程中,首先將6種不同的消息經(jīng)封裝后分別寄存到相應(yīng)的消息緩存中,每一通道寫入消息緩存中的數(shù)據(jù)格式,從高到低位依次為寫使能、讀使能、寫數(shù)據(jù)、寫地址、讀地址;然后首先判斷合約信息消息緩存是否為空,如果不為空,則證明當(dāng)前有合約信息消息的請(qǐng)求發(fā)生,此時(shí)狀態(tài)機(jī)會(huì)跳轉(zhuǎn)到合約信息消息處理狀態(tài);待合約信息消息的緩存全部讀取完畢之后,再次按優(yōu)先級(jí)順序判斷其他消息緩存是否為空,狀態(tài)機(jī)隨即做相應(yīng)的跳轉(zhuǎn),完成不同通道之間的切換,如圖3所示。

qrs3-t3.gif

    對(duì)于不同的消息類型,對(duì)應(yīng)著不同的消息處理單元,目的是增加系統(tǒng)的并行處理操作,降低處理延遲。

4 讀寫邏輯控制模塊

    讀寫邏輯控制模塊主要對(duì)不同類型消息做并行化處理,生成DDR3的接口信號(hào),每個(gè)消息的處理流程如圖4所示。

qrs3-t4.gif

    對(duì)于期貨交易中的各種合約行情,種類多,但占用空間小,通常DDR3中一個(gè)地址就可完成一個(gè)行情的存儲(chǔ),在行情的還原、計(jì)算、發(fā)布中,需要讀取多個(gè)行情。由于DDR3的突發(fā)長(zhǎng)度為8,為了便于對(duì)行情的準(zhǔn)確存取,6個(gè)通道的數(shù)據(jù)位寬均設(shè)定為DDR3位寬的1/8,即一次只存取一個(gè)地址的數(shù)據(jù)。

    對(duì)于通道判優(yōu)仲裁模塊輸出的數(shù)據(jù),寫使能與讀使能均為1 bit位寬,高電平表示請(qǐng)求發(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)。(期貨行情消息處理中不會(huì)出現(xiàn)同一通道讀寫同時(shí)進(jìn)行的情況,因此同一通道讀寫使能同為高電平的情況不會(huì)出現(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ù)地址命令控制模塊也會(huì)相應(yīng)的產(chǎn)生app_en、app_wdf_wren、app_wdf_end控制信號(hào),這些信號(hào)共同作用關(guān)于DDR3 SDRAM存儲(chǔ)器,配合完成DDR3的寫入操作,如圖5所示。

qrs3-t5.gif

    如果是讀操作,地址命令選擇模塊將讀地址[27:3]賦值給app_addr作為寫入DDR3的基地址,同時(shí)將讀地址[2:0]作為寫入DDR3的偏移地址存入對(duì)應(yīng)通道的偏移地址緩存中,在數(shù)據(jù)地址命令控制模塊生成其他的控制信號(hào)傳送給DDR3 SDRAM存儲(chǔ)器。DDR3 SDRAM根據(jù)地址返回相應(yīng)的512 bit位寬的數(shù)據(jù)。在返回?cái)?shù)據(jù)的同時(shí)讀取對(duì)應(yīng)通道偏移地址緩存中的偏移地址,并根據(jù)此偏移提取對(duì)應(yīng)的64 bit數(shù)據(jù)從而完成DDR3的一次讀取操作,如圖6所示。

qrs3-t6.gif

5 實(shí)驗(yàn)結(jié)果與分析

5.1 實(shí)驗(yàn)結(jié)果

    本文以Xilinx公司的Kintex-7系列XC7K325T FPGA芯片和Micron公司的JBF9C256x72AKZ DDR3芯片為硬件平臺(tái),并以此來驗(yàn)證本文設(shè)計(jì)的正確性,分析其性能。

    測(cè)試方法:六通道在同一時(shí)刻發(fā)起DDR3的讀寫請(qǐng)求,其中1~4通道進(jìn)行DDR3的寫請(qǐng)求,5、6通道進(jìn)行DDR3的讀請(qǐng)求,狀態(tài)機(jī)按照消息優(yōu)先級(jí)的順序依次進(jìn)行狀態(tài)跳轉(zhuǎn)完成處理,最后將數(shù)據(jù)分別返回到相應(yīng)通道中,ChipScope結(jié)果如圖7所示。

qrs3-t7.gif

5.2 實(shí)驗(yàn)分析

    為了更好描述設(shè)計(jì)的性能,本文引入以下參數(shù)。仲裁時(shí)間:請(qǐng)求信號(hào)發(fā)生到通道開始處理的時(shí)間間隔;IP核處理時(shí)間:DDR3 IP核從接收指令到返回?cái)?shù)據(jù)的時(shí)間;有效提取時(shí)間:從512 bit的DDR3返回?cái)?shù)據(jù)中提取對(duì)應(yīng)的64 bit的時(shí)間間隔;有效數(shù)據(jù)時(shí)間:數(shù)據(jù)有效的維持時(shí)間;總時(shí)間:消息請(qǐng)求到數(shù)據(jù)返回的時(shí)間,即仲裁時(shí)間、IP核處理時(shí)間與有效數(shù)據(jù)時(shí)間之和。因此:

     qrs3-gs1-2.gif

    在本設(shè)計(jì)中,實(shí)測(cè)仲裁時(shí)間為3個(gè)時(shí)鐘周期,IP核處理時(shí)間為22個(gè)時(shí)鐘周期,有效提取時(shí)間2個(gè)時(shí)鐘周期,如圖8所示。

qrs3-t8.gif

    每個(gè)通道的有效數(shù)據(jù)時(shí)間不相同,性能也不相同,具體測(cè)試結(jié)果如表3所示。

qrs3-b3.gif

    測(cè)試結(jié)果表明,本設(shè)計(jì)能穩(wěn)定高效地完成多通道對(duì)DDR3的訪問,隨著有效數(shù)據(jù)周期的提升,通道速率可達(dá)5 GB/s以上,帶寬利用率可達(dá)80%以上,能夠滿足期貨行情數(shù)據(jù)處理過程中的實(shí)時(shí)性要求。

6 結(jié)論

    本文設(shè)計(jì)并實(shí)現(xiàn)了基于FPGA的DDR3六通道讀寫防沖突設(shè)計(jì),能有效地解決在期貨行情數(shù)據(jù)處理中多通道同時(shí)訪問DDR3的沖突問題,在現(xiàn)有的Kintex-7系列FPGA平臺(tái)期貨行情數(shù)據(jù)處理系統(tǒng)中取得了良好的應(yīng)用效果。測(cè)試結(jié)果表明該防沖突設(shè)計(jì)能高效正確地完成多通道對(duì)DDR3的訪問,具有穩(wěn)定性好、仲裁時(shí)間固定、效率高等特點(diǎn)。本文設(shè)計(jì)的DDR3多通道讀寫防沖突設(shè)計(jì)簡(jiǎn)化了多通道讀寫DDR3的復(fù)雜度,降低了在期貨行情數(shù)據(jù)處理過程中的延遲,提高了并行處理速度。

參考文獻(xiàn)

[1] 曠立強(qiáng).基于FPGA的DDR3設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2014.

[2] 吳連慧.基于FPGA的DDR3多端口讀寫存儲(chǔ)管理設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015,14(11):71-74.

[3] 曹一江,馬寧,王建民.MPMC高速存儲(chǔ)器接口IP核設(shè)計(jì)[J].哈爾濱理工大學(xué)學(xué)報(bào),2012,17(6):75-80.

[4] 樊博,王延?xùn)|,孫宏海,等.FPGA實(shí)現(xiàn)高速實(shí)時(shí)多端口SDRAM控制器的研究[J].計(jì)算機(jī)工程與應(yīng)用,2013,49(12):60-64.

[5] 張宇嘉,楊曉非,姚行中.基于AXI4的衛(wèi)星接收機(jī)DDR3多端口存儲(chǔ)的設(shè)計(jì)[J].電子器件,2016,39(3):74-78.

[6] 梁晨,趙邦信.基于FPGA和DDR3 SDRAM的大規(guī)模查找表設(shè)計(jì)與實(shí)現(xiàn)[J].電子器件,2017,40(4):849-855.

[7] 宋明,趙英瀟,林錢強(qiáng).基于FPGA的DDR3 SDRAM控制器的設(shè)計(jì)與優(yōu)化[J].電子科技,2016,29(11):47-50.

[8] 姜文博,陳維蛇,司蓉蓉.Xilinx系列FPGA對(duì)DDR3的訪問接口設(shè)計(jì)[J].通訊世界,2016,15(5):243-247.

[9] 潘一飛,余海.基于FPGA的DDR3用戶接口設(shè)計(jì)[J].電子制作,2013,24(15):9-13.



作者信息:

張鳳麒,張延彬,王忠勇

(鄭州大學(xué) 產(chǎn)業(yè)技術(shù)研究院,河南 鄭州450000)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。