999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Kintex?7 FPGA 的DDR3 SDRAM接口應用研究

2018-01-02 23:35:09吳長瑞徐建清蔣景紅
現代電子技術 2017年24期

吳長瑞+徐建清+蔣景紅

摘 要: 針對FPGA中使用DDR3進行大容量數據的緩存應用背景,采用模塊化設計方法,提出基于Xilinx Kintex?7 FPGA的DDR3 SDRAM FIFO接口設計方案。在分析DDR3用戶接口特點和用戶接口時序的基礎上,對不同讀/寫模式進行效率測試。借鑒標準FIFO的設計思想,結合DDR3 SDRAM控制器的特點,設計遍歷狀態機對該FIFO接口進行讀/寫測試。最后,原型機平臺驗證了該接口不僅具有標準FIFO簡單易用的功能,而且具有存儲空間大等優勢。

關鍵詞: DDR3 SDRAM; FIFO; FPGA; 遍歷狀態機

中圖分類號: TN43?34; TP332.3 文獻標識碼: A 文章編號: 1004?373X(2017)24?0021?04

Abstract: Aiming at the application background of using DDR3 for large?capacity data caching in FPGA, a design scheme of DDR3 SDRAM FIFO interface based on Xilinx Kintex?7 FPGA is presented according to the modularized design method. Based on the analysis of DDR3 user interface characteristics and user interface time sequence, the efficiency of different read?write modes was tested. In combination with the design thought of standard FIFO and characteristics of DDR3 SDRAM controller, the traversal state machine is designed to perform the read?write test of the FIFO interface. The interface was verified with the prototype platform. The result demonstrates that the interface has the simple and easy?to?use functions of standard FIFO, and large storage space.

Keywords: DDR3 SDRAM; first?in first?out; field programmable gate array; traversal state machine

0 引 言

在高速實時數據信號處理領域,緩存是不可缺少的部分,利用FPGA外接DDR3 SDRAM(Synchronous Dynamic Random Access Memory) 進行大容量數據緩存是近期研究的熱點。異步FIFO以其接口時序簡單、易于操作、讀寫速度高等優點廣泛應用于數據實時采集和跨時鐘域數據傳輸的系統中。由于工藝的限制,常見的FIFO芯片或者FPGA內部的FIFO IP核容量非常有限,很難滿足數據吞吐量較大的系統。DDR3 SDRAM具有集成度高、讀寫速度快、價格便宜等優點成為目前數據緩存的主流;但其操作復雜,增加了系統的開發周期和開發成本[1?2]。

本文提出基于FPGA的DDR3 SDRAM FIFO接口方案,該方案既具有DDR3 SDRAM容量大、成本低等優點又具有異步FIFO接口簡單、易于操作的優點。從用戶接口信號入手分析接口速度、接口效率和接口時序,在此基礎上設計基于DDR3的FIFO接口,并編寫測試程序對該設計進行遍歷測試。目前,該方案已經在某項目的高速數據緩存中得到了應用。

1 DDR3 SDRAM

DDR3 SDRAM即同步動態隨機存取存儲器,同步是指Memory工作需要同步時鐘,內部命令的發送與數據的傳輸都以它為基準;動態是指存儲陣列需要不斷的刷新來保證數據不丟失;隨機是指數據不是線性依次存儲,而是由指定地址進行數據讀寫。

與靜態隨機存儲器(Static Random Access Memory,SRAM)靠雙穩態觸發器來記憶信息的原理不同,SDRAM是靠MOS電路中的柵極電容來記憶信息。由于電容上的電荷會泄漏,需要定時給與補充,所以SDRAM需要設置刷新電路。但SDRAM比SRAM集成度高、功耗低,成本也低,適于作大容量存儲器[3?4]。表1為兩種類型的存儲器特點。

2 DDR3用戶接口

本設計選用Micron公司MT41J128M16HA?15EIT 芯片,單片DDR3位寬16 b,深度128 Mb,即DDR3的容量為128 Mb×16 b=2 Gb。Xilinx DDR3控制器的作用是將雙時鐘沿觸發接口轉換為用戶易操作的單時鐘沿觸發接口[5]。

2.1 DDR3接口速度

表2為Kintex?7 FFG封裝系列FPGA在不同存儲器類型、不同Bank類型、不同FPGA速度等級等條件下DDR3最大接口速率[2]。

從表1中可以得出如下結論:

(1) 同等條件下,4:1 DDR3接口控制器的速率要高于2:1 DDR3接口控制器的速率。

