0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

VHDL工具實現(xiàn)SDRAM控制器的要點分享

電子設計 ? 來源:互聯(lián)網 ? 作者:佚名 ? 2018-01-18 07:21 ? 次閱讀

在高速實時或者非實時信號處理系統(tǒng)當中,使用大容量存儲器實現(xiàn)數(shù)據緩存是一個必不可少的環(huán)節(jié),也是系統(tǒng)實現(xiàn)中的重點和難點之一。SDRAM(同步動態(tài)隨機訪問存儲器)具有價格低廉、密度高、數(shù)據讀寫速度快的優(yōu)點,從而成為數(shù)據緩存的首選存儲介制裁。但是SDRAM存儲體結構與RAM有較大差異,其控制時序和機制也較復雜,限制了SDRAM的使用。目前,雖然一些能家長微處理器提供了和SDRAM的透明接口,但其可擴展性和靈活性不夠,難以滿足現(xiàn)實系統(tǒng)的要求,限制了SDRAM的使用。

在詳細闡讀SDRAM數(shù)據文檔的前提下,參考ALTERA公司的IP core,利用可編程器件(CPLD,FPGA)設計了一種通用的SDRAM控制器。它具有很高的靈活性,可以方便地和其它數(shù)據采集分析系統(tǒng)中,如圖1所示。在該系統(tǒng)中,以SDRAM存儲陣列緩存中頻來的高速數(shù)據。存滿后,數(shù)據被慢速讀出至數(shù)據處理模塊。下面將對SDRAM控制模塊的設計進行詳細的描述。

1 SDRAM內存條的結構

SDRAM內存條由SDRAM內存芯片構成,根據內存條的容量大小決定內存條上內存芯片的個數(shù)。現(xiàn)以MICRON公司生產的TIM16LSDT6464A型SDRAM內存條為例,簡要介紹SDRAM的結構。

MIT16LSDT6464A內存條容量為512M Byte,由16片容量為32M Byte的內存芯片MT46LC32M8A2構成。16片內存芯片被分為兩級,每個芯片的數(shù)據位寬為8bit.8片一組,64bit數(shù)據寬度。每個內存芯片的數(shù)據線和控制均是復用的。對內存條的讀寫操作,是以內存芯片組為單位的,通過內存條的片選信號S0、S1、S2、S3決定組號。S0、S2控制芯片組1,S1、S3控制芯片組2.

SDRAM內存芯片的主要信號有控制信號、控制信號、數(shù)據信號,均為工作時鐘同步輸入、輸出信號。

控制信號主要有:CS(片選信號),CKE(時鐘使能信號),DQM(輸入、輸出使能信號),CAS、RAS、WE(讀寫控制命令字)。通過CAS、RAS、WE的各種邏輯組合,可產生各種控制命令。

地址信號有:BA0和BA1頁地址選擇信號,A0~A12地址信號,行、列地址選擇信號。通過分時復用決定地址是行地址還是列地址。在讀寫操作中,在地線上依次給出頁地址、行地址、列地址,最終確定存儲單元地址。

數(shù)據信號有:DQ0~DQ7,雙向數(shù)據。其使能受DQM控制。

SDRAM的工作模式通過LOAD MODE REGISTER命令對工作模式寄存器進行設置來選擇。設置參量有Reserved(備用的人)Write Burst Mode(WB,寫突發(fā)模式)、Operation Mode(Op Mode,工作模式)、CAS Latency(CAS延遲)、Burst Type(BT,突發(fā)類型)、Burst Length(突發(fā)長度)。

2 SDRAM的基本讀寫操作

SDRAM的基本讀操作需要控制線和地址線相配合地發(fā)出一系列命令來完成。先發(fā)出BANK激活命令(ACTIVE),并鎖存相應的BANK地址(BA0、BA1給出)和行地址(A0~A12給出)。BANK激活命令后必須等待大于tRCD(SDRAM的RAS到CAS的延遲指標)時間后,發(fā)出讀命令字。CL(CAS延遲值)個工作時鐘后,讀出數(shù)據依次出現(xiàn)在數(shù)據總線上。在讀操作的最后,要向SDRAM發(fā)出預充電(PRECHARGE)命令,以關閉已經激活的頁。等待tRP時間(PRECHARGE)命令,以關閉已經激活的頁。等待tRP時間(PRECHAREG命令后,相隔tRP時間,才可再次訪問該行)后,可以開始下一次的讀、寫操作。SDRAM的讀操作只有突發(fā)模式(Burst Mode),突發(fā)長度為1、2、4、8可選。

