加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 7.6  典型實例13:SDRAM讀寫控制的實現(xiàn)與Modelsim仿真
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

FPGA系統(tǒng)設(shè)計的仿真驗證之:SDRAM讀寫控制的實現(xiàn)與Modelsim仿真

2013/08/26
1
閱讀需 13 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

?

7.6??典型實例13:SDRAM讀寫控制的實現(xiàn)與Modelsim仿真

7.6.1??實例的內(nèi)容及目標

1.實例的主要內(nèi)容

本節(jié)旨在通過分析SDRAM控制器,介紹了SDRAM的基本工作模式。最后使用Modelsim對讀寫控制器進行仿真,幫助讀者進一步了解一個真實的器件模塊是如何進行Modelsim仿真的。

2.實例目標

通過本實例,讀者應達到下面的目標。

·??了解SDRAM存儲器的工作模式。

·??熟悉Modelsim仿真的基本流程。

·??可獨立使用Modelsim仿真新工程。

7.6.2??SDRAM簡介

在高速實時或者非實時信號處理系統(tǒng)當中,常常使用大容量存儲器實現(xiàn)數(shù)據(jù)緩存。而大容量存儲器的控制與使用是整個系統(tǒng)實現(xiàn)過程中的重點和難點之一。

SDRAM(同步動態(tài)隨即訪問存儲器)具有價格低廉、精密度高、讀寫速度快等優(yōu)點,從而成為數(shù)據(jù)緩存器的首選存儲介質(zhì)。但是SDRAM的結(jié)構(gòu)與SRAM有很大的差異,其控制時序和機制也比較復雜,這就限制了SDRAM的使用范圍。

下面我們首先對SDRAM進行簡單介紹。

1.SDRAM信號

SDRAM器件的信號可以分為控制、地址和數(shù)據(jù)信號3類,具體定義如表7.2所示。

表7.2 SDRAM信號

信??號??名

信?號?類?型

信?號?描?述

CS

輸入

Chip?Enable,使能

CLK

輸入

Clock,時鐘

CKE

輸入

Clock?Enable,時鐘使能

RAS

輸入

Row?Address?Strobe,行地址選通

續(xù)表

信??號??名

信?號?類?型

信?號?描?述

CAS

輸入

Column?Address?Strobe,列地址選通

WE

輸入

Write?Enable,寫使能

DQML、DQMH

輸入

Data?Mask?for?Lower,Upper?Bytes,高低字節(jié)屏蔽

BA

輸入

Bank?Address,Bank地址

A[0:10]

輸入

Address,地址

DQ[0:15]

雙向

Data,數(shù)據(jù)

2.SDRAM工作特性

通常一個SDRAM?中包含幾個Bank,每個Bank的存儲單元是按行和列尋址的。由于這種特殊的存儲結(jié)構(gòu),SDRAM有以下幾個工作特性。

(1)SDRAM?的初始化。

SDRAM?在上電100~200μs?后,必須由一個初始化進程來配置SDRAM的模式寄存器,模式寄存器的值決定著SDRAM?的工作模式。

(2)訪問存儲單元。

為減少I/O?引腳數(shù)量,SDRAM?復用了地址線。所以在讀寫SDRAM?時,先由ACTIVE?命令激活要讀寫的Bank,并鎖存行地址,然后在讀寫指令有效時鎖存列地址。一旦Bank被激活后只有執(zhí)行一次預充命令后才能再次激活同一Bank。

(3)刷新和預充。

為了提高存儲密度,?SDRAM?采用硅片電容存儲數(shù)據(jù),電容總是傾向于放電,因此必須有定時的刷新周期以避免數(shù)據(jù)丟失。刷新周期可由(最小刷新周期÷時鐘周期)計算獲得。對Bank預充電或者關(guān)閉已激活的Bank,可預充特定Bank?也可同時作用于所有Bank,A10、BA0和BA1用于選擇Bank。

?

(4)操作控制。

SDRAM?的具體控制命令由一些專用控制引腳和地址線輔助完成。CS、RAS、CAS?和WR?在時鐘上升沿的狀態(tài)決定具體操作動作,地址線和Bank選擇控制線在部分操作動作中作為輔助參數(shù)輸入。