(2) 同等條件下,HP (High Performance)Bank對應接口控制器的速率要高于HR (High Range) Bank對應接口控制器的速率;設計時根據不同應用需求選擇HP Bank還是HR Bank。endprint

(3) 從文獻[6]還可以看出,同等條件下,FFG封裝的FPGA對應DDR3接口控制器的速率要高于FBG封裝FPGA對應的DDR3接口控制器的速率。

2.2 DDR3接口效率

由于DDR3存在預充電、刷新、行激活等操作,所以DDR3就存在一個接口效率的問題。 如果不考慮開銷,單純從時鐘和數據位寬的角度看,一個工作時鐘為533 MHz,數據位寬為16 b的DDR3顆粒,由于接口是雙倍數據速率(Double Data Rate,DDR),那么單片DDR3顆粒理論最大帶寬為8.528 GB/s。但是,DDR3的讀/寫共用同一組數據總線,同時DDR3內部是以Bank/行/列的組織結構,讀/寫切換、同Bank不同行間切換都需要比較長的時間,同時不同指令之間也有各種時間間隙要求[7]。應用模式不同,DDR3接口效率差異非常大[8]。本文對相同Bank內單行寫不同數量的burst數據進行分析研究。

測試方法為給Xilinx的DDR3控制器中輸入指定的激勵,利用chipscope查看讀/寫遍歷DDR3所需要的時間,根據DDR3的容量和遍歷讀/寫所用的時間計算出有效讀寫帶寬。

本設計采用的DDR3的芯片一行對應1 024列。圖1為單行寫不同burst數量數據的示意圖。圖1(a)為每行寫一個burst數據,然后切換到下一行,圖1(b)為每行寫2個burst數據,然后切換到下一行,圖1(c)為每行寫4個burst數據,然后切換到下一行。

相同Bank內單行寫不同burst數量的讀/寫效率如表3所示。

經驗證發現,Xilinx 的DDR3控制器對于按地址連續讀/寫,效率還是比較高,可以達到89%~90%之間,但是Xilinx的DDR3控制器對于DDR3的隨機地址存儲效率比較低。單行單個burst讀/寫操作,讀/寫效率只有9.8%~12%。對于一些需要隨機讀/寫的應用,提高帶寬的方法是避免同Bank行切換以及讀/寫頻繁切換。

2.3 DDR3接口時序

Xilinx DDR3 控制器接口信號包括地址信號、寫數據信號和讀數據信號等。DDR3讀/寫共用同一個地址信號。Kintex?7系列FPGA 外接的DDR3 僅支持突發長度BL(Burst Length)為8,即一個地址對應讀/寫8個數據。DDR3 控制器內部由兩部分組成,控制部分和數據部分。控制部分用于控制讀操作還是寫操作,讀寫地址是什么;數據部分用于傳輸要寫入DDR3的數據或讀出的數據[10]。

從圖2可以得到連續寫命令的控制要點如下:

(1) 當app_rdy(DDR3地址準備好信號)和app_en(DDR3地址使能信號)同時拉高時,寫命令和寫地址有效或者讀命令和讀地址有效,這根據app_cmd的值判斷。

(2) 當app_wdf_rdy(DDR3寫FIFO準備好信號)和app_wdf_en(DDR3寫FIFO使能信號)同時拉高的時候,寫入數據有效。

(3) 讀命令和讀有效相差14~20個時鐘周期。

(4) Kintex?7系列的FPGA BL=8,寫數據位寬和讀數據位寬是顆粒位寬的8倍,所以一個命令地址對應一個數據。

3 DDR3 FIFO接口設計

由于本設計采用型號MT41J128M16HA?15EIT,單片位寬16 b,深度128 M,即DDR3的容量為128 Mb×16 b=16 Mb×128 b,因此可以將DDR3 FIFO接口模擬成一個深度為16 Mb,位寬128 b的FIFO。

圖3為DDR3 FIFO接口模塊框圖。該模塊主要由寫FIFO(wr_fifo)、讀FIFO(rd_fifo)和讀控制模塊(wr_rd_ctrl)三部分組成。本節利用硬件描述語言Verilog HDL闡述讀/寫控制模塊在Kirtex?7中的主要實現過程。