SDRAM的基本寫操作也需要控制線和地址線相配合地發(fā)出一系列命令來完成。先發(fā)出BANK激活命令(ACTIVE),并鎖存相應的BANK地址(BA0、BA1給出)和行地址(A0~A12給出)。BANK激活命令后必須等待大于tRCD的時間后,發(fā)出寫命令字。寫命令可以立即寫入,需寫入數(shù)據依次送到DQ(數(shù)據線)上。在最后一個數(shù)據寫入后延遲tWR時間。發(fā)出預充電命令,關閉已經激活的頁。等待tRP時間后,可以展開下一次操作。寫操作可以有突發(fā)寫和非突發(fā)寫兩種。突發(fā)長度同讀操作。

tRCD、tRP、tWR的具體要求,詳見SDRAM廠家提供的數(shù)據手冊。所等待的工作時鐘個數(shù)由tRCD、tRP、tWR的最小值和工作時鐘周期共同決定。

由以上介紹可以得出,SDRAM的讀、寫操作均由一系列命令組成,因此讀、寫操作是有時鐘損耗的,工作時鐘速率不等于SDRAM能達到的讀、寫速率。但是由于SDRAM有突發(fā)讀、寫模式,也就是說可以讀出和寫入一串地址連續(xù)的數(shù)據,從而提高了效率。當突發(fā)長度為整頁時,讀、寫速度達到最快。隨機讀、寫速度的計算公式為:

furite/read=工作時鐘頻率(HzHzHhdkkdk ss dkkdkdkd,,,m,mddddd)×數(shù)據寬度(bytes)×突發(fā)讀寫長度/操作所需的時鐘數(shù)

為了提高存儲密度,SDRAM采用硅片電容存儲信息。電容總會有漏電流流過,所以為了不使信息丟失,必須定期地給電容刷新充電。外部控制邏輯必須按要求定期向內存條發(fā)出刷新命令,保證在規(guī)定的時間內對每一個單元都進行刷新。

3 初始化操作

SDRAM在上電以后必須對其進行初始化操作,具體操作如下:

(1)系統(tǒng)在上電后要等待100~200μs.在待時間到了以后至少執(zhí)行一條空操作或者指令禁止操作。

(2)對所有芯片執(zhí)行PRECHARGE命令,完成預充電。

(3)向每組內存芯片發(fā)出兩條AUTO REFRESH命令,使SDRAM芯片內部的刷新計數(shù)器可以進入正常運行狀態(tài)。

(4)執(zhí)行LOAD MODE REGISTER命令,完成對SDRAM工作模式的設定。

完成以上步驟后,SDRAM進入正常工作狀態(tài),等待控制器對其進行讀、寫和刷新等操作。

4 SDRAM控制器設計

4.1 功能說明

在以SDRAM作為緩存的系統(tǒng)中,使用可編程器件對其進行控制具有很強的靈活性。為了使設計具有模塊化和可重復使用的優(yōu)點,設計了一個簡化的SDRAM接口電路。這樣就屏蔽掉了SDRAM操作的復雜性,而其它邏輯模塊可通過接口電路對SDRAM進行訪問。此外,由于整個SDRAM控制器用VHDL語言編寫,只要對其進行簡單的修改就可以滿足不同的需求,具有很強的靈活性。

參照圖2,SDRAM控制器完成的主要功能是對CMD[2:0]的命令字和ADDR端的地址進行解析,產生相應的SDRAM的控制時序。

CLK為輸入的工作時鐘端口。

ADDR為輸入地址端口??刂破鲗⑵浣馕鰹閷钠x、頁以及行、列地址。以一條MIT16LSDT6464A內存條為例,其大小為512Mbyte(2 29 byte)。數(shù)據位寬為64bit(8byte),則地址線ADDR應為26根??梢赃@樣映射地址:ADDR[25]對應內存芯片組號;ADDR[24:23]對應頁號;ADDR[22:10]對應行號;ADDR[9:0]對應列號。

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

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

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

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

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

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

4.2 狀態(tài)機

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

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

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    15885

    瀏覽量

    175360
  • SDRAM
    +關注

    關注

    7

    文章

    420

    瀏覽量

    55047
  • 計數(shù)器
    +關注

    關注

    32

    文章

    2241

    瀏覽量

    93973
  • vhdl
    +關注

    關注

    30

    文章

    816

    瀏覽量

    127951
