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

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

3天內(nèi)不再提示

基于SDRAM控制器軟核的Verilog設計

FPGA設計論壇 ? 來源:西安郵電學院學報 ? 作者:劉宇,陳文藝,李新 ? 2021-06-30 09:16 ? 次閱讀

目前,在很多通信芯片及系統(tǒng)的開發(fā)中,常常需要用到存儲容量大、讀寫速度高的存儲器。在各種隨機存儲器件中,SDRAM 的價格低、體積小、速度快、容量大,是比較理想的器件。但是,與SRAM相比較,SDRAM的控制邏輯復雜,使用很不方便。

為了解決這個矛盾,需要設計專用的SDRAM控制器,使系統(tǒng)用戶象使用SRAM一樣方便的使用SDRAM是十分必要的。考慮到控制器的通用性,本文提出了一種通用的SDRAM控制器的 Verilog設計,并給出了實現(xiàn)結果。

1 SDRAM的工作原理

通常一個SDRAM中包含2個或4個BANK,每個BANK的存儲單元是按行和列尋址的。由于這種特殊的存儲結構,與SRAM比較而言,SDRAM在工作的原理上有以下幾個特點:

第一,SDRAM在上電100us-200us 后,必須由一個初始化過程來配置SDRAM的工作模式。初始化過程是由啟動指令流完成:首先由一個Precharge all bank指令完成對所有BANK的預充,然后是兩個或多個Auto Refresh指令,最后在模式配置指令下完成SDRAM內(nèi)部模式設置寄存器的配置。模式寄存器的值控制著SDRAM的工作方式,詳細描述如表1所示。

SDRAM模式寄存器:

第二,SDRAM行列地址采用復用的方式減少了地址總線的密度。這樣以來,SDRAM在每次讀寫操作時,行列地址要鎖存。具體的,由ACTIVE命令激活要讀寫B(tài)ANK,并鎖存行地址,然后在讀寫指令有效時鎖存列地址。

第三,SDRAM的操作是通過0aaff49e-d919-11eb-9e57-12bb97331649.png AP信號的組合指令字完成的。由于特殊的存儲結構,SDRAM操作指令比較多,不像SRAM一樣只有簡單的讀寫,其主要的指令字見表2。

2 通用SDRAM控制器的設計

2.1 總體設計框圖

SDRAM控制器的內(nèi)部結構,包括控制寄存器、初始化請求產(chǎn)生、刷新請求產(chǎn)生、指令仲裁器、指令譯碼、數(shù)據(jù)通路六個模塊??刂萍拇嫫骺刂芐DRAM的各種工作模式,其值可以通過MCU接口配置。

指令仲裁器對系統(tǒng)的讀寫請求信號sdram*rd*n、sdram*wr*n及初始化請求和刷新請求進行仲裁。仲裁的結果由指令譯碼器譯碼產(chǎn)生 SDRAM的操作指令字。用Sdram*busy信號指示SDRAM總線的閑忙,sdramready為SDRAM控制器對系統(tǒng)讀寫請求的響應指示,指示對數(shù)據(jù)有效的讀寫操作。

2.2 各模塊的設計

2.2.1 控制寄存器模塊

包含控制工作模式的各種寄存器。系統(tǒng)用戶可以根據(jù)實際需要配置SDRA的工作模式??梢酝ㄟ^MCU接口來配置,也可以省去MCU接口而通過預設參數(shù)來配置。寄存器主要包括兩類:一是初始化模式控制寄存器,用于控制SDRAM初始化指令流的產(chǎn)生方式;二是SDRAM模式控制寄存器,用于SDRAM的刷新及其它操作指令參數(shù)的控制。

2.2.2 初始化請求產(chǎn)生模塊

上電后初始化請求信號的產(chǎn)生延遲控制。由于系統(tǒng)上電100us-200us 后時鐘才能穩(wěn)定,之后,SDRAM才可以開始初始化操作。為防止譯碼毛刺的出現(xiàn),采用格雷碼計數(shù)器來實現(xiàn)這一延遲的控制。系統(tǒng)復位結束后,啟動計數(shù)器,當計數(shù)器計到設定的值后計數(shù)值保持,同時譯碼產(chǎn)生初始化的請求信號,在SDRAM初始化完成后請求變?yōu)闊o效。

