基于FPGA的DDR2SDRAM控制器設(shè)計(jì)_第1頁(yè)
基于FPGA的DDR2SDRAM控制器設(shè)計(jì)_第2頁(yè)
基于FPGA的DDR2SDRAM控制器設(shè)計(jì)_第3頁(yè)
基于FPGA的DDR2SDRAM控制器設(shè)計(jì)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于FPGA的DDR2 SDRAM控制器設(shè)計(jì)摘要:基于高速數(shù)據(jù)傳輸與存儲(chǔ)的數(shù)據(jù)采集記錄儀對(duì)緩存模塊高性能的需求,選擇了讀寫(xiě)速度快、低成本、大容量、運(yùn)行 穩(wěn)定的DDR2 SDRAM作為本地存儲(chǔ)器,在其存儲(chǔ)尋址原理和IP核的讀寫(xiě)控制邏輯的基礎(chǔ)上,借助硬件描述語(yǔ)言設(shè)計(jì)了一 個(gè)DDR2存儲(chǔ)控制器方案。在Inte 1的FPGA Cyclone IV系列開(kāi)發(fā)板上進(jìn)行了整體方案的功能驗(yàn)證,完成了用戶接口和 控制器之間的多數(shù)據(jù)寬度、多突發(fā)長(zhǎng)度的高效數(shù)據(jù)傳輸和讀寫(xiě)操作,在166. 7MHz時(shí)鐘頻率下實(shí)現(xiàn)了穩(wěn)定讀寫(xiě)的目標(biāo)。 關(guān)鍵詞:FPGA : DDR2 SDRAM : IP 核Design of DDR2 SD

2、RAM controller based on FPGAoverall scheme is data transmission interface and the frequency.Abstract: Based on the requirement of high-speed data transmission and storage data acquisition recorder for high performance of cache module, DDR2 SDRAM with high read-write speed, low cost, large capacity a

3、nd stable operation is selected as the local memory. Based on its storage addressing principle and the read-write control logic of IP core, a DDR2 storage controller scheme is designed with the help of hardware description language. The functional verification of the carried out on the FPGA cyclone

4、IV series development board of Intel. The efficient and read-write operation of multiple data widths and burst lengths between the user controller are completed. The stable read-write target is achieved at 166. 7MHz clock Keywords: FPGA; DDR2 SDRAM; IP core0引言隨著數(shù)據(jù)采集系統(tǒng)的發(fā)展,應(yīng)用于圖像采集和數(shù)據(jù)傳輸 等領(lǐng)域的產(chǎn)品對(duì)存儲(chǔ)器的速度要求

5、越來(lái)越高。DDR2系列的 SDRAM動(dòng)態(tài)存儲(chǔ)器因?yàn)槠淠茉跁r(shí)鐘的正負(fù)沿進(jìn)行兩倍速度讀 寫(xiě)1,同時(shí)具有低成本、高速、大容量、運(yùn)行穩(wěn)定等高性價(jià)比 的優(yōu)點(diǎn),所以在各個(gè)領(lǐng)域中被廣泛使用2。比如文獻(xiàn)3采用 DDR2來(lái)存儲(chǔ)視頻數(shù)據(jù)3,文獻(xiàn)4利用DDR2實(shí)現(xiàn)了數(shù)據(jù)量較 大的原始紅外圖像的緩存4,文獻(xiàn)5將DDR2存儲(chǔ)技術(shù)應(yīng)用 到了船舶港口物流跟蹤系統(tǒng)中5等。DDR2復(fù)雜苛刻的操作時(shí)序,造成對(duì)應(yīng)的DDR2控制器電 路結(jié)構(gòu)也比較特別。很多FPGA廠商利用其可編程芯片的豐 富軟硬件資源設(shè)計(jì)了 DDR2存儲(chǔ)控制器IP核6,其中Altera 公司設(shè)計(jì)的存儲(chǔ)控制器因其效率最高使用較為廣泛。要實(shí) 現(xiàn)DDR2控制器的設(shè)計(jì),用戶