wr_fifo 和rd_fifo的數據位寬和DDR3 控制器的用戶接口位寬一致。筆者看到的就是FIFO接口,wr_fifo為寫數據FIFO,用來緩存當DDR3 SDRAM 控制器處于非空閑狀態時,外部發送過來的數據,以免造成數據丟失;rd_fifo 為讀數據FIFO,用來緩存從DDR3 SDRAM 中讀出的數據。

為了防止DDR3 FIFO出現上溢或者下溢的現象,即防止FIFO寫滿或者讀空,設計中使用計數器ddr3_wr_cnt表示DDR3 FIFO中當前緩存的數據個數。當DDR3 FIFO寫操作時,ddr3_wr_cnt增加1;當DDR3 FIFO讀操作時,ddr3_wr_cnt減少1;DDR3 FIFO讀控制模塊的部分Verilog代碼如下:

if(ddr3_app_en_wr & (ddr3_wr_cnt < 32′h1000000))

ddr3_wr_cnt <= ddr3_wr_cnt + 1′b1;

else if(ddr3_app_en_rd & (ddr3_wr_cnt > 32′h0))

ddr3_wr_cnt <= ddr3_wr_cnt ? 1′b1;

讀操作和寫操作共用同一個app_addr地址和app_cmd命令。所以DDR3 FIFO不能同時讀寫。設計默認寫數據優先級為高于讀數據優先級,保證了緩存外部數據的實時性。

圖4給出了讀/寫控制模塊的狀態機跳轉圖。狀態描述如下:

(1) Idle 是狀態機的初始狀態。在這個狀態中,等待DDR3校準完成,若完成,狀態機跳入Check data in狀態。

(2) Check data in狀態:判斷是否進行寫DDR3操作,當wr_fifo 有數據且DDR3顆粒有空間并寫ready時,跳入Write狀態,否則跳入Check data out判斷是否進行讀DDR3操作。endprint

(3) Write狀態:在該狀態讀wr_fifo的數據并寫入DDR3顆粒中。

(4) Check data out狀態:在該狀態判斷是否進行讀DDR3操作。當rd_fifo 有數據且DDR3顆粒有空間并讀ready時,跳入Read狀態,否則跳回Check data in狀態,循環往復。

(5) Read狀態: 在該狀態讀DDR3顆粒中的數據并寫入rd_fifo中。

圖5為DDR3遍歷讀寫狀態機跳轉圖。

狀態描述如下:

(1) Idle 是狀態機的初始狀態。在這個狀態中,等待DDR3校準完成,若完成,狀態機跳入Write狀態;否則繼續在Idle狀態等待。

(2) Write狀態:對DDR3進行寫操作遍歷,寫操作遍歷完成,跳入Write_Done狀態。

(3) Write_Done狀態:讀/寫操作的中間狀態,主要為計算DDR3的寫操作效率而設計。

(4) Read狀態:對DDR3進行讀操作遍歷,由于讀命令和讀數據有效之間有一定的時間延時,因此設計Read_Valid狀態。

(5) Read_Valid狀態:等待DDR3的讀數據全部讀出并比較輸出數據的正確性。狀態機繼續跳入Write狀態。循環遍歷。其中設置如下寄存器完成對DDR3遍歷讀/寫效率測試:

ddr3_test_cnt: 完成一次DDR3的讀/寫操作遍歷,該計數器增1,用于查看遍歷次數;

ddr3_error_flag:讀數據校驗出錯為1,ddr3_error_cnt為ddr3_error_flag的計數器;

ddr3_wr/rd_time: ddr3遍歷一遍寫/讀操作所需要的時間,用于計算DDR3的寫/讀效率。

利用板載Kintex?7 FPGA和DDR3 SRAM的板卡對本文設計的DDR3 FIFO模塊進行讀/寫測試,即利用FIFO接口實現DDR3 SDRAM存儲空間的遍歷讀寫測試。圖6是Kintex?7 FPGA中使用Chipscope捕獲的DDR3 FIFO模塊時序圖。

4 結 語

本文設計的DDR3 FIFO模塊具有標準FIFO功能,筆者利用該模塊可以按照FIFO時序實現DDR3 SDRAM存儲空間的遍歷讀寫測試[9?10]。DDR3 FIFO與標準FIFO主要有兩個不同點:DDR3 FIFO存儲空間比標準FIFO大,本文設計的DDR3 FIFO容量為1 Gb,而FPGA內部標準FIFO容量為18 Kb或36 Kb;DDR3 FIFO 有讀/寫優先級,寫優先級高于讀優先級,而標準FIFO沒有讀/寫優先級。

參考文獻