2.2.3 刷新請求產(chǎn)生模塊

根據(jù)模式寄存器的配置的頻率產(chǎn)生SDRAM的刷新請求信號。這部分電路也是采用格雷碼計數(shù)器實現(xiàn)的。計數(shù)器計到設定的值后產(chǎn)生刷新請求信號,同時返回到初值繼續(xù)計數(shù)。

2.2.4 指令仲裁器模塊

對初始化請求、刷新請求和系統(tǒng)的讀寫請求進行優(yōu)先級仲裁,產(chǎn)生初始化響應initial*hold、刷新響應ref*hold和讀寫響應sdram*wr*hold。初始化操作只在上電時進行一次,它是SDRAM正常工作的基礎,所以它的優(yōu)先級最高。刷新請求的優(yōu)先級次高,讀寫請求的優(yōu)先級最低。當某一種操作正在執(zhí)行時不會響應后來的請求。

2.2.5 指令譯碼器模塊

根據(jù)指令仲裁器的結果和SDRAM控制器模式寄存器對工作模式參數(shù)的設置,分別對初始化指令、刷新指令、讀寫指令進行譯碼。譯碼的結果就是輸出的控制指令字。當initial*hold=1時,譯碼產(chǎn)生SDRAM的初始化指令流;

當ref*hold=1時,譯碼產(chǎn)生刷新指令;當sdram*wr*hold=1并且讀有效(Sdram*rd*n=0)或寫有效 (Sdram*wr*n=0)時,根據(jù)寄存器設置的指令參數(shù)譯碼輸出BANK激活指令、讀指令及預充指令。

此外,在SDRAM執(zhí)行任何一種操作時,都用 sdram*busy=1來指示SDRAM忙;用sdram*busy=0來指示SDRAM空閑。用sdram*ready=1指示系統(tǒng)對SDRAM數(shù)據(jù)有效的讀寫操作。譯碼模塊采用Verilog結合狀態(tài)機的設計方法,直觀清晰,提高了電路的設計周期。

SDRAM控制器軟核設計的狀態(tài)機實現(xiàn)原理如圖2所示,包含了10個狀態(tài),其中從Power on到Mode reg set為上電后SDRAM的初始化過程。其余狀態(tài)為SDRAM的正常讀寫及刷新操作過程。

2.2.6 數(shù)據(jù)通路模塊

是根據(jù)寄存器的設置及指令譯碼的結果對把系統(tǒng)非復用的地址處理為SDRAM復用的地址,使得SDRAM的地址及數(shù)據(jù)和相應的操作指令在時序上同步。

3接口時序

3.1寫時序(Burst=1)

3.2 讀時序(CAS=3,Burst=1)

4 實現(xiàn)及應用

本設計用Candence公司的 Ncverilog仿真工具進行了功能仿真。在仿真過程中,外部的SDRAM采用了Micron公司網(wǎng)上提供的1M×16、2M×2、4M×2的仿真模型,結果正確。

最后,該控制器軟核作為SDRAM的接口電路嵌在了西安深亞公司EOS0121芯片設計中,采用Actel公司的Designer R1-2002工具進行了綜合布線,在ProASIC A500K180 208Pin的FPGA上得到了實現(xiàn)。目前該芯片已被多家公司采用,反映良好。從而也說明了該SDRAM控制器軟核性能可靠,工作穩(wěn)定。

由于采用了IP核的設計思想,只要修改少量的參數(shù)配置就可以支持多個廠家多種型號的SDRAM器件。對特定容量的SDRAM的特定工作模式而言,只要根據(jù)其器件參數(shù)進行設定,控制器就可以適用特定SDRAM的特定工作模式。

5 結束語

Verilog硬件描述語言已越來越廣泛地應用于EDA領域,大多數(shù)EDA設計工程師都用它來進行ASIC設計和FPGA開發(fā)。用高級語言進行電路設計,可以靈活的修改參數(shù),增加了電路設計的通用性和可移植性。

最后,需要指出的是采用IP核的方法設計電路,既可以單獨使用,也可以嵌入到ASIC或FPGA的電路設計中去,大大縮短了產(chǎn)品開發(fā)周期,應該大力推廣。

