王 夢(mèng),蔣 峰,謝浩瀾
(中南林業(yè)科技大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,長(zhǎng)沙 410001)
DDR2 SDRAM控制器接口的FPGA設(shè)計(jì)及實(shí)現(xiàn)
王 夢(mèng),蔣 峰,謝浩瀾
(中南林業(yè)科技大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,長(zhǎng)沙 410001)
DDR2 SDRAM是第二代雙倍數(shù)據(jù)傳輸速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,以其大容量、高速率和良好的兼容性得到了廣泛應(yīng)用;DDR2芯片的控制較為復(fù)雜,為了解決DDR2芯片的驅(qū)動(dòng)及功能驗(yàn)證問題,在介紹了其特點(diǎn)和工作機(jī)制的基礎(chǔ)上,提出了一種簡(jiǎn)化的工作流程圖,進(jìn)而給出該控制器的總體設(shè)計(jì)、FPGA器件的引腳分配及驗(yàn)證方法;其中驗(yàn)證方法采用Verilog HDL硬件描述語言構(gòu)建了DDR2控制器IP軟核的測(cè)試平臺(tái),通過ModelSim軟件對(duì)DDR2仿真模型測(cè)試無誤后,再使用QuartusII軟件的嵌入式邏輯分析儀工具SignalTap II抓取FPGA開發(fā)板實(shí)時(shí)信號(hào);開發(fā)板上的驗(yàn)證結(jié)果表明:DDR2芯片初始化成功;其引腳上有穩(wěn)定的讀寫數(shù)據(jù);在雙沿時(shí)鐘頻率200 MHz下,寫入數(shù)據(jù)和讀出數(shù)據(jù)一致。故DDR2控制器設(shè)計(jì)達(dá)到要求,且控制器接口簡(jiǎn)單、工作穩(wěn)定、移植性強(qiáng)。
FPGA器件;DDR2 SDRAM接口;芯片驅(qū)動(dòng); 驗(yàn)證
隨著集成電路技術(shù)的發(fā)展,應(yīng)用于軍工或民用領(lǐng)域的圖形處理、視頻監(jiān)控電子產(chǎn)品,對(duì)存儲(chǔ)器的速度要求越來越高,可以說存儲(chǔ)器的速度是決定系統(tǒng)性能的關(guān)鍵因素之一。而DDR/ DDR2/DDR3 系列的SDRAM動(dòng)態(tài)存儲(chǔ)器由于能在時(shí)鐘的正負(fù)邊沿進(jìn)行讀寫操作,以其高速、大容量、運(yùn)行穩(wěn)定及高性價(jià)比等優(yōu)點(diǎn)成為了目前存儲(chǔ)器的主流。由于DDR2 的操作時(shí)序很復(fù)雜苛刻,造成對(duì)應(yīng)的DDR控制器電路結(jié)構(gòu)也比較獨(dú)特。因此很多FPGA廠商基于其可編程芯片的豐富軟硬件資源,如產(chǎn)生多路高頻率時(shí)鐘信號(hào)的集成PLL鎖相環(huán),支持SSTL1.8 V、TTL3.3 V等多電平的可編程I/O端口,自帶的無縫連接的圖形化時(shí)序約束軟件工具等,設(shè)計(jì)了DDR2/DDR3存儲(chǔ)控制器IP核。其中以ALtera公司設(shè)計(jì)的存儲(chǔ)控制器效率最高、使用較為廣泛,用戶只需了解FPGA芯片引腳專用于連接DDR2/DDR3引腳的功能及存儲(chǔ)器的工作機(jī)制,即可實(shí)現(xiàn)DDR控制器的設(shè)計(jì)。
基于上述分析,本文研究了 DDR2 SDRAM 的工作原理及控制器IP核解決方案, 采用altera公司的DDR2 IP核,在現(xiàn)場(chǎng)可編程門陣列芯片F(xiàn)PGA中實(shí)現(xiàn)DDR2 設(shè)計(jì),并利用嵌入式邏輯分析儀SignaltapII軟件工具驗(yàn)證了200 MHz雙邊沿時(shí)鐘主頻下的硬件測(cè)試結(jié)果。
1.1 DDR2的初始化
DDR2 SDRAM加電后必須按照規(guī)定的步驟完成初始化。在初始化的過程中應(yīng)注意對(duì)模式寄存器(MR)和擴(kuò)展模式寄存器(EMR)的配置。通過初始化可以完成對(duì)CAS延遲,突發(fā)長(zhǎng)度,突發(fā)類型,輸出驅(qū)動(dòng)能力,片上端接電阻(ODT)值,伴隨CAS的附加延遲,片外驅(qū)動(dòng)器校準(zhǔn)等配置。初始化完成后,DDR2 SDRAM進(jìn)入正常工作狀態(tài),此時(shí)可以通過地址線指定的單元進(jìn)行讀寫操作。
1.2 DDR2的讀寫操作
DDR2寫操作前需要對(duì)指定段(bank)的行(row)進(jìn)行激活,每個(gè)bank只允許打開1行,即只允許對(duì)打開的行進(jìn)行讀寫操作,如果要對(duì)同一bank中的其他行進(jìn)行讀寫操作,則必須先用預(yù)充電(precharge) 命令關(guān)閉已經(jīng)打開的行,再用激活(active)命令打開需要進(jìn)行讀寫操作的行,實(shí)際上是鎖定行地址,再進(jìn)行突發(fā)操作,對(duì)連續(xù)地址單元進(jìn)行讀寫操作。
通過對(duì)DDR2工作機(jī)制的分析可知,DDR可以實(shí)現(xiàn)多種操作,如上電(PowerUp)、空閑等待(Idle)、寄存器配置(MRS,Mode Register Set)、動(dòng)刷新(Refresh)、 預(yù)充電(Precharge)、激活(Activate)、讀/寫操作(Read/Write)等[1-2]。要使這些操作按照嚴(yán)格的時(shí)序要求,彼此之間進(jìn)行轉(zhuǎn)換,需要通過狀態(tài)機(jī)來實(shí)現(xiàn)控制,簡(jiǎn)化的DDR2工作流程如圖1所示。而DDR2控制器則要在不同狀態(tài)下,發(fā)布不同的控制命令對(duì)存儲(chǔ)器進(jìn)行操作,控制命令實(shí)際上是 DDR2存儲(chǔ)器引腳信號(hào)cke、cs、cas、ras 、we的組合。
圖1 簡(jiǎn)化的DDR2工作流程圖
本文設(shè)計(jì)的DDR2 SDRAM控制器完成的主要功能是對(duì)Micron公司MT47H64M16型號(hào)的DDR2芯片初始化;在讀寫操作時(shí)將用戶端單時(shí)鐘沿觸發(fā)的數(shù)據(jù)轉(zhuǎn)換為DDR2存儲(chǔ)器的雙沿時(shí)鐘觸發(fā)的數(shù)據(jù),即將DDR2 SDRAM復(fù)雜的讀寫時(shí)序轉(zhuǎn)化為用戶簡(jiǎn)單的讀寫時(shí)序,使用戶像操作普通RAM一樣控制DDR2 SDRAM。同時(shí),控制器還要產(chǎn)生周期性的刷新命令來維持DDR2 SDRAM 內(nèi)的數(shù)據(jù)不需要用戶的干預(yù)。由于是采用Altera公司提供的IP核altmemphy 來設(shè)計(jì),該控制器通過用戶接口建立FPGA內(nèi)部控制邏輯到DDR2的連接,用戶不需要管理DDR2初始化、寄存器配置等復(fù)雜的控制邏輯,只需要控制用戶接口的讀寫操作。這樣可以縮短開發(fā)周期,減少設(shè)計(jì)人員的工作量,簡(jiǎn)化了系統(tǒng)設(shè)計(jì)。因此控制器實(shí)際上在用戶與存儲(chǔ)器間充當(dāng)一個(gè)接口的作用,如圖2所示。
用戶只需利用quartusII的Megawizard宏功能向?qū)нx擇對(duì)應(yīng)的芯片型號(hào), 總線寬度和速度級(jí)別,并設(shè)置CAS延遲、突發(fā)長(zhǎng)度、引腳分配等參數(shù),即可生成DDR2 SDRAM控制器, 包括HDL代碼和sdc時(shí)序約束等文件。由圖2控制器的邏輯框圖可知,設(shè)計(jì)者可以通過控制器的用戶端接口直接操縱內(nèi)存控制器??刂破鞴ぷ鲿r(shí),由用戶設(shè)計(jì)端提供一個(gè)50 M的系統(tǒng)開發(fā)板標(biāo)準(zhǔn)時(shí)鐘,控制器內(nèi)的altmemphy核則產(chǎn)生一個(gè)100 MHz和200 Mhz的時(shí)鐘信號(hào)phy_clk、ck分別給用戶端、存儲(chǔ)器端,由于控制器接口兩端的工作頻率不一樣,故數(shù)據(jù)處理速率也不一致,用戶端數(shù)據(jù)處理速率應(yīng)為存儲(chǔ)器端的兩倍。例如,用戶端的讀寫數(shù)據(jù)寬度為128位時(shí),則依靠ck時(shí)鐘上下邊沿觸發(fā)讀寫操作的存儲(chǔ)器端的數(shù)據(jù)寬度dq為32位。當(dāng)存儲(chǔ)器信號(hào)reset復(fù)位延時(shí)一段時(shí)間,F(xiàn)PGA的pll鎖存的時(shí)鐘信號(hào)即可穩(wěn)定下來后, 用戶設(shè)計(jì)者只要接受到接口的反饋的init_done信號(hào)有效,即知道存儲(chǔ)器初始化完成。至于初始化的序列命令都由控制器接口自動(dòng)產(chǎn)生。接下來,用戶設(shè)計(jì)端即可在phy_clk接口時(shí)鐘的控制下通過發(fā)出讀/寫(read_req /writ_req)請(qǐng)求來寫入或讀出數(shù)據(jù)。由于DDR2的突發(fā)讀寫長(zhǎng)度為8個(gè)字,可能用戶端讀寫時(shí),存儲(chǔ)器并不一定處于空閑狀態(tài),因此要通過控制接口反饋的local_ready來判斷。另外讀數(shù)據(jù)存在列選擇信號(hào)cas_n有效到數(shù)據(jù)讀出來存在若干周期的延時(shí),因此還需通過接口反饋的data_valid來判斷存儲(chǔ)器數(shù)據(jù)是否讀出到總線上。
在FPGA中,為了更好地發(fā)揮出DDR2的性能, DQS、DQ、DM等引腳都需要連接指定專用FPGA管腳[3],且對(duì)DDR引腳的分配做相關(guān)的約束。即DDR2 SDRAM都只能按照DQ/DQS組連接。一個(gè)完整的DQ/DQS組應(yīng)該包含DQ,DQS和DM三類信號(hào)。以EP4CE30 F484封裝為例,該FPGA共有上、下、左、右4個(gè)側(cè)邊,每個(gè)側(cè)邊又都分有2個(gè)區(qū)(bank)[4]。不同區(qū)可以用不同的IO電壓,可以用不同的IO標(biāo)準(zhǔn),同一BANK中只能用相同電壓IO標(biāo)準(zhǔn)。故本設(shè)計(jì)將所有的DDR2引腳都分配在下側(cè)邊的bank3,bank4區(qū)。由于DDR2采用1.8 V的SSTL電平進(jìn)行數(shù)據(jù)傳輸,為了實(shí)現(xiàn)更高的信號(hào)頻率,輸入信號(hào)需要和一個(gè)參考電壓(VREF)進(jìn)行比較輸出后才被認(rèn)為是實(shí)際輸入,故DDR2所在FPGA 的Bank電壓必須是1.8 V,所以DDR2引腳的IO電平標(biāo)準(zhǔn)設(shè)置為 SSTL-18 ClassI ,可通過在硬件電路上將FPGA芯片2個(gè)區(qū)所有的VCCIO、VREF引腳分別接入1.8 V、0.9 V電源來加以保障。
對(duì)于CycloneIV E型號(hào)的FPAG芯片,每個(gè)區(qū)有9個(gè)DQ引腳和對(duì)應(yīng)的DQS(數(shù)據(jù)選通) 、DQM(數(shù)據(jù)屏蔽)引腳。DQS XY的引腳分布,如圖3所示, 其中X代表DQS組的序號(hào),Y代表這個(gè)組所在的側(cè)邊(SIDE),由圖可知,左邊和右邊支持的DQS較少,分別只有4個(gè),而上邊和下邊則較多,分別有6個(gè)。所以在選擇FPGA與DDR2相連的邊時(shí),對(duì)較多的DDR引腳DQ組,應(yīng)盡量約束在FPGA芯片的上側(cè)邊或是下側(cè)邊區(qū)域。另外提供給內(nèi)部鎖相PLL的晶振時(shí)鐘clk及DDR的時(shí)鐘CK、ck_n也必須采用FPGA的專用時(shí)鐘引腳。而且DDR2顆粒的工作時(shí)鐘使用差分時(shí)鐘線ck、ck_n,能夠減少共模干擾和時(shí)鐘的抖動(dòng),提高了時(shí)鐘信號(hào)的質(zhì)量。而DDR2的地址和控制線在FPGA上沒有專用管腳,可以任意使用其它普通IO管腳。 DDR2以外的管腳,如從晶振引入的時(shí)鐘和全局復(fù)位信號(hào)等,只需要設(shè)定為默認(rèn)的 2.5 V LVTTL(default)類型。
引腳分配好后,即可將程序下載到FPGA開發(fā)板中驗(yàn)證。開發(fā)板所采用的FPGA芯片型號(hào)為Cyclone EP4CE30,DDR2 存儲(chǔ)芯片型號(hào)為 MT47H64M16,數(shù)量為兩片,每片數(shù)據(jù)寬度為16 bit。軟件編譯工具采用 QuartusII 12.0,實(shí)時(shí)數(shù)據(jù)采集工具為quartusII自帶的嵌入式邏輯分析儀SignaltapII 。
圖3 Cyclone 4CE30芯片的DQS引腳分布圖
DDR2驗(yàn)證平臺(tái)結(jié)構(gòu)如圖4所示,主要包括DDR2 控制器和測(cè)試模塊兩部分。控制器由Quartus 軟件的 Megacore 功能調(diào)用產(chǎn)生[5],其中PHY接口核保證讀寫過程中 DQS信號(hào)能夠以精確的相位偏移發(fā)送和采集數(shù)據(jù)。測(cè)試模塊主要提供讀數(shù)據(jù)信號(hào)給整個(gè)驗(yàn)證平臺(tái)。為了比較讀寫數(shù)據(jù)是否一致,可以將寫入的數(shù)據(jù)同時(shí)放入FIFO中,然后將DDR2中讀出的數(shù)據(jù)與FIFO數(shù)據(jù)進(jìn)行比較。由于FIFO讀寫有延時(shí),這樣增加了測(cè)試程序時(shí)序控制的復(fù)雜性。而本文的測(cè)試模塊則是采用線性反饋寄存器來產(chǎn)生偽隨機(jī)的數(shù)據(jù),該數(shù)據(jù)實(shí)際上是周期性重復(fù)出現(xiàn)的數(shù)據(jù)序列。寫操作完成后再將數(shù)據(jù)從DDR單元中讀出來時(shí),即可直接與線性反饋寄存器的周期性數(shù)據(jù)比較。該驗(yàn)證平臺(tái)可用Verilog HDL硬件描述語言構(gòu)建,其功能可先通過ModelSim進(jìn)行仿真。功能仿真時(shí)采用的DDR2模型由Micron公司提供。
圖4 DDR2驗(yàn)證平臺(tái)結(jié)構(gòu)圖
驗(yàn)證平臺(tái)仿真無誤后,下載到開發(fā)板,用SignalTAPII抓取的DDR2芯片數(shù)據(jù)波形如圖5所示。觀察到接口信號(hào)local_init_done跳為高電平時(shí),表明DDR2已初始化成功;local_read_req 為高電平,表示DDR控制器發(fā)出讀數(shù)據(jù)請(qǐng)求;dgen_load信號(hào)有效,則是控制線性反饋寄存器重復(fù)出現(xiàn)寫入的周期性數(shù)據(jù),以便比較讀寫是否正確。DDR反饋的local_rdata_valid有效,則表示經(jīng)歷了若干讀周期延遲讀出的數(shù)據(jù)開始出現(xiàn)在DDR引腳上。local_rdata為讀出的數(shù)據(jù),local_wdata為前面時(shí)間段寫入的周期性數(shù)據(jù)。 比較結(jié)果則用pnf表示,其為高電平代表128位讀數(shù)據(jù)都正確,即讀寫數(shù)據(jù)是一致的。
圖5 SignaTapII實(shí)時(shí)抓取的DDR2接口的信號(hào)波形圖
通過對(duì)DDR2操作原理的分析,給出了DDR2控制器的設(shè)計(jì)及實(shí)現(xiàn)方法,并將DDR2控制器及其驗(yàn)證平臺(tái)仿真通過后,下載到CycloneIV FPGA芯片的開發(fā)板上進(jìn)行驗(yàn)證。通過邏輯分析儀工具SignaltapII抓取數(shù)據(jù),能觀察到存儲(chǔ)器引腳上穩(wěn)定的讀寫數(shù)據(jù)。在雙沿時(shí)鐘頻率 200 MHz下,比較寫入數(shù)據(jù)和讀出數(shù)據(jù),兩者相同, DDR2控制器達(dá)到了設(shè)計(jì)要求。其工作穩(wěn)定可靠,占用邏輯資源較少,且具有較高的可移植性以及簡(jiǎn)單的用戶接口。在此基礎(chǔ)上進(jìn)行系統(tǒng)開發(fā),將縮短系統(tǒng)開發(fā)周期,同時(shí)也降低了系統(tǒng)成本。
[1] Altera Corporation. External Memory Interface Handbook Volume 5[Z].Altera Corporation,2011.
[2] Micron Corporation. 1Gb: x4, x8, x16 DDR2 SDRAM[Z].Micron Corporation,2004.
[3] Altera Corporation. Pin Information for the Cyclone IV EP4CE30 Device (Version1.3)[Z].Altera Corporation,2014.
[4] Altera Corporation. Cyclone IV Device Handbook[Z].Altera Corporation,2011.
[5] 李 圣. DDR2 SDRAM控制器的研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2011.
Design and Implementation of DDR2 SDRAM Controller Interface on FPGA
Wang Meng, Jiang Feng, Xie Haolan
(Central South University of Forestry and Technology, Changsha 410001,China)
DDR2 SDRAM, as the second generation dynamic random memory, is applied widely because of its large capacity, high speed and good compatibility. Because the control of DDR2 chip is more complex, a simplified work flow chart based on its characteristics and working mechanism is proposed to solve the problem of chip driver and function verification for DDR2. Furthermore, the overall design,verification method and pin assignment of DDR2 controller in FPGA device are given. A test platform of the DDR2 controller IP core is built using Verilog HDL language in the verification method,which test successfully the simulation model of DDR2 by Modelsim software. And then the real-time signals in FPGA evaluation board are captured by adopting SignalTapII Logic Analyzer embedded in QuartusII software. The verification results in evaluation board show that the initialization of DDR2 chip is successful; pins of DDR2 chip have stable read and write data; the write data and read data are consistent under the dual edges clock with 200 MHz frequency. Therefore, the DDR2 controller meets design requirements, and it has simple interface, better stability and transplantablity.
FPGA device; DDR2 SDRAM interfaces; chip driver; verification
2016-04-02;
2016-07-22。
湖南省教育廳一般科研項(xiàng)目(13C1162);湖南省教育廳優(yōu)秀青年項(xiàng)目(2015B251);中南林業(yè)科技大學(xué)校級(jí)大學(xué)生創(chuàng)新項(xiàng)目。
王 夢(mèng)(1976-),男,博士,講師,主要從事數(shù)字集成電路、半導(dǎo)體器件設(shè)計(jì)方向的研究。
1671-4598(2016)12-0119-03
10.16526/j.cnki.11-4762/tp.2016.12.034
TN47
A