6、只需了解FPGA芯片專用于連接 DDR2的引腳功能及存儲(chǔ)器的工作機(jī)制即可。本設(shè)計(jì)主控制器選用了 Altera公司Cyclone IV系列的 EP4CE30F23C8,數(shù)據(jù)緩存器選用了 Micron公司內(nèi)存為2Gbit 大小的MT47H128M16-25E,研究了 DDR2 SDRAM的工作原理及 控制器IP核解決方案,在現(xiàn)場(chǎng)可編程門(mén)陣列芯片F(xiàn)PGA中實(shí) 現(xiàn)DDR2控制器設(shè)計(jì),并在嵌入式邏輯分析儀Signaltap中顯 示了雙邊沿時(shí)鐘主頻工作下的測(cè)試結(jié)果,在166. 7MHz時(shí)鐘頻 率下實(shí)現(xiàn)了穩(wěn)定讀寫(xiě)的目標(biāo)。DDR2的工作機(jī)制DDR2的初始化DDR2 SDRAM有許多操作步驟,包括加載模式、自刷

7、新、預(yù) 充電、激活、讀寫(xiě)操作和空閑等待。在進(jìn)行上述操作之前必須 要在上電后按照規(guī)定的步驟完成初始化。在初始化的過(guò)程中 主要是對(duì)其模式寄存器的值進(jìn)行配置來(lái)完成CAS延遲、突發(fā) 長(zhǎng)度、突發(fā)類型、輸出驅(qū)動(dòng)能力、片上端接電阻(ODT)值、伴隨 CAS的附加延遲、片外驅(qū)動(dòng)器校準(zhǔn)等參數(shù)的配置,為之后的讀 寫(xiě)操作做準(zhǔn)備。DDR2的讀寫(xiě)操作DDR2讀寫(xiě)操作前需要對(duì)指定段的行進(jìn)行激活,每個(gè)段 只允許打開(kāi)1行進(jìn)行讀寫(xiě)操作,如果要對(duì)同一段中的其他行 進(jìn)行讀寫(xiě)操作,則必須先用預(yù)充電命令關(guān)閉已經(jīng)打開(kāi)的行, 再用激活命令打開(kāi)需要進(jìn)行讀寫(xiě)操作的行。實(shí)際上是鎖定行 地址,再進(jìn)行突發(fā)操作,對(duì)連續(xù)地址單元進(jìn)行讀寫(xiě)操作回。 DDR

8、2可支持突發(fā)讀寫(xiě),突發(fā)讀寫(xiě)長(zhǎng)度為4和8,也稱突發(fā)傳 輸,簡(jiǎn)化了 DDR2的讀寫(xiě)操作并提高了讀寫(xiě)效率。1.3 IP核Altera為用戶提供了 DDR2控制的兩個(gè)IP, 一個(gè)是 DDR2 SDRAM Controller with UniPHY,另一個(gè)為 DDR2 SDRAM Controller with ALTMEMPHY。 DDR2 SDRAM Controller with UniPHY 的性能比 DDR2 SDRAM Controller with ALTMEMPHY 更好一些,兩種IP使用的方法是相同的,但UniPHY不支持 Cyclone系列的芯片,所以在Cyclone系列的FPGA

9、上只能使 用 ALTMEMPHY IP 來(lái)實(shí)現(xiàn) DDR2。DDR2 SDRAM控制器的設(shè)計(jì)圖1為本方案的控制器總體結(jié)構(gòu)框圖,主要包括FPGA和 DDR2 SDRAM,其中FPGA內(nèi)部模塊包括參數(shù)計(jì)算、輸入FIFO、 DDR2控制器、輸出FIFO。圖像數(shù)據(jù)緩存是通過(guò)FPGA片內(nèi)的 輸入輸出FIF。資源與片外的DDR2 SDRAM進(jìn)行的,其中,各 個(gè)模塊之間數(shù)據(jù)位寬不一致和數(shù)據(jù)傳輸速度不匹配的問(wèn)題 可以由輸入輸出FIF。解決,高速大容量的數(shù)據(jù)緩存可以借助 DDR2 SDRAM 來(lái)實(shí)現(xiàn)。FPGA內(nèi)部 邏輯模塊參數(shù)計(jì)算模塊T輸入FIFODDR2控制器輸出FIFODDR2SDRAM圖1系統(tǒng)總體結(jié)構(gòu)框圖系