由于特殊的存儲結(jié)構(gòu),SDRAM?操作指令比較多,不像SRAM?一樣只有簡單的讀寫,具體操作指令如表7.3所示。

表7.3 SDRAM命令真值表

功????能

命??令??字

CS

RAS

CAS

WE

BA

A10

A[0:9]

取消器件選擇

DSEL

H

X

X

X

X

X

X

無操作

NOP

L

H

H

H

X

X

X

讀操作

READ

L

H

L

H

V

L

V

讀等待/自動預充電

READAP

L

H

L

H

V

H

V

續(xù)表

功????能

命??令??字

CS

RAS

CAS

WE

BA

A10

A[0:9]

寫操作

WRITE

L

H

L

L

V

L

V

寫等待/自動預充電

WRITEAP

L

H

L

L

V

H

V

Bank激活

ACT

L

L

H

H

V

V

V

對指定Bank預充電

PRE

L

L

H

L

V

L

X

對所有Bank預充電

PALL

L

L

H

L

X

H

X

自動刷新

CBR

L

L

L

H

X

X

X

加載模式寄存器

MRS

L

L

L

L

V

V

V

由表7.3可以看到,雖然SDRAM的容量大、速度快,但是存在存儲操作困難的問題。一般的解決方案有兩種,一是直接控制SDRAM的讀寫時序?qū)崿F(xiàn)數(shù)據(jù)的存儲和讀取,二是編寫一個SDRAM的讀寫控制器,將SDRAM的讀寫簡化成SRAM形式,通過幾個命令完成SDRAM的讀寫。

3.SDRAM讀寫控制器

Xilinx、Altera、Lattice等較大的FPGA制造廠商都編寫了自己的SDRAM接口控制器。讀者可以到官方網(wǎng)站去申請相關(guān)的控制器源代碼。下面簡單介紹其中一種,如圖7.33所示是該SDRAM控制器總體設(shè)計框圖和外部接口信號。

?

在圖7.33中,控制器右端接口信號均為直接與SDRAM?對應管腳相連的信號,在表7.2中已做介紹,不再重復。

控制器左端的接口信號為與FPGA?相連的系統(tǒng)控制接口信號,定義如下。

·??CLK:系統(tǒng)時鐘信號。

·??ADDR:系統(tǒng)給出的SDRAM?地址信號。

·??DATAIN:系統(tǒng)用于寫入SDRAM?的數(shù)據(jù)信號。

·??DATAOUT:系統(tǒng)用于從SDRAM讀出的數(shù)據(jù)信號。

·??CMD[1:0]、CMDACK:系統(tǒng)和控制器的命令交互信號,參見表7.3。

·??DM:數(shù)據(jù)Mask信號。

一般來說,SDRAM的讀寫控制時序可以分為初始化、寫寄存器、自動刷新、突發(fā)模式讀、突發(fā)模式寫、整頁讀以及整頁寫等主要操作。具體的時序圖可以查閱相關(guān)的器件數(shù)據(jù)手冊,這里不再列出。

SDRAM的讀寫控制也可以由如圖7.34所示的讀寫狀態(tài)機表示。

在FPGA中,實現(xiàn)如圖7.34所示的狀態(tài)機,再利用已有的SDR?SDRAM控制器即可實現(xiàn)對SDRAM器件的控制。

圖7.34??SDRAM讀寫狀態(tài)機

?

7.6.3??SDRAM控制器的Modelsim仿真

(1)打開ModelSim軟件。

(2)創(chuàng)建工程。

如圖7.35所示,在Modelsim中創(chuàng)建新工程,并設(shè)置工程的相關(guān)屬性。

圖7.35??創(chuàng)建工程

?

(3)添加設(shè)計輸入。

若要創(chuàng)建新的文件就選擇【Create?New?File】圖標,若要添加已經(jīng)存在的文件就選擇【Add?Existing?File】圖標,如圖7.36所示。本實例中使用已經(jīng)存在的SDRAM控制器源文件作為設(shè)計輸入,添加后,在Workspace瀏覽器中可以看到如圖7.37的設(shè)計輸入列表。