收藏 人收藏

    評論

    相關推薦

    DDR_SDRAM控制器VHDL代碼已經測試

    DDR_SDRAM控制器VHDL代碼已經測試
    發(fā)表于 08-24 16:49

    如何使用Verilog實現(xiàn)基于FPGA的SDRAM控制器?

    本文提出了一種基于FPGA的SDRAM控制器的設計方法,并用Verilog給于實現(xiàn),仿真結果表明通過該方法設計實現(xiàn)控制器可以在FPGA芯片
    發(fā)表于 04-15 06:46

    存儲接口vhdl代碼全集

    SDR SDRAM控制器1?標準SRD SDRAM控制器參考設計,altera提供 使用手冊 VHDL代碼 Verilog代碼?SDR
    發(fā)表于 05-20 10:58 ?155次下載

    SDRAM控制器參考設計,Lattice提供的VHDL源代碼

    SDRAM控制器參考設計,Lattice提供的VHDL源代碼 -- Permission: --   Lattice Semiconductor grants
    發(fā)表于 06-14 08:54 ?93次下載

    SDRAM控制器的設備與VHDL實現(xiàn)

    摘要: 介紹了SDRAM的存儲體結構、主要控制時序和基本操作命令,并且結合實際系統(tǒng),給出了一種用FPGA實現(xiàn)的通用SDRAM控制器的方案。
    發(fā)表于 06-20 12:51 ?884次閱讀
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的設備與<b class='flag-5'>VHDL</b><b class='flag-5'>實現(xiàn)</b>

    使用Verilog實現(xiàn)基于FPGA的SDRAM控制器

    摘 要:介紹了SDRAM的特點和工作原理,提出了一種基于FPGA的SDRAM控制器的設計方法,使用該方法實現(xiàn)控制器可非常方便地對
    發(fā)表于 06-20 13:04 ?2143次閱讀

    DDR SDRAM控制器參考設計VHDL代碼

    Xilinx FPGA工程例子源碼:DDR SDRAM控制器參考設計VHDL代碼
    發(fā)表于 06-07 11:44 ?19次下載

    基于VHDLSDRAM控制器實現(xiàn)

    基于VHDLSDRAM控制器實現(xiàn)
    發(fā)表于 01-22 13:43 ?12次下載

    SDRAM控制器的設計

    邏輯復雜,接口方式與普通的存儲差異很大。為了解決這個矛盾,需要設計專用的SDRAM控制器,使用戶像使用SRAM -樣方便的使用SDRAM??紤]到
    發(fā)表于 11-28 19:51 ?5次下載
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的設計

    FPGA讀寫SDRAM的實例和SDRAM的相關文章及一些SDRAM控制器設計論文

    ,SDRAM的原理和時序,SDRAM控制器,動態(tài)隨即存儲SDRAM模塊功能簡介,基于FPGA的SDRA
    發(fā)表于 12-25 08:00 ?56次下載
    FPGA讀寫<b class='flag-5'>SDRAM</b>的實例和<b class='flag-5'>SDRAM</b>的相關文章及一些<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>設計論文

    如何使用FPGA設計SDRAM控制器

    針對SDRAM 操作繁瑣的問題,在對SDRAM 存儲和全頁突發(fā)式操作進行研究的基礎上,提出一種簡易SDRAM 控制器的設計方法。該設計方法
    發(fā)表于 12-18 16:13 ?6次下載
    如何使用FPGA設計<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>

    DDR SDRAM控制器的設計與實現(xiàn)

    本文首先分析了DDR SDRAM的基本特征,并提出了相應的解決方案詳細介紹了基于J EDEC DDR SDRAM規(guī)范的DDR SDRAM控制器設計方案。該
    發(fā)表于 03-28 10:57 ?19次下載

    基于FPGA的SDRAM控制器的設計與實現(xiàn)簡介

    基于FPGA的SDRAM控制器的設計與實現(xiàn)簡介(嵌入式開發(fā)工程師和基層公務員)-該文檔為基于FPGA的SDRAM控制器的設計與
    發(fā)表于 07-30 09:34 ?11次下載
    基于FPGA的<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的設計與<b class='flag-5'>實現(xiàn)</b>簡介

    基于FPGA的DDR3SDRAM控制器設計及實現(xiàn)

    基于FPGA的DDR3SDRAM控制器設計及實現(xiàn)(嵌入式開發(fā)式入門)-該文檔為基于FPGA的DDR3SDRAM控制器設計及
    發(fā)表于 07-30 13:07 ?37次下載
    基于FPGA的DDR3<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>設計及<b class='flag-5'>實現(xiàn)</b>

    實時視頻SDRAM控制器的FPGA設計與實現(xiàn).zip

    實時視頻SDRAM控制器的FPGA設計與實現(xiàn)
    發(fā)表于 12-30 09:21 ?3次下載