10、統(tǒng)實(shí)現(xiàn)的過(guò)程如下:上電后對(duì)DDR2存儲(chǔ)器的模式寄 存器配置后進(jìn)行初始化;在讀取數(shù)據(jù)和寫(xiě)入數(shù)據(jù)時(shí),實(shí)現(xiàn)存 儲(chǔ)器能上下沿傳輸數(shù)據(jù)和突發(fā)傳輸?shù)囊?。在?xiě)入數(shù)據(jù)操作 時(shí)將待發(fā)送的數(shù)據(jù)和命令轉(zhuǎn)換成符合存儲(chǔ)器要求的寫(xiě)指令, 然后將數(shù)據(jù)寫(xiě)入存儲(chǔ)器;在讀取操作時(shí)先將讀地址和數(shù)據(jù)長(zhǎng) 度轉(zhuǎn)換成存儲(chǔ)器要求的讀指令發(fā)送給存儲(chǔ)器讀出需要的數(shù) 據(jù),然后從存儲(chǔ)器將讀出的數(shù)據(jù)發(fā)送給用戶端。在結(jié)構(gòu)框圖的基礎(chǔ)上,本文進(jìn)行了硬件和軟件兩個(gè)部分 的設(shè)計(jì)。硬件設(shè)計(jì)為FPGA與DDR2的信號(hào)連接,軟件設(shè)計(jì)為以 verilog語(yǔ)言為基礎(chǔ)的FPGA邏輯編程控制DDR2的讀寫(xiě)。1 DDR2 SDRAM控制器的信號(hào)連接圖DDR2 SDRAM控制

