關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計(jì)應(yīng)用 > 基于VHDL的SDRAM控制器的實(shí)現(xiàn)

基于VHDL的SDRAM控制器的實(shí)現(xiàn)

作者: 時(shí)間:2012-10-29 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://butianyuan.cn/article/159725.htm

  ADDR為輸入地址端口。將其解析為對應(yīng)的片選、頁以及行、列地址。以一條MIT16LSDT6464A內(nèi)存條為例,其大小為512Mbyte(2 29 byte)。數(shù)據(jù)位寬為64bit(8byte),則地址線ADDR應(yīng)為26根。可以這樣映射地址:ADDR[25]對應(yīng)內(nèi)存芯片組號;ADDR[24:23]對應(yīng)頁號;ADDR[22:10]對應(yīng)行號;ADDR[9:0]對應(yīng)列號。

DATAIN為寫入數(shù)據(jù)端口,64bit位寬。

  DATAOUT為讀出數(shù)據(jù)端口,64bit位寬。

  RD_OE為讀出數(shù)據(jù)使能端口,當(dāng)其為1時(shí),表示從下一個(gè)時(shí)鐘起,數(shù)據(jù)將依次出現(xiàn)在DATAOUT口上。

  WR_OE為寫入數(shù)據(jù)使能端口,當(dāng)其為1時(shí),寫入數(shù)據(jù)應(yīng)該依次出現(xiàn)在DATAIN口上。

  CMD[2:0]為命令輸入端口,分別表示讀、寫內(nèi)存等待操作。其中,CMD=“000”表示無操作,內(nèi)存條交給管理,定其完成刷新工作;REFRESH命令由外部邏輯指定特刷新的內(nèi)存芯片信號,組號由ADDR的低位給出;LOAD_MODE命令執(zhí)行內(nèi)存條工作寄存器初始化工作,初始化值由DATAIN的低13位決定,內(nèi)存芯片組號同樣由ADDR的低位給出;同理,ADDR的低位也決定了預(yù)充電操作所對應(yīng)的內(nèi)存芯片組號。

  CMDACK為命令應(yīng)答端口,表示命令已經(jīng)被執(zhí)行,使外部邏輯可以向發(fā)出下一個(gè)動作。

  4.2 狀態(tài)機(jī)

  圖3是控制器的狀態(tài)轉(zhuǎn)移圖。狀態(tài)圖中的各個(gè)狀態(tài)內(nèi)均包含一系列的子狀態(tài)轉(zhuǎn)移(對內(nèi)存條發(fā)出連續(xù)命令),每個(gè)子狀態(tài)完成一個(gè)功能操作。初始化操作包括前面介紹的內(nèi)存條初始化全過程,工作寄存器的默認(rèn)值在程序中指定。以后可以通過LOAD_MODE命令改變內(nèi)存條的工作模式。初始化結(jié)束后,內(nèi)存條進(jìn)入Idel狀態(tài),刷新計(jì)數(shù)器開始工作,控制器開始響應(yīng)外部邏輯的操作請求。

圖3是SDRAM控制器的狀態(tài)轉(zhuǎn)移圖

  刷新計(jì)數(shù)器操作是一個(gè)獨(dú)立的進(jìn)程(process)。刷新計(jì)數(shù)器的初值由內(nèi)存芯片要求、內(nèi)存條個(gè)數(shù)和控制器工作頻率共同決定。例如,在本次設(shè)計(jì)中,所采用的MT48LC32M8A2內(nèi)存芯片要求在64ms內(nèi)夏至少刷新8196次。而MIT16LSDT6464A型內(nèi)存條共有兩組內(nèi)存芯片,也就是要求在64ms內(nèi)要發(fā)出8196×2條自刷新(AUTO REFRESH)指令。系統(tǒng)工作時(shí)鐘為46.66MHz,因此控制單條MIT16LSDT6464A時(shí),刷新計(jì)數(shù)器初值至多為(64ms/8196/2)×6、、46.66MHz,即182.開始工作后,每當(dāng)刷新計(jì)數(shù)器值減為0,便依次向內(nèi)存芯片組發(fā)出刷新命令,保證中的數(shù)據(jù)不丟失。刷新請求是內(nèi)存請求;讀和寫操作是外部請求。在Idel狀態(tài)中有請求仲裁邏輯,當(dāng)內(nèi)部和外部請求同時(shí)出現(xiàn)時(shí),優(yōu)先保證內(nèi)部請求,狀態(tài)轉(zhuǎn)移至刷新操作。當(dāng)刷新操作結(jié)束時(shí),重新返回Idel狀態(tài),開始響應(yīng)外部請求。響應(yīng)外部請求后,應(yīng)答信號CMDBAK出現(xiàn)正脈沖。它通知外部邏輯,請求已經(jīng)被響應(yīng),可以撤銷請求。在刷新操作狀態(tài)中,也有許數(shù)器計(jì)數(shù),其大小等于控制器管理的內(nèi)存芯片信號。記錄并判斷此次刷新操作所對應(yīng)的內(nèi)存芯片的組號,產(chǎn)生相應(yīng)的片選信號。

  響應(yīng)讀、寫請求后,狀態(tài)從Idel轉(zhuǎn)移到讀、寫狀態(tài)。同時(shí)讀、寫地址和寫入的數(shù)據(jù)鎖存至控制器??刂破饔勺x寫地址解析出CS信號、頁地址、行地址、列地址。向內(nèi)存條發(fā)出一系列命令(ACTIVE,READ/WRITE with AUTO PRECHARGE),完成讀寫操作,為了簡化,此控制器向SDRAM發(fā)出的都是帶有AUTO PRECHARGE的讀、寫指令,然后由SDRAM內(nèi)部邏輯自動在讀、寫過程末期發(fā)出PRECHARGE指令(在發(fā)READ/WRITE指令時(shí),地址線A10賦值1,打開AUTO PRECHARGE功能)。圖4和圖5分別是利用該控制器完成讀、寫操作的時(shí)序圖。讀操作的CAS延遲為兩個(gè)時(shí)鐘。

控制器完成讀操作的時(shí)序圖

控制器完成寫操作的時(shí)序圖

  該SDRAM控制器在中頻數(shù)據(jù)海量存儲系統(tǒng)中已得到應(yīng)用。數(shù)據(jù)接收邏輯將接收到的中頻采樣數(shù)據(jù)整理后(拼接成64bit),通過SDRAM控制器存入SDRAM陣列。存滿后,數(shù)據(jù)輸出邏輯將中頻數(shù)據(jù)通過SDRAM控制器從內(nèi)存條中取出,傳輸至上位機(jī)。其代碼在ATERA公司的FPGA--EP1C6Q240中通過了Quartus II的仿真、綜合和布局、布線。占用499個(gè)logic cellk,消耗了8%的邏輯資源。留有豐富的資源可提供給其它邏輯單元使用。

  上面介紹了SDRAM的基本工作原理和一種簡單的通用SDRAM控制器的。SDRAM的控制機(jī)制比較復(fù)雜,具有多種突發(fā)讀、寫方式和工作模式(詳細(xì)內(nèi)容請參考SDRAM的數(shù)據(jù)手冊)。但是,可以根據(jù)應(yīng)用,其中的一個(gè)子集(基本讀、寫、刷新操作)來滿足實(shí)際系統(tǒng)的需要。用SDRAM實(shí)現(xiàn)大容量的高速數(shù)據(jù)緩存具有明顯的優(yōu)勢,使用可編程器件實(shí)現(xiàn)SDRAM控制器則使之具有更高的靈活性,其應(yīng)用前景廣闊。


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