關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于VHDL的SDRAM控制器的實現

        基于VHDL的SDRAM控制器的實現

        作者: 時間:2012-10-29 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/159725.htm

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

        DATAIN為寫入數據端口,64bit位寬。

          DATAOUT為讀出數據端口,64bit位寬。

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

          WR_OE為寫入數據使能端口,當其為1時,寫入數據應該依次出現在DATAIN口上。

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

          CMDACK為命令應答端口,表示命令已經被執行,使外部邏輯可以向發出下一個動作。

          4.2 狀態機

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

        圖3是SDRAM控制器的狀態轉移圖

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

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

        控制器完成讀操作的時序圖

        控制器完成寫操作的時序圖

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

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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临清市| 清水河县| 辽阳市| 武冈市| 丽水市| 开江县| 交口县| 合江县| 岚皋县| 兰溪市| 望江县| 年辖:市辖区| 全椒县| 广德县| 嫩江县| 武邑县| 福州市| 枣强县| 乌鲁木齐县| 台山市| 五大连池市| 西丰县| 龙陵县| 炎陵县| 兴城市| 会东县| 呼玛县| 盐池县| 临朐县| 瓮安县| 拜泉县| 新龙县| 柳河县| 乐至县| 清徐县| 吉林市| 泰宁县| 夏邑县| 舞钢市| 潮安县| 南丹县|