11、器的信號(hào)連接圖如圖2所示。圖2信號(hào)連接圖在本方案中的設(shè)計(jì)的測(cè)試模塊中有時(shí)鐘輸入信號(hào)CLK 和置位信號(hào)RST。功能驗(yàn)證的部分包含初始化模塊、讀寫(xiě)控制 模塊和數(shù)據(jù)傳輸模塊的驗(yàn)證。DDR2 SDRAM與FPGA開(kāi)發(fā)板上的FPGA相連的是BANK3 和BANK4的IO,相連的硬件引腳具體為:系統(tǒng)時(shí)鐘差分時(shí) 鐘信號(hào)(CK、CK#)、時(shí)鐘使能信號(hào)(CKE#)、行列地址復(fù)用總線 (A13 : 0)、段地址選擇線(BA2 : 0)、數(shù)據(jù)總線(DQ15 : 0)、隨路時(shí)鐘信號(hào)(DQS)、片選信號(hào)(CS#)、行地址選通信號(hào) (CAS#)、列地址選通信號(hào)(RAS#)、寫(xiě)使能信號(hào)(WE#)、數(shù)據(jù)屏 蔽信號(hào)(DM)和片

12、內(nèi)終端電阻控制線(ODT)等7。DDR2 SDRAM的電平電壓為1.8V,參考電壓VREF為電源 電壓的一半。由于外部由5V電源供電,所以采用MP1482芯片 將外部的5V電源電壓轉(zhuǎn)換成DDR2需要的1. 8V電壓。具體電 路參考MP1482使用手冊(cè),本文不再贅述。DDR2的硬件設(shè)計(jì)需要嚴(yán)格考慮信號(hào)完整性,在電路設(shè) 計(jì)和PCB設(shè)計(jì)的時(shí)候需要充分考慮匹配電阻/終端電阻、走 線阻抗控制和走線等長(zhǎng)控制,保證DDR2的高速穩(wěn)定的工作。2 DDR2 SDRAM控制器的邏輯設(shè)計(jì)DDR2 SDRAM控制器的主要功能是實(shí)現(xiàn)存儲(chǔ)器芯片的初 始化、讀寫(xiě)操作和數(shù)據(jù)傳輸,它將存儲(chǔ)器復(fù)雜的讀寫(xiě)時(shí)序隱 藏起來(lái),轉(zhuǎn)化成簡(jiǎn)單

13、易行的操作,通過(guò)控制器,只需控制簡(jiǎn) 單的接口信號(hào),就可以對(duì)存儲(chǔ)器芯片進(jìn)行讀寫(xiě)操作。寫(xiě)入數(shù) 據(jù)的時(shí)候,只要控制寫(xiě)請(qǐng)求信號(hào)wr_burst_req、寫(xiě)長(zhǎng)度wr_ burst_len、寫(xiě)地址 wr_burst_add 和寫(xiě)數(shù)據(jù) wr_burst_data。 同樣,讀數(shù)據(jù)的時(shí)候,只要控制讀請(qǐng)求信號(hào)rdburstreq、讀 長(zhǎng)度rd_burst_len、讀地址rd_burst_add、讀數(shù)據(jù)有效rd_ burst_data_valid和讀數(shù)據(jù)rd_burst_data。本設(shè)計(jì)的命令 參數(shù)是根據(jù)表1的命令真值表和圖3的狀態(tài)轉(zhuǎn)換圖進(jìn)行邏輯 設(shè)計(jì)的。表1 DDR2 SDRAM基本操作的命令真值表基本操作CKE

14、CS#RAS#CAS#WE#加載模式HLLLL自刷新HLLLH預(yù)充電HLLHL激活HLLHH寫(xiě)操作HLHLL讀操作HLHLH空閑等待HLHHH圖3的狀態(tài)轉(zhuǎn)換圖顯示了 DDR2 SDRAM控制器把外部的 burst讀請(qǐng)求和寫(xiě)請(qǐng)求轉(zhuǎn)化成DDR2 IP接口的Local Bus 的所需的信號(hào)和時(shí)序的流程。具體的讀和寫(xiě)流程如下:Burst讀:當(dāng)程序在IDLE狀態(tài)接收到讀請(qǐng)求(rd_ burst_req為高)時(shí),會(huì)進(jìn)入MEM_READ狀態(tài)并發(fā)送Local Bus的讀請(qǐng)求命令,讀請(qǐng)求的長(zhǎng)度為rd_burst_len。發(fā)送Local Bus的讀請(qǐng)求結(jié)束后進(jìn)入MEM_READ_WAIT狀態(tài),等待 數(shù)據(jù)全部讀出完

15、成。讀數(shù)據(jù)完成后會(huì)返回IDLE狀態(tài),并發(fā)送 rd_burst_finish 信號(hào)。Burst寫(xiě):當(dāng)程序在IDLE狀態(tài)接收到寫(xiě)請(qǐng)求(wr_ burst_req為高)時(shí),會(huì)先進(jìn)入MEM_WRITE_FIRST狀態(tài),再 輪 流進(jìn)入 MEM_WRITE_BURST_BEGIN 狀態(tài)和 MEM_WRITE 狀 態(tài)。在 MEM_WRITE_BURST_BEGIN 狀態(tài),會(huì)置位 Local Bus 的 local_burst_begin信號(hào)為高,說(shuō)明這是一個(gè)burst的寫(xiě)命 令,burst長(zhǎng)度為local_size。在MEM_WRITE狀態(tài),不需要發(fā) 送 local_burst_begin 信號(hào)。在 MEM

16、_WRITE_BURST_BEGIN 狀 態(tài)和 MEM_WRITE 狀態(tài)里,Local Bus 的 local_write_req 信 號(hào)一直為高,直到寫(xiě)入的數(shù)據(jù)完成返回到IDLE狀態(tài),并發(fā)送 wr_burst_finish 信號(hào)。DDR2 SDRAM控制器的驗(yàn)證根據(jù)DDR2 SDRAM控制器狀態(tài)轉(zhuǎn)換圖用硬件開(kāi)發(fā)語(yǔ)言 verilog進(jìn)行FPGA邏輯編程,編譯仿真后連接JTAG將程序 燒錄到FPGA開(kāi)發(fā)裝置中,測(cè)試是否產(chǎn)生讀寫(xiě)請(qǐng)求信號(hào),以及 地址和測(cè)試數(shù)據(jù),并校驗(yàn)讀和寫(xiě)的數(shù)據(jù)是否正確,并將結(jié)果 在SignalTap中顯示出來(lái)。1驗(yàn)證流程本方案具體驗(yàn)證流程如下:(1)在Quartus II中生成A

17、LTMEMPHY IP核,在該過(guò)程 中設(shè)置了 Device family、Speed grade、DDR2 的輸入?yún)⒖?時(shí)鐘頻率和DDR2時(shí)鐘頻率等參數(shù);(2)編寫(xiě)mem_burst_v2. v程序完成對(duì)DDR2 IP的封裝;(3)編寫(xiě)ddr2_test. v測(cè)試程序?qū)崿F(xiàn)兩個(gè)功能,一個(gè)功 能是產(chǎn)生讀寫(xiě)請(qǐng)求信號(hào)、地址和測(cè)試數(shù)據(jù)并校驗(yàn)讀和寫(xiě)的數(shù) 據(jù)是否正確,另一個(gè)功能是例化mem_burst_v2模塊和第一步 中生成的DDR2 IP頂層模塊ddr2. v ;(4)程序編譯完成之后會(huì)用Quartus II的對(duì)應(yīng)仿真軟 件Modelsim將程序的運(yùn)行結(jié)果進(jìn)行仿真觀察是否能達(dá)到預(yù) 期的結(jié)果,仿真完成之后

