基于FPGA的DDR3 SDRAM控制器用戶接口設(shè)計
摘要:為了滿足高速圖像數(shù)據(jù)采集系統(tǒng)中對高帶寬和大容量的要求,利用Virtex-7 系列FPGA 外接DDR3 SDRAM 的設(shè)計方法,提出了一種基于Verilog-HDL 語言的DDR3 SDRAM 控制器用戶接口設(shè)計方案。該控制器用戶接口已經(jīng)在Xilinx 公司的VC707 開發(fā)板上通過了功能驗證,并成功的被應(yīng)用到高速圖像數(shù)據(jù)采集系統(tǒng)中。含有該用戶接口的控制器具有比一般的控制器接口帶寬利用率高、可移植性強和成本低的優(yōu)點,可以根據(jù)設(shè)計人員的需要被靈活地應(yīng)用到不同的工程。
本文引用地址:http://www.ex-cimer.com/article/201807/383565.htm隨著現(xiàn)代科學(xué)技術(shù)的高速發(fā)展,在工業(yè)生產(chǎn)和科學(xué)研究上,如衛(wèi)星通信、高速圖像處理等領(lǐng)域,普遍存在對數(shù)據(jù)進行高速大容量、實時性強和高帶寬的處理要求[1,2]。高速數(shù)據(jù)采集系統(tǒng)作為各個系統(tǒng)中比較核心的部分,對數(shù)據(jù)處理的速度、實時性、穩(wěn)定性以及功耗等要求都越來越高。
目前,在能夠同時滿足高帶寬和大容量要求的存儲器方案中,比較成熟的有DDR,DDR2,DDR3等,其中DDR3 具有更高的帶寬和更低的功耗,因此成為高速實時數(shù)據(jù)存儲系統(tǒng)設(shè)計中的首選方案[3]。由于DDR3 內(nèi)存不能夠直接識別處理器的訪問請求,所以有必要通過設(shè)計一款控制器去控制DDR3的正常讀寫操作。
Virtex-7 系列FPGA 與Virtex-6 系列FPGA 相比,系統(tǒng)性能提高了一倍,功耗降低了一半,存儲器帶寬提升了2 倍,并且內(nèi)有獨特的IP核mig_v1. 7,可用來解決使用DDR3 存儲器時的一些復(fù)雜問題。因此本文在介紹DDR3 的工作原理的基礎(chǔ)上,結(jié)合IP 核MIG_v1. 7,給出了一種利用Verilog-HDL 語言設(shè)計DDR3-SDRAM 控制器用戶接口的方法,并且提出了一種在高速圖像數(shù)據(jù)采集系統(tǒng)中DDR3 存儲器的應(yīng)用方案,同時在Virtex-7 系列的FPGA 上實現(xiàn)。
1 DDR3-SDRAM 的技術(shù)特點
本文采用的DDR3-SDRAM 為Micron 公司的MT8JTF12864HZ-1G6G1 內(nèi)存條。該DDR3 內(nèi)存條的存儲空間為1 GB,由8 片容量為128 MB 的內(nèi)存芯片構(gòu)成。每個芯片的數(shù)據(jù)位寬為8 位,行地址線復(fù)用14 根,列地址線復(fù)用10 根,Bank 數(shù)量為8 個,因此每個內(nèi)存芯片的容量為16 384 mes; 1 024 mes; 8 mes; 8,即128 MB。8 片組成在一起就構(gòu)成了MT8JTF12864HZ-1G6G1 的64 位數(shù)據(jù)位寬,容量為1 GB。
DDR3 的控制命令信號主要有芯片選擇信號CS、行地址選擇信號RAS、列地址選擇信號CAS 和WE 寫使能信號,DDR3 的各種操作指令實質(zhì)上都是通過這四個信號的組合決定的,如表1 所示。其中H 表示高電平,L 表示低電平。
表1 DDR3-SDRAM 的操作指令
DDR3 的Mode Register 有四個,分別為MR0、MR1、MR2 和MR3,當(dāng)四個控制命令信號均為低電平時,即可通過Bank 選擇位對模式寄存器進行選擇; Refresh 操作分為Auto Refresh 與Self Refresh 兩種,其中不論是何種Refresh 方式,都不需要外部提供行地址信息,因為這是一個內(nèi)部的自動操作;DDR3 在進行讀寫操作時,內(nèi)存會給出一個與數(shù)據(jù)同步的DQS 信號,用來在一個時鐘周期內(nèi)準確地區(qū)分出每個傳輸周期,提高了接收方接收數(shù)據(jù)的準確度。
與上一代存儲器件相比,DDR3 的內(nèi)存模式有了很大的改進: 邏輯Bank 數(shù)量由DDR2 的4 個增加為8 個; 突發(fā)長度增加為8 bit,任何突發(fā)中斷操作都將在DDR3 內(nèi)存中予以禁止,且不予支持; 取而代之的是更為靈活的突發(fā)傳輸控制; 其核心工作電壓由DDR2 的1. 8 V 降至1. 5 V[4],能夠在達到高帶寬的同時,大幅度的降低其功耗; DDR3 采用FLY_BY 總線,參考電壓分離,增加了ZQ 校準功能,從而大大的提高了存儲信號的完整性; 并且DDR3 為綠色封裝,不含任何有害物質(zhì),減少了對空氣的污染。
2 DDR3-SDRAM控制器用戶接口的設(shè)計
DDR3 控制器的設(shè)計采用了Xilinx 推出的IP 核MIG_v1. 7 + 用戶接口模塊的設(shè)計方法,其中本次設(shè)計主要是對用戶接口模塊進行闡述。圖1 為DDR3控制器的總體實現(xiàn)方案。
圖1 DDR3 控制器的總體實現(xiàn)方案
2. 1 用戶接口模塊的設(shè)計
用戶接口模塊為整個DDR3 控制器系統(tǒng)的核心模塊,其中主要包括寫數(shù)據(jù)通路和讀數(shù)據(jù)通路兩個部分,圖2 為DDR3 控制器的用戶接口設(shè)計的實現(xiàn)方案。
圖2 DDR3 控制器的用戶接口設(shè)計
在寫數(shù)據(jù)通路的輸入端,addr _ rdy、wr _ rdy 和init_done 為DDR3 IP 核反饋給寫數(shù)據(jù)控制模塊的信號, init_done 為高電平時指DDR3 已經(jīng)完成初始化操作,addr_rdy 為高電平時表示DDR3 準備好接收寫數(shù)據(jù)地址和寫數(shù)據(jù)命令,wr_rdy 為高電平時表示DDR3 準備好接收寫數(shù)據(jù); wr_cmd 為寫數(shù)據(jù)命令信號。在寫數(shù)據(jù)通路的輸出端,cmd_en 為輸入到DDR3 IP 核的命令和地址的使能信號,wr_en 和wr_end 為輸入到DDR3 IP 核的寫數(shù)據(jù)控制信號,跟有效寫數(shù)據(jù)信號對齊。
在用戶接口的設(shè)計中采用back_to_back 的讀寫設(shè)計模式,將addr_rdy、cmd_en、cmd 和addr 作為地址總線,將wr_rdy、wr_en、wr_end 和wr_data 作為數(shù)據(jù)總線,兩條總線是相互獨立的,兩個反饋信號addr_rdy 和wr_rdy 也是相對獨立的。在寫數(shù)據(jù)開始的時候,要保證地址總線提前數(shù)據(jù)總線一個周期使能,在addr_rdy 和wr_rdy 沒有反壓的理想情況下,寫數(shù)據(jù)要比寫地址和寫命令推遲一個周期發(fā)出,當(dāng)addr_rdy 和wr_rdy 有反壓時,寫數(shù)據(jù)和寫地址可以不滿足相差一個周期被發(fā)出的。
讀數(shù)據(jù)通路與寫數(shù)據(jù)通路的設(shè)計原理相似,其中rd_valid 為讀數(shù)據(jù)有效信號, rd_data 為讀數(shù)據(jù)信號。在讀數(shù)據(jù)通路中將addr_rdy、cmd_en、cmd 和addr 作為地址總線,rd_valid 和rd_data 作為讀數(shù)據(jù)總線。
2. 2 用戶接口的時鐘模塊設(shè)計
從外界輸入200 MHz 的延遲參考時鐘、200MHz 的差分輸入時鐘,這些輸入信號經(jīng)過時鐘和系統(tǒng)復(fù)位模塊后能夠生成整個DDR3 控制器和DDR3工作的全部時鐘,包括用戶接口的工作時鐘、DDR3 IP 核的工作時鐘和DDR3 讀寫數(shù)據(jù)的時鐘等。這種設(shè)計方法,具有簡化控制器的設(shè)計結(jié)構(gòu),便于對時鐘進行管理的優(yōu)點[5]。圖3 為時鐘模塊的實現(xiàn)模型。
圖3 時鐘和系統(tǒng)復(fù)位模塊
3 DDR3-SDRAM控制器用戶接口的仿真
DDR3-SDRAM 的工作必須按照一定的規(guī)則進行,必須符合相應(yīng)的狀態(tài)機轉(zhuǎn)換要求,圖4 給出了DDR3 存儲器工作的狀態(tài)機,該狀態(tài)機描述了DDR3各個狀態(tài)的轉(zhuǎn)換以及轉(zhuǎn)換時所涉及的一些命令。DDR3 控制器的設(shè)計實質(zhì)上是圍繞著該狀態(tài)機的進行設(shè)計的,以確保內(nèi)存模塊上的每個DDR3 都能正常的進行工作。
圖4 DDR3 存儲器的狀態(tài)機
3. 1 用戶接口設(shè)計模塊的Chipscope 仿真結(jié)果分析
在本次設(shè)計中,硬件仿真采用將含有此用戶接口模塊的控制器下載到Virtex-7 系列FPGA 上,通過Chipscope 在線實時地觀察用戶接口內(nèi)部的信號。和圖6 中addr 每隔一個時鐘周期加1 的現(xiàn)象。
3. 2 用戶接口設(shè)計模塊的Modelsim 仿真結(jié)果分析
在本次設(shè)計中,軟件仿真采用ISE 14. 3 與Modelsim10.0a 相結(jié)合的方法。
圖5 為在理想情況下,用戶接口的輸入信號addr_rdy 和wr_rdy 在無反壓時候的內(nèi)部信號觀測圖,在此狀態(tài)下,cmd_en 比wr_en 和wr_end 提前一個周期被拉高,有效地址與相應(yīng)的有效數(shù)據(jù)之間一直保持著一個周期的時間延遲。圖6 為用戶接口在addr_rdy 和wr_rdy 信號有反壓情況下的內(nèi)部信號觀測圖,在此狀態(tài)下,初始時刻cmd_en 比wr_en 和wr_end 提前一個周期被拉高,有效地址與相應(yīng)的有效數(shù)據(jù)之間相差一個周期的時間延遲,但是隨著addr_rdy 和wr_rdy 被拉低之后,有效地址與相應(yīng)的有效數(shù)據(jù)之間不再滿足相差一個周期的時間延遲。因為在本次設(shè)計中采用的是back-to-back 模式,地址總線與數(shù)據(jù)總線相互獨立,所以即使有效地址與相應(yīng)的有效數(shù)據(jù)之間不再滿足相差一個周期的時間延遲,也不會影響數(shù)據(jù)的傳輸。在此模式下,數(shù)據(jù)與地址的傳輸比較靈活,控制起來比較方便,也有效的避免了數(shù)據(jù)的丟失。
圖5 addr_rdy 信號和wr_rdy 信號無反壓的內(nèi)部信號觀測圖
圖6 addr_rdy 信號和wr_rdy 信號有反壓的內(nèi)部信號觀測圖
圖7 寫數(shù)據(jù)的Modelsim 仿真圖
由于DDR3 采用的突發(fā)傳輸長度BL = 8,讀寫地址值以8 為單位連續(xù)增加,這樣addr 的低3 位將一直為0,所以在利用Chipscope 對地址進行觀測時,是從addr 的第4 位開始觀測的,即出現(xiàn)圖5。
由于此次設(shè)計采用的內(nèi)存核心頻率為200MHz,又因為采用的DDR3 的內(nèi)存總線位數(shù)為64位,DDR3 一次可以預(yù)讀取8 位,根據(jù)內(nèi)存帶寬= 內(nèi)存核心頻率mes; 內(nèi)存總線位數(shù)× 倍增系數(shù),所以在不考慮刷新和激活等操作所占用的帶寬下,DDR3 的內(nèi)存帶寬可以達到12. 5 GB,傳輸速率可達到1 600MB /s。在如此快的傳輸速率下,利用Chipscope 難以觀測由DDR3 控制器寫入到DDR3 內(nèi)部的數(shù)據(jù)。所以在本次設(shè)計中,采用在ISE14. 3 里面對DDR3控制器的工程添加DDR3 模型,利用Modelsim 對DDR3 控制器和DDR3 模型進行聯(lián)合仿真的方法對由控制器寫入到DDR3 內(nèi)部的數(shù)據(jù)進行觀測。
從圖7 中可以看出,在一個時鐘周期內(nèi)dq 的同步信號qds_n 和dqs_p 變化了8 次,也就是說,在一個時鐘周期內(nèi)寫數(shù)據(jù)以64 bit 為單位被寫入了8次。由用戶接口傳輸過來的數(shù)據(jù)經(jīng)過DDR3 IP 核之后,能夠準確的被寫入到DDR3 里面。當(dāng)進行讀數(shù)據(jù)的時候,也是以64 bit 為單位,在一個時鐘周期內(nèi)讀8 個64 bit 的數(shù)據(jù)。
3. 3 DDR3 控制器用戶接口在高速圖像數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
含有該用戶接口的DDR3 控制器已經(jīng)成功的被應(yīng)用到某高速圖像數(shù)據(jù)采集系統(tǒng)中,圖8 為該高速圖像數(shù)據(jù)采集系統(tǒng)采集到的圖片。
圖8 高速圖像數(shù)據(jù)采集結(jié)果圖
該圖像采集系統(tǒng)設(shè)置CMOS 相機工作在采用8bit 位寬的雙通道模式下,幀頻為250 幀/s,其分辨率為2 040 × 1 024。采集系統(tǒng)將接收到的圖像數(shù)據(jù)經(jīng)過DDR3 緩存之后,通過千兆以太網(wǎng)接口傳輸至PC 機,再將寫入PC 機內(nèi)的數(shù)據(jù)以圖片的形式顯示出來。圖8 為采集系統(tǒng)連續(xù)采集到的兩幀圖片,從圖中可以看出兩幀圖片的時間間隔為4 ms,滿足幀數(shù)要求,并且圖像清晰完整,達到了預(yù)期的標準。
4 結(jié)論
本次設(shè)計的硬件平臺為Xilinx 公司的Virtex-7 FPGA VC707 評估套件。7 系列的FPGA 具有比6系列和5 系列的FPGA 尺寸小、成本低、高性價比和大容量以及超高端連接帶寬等優(yōu)點。
該內(nèi)存控制器的用戶接口設(shè)計能夠?qū)DR3 內(nèi)存模塊進行很好的管理,同時完成用戶發(fā)送的各種請求,并且最大限度的提高了訪問內(nèi)存的速度和帶寬,避免了數(shù)據(jù)的丟失,并成功的應(yīng)用到某高速圖像采集系統(tǒng)中。在此用戶接口的基礎(chǔ)上設(shè)計的內(nèi)存控制器能夠與市場上大多數(shù)主流內(nèi)存進行兼容,可移植性強,大大降低了開發(fā)成本。
評論