??????????????

圖7.36??添加設(shè)計輸入????????????? 圖7.37??SDRAM設(shè)計輸入列表

?

(4)編譯設(shè)計輸入。

如圖7.38所示,在任意一個源文件上單擊右鍵,選擇“Compile”/“Compile?All”,對所有的源文件進行編譯。

編譯后,若有錯誤,Modelsim會在信息欄中顯示出來。這時只要雙擊該錯誤,ModelSim就會自動打開該錯誤所在的文件,并定位到出現(xiàn)錯誤所在的位置附近。若編譯正確通過,源文件后面的藍色問號就替換成為綠色的對號,如圖7.39所示。

?

(5)仿真。

在Workspace瀏覽器中選擇“Library”復選頁,單擊Work左邊的小加號。在彈出的子菜單里面找到仿真模塊“sdram_test_tb”。雙擊或右鍵選擇“Simulate”選項,ModelSim就會自動運行仿真,如圖7.40所示。

?????????????????

圖7.39??編譯正確通過??????????????????? 圖7.40??仿真

?

(6)觀察波形。

在Workspace瀏覽器中選擇“Sim”復選頁,可以看到仿真模塊的實例列表,如圖7.41所示。

圖7.41??仿真模塊實例列表

?

如圖7.42所示,右鍵單擊頂層測試模塊,選擇“Add”/“Add?to?Wave”選項,將該仿真模塊的所有實例添加至波形觀察器中。

添加后,ModelSim將會自動打開一個波形觀察器,并將頂層測試模塊的所有寄存器和接口添加進去。回到ModelSim的界面,在命令輸入窗口中鍵入“run?20us”,開始執(zhí)行仿真,如圖7.43所示。

??????????????

圖7.42??添加實例至波形觀察器????????????? 圖7.43??執(zhí)行仿真

執(zhí)行仿真后,經(jīng)過相應的仿真時間,就可以在波形觀察器中看見如圖7.44所示的仿真結(jié)果。這個就是通過利用已有的SDRAM控制器及SDRAM器件模型,由用戶編寫對SDRAM控制器的狀態(tài)機控制后得到的仿真結(jié)果。

圖7.44??SDRAM控制器仿真結(jié)果

7.6.4??小結(jié)

本節(jié)對數(shù)字系統(tǒng)中常用的存儲器SDRAM做了初步的介紹,并在Modelsim中實現(xiàn)了對SDRAM控制器的仿真。通過這個實例,讀者能夠掌握分立器件是如何與FPGA邏輯實現(xiàn)Modelsim聯(lián)合仿真的。

在大型的系統(tǒng)設(shè)計中,在系統(tǒng)硬件實現(xiàn)前對系統(tǒng)進行仿真是非常必要的。而這個仿真又不僅僅局限在FPGA等可編程邏輯器件內(nèi)部,與之相關(guān)的分立器件也是系統(tǒng)仿真的重要組成部分。因此掌握分立器件的聯(lián)合仿真是一個非常重要的技能。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

華清遠見(www.farsight.com.cn)是國內(nèi)領(lǐng)先嵌入師培訓機構(gòu),2004年注冊于中國北京海淀高科技園區(qū),除北京總部外,上海、深圳、成都、南京、武漢、西安、廣州均有直營分公司。華清遠見除提供嵌入式相關(guān)的長期就業(yè)培訓、短期高端培訓、師資培訓及企業(yè)員工內(nèi)訓等業(yè)務(wù)外,其下屬研發(fā)中心還負責嵌入式、Android及物聯(lián)網(wǎng)方向的教學實驗平臺的研發(fā)及培訓教材的出版,截止目前為止已公開出版70余本嵌入式/移動開發(fā)/物聯(lián)網(wǎng)相關(guān)圖書。企業(yè)理念:專業(yè)始于專注 卓識源于遠見。企業(yè)價值觀:做良心教育、做專業(yè)教育,更要做受人尊敬的職業(yè)教育。