18、連接JTAG將程序燒錄到FPGA開(kāi)發(fā) 板中,使用SignalTap工具來(lái)測(cè)試和觀察DDR2讀寫(xiě)的時(shí)序和 信號(hào)狀態(tài)。2驗(yàn)證結(jié)果開(kāi)發(fā)的程序在Quartus II中編譯后的資源報(bào)告如 圖4所示,資源報(bào)告內(nèi)容主要包括項(xiàng)目名ddr_test、頂層 文件名 ddr_test、FPGA 系列名 Cyclone IV E、FPGA 型號(hào) EP4CE30F23C8、總邏輯模塊數(shù)7907、引腳數(shù)49以及鎖相環(huán)數(shù)1。連接JTAG將程序燒錄到FPGA開(kāi)發(fā)板中,使用 SignalTap工具來(lái)測(cè)試和觀察DDR2讀寫(xiě)的時(shí)序和信號(hào)狀態(tài), 采樣時(shí)鐘使用DDR2 IP產(chǎn)生的phy_clk,具體波形如圖5、圖 6和圖7所示。首先可

19、以觀察一下圖5中DDR burst寫(xiě)入數(shù)據(jù)的波形, 這里波形顯示向DDR2的地址空間E830A6的地址開(kāi)始寫(xiě)入 01010101,02020202.的數(shù)據(jù)。因?yàn)檫@里的 DDR2 的 burst 寫(xiě)length為2,所以地址信號(hào)local_address是每寫(xiě)入2個(gè) 數(shù)據(jù)就加2, local_burst_begin信號(hào)為第一個(gè)數(shù)據(jù)寫(xiě)的時(shí) 候?yàn)楦撸诙€(gè)數(shù)據(jù)寫(xiě)的時(shí)候?yàn)榈?。Flow StatusQuartus II 64-Bit Version Revision NameTop-level Entity Name(Family Device Timing Models Total logic ele

20、mentsp- Total combinational functions-Dedicated logic registers Total registers Total pins Total virtual pins Total memory bits Embedded Multiplier 9-bit elements Total PLLsSuccessful - Wed Feb 10 11:12:18 2021 12.1 Build 17711/07/2012 SJ Full Version ddr_test ddr_testCydone IV EEP4CE30F23C8Final7,9

21、075,7034,635 472949229,216圖4資源報(bào)告這里需要注意:只有當(dāng)local_ready為高和local_ write_req信號(hào)都為高時(shí),寫(xiě)入的數(shù)據(jù)才是有效的數(shù)據(jù),如果 local_ready信號(hào)為低,local_write_req和數(shù)據(jù)需要一直 保持,等待local_ready信號(hào)為高才行。接下去可以觀察一下圖6中DDR2的burst讀的時(shí)序, 在local_ready信號(hào)為高和local_read_req信號(hào)為高時(shí),依 次讀取地址信號(hào)local_address為E830A6,E830A8的數(shù)據(jù)。圖6數(shù)據(jù)地址及信號(hào)有效圖這里也同樣:只有當(dāng)local_ready為高和local_read_ req信號(hào)都為高時(shí),burst讀才是有效的,如果local_ready 信號(hào)為低,local rea

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論