編輯:jq

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

    關注

    112

    文章

    15885

    瀏覽量

    175365
  • SDRAM
    +關注

    關注

    7

    文章

    420

    瀏覽量

    55047
  • 寄存器
    +關注

    關注

    31

    文章

    5253

    瀏覽量

    119201
  • AP
    AP
    +關注

    關注

    0

    文章

    105

    瀏覽量

    48681

原文標題:SDRAM控制器軟核的Verilog設計

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DDR4 SDRAM控制器的主要特點

    DDR4 SDRAM(Double Data Rate Fourth Synchronous Dynamic Random Access Memory)控制器作為現(xiàn)代計算系統(tǒng)中的重要組成部分,其
    的頭像 發(fā)表于 09-04 12:55 ?210次閱讀

    TMS320F2837xD雙控制器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TMS320F2837xD雙控制器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-01 12:59 ?0次下載
    TMS320F2837xD雙<b class='flag-5'>核</b>微<b class='flag-5'>控制器</b>數(shù)據(jù)表

    Windows實時運動控制MotionRT7 | VC6.0例程講解# 正運動技術#運動控制器

    運動控制器
    正運動技術
    發(fā)布于 :2024年05月29日 14:59:41

    FPGA的IP使用技巧

    的IP : 根據(jù)項目需求選擇合適的IP,如FIFO、RAM、FIR濾波SDRAM
    發(fā)表于 05-27 16:13

    Windows實時運動控制MotionRT7 | Matlab例程講解# 正運動技術# 運動控制器# 控制

    運動控制器
    正運動技術
    發(fā)布于 :2024年05月07日 17:25:42

    Windows實時運動控制:LOCAL高速接口測試之Labview# 正運動技術# 運動控制器# 運動控制

    運動控制器
    正運動技術
    發(fā)布于 :2024年04月16日 14:40:48

    smt32h750擴展sdram

    STM32H750是STMicroelectronics推出的一款高性能微控制器,其特點之一是可擴展的SDRAM(同步動態(tài)隨機存儲)接口。本文將詳細介紹STM32H750擴展SDRAM
    的頭像 發(fā)表于 01-04 14:09 ?1113次閱讀

    基于東載波ES32F0930微控制器的額溫槍方案

    基于東載波 ES32F0930微控制器的額溫槍方案
    的頭像 發(fā)表于 11-07 17:22 ?484次閱讀
    基于東<b class='flag-5'>軟</b>載波ES32F0930微<b class='flag-5'>控制器</b>的額溫槍方案

    基于FPGA的一種SDRAM控制器簡易化設計方法

    電子發(fā)燒友網(wǎng)站提供《基于FPGA的一種SDRAM控制器簡易化設計方法.pdf》資料免費下載
    發(fā)表于 10-26 09:08 ?0次下載
    基于FPGA的一種<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>簡易化設計方法

    基于簡化Cortex-M控制器嵌入式軟件的開發(fā)步驟

    電子發(fā)燒友網(wǎng)站提供《基于簡化Cortex-M控制器嵌入式軟件的開發(fā)步驟.pdf》資料免費下載
    發(fā)表于 10-24 09:02 ?0次下載
    基于簡化Cortex-M<b class='flag-5'>核</b>微<b class='flag-5'>控制器</b>嵌入式軟件的開發(fā)步驟

    基于Nios的音頻效果

    電子發(fā)燒友網(wǎng)站提供《基于Nios的音頻效果.pdf》資料免費下載
    發(fā)表于 10-09 15:28 ?0次下載
    基于Nios<b class='flag-5'>軟</b><b class='flag-5'>核</b>的音頻效果<b class='flag-5'>器</b>

    STM32F05xxx先進的ARM32位微控制器參考手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F05xxx先進的ARM32位微控制器參考手冊.pdf》資料免費下載
    發(fā)表于 09-26 09:36 ?2次下載
    STM32F05xxx先進的ARM<b class='flag-5'>核</b>32位微<b class='flag-5'>控制器</b>參考手冊

    PIC32系列參考手冊之DDR SDRAM控制器

    電子發(fā)燒友網(wǎng)站提供《PIC32系列參考手冊之DDR SDRAM控制器.pdf》資料免費下載
    發(fā)表于 09-25 11:39 ?0次下載
    PIC32系列參考手冊之DDR <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>