[1] 馬其琪,鮑愛達.基于DDR3 SDRAM的高速大容量數據緩存設計[J].計算機測量與控制,2015,23(9):3112?3118.

[2] 馬游春,王悅凱,丁寧.基于DDR3 SDRAM的高速視頻傳輸系統[J].電子技術應用,2015,41(12):69?71.

[3] 李逍楠.DDR3控制器的研究[D].西安:西安電子科技大學,2013.

[4] JEDEC Solid State Technology Association. JESD79?3F: DDR3 SDRAM specification [S]. Virginia: JEDEC Solid State Technology Association, 2012.

[5] Xilinx Co., Ltd. 7 series FPGAs memory interface solutions user guide [EB/OL]. [2012?10?20]. http://www.xilinx.com/support/documentation/ip_documentation/ug586_7Series_MIS.pdf.

[6] Xilinx Co., Ltd. Kintex?7 FPGAs data sheet: DC and AC switching characteristics [EB/OL]. [2015?02?11]. http://www.xilinx.com.

[7] 張剛,賈建超,趙龍.基于FPGA的DDR3 SDRAM控制器設計及實現[J].電子科技,2014,27(1):70?73.

[8] 殷曄,李麗斯,常路,等.基于FPGA的DDR3存儲控制的設計與驗證[J].計算機測量與控制,2015,23(3):969?971.

[9] Micron Technology Inc. DDR3 point?to?point design support [EB/OL]. [2013?06?13]. http://www.micron.com/~/media/Documents/Products/Technical%20Note/DRAM/tn4113_ddr3_point_to_point_design.pdf.

[10] Xilinx Co., Ltd. Achieving high performance DDR3 data rates in Virtex?7 and Kintex?7 FPGAs [EB/OL]. [2013?08?29]. http://www.xilinx.com/support/documentation/white_papers/wp383_Achieving_High_Performance_DDR3.pdf.endprint

主站蜘蛛池模板: 激情乱人伦| 亚洲人成影院午夜网站| 精品国产成人三级在线观看| 人妻无码中文字幕第一区| 免费一级毛片不卡在线播放| 色婷婷狠狠干| 国产第四页| 国产乱人视频免费观看| 特级毛片免费视频| 手机看片1024久久精品你懂的| 亚洲区视频在线观看| 久久久成年黄色视频| 国产乱子伦无码精品小说| 欧美一级视频免费| 日本五区在线不卡精品| 青青草久久伊人| 毛片在线播放a| 久草视频福利在线观看 | 在线视频一区二区三区不卡| 国产18在线播放| 久久a毛片| 蜜臀AV在线播放| 国产免费看久久久| 国产爽妇精品| 国产超碰在线观看| 亚洲色图欧美在线| 欧美亚洲综合免费精品高清在线观看 | 亚洲精品麻豆| 午夜免费视频网站| 日韩在线影院| 亚洲av成人无码网站在线观看| 色妞www精品视频一级下载| 日本久久久久久免费网络| 日本免费精品| 香蕉视频在线观看www| 欧美成在线视频| 亚洲妓女综合网995久久| 一本综合久久| 91精选国产大片| 欧美亚洲中文精品三区| 女高中生自慰污污网站| 亚洲人成网18禁| 一级不卡毛片| 免费一极毛片| 色综合国产| 亚洲精品中文字幕无乱码| 国产成年无码AⅤ片在线| 久久6免费视频| 91精品啪在线观看国产91| 中文一区二区视频| 欧美国产日产一区二区| 国产一级在线播放| 操美女免费网站| 成人午夜免费观看| 国产精品尹人在线观看| 手机在线看片不卡中文字幕| 67194在线午夜亚洲| 亚洲日韩久久综合中文字幕| 国产嫩草在线观看| 色婷婷综合激情视频免费看 | 亚洲三级色| 丁香婷婷激情网| AV熟女乱| 天天综合网色| 麻豆AV网站免费进入| 亚洲成网777777国产精品| 国产色伊人| 好久久免费视频高清| 成人免费一级片| 热这里只有精品国产热门精品| 全部毛片免费看| 亚洲精品午夜无码电影网| 久久精品这里只有国产中文精品 | 欧美日本激情| 欧美在线视频不卡| 日韩A∨精品日韩精品无码| 国产精品大白天新婚身材| 国产精品自在在线午夜| 一级毛片免费观看不卡视频| 国产香蕉97碰碰视频VA碰碰看| 中文字幕在线欧美| 亚洲国产精品无码久久一线|