




免費預(yù)覽已結(jié)束,剩余32頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
吉林農(nóng)業(yè)大學(xué)本科畢業(yè)設(shè)計吉 林 農(nóng) 業(yè) 大 學(xué) 本 科 畢 業(yè) 設(shè) 計論文題目: 基于FPGA的SDRAM控制器的設(shè)計與實現(xiàn) 學(xué)生姓名: 專業(yè)年級:電子信息科學(xué)與技 指導(dǎo)教師: 職稱 助 教 2008年6月2 日目 錄題目摘要及關(guān)鍵詞1 前言12 SDRAM控制器的介紹與設(shè)計12.1 SDRAM地址結(jié)構(gòu)52.2 SDRAM的指令52.3 SDRAM初始化操作52.4 SDRAM讀寫操作62.5 SDRAM操作終止62.6 SDRAM工作原理72.7 SDRAM控制器方案92.7.1接口信號介紹102.7.2接口控制模塊112.7.3命令生成模塊122.8SDRAM 控制器的設(shè)計152.9 SDRAM控制器的具體實現(xiàn)173 FPGA介紹與設(shè)計213.1 FPGA芯片介紹213.2 在FPGA中設(shè)計和實現(xiàn)SDRAM控制器224.總結(jié)24參考文獻26致 謝27附 錄一29附 錄二301前 言SDRAM的特點是大容量和高速度。其單片容量可達256 Mb或更高,工作速度可達100200 MHz以上,但是其控制方式比EDOFPDRAM復(fù)雜得多。目前,許多嵌入式設(shè)備的大容量存儲器都采用SDRAM來實現(xiàn)。在設(shè)計中采用SDRAM存儲器時,大多都是用專用芯片完成其控制電路。但是,當我們對SDRAM存儲器進行特殊應(yīng)用時,就需要自己設(shè)計控制電路了1。SDRAM是Synchronous Dynamic Random Access Memory(同步動態(tài)隨機存儲器)的簡稱,是前幾年普遍使用的內(nèi)存形式。SDRAM采用3.3v工作電壓,帶寬64位,SDRAM將CPU與RAM通過一個相同的時鐘鎖在一起,使RAM和CPU能夠共享一個時鐘周期,以相同的速度同步工作,與 EDO內(nèi)存相比速度能提高50。SDRAM基于雙存儲體結(jié)構(gòu),內(nèi)含兩個交錯的存儲陣列,當CPU從一個存儲體或陣列訪問數(shù)據(jù)時,另一個就已為讀寫數(shù)據(jù)做好了準備,通過這兩個存儲陣列的緊密切換,讀取效率就能得到成倍的提高。SDRAM不僅可用作主存,在顯示卡上的顯存方面也有廣泛應(yīng)用。SDRAM曾經(jīng)是長時間使用的主流內(nèi)存,從430TX芯片組到845芯片組都支持SDRAM。但隨著DDR SDRAM的普及,SDRAM也正在慢慢退出主流市場。2 SDRAM控制器的介紹與設(shè)計SDRAM: Synchronous Dynamic Random Access Memory,同步動態(tài)隨機存取存儲器,同步是指Memory工作需要步時鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準;動態(tài)是指存儲陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機是指數(shù)據(jù)不是線性依次存儲,而是由指定地址進行數(shù)據(jù)讀寫2。 SDRAM從發(fā)展到現(xiàn)在已經(jīng)經(jīng)歷了四代,分別是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.第一代與第二代SDRAM均采用單端(Single-Ended)時鐘信號,第三代與第四代由于工作頻率比較快,所以采用可降低干擾的差分時鐘信號作為同步時鐘。SDR SDRAM的時鐘頻率就是數(shù)據(jù)存儲的頻率,第一代內(nèi)存用時鐘頻率命名,如pc100,pc133則表明時鐘信號為100或133MHz,數(shù)據(jù)讀寫速率也為100或133MHz。之后的第二,三,四代DDR(Double Data Rate)內(nèi)存則采用數(shù)據(jù)讀寫速率作為命名標準,并且在前面加上表示其DDR代數(shù)的符號,PC-即DDR,PC2=DDR2,PC3=DDR3。如PC2700是DDR333,其工作頻率是333/2=166MHz,2700表示帶寬為2.7G。DDR的讀寫頻率從DDR200到DDR400,DDR2從DDR2-400到DDR2-800,DDR3從DDR3-800到DDR3-1666。很多人將SDRAM錯誤的理解為第一代也就是 SDR SDRAM,并且作為名詞解釋,皆屬誤導(dǎo)。DDR SDRAM是“Double Data Rate SDRAM”的縮寫,即“雙倍速率同步動態(tài)隨機存儲器”。與早期的SDRAM相比,DDR SDRAM內(nèi)存可在時鐘脈沖的上升和下降沿同時傳輸信號,這意味著在相同的工作頻率下,DDR SDRAM的理論傳輸速率為SDRAM的兩倍3。例如:同為133MHz的工作頻率,SDRAM內(nèi)存可以實現(xiàn)1.06GB/s數(shù)據(jù)帶寬,而DDR SDRAM則達到了2.1GB/s,這種DDR SDRAM內(nèi)存便被稱為DDR 266或PC2100,前者代表等效工作頻率,后者表明了數(shù)據(jù)帶寬。 DDR2 SDRAM則在DDR SDRAM的基礎(chǔ)上再次進行了改進,它同樣可在時鐘脈沖的上升和下降沿同時傳輸信號,但采用了4bit數(shù)據(jù)預(yù)讀取方式,使得數(shù)據(jù)傳輸速率在DDR SDRAM的基礎(chǔ)上翻番。例如:同為133MHz工作頻率,DDR SDRAM可實現(xiàn)2.1GB/s數(shù)據(jù)帶寬,而DDR2 SDRAM則達到4.2GB/s, 也被稱為DDR2 533或PC2 4200內(nèi)存。SDRAM內(nèi)存訪問采用突發(fā)(burst)模式,它和原理是,SDRAM在現(xiàn)有的標準動態(tài)存儲器中加入同步控制邏輯(一個狀態(tài)機),利用一個單一的系統(tǒng)時鐘同步所有的地址數(shù)據(jù)和控制信號。使用SDRAM不但能提高系統(tǒng)表現(xiàn),還能簡化設(shè)計、提供高速的數(shù)據(jù)傳輸。 在功能上,它類似常規(guī)的DRAM,也需時鐘進行刷新。 可以說,SDRAM是一種改善了結(jié)構(gòu)的增強型DRAM。然而,SDRAM是如何利用它的同步特性而適應(yīng)高速系統(tǒng)的需要的呢?我們知道,原先我們使用的動態(tài)存儲器技術(shù)都是建立在異步控制基礎(chǔ)上的。系統(tǒng)在使用這些異步動態(tài)存儲器時需插入一些等待狀態(tài)來適應(yīng)異步動態(tài)存儲器的本身需要,這時,指令的執(zhí)行時間往往是由內(nèi)存的速度、而非系統(tǒng)本身能夠達到的最高速率來決定。例如,當將連續(xù)數(shù)據(jù)存入CACHE時,一個速度為60ns的快頁內(nèi)存需要40ns的頁循環(huán)時間;當系統(tǒng)速度運行在100MHz時(一個時鐘周期10ns),每執(zhí)行一次數(shù)據(jù)存取,即需要等待4個時鐘周期!而使用SDRAM,由于其同步特性,則可避免這一時。 SDRAM結(jié)構(gòu)的另一大特點是其支持DRAM的兩列地址同時打開。兩個打開的存儲體間的內(nèi)存存取可以交叉進行,一般的如預(yù)置或激活列可以隱藏在存儲體存取過程中,即允許在一個存儲體讀或?qū)懙耐瑫r,令一存儲體進行預(yù)置。按此進行,100MHz的無縫數(shù)據(jù)速率可在整個器件讀或?qū)懼袑崿F(xiàn)。因為SDRAM的速度約束著系統(tǒng)的時鐘速度,它的速度是由MHz或ns來計算的。 SDRAM的速度至少不能慢于系統(tǒng)的時鐘速度,SDRAM的訪問通常發(fā)生在四個連續(xù)的突發(fā)周期,第一個突發(fā)周期需要4個系統(tǒng)時鐘周期,第二到第四個突發(fā)周期只需要1個系統(tǒng)時鐘周期。順便提一下BEDO(Burst EDO)也就是突發(fā)EDO內(nèi)存。實際上其原理和性能是和SDRAM差不多的,因為Intel的芯片組支持SDRAM,由于INTEL的市場領(lǐng)導(dǎo)地位幫助 SDRAM成為市場的標準。新的內(nèi)存標準在新的世紀到來之時,也帶來了計算機硬件的重大改變。計算機的制造工藝發(fā)展到已經(jīng)可以把微處理器(CPU)的時鐘頻率提高的一千兆的邊緣。相應(yīng)的內(nèi)存也必須跟得上處理器的速度才行。現(xiàn)在有兩個新的標準,DDR SDRAM內(nèi)存和Rambus內(nèi)存。它們之間的競爭將會成為PC內(nèi)存市場競爭的核心。DDR SDRAM代表著一條內(nèi)存逐漸演化的道路。Rambus則代表著計算機設(shè)計上的重大變革。從更遠一點的角度看。DDR SDRAM是一個開放的標準。然而Rambus則是一種專利。它們之間的勝利者將會對計算機制造業(yè)產(chǎn)生重大而深遠的影響。PC133 SDRAM:PC133 SDRAM基本上只是PC100 SDRAM的延伸,不論在DRAM制造、封裝、模組、連接器方面,都延續(xù)舊有規(guī)范,它們的生產(chǎn)設(shè)備相同,因此生產(chǎn)成本也幾乎與PC100 SDRAM相同。嚴格來說,兩者的差別僅在于相同制程技術(shù)下,所多的一道篩選程序,將速度可達133MHz的顆粒挑選出來而已。若配合可支持 133MHz外頻的芯片組,并提高CPU的前端總線頻率(Front Side Bus)到133MHz,便能將DRAM帶寬提高到1GB/sec以上,從而提高整體系統(tǒng)性能。 DDR-SDRAM:DDR SDRAM(Double Data Rate DRAM)或稱之為SDRAM,由于DDR在時鐘的上升及下降的邊緣都可以傳輸資料,從而使得實際帶寬增加兩倍,大幅提升了其性能成本比。就實際功能比較來看,由PC133所衍生出的第二代PC266 DDR SRAM(133MHz時鐘2倍數(shù)據(jù)傳輸266MHz帶寬),不僅在InQuest最新測試報告中顯示其性能平均高出Rambus 24.4,在Micron的測試中,其性能亦優(yōu)于其他的高頻寬解決方案,充份顯示出DDR在性能上已足以和Rambus相抗衡的程度。SDRAM 內(nèi)存 :自Intel Celeron系列以及AMD K6處理器以及相關(guān)的主板芯片組推出后,EDO DRAM內(nèi)存性能再也無法滿足需要了,內(nèi)存技術(shù)必須徹底得到個革新才能滿足新一代CPU架構(gòu)的需求,此時內(nèi)存開始進入比較經(jīng)典的SDRAM時代。 第一代SDRAM 內(nèi)存為PC66 規(guī)范,但很快由于Intel 和AMD的頻率之爭將CPU外頻提升到了100MHz,所以PC66內(nèi)存很快就被PC100內(nèi)存取代,接著133MHz 外頻的PIII以及K7時代的來臨,PC133規(guī)范也以相同的方式進一步提升SDRAM 的整體性能,帶寬提高到1GB/sec以上。由于SDRAM 的帶寬為64bit,正好對應(yīng)CPU 的64bit 數(shù)據(jù)總線寬度,因此它只需要一條內(nèi)存便可工作,便捷性進一步提高5。在性能方面,由于其輸入輸出信號保持與系統(tǒng)外頻同步,因此速度明顯超越EDO 內(nèi)存。 不可否認的是,SDRAM 內(nèi)存由早期的66MHz,發(fā)展后來的100MHz、133MHz,盡管沒能徹底解決內(nèi)存帶寬的瓶頸問題,但此時CPU超頻已經(jīng)成為DIY用戶永恒的話題,所以不少用戶將品牌好的PC100品牌內(nèi)存超頻到133MHz使用以獲得CPU超頻成功,值得一提的是,為了方便一些超頻用戶需求,市場上出現(xiàn)了一些PC150、PC166規(guī)范的內(nèi)存。 曲高和寡Rambus DRAM內(nèi)存 :盡管SDRAM PC133內(nèi)存的帶寬可提高帶寬到1064MB/S,加上Intel已經(jīng)開始著手最新的Pentium 4計劃,所以SDRAM PC133內(nèi)存不能滿足日后的發(fā)展需求,此時,Intel為了達到獨占市場的目的,與Rambus聯(lián)合在PC市場推廣Rambus DRAM內(nèi)存(稱為RDRAM內(nèi)存)。與SDRAM不同的是,其采用了新一代高速簡單內(nèi)存架構(gòu),基于一種類RISC(Reduced Instruction Set Computing,精簡指令集計算機)理論,這個理論可以減少數(shù)據(jù)的復(fù)雜性,使得整個系統(tǒng)性能得到提高。 SDR不等于SDRAM。Pin:模組或芯片與外部電路電路連接用的金屬引腳,而模組的pin就是常說的“金手指”。SIMM:Sigle In-line Memory Module,單列內(nèi)存模組。內(nèi)存模組就是我們常說的內(nèi)存條,所謂單列是指模組電路板與主板插槽的接口只有一列引腳(雖然兩側(cè)都有金手指)。DIMM:Double In-line Memory Module,雙列內(nèi)存模組。是我們常見的模組類型,所謂雙列是指模組電路板與主板插槽的接口有兩列引腳,模組電路板兩側(cè)的金手指對應(yīng)一列引腳。RDIMM:registered DIMM,帶寄存器的雙線內(nèi)存模塊SO-DIMM:筆記本常用的內(nèi)存模組。 工作電壓: SDR:3.3V DDR:2.5V DDR2:1.8V DDR3:1.5VSDRAM的特點是大容量和高速度。其單片容量可達256Mb或更高,工作速度可達100-200MHz以上,是其控制方式比EDO/FPDRAM復(fù)雜得多。目前,許多嵌入式設(shè)備的大容量存儲器都采用SDRAM來實現(xiàn)。在設(shè)計中采用SDRAM存儲器時,大多都是用專用芯片完成其控制電路。但是,當我們對SDRAM存儲器進行特殊應(yīng)用時,就需要自己設(shè)計控制電路了。SDRAM具有多種工作模式,內(nèi)部操作是一個復(fù)雜的狀態(tài)機。SDRAM器件的管腳分為以下幾類:(1)控制信號包括片選,時鐘,時鐘使能,行列地址選擇,讀寫選擇,數(shù)據(jù)有效。(2)地址時分復(fù)用管腳,控制輸入的地址為行地址或列地址。(3)數(shù)據(jù)雙向管腳。SDRAM的所有操作都同步于時鐘。根據(jù)時鐘上升沿時控制管腳和地址輸入的狀態(tài),可以產(chǎn)生多種輸入令: 模式寄存器設(shè)置命令; 激活命令; 預(yù)充命令; 讀命令; 寫命令; 帶預(yù)充的讀命令; 帶預(yù)充的寫命令; 自動刷新命令;另外還有空操作命令。根據(jù)輸入命令,SDRAM狀態(tài)在內(nèi)部狀態(tài)間轉(zhuǎn)移。SDRAM 控制器一般有兩種實現(xiàn)方法:一種是采用專用控制芯片;另一種是用FPGA 進行控制。由于目前FPGA 技術(shù)比較成熟、編程方便、控制靈活,而且可以通過軟件實現(xiàn)各種接口功能,在高速視頻信號數(shù)據(jù)傳輸系統(tǒng)中采用FPGA 進行控制比較合適。采用FPGA 進行控制比較合適。2.1 SDRAM地址結(jié)構(gòu)SDRAM的存儲地址分為頁(bank)地址,行(row)地址和列(column)地址。例如一個8MByte的SDRAM,被分為4個bank,即1個bank為2MByte,每個bank包括12行8列6。2.2 SDRAM的指令SDRAM的一系列指令如表1所示,每個指令最終都是通過控制RAS、CAS、WE信號來實現(xiàn)。通常對SDRAM的操作過程如下:表1 SDRAM命令Table 1 SDRAM order命令縮寫RASCASWE空操作NOPHHH頁操作ACTLHH讀操作RDHLH寫操作WRHLL突發(fā)操作終止BTHHL預(yù)充電PCHLHL配置模式寄存LMRLLL2.3 SDRAM初始化操作上電后至少等待100ns,然后至少執(zhí)行1條空操作;對所有頁執(zhí)行預(yù)充電操作;向各頁發(fā)出兩條刷新操作指令;最后執(zhí)行SDRAM工作模式的設(shè)定LMR命令用來配置SDRAM工作模式寄存器,SDRAM工作寄存器如表2所示。其中A11A10是用戶保留位;A9用來配置寫突發(fā)模式;A8A7是操作模式,通常為“00”,代表標準操作模式;A6A4設(shè)置CAS延遲時間;A3決定突發(fā)操作模式是順序還是間隔型;最后的三位A2A0用來配置突發(fā)長度。表2 SDRAM工作寄存器Table 2 SDRAM working registerA11A10A9A8A7A6A5A4A3A2A1A0ReserveWrite burst modeOperating modeLatency modeBurst typeBurst length2.4 SDRAM讀、寫操作根據(jù)實際應(yīng)用的需要,發(fā)出讀、寫指令。SDRAM可實現(xiàn)突發(fā)式讀寫,支持的突發(fā)長度可配置為1個、2個、4個、8個數(shù)據(jù)周期或者頁模式7。并且突發(fā)的模式可以配置為順序或者間隔型。對SDRAM進行訪問的最主要操作就是讀RD和寫WR操作。SDRAM在進行讀寫操作時,必須要先進行頁激活A(yù)CT操作,以保證存儲單元是打開的,以便從中讀取地址或者寫入地址,關(guān)閉存儲單元通過預(yù)充電PHC命令實現(xiàn)。在進行寫操作時,內(nèi)部的列地址和數(shù)據(jù)就會被寄存;進行讀操作時,內(nèi)部地址被寄存,等待CAS 延遲時間(通常為13個時鐘周期)后,讀出的數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上。 2.5 SDRAM操作終止當SDRAM接收到讀、寫指令后,開始進行順次的讀寫操作,直到達到突發(fā)長度或者突發(fā)終止指令BT出現(xiàn)。 SDRAM 基本操作原理:SDRAM的控制是根據(jù)時鐘上升沿時刻控制信號的不同組合實現(xiàn)的 。控制SD RA M的基本操作包括 : 初始化 、刷新 、塊激活 、讀寫訪問 、預(yù)充電等 。以 現(xiàn)代司的H Y57V281620 H CS T2H ( 2MB 16 bit 4 ba nks)為例 , 簡要介紹一下SD RA M的操作1,2 。SDRAM 的初始化 (見圖1) ,模式設(shè)置 (見圖2) 操作過程如下 。(1)在電源管腳 上電(電 壓不 得超 過標 稱值 的0.3V) 并且CLK時鐘穩(wěn)定后經(jīng)過 200 s 延遲 ,執(zhí)行一次 Command Inhibit 或 N O P 命令 (該命令在延遲 周期的后期發(fā)出) 且 CKE 信號為高 。(2)對所有的塊進行預(yù)充電 ( Precharge All) ,所有的塊都進入空閑 ( Idle) 狀態(tài) 。(3)預(yù) 充 電 后 執(zhí) 行 兩 個 自動刷新 ( Auto Refresh) 命令 ,然后發(fā)出模式設(shè)置命令來設(shè)置模式寄存器 (Loa d M R) 。由于上電后模式寄存器的狀態(tài)是不確定的 ,所以在進行 SD RA M 操作之前一定要 先設(shè)置模式寄存器 。SDRAM 的模式寄存器用于指定 SD RA M 的工作模式 , 包括 : 突發(fā)長度 (Burst Length) 、突發(fā)類型(BT ) 、CAS 延時 ( CAS Latency )、操 作 模 式 ( Op Mo de) 和寫突發(fā)模式 ( WB) 。模式設(shè)置命令使用地址線 A0A9 作為模式數(shù)據(jù)輸入線 。其中A2A0作為Burst長度, A3為Burst類型, A6A4為CA S延遲 , A8 A7為操作模式 , A9為寫B(tài)urst 模式 。模式寄存器的設(shè)置值必須與器件的延遲參數(shù)以及讀寫操作的控制時序一致 ,否則將導(dǎo)致錯誤或不可靠的讀寫 。模式寄存器的設(shè)置值可通過外部處理 器通過地址線配置 ,也可以FPGA部寄存器自己設(shè)置 ,我們這里是通過內(nèi)部設(shè)定值來工作的 。為減少 I/ O 引腳數(shù)量 , SD RA M 復(fù)用地址線 A0- A11 ,這就使得 SD RA M 的容量很大 ,而占用相對 較少的管腳 。對 SD RA M 的訪問要以激活命令開 始 ,隨后發(fā)出讀或?qū)懨?。其中與激活命令同時出 現(xiàn)的地址位用來選擇要訪問的塊和行 ,B A1/ BA0 用來選擇塊 , A0A11用來選擇所要訪問的行 ; 與后 面讀寫命令一起出現(xiàn)的地址位用來選擇一個 Burst 所要訪問的起始列 。在讀命令發(fā)出后到第一個有效數(shù)據(jù)出現(xiàn) 之 間 有 一 個間隔,即為CAS反應(yīng)時 間 ,CAS可以設(shè)置為2 , 3個時鐘 。對SDRA M的讀寫操作一般以 Burst 模式進行 ,Burst長度可以設(shè)置成1 ,2 ,4 ,8 以及全頁,常用的長度是8個 。我們的系統(tǒng) CAS設(shè)置值為2CL K ,Burst長度為全頁 。為保持 SDRAM上的數(shù)據(jù)不丟失 ,必須定時刷新 ,刷新計數(shù)器決定了刷新的時間間隔 ,刷新計數(shù)器 要保證每個單元都能按一定周期刷新 。SDRAM提供兩種類型的刷新模式 : 自動刷新和自刷新 。自動刷新在正常的操作中進行 ,但不持久 ,因此需要定時進行刷新 ,這樣就會占用系統(tǒng)資源 ,降低系統(tǒng)性能 。而自刷新模式無需系統(tǒng)時鐘就能保持數(shù)據(jù)不丟失 。兩種模式相比 ,自刷新因無需外部時鐘啟動而功耗小 ,而自動刷新實現(xiàn)較為簡單 。需要說明的是系統(tǒng) 在讀寫過程中并不需要刷新 ,它本身就是電容充電 過程 ,數(shù) 據(jù) 并 不 會 在 這 時 丟 失 。預(yù) 充 命 令 用 來 對bank 預(yù)充電或關(guān)閉已激活的bank 。當CS , RAS ,WE 為低電平而CA S為高電平時就是預(yù)充命令 。SDRA M既可以分別預(yù)充某一特定的bank ,也可以 同時作用于所有bank 8。2.6 SDRAM工作原理表3 模式設(shè)置值Table 3 pattern establishment valueA0A1A2突發(fā)長度A3突發(fā)類型A4A5A6CAS延遲A7A8操作模式A9寫突發(fā)模式A10A11BA預(yù)留A2 A1 A0突發(fā)長度A3=0A3=10 0 0110 0 1220 1 0440 1 1881 1 1全頁保留A8A7操作模式00標準操作其他保留狀態(tài)A3突發(fā)類型0連續(xù)模式1插入模式A9突發(fā)寫模式0突發(fā)模式1單個訪問模式A6 A5 A4CAS延遲0 0 110 1 020 1 13其他保留 SDRAM ( SynchorousDRAM) 是一種在外部同步時鐘控制下完成數(shù)據(jù)讀入和寫出的DRAM。它像一般的DRAM一樣需要周期性的刷新操作, 訪問前必須依序給出行地址和列地址。然而SDRAM的輸入信號都用系統(tǒng)時鐘的上升沿鎖存, 使器件可以與系統(tǒng)時鐘完全同步操作。它內(nèi)嵌了一個同步控制邏輯電路以支持突發(fā)方式進行的連續(xù)讀寫, 能夠達到比傳統(tǒng)DRAM快數(shù)倍的存取速度。而且只要給出首地址就可以對一個存儲塊訪問, 不需要系統(tǒng)產(chǎn)生和維持個別地址。另外, 它具有的可編程同步時序模式和突發(fā)長度使具體使用十分靈活。以HITACH I公司的HM5264165為例, SDRAM的工作過程中需要考慮的事項為: 上電時序、模式寄存器的配置、CKE的控制、刷新操作、讀操作READ和READA、寫操作WR ITE和WR ITEA、DESL 和NOP、讀寫的中斷等。另外與SDRAM操作相關(guān)的一些重要時間參數(shù)是隨著工作頻率的不同而有不同要求的, 如以HM5264165 - 10 等級的芯片為例:在頻率為66MHz時, 同一BANK的激活到列選通時間Ircd和兩次激活之間的時間間隔Irc分別為2個和6個時鐘周期, 而在頻率為100MHz則應(yīng)分別至少為3個和9個時鐘周期9。對SDRAM的控制可以由CPU通過軟件編程來實現(xiàn), 也可以用可編程邏輯器件來實現(xiàn), 有些功能較強的芯片內(nèi)部自帶了SDRAM控制器。作者利用可編程邏輯器件來實現(xiàn)SDRAM控制器。SDRAM控制器的作用是屏蔽掉SDRAM嚴格的狀態(tài)機管理和刷新操作, 以提供一個快速、簡單且使用靈活的連續(xù)存儲區(qū)接口。因此, 它必須能完成SDRAM的初始化、自動定時刷新、存儲單元地址管理等。根據(jù)不同的應(yīng)用場合, 對其性能有不同的要求, 一般都需要支持固定或隨機長度的整片突發(fā)讀寫操作(這也是SDRAM的優(yōu)勢所在)10 。評價SDRAM控制器的主要指標是工作時鐘上限頻率和讀寫響應(yīng)時間?,F(xiàn)在常用的Spartan - II和Virtex系列FPGA設(shè)計實現(xiàn)的SDRAM控制器一般都能達到100MHz以上的工作頻率, 能夠充分利用SDRAM芯片的帶寬。而讀寫響應(yīng)時間主要受地址、數(shù)據(jù)鎖存和激活SDRAM的BANK所需等待時間決定, 優(yōu)化的設(shè)計可以使讀寫響應(yīng)時間控制在幾個時鐘周期內(nèi)。2.7 SDRAM控制器方案 SDRAM控制器針對SDRAM的指令操作特點,為SDRAM提供同步命令接口和時序邏輯控制,下面將以ALTERA公司的Cyclone系列FPGA為例,主機系統(tǒng)時鐘為100MHz,使用三星公司的K4S641632E,8MByte SDRAM,介紹SDRAM控制器的具體設(shè)計方法11。圖2為SDRAM控制器的接口原理圖。SDRAM控制器SDRAMCLKSADDRBACSCKERASCASWEDQMDQCLKRESETCMD2:0ADDRDATAINDMDATAOUTCMDACK圖2 SDRAM控制器接口原理圖Fig.2 SDRAM controller connection schematic diagram2.7.1接口信號介紹(1)與主機接口信號: CLK:系統(tǒng)時鐘信號; RESET:系統(tǒng)復(fù)位信號;CMD2:0:譯碼指令,如表3所示;CMDACK:指令應(yīng)答信號,通知主機命令已被SDRAM執(zhí)行;ADDR:地址線,根據(jù)具體情況確定位數(shù),本例中為A22,A21、A20代表頁地址BA1,BA0;A19A8代表行地址;A7A0代表列地址;DATAIN/DATAOU:輸入、輸出數(shù)據(jù)總線;DM:數(shù)據(jù)掩碼;(2)與SDRAM接口信號:SADDR:12位地址線,在讀、寫操作時,地址線分時復(fù)用為行地址和列地址;BA:頁地址,BA0,BA1;CS:片選信號;CKE:時鐘使能信號;RAS、CAS、WE:命令控制信號;DQM:SDRAM數(shù)據(jù)掩碼;DQ:雙向數(shù)據(jù)線;SDRAM控制器作為頂層模塊,由3個主要模塊組成:接口控制模塊、命令生成模塊、數(shù)據(jù)路徑模塊。下面將詳細的介紹各個模塊的功能和關(guān)鍵設(shè)計的VHDL實現(xiàn)方法12。表4 CMD命令字Table 4 CMD order character命令CMD2:0功能000空操作READA001帶自動刷新的讀操作WRITE010帶自動刷新的寫操作REFRESH011刷新操作PRECHARGE100預(yù)充電LOAD MODE101設(shè)置工作模式NOP111空操作2.7.2接口控制模塊 接口控制模塊主要實現(xiàn)的功能包括:將CMD2:0翻譯成接口指令和對刷新計數(shù)器的控制,如圖2所示。首先通過狀態(tài)機來完成對CMD2:0的翻譯,在VHDL程序中聲明一個用戶自定義類型states,根據(jù)CMD2:0輸入來決定狀態(tài)的轉(zhuǎn)移,完成對CMD2:0的解碼,如下所示:type states is(nop,reada,writea,refresh,precharge,load_mode);signal state : states ;case cmd is when 011 = state state=nop; SDRAM需要周期性刷新操作以保持數(shù)據(jù),數(shù)據(jù)手冊中通常會給出在一定的時間T內(nèi),SDRAM至少刷新X次,如果用戶使用頻率為Fr MHz的時鐘,則刷新周期Tf可以通過下面的公式計算出:Tf(T*Fr) / X。例如,本例中數(shù)據(jù)手冊要求64ms內(nèi)至少刷新4096次,系統(tǒng)時鐘周期為100MHz,則刷新周期為(64ms*100MHz)/ 4096,得出結(jié)果等于1562.5,所以至多1562個時鐘周期的時間就必須對SDRAM刷新一次。刷新控制在程序中通過一個計數(shù)器來完成,當?shù)竭_規(guī)定的計數(shù)周期,就向SDRAM發(fā)出REF_REQ刷新請求,直到SDRAM完成刷新操作,發(fā)出REF_ACK刷新應(yīng)答信號,計數(shù)器才重新賦值開始下一次的計數(shù)。接口控制模塊命令接口刷新控制CMD2:0CMDACKADDR11:0RequestCM_ACKADDRREF_REQREF ACK圖3 接口控制模塊Fig. 3 interface control module2.7.3 命令生成模塊圖4是命令生成模塊,主要實現(xiàn)了對輸入的指令請求進行仲裁判斷,并將仲裁后要執(zhí)行的指令解碼成SDRAM需要的RAS、CAS等信號,從而實現(xiàn)對SDRAM的控制。BA1:0CS1:0DESADDR11:0RASCKECASWERequestCM_ACKADDRRED_REQRED_ACK仲裁器命令生成器命令模塊圖4 命令生成模塊Fig. 4 order production module之所以需要仲裁機制,是因為在指令執(zhí)行之前可能會發(fā)生以下情況:其它指令和刷新請求同時到來;刷新請求到來時,其它指令正在執(zhí)行。仲裁機制實現(xiàn)方法如下:(1)SDRAM在每一刻只有一個指令在執(zhí)行;(2)先到的指令先執(zhí)行,即:如果刷新請求到來時,其它命令正在執(zhí)行中,要等到當前命令執(zhí)行完成后,才能執(zhí)行刷新指令;(3)其它指令和刷新請求同時到來時刷新操作先執(zhí)行。經(jīng)過仲裁判斷后,指令將傳入命令生成器13。命令生成器不僅要把指令解碼成可控制SDRAM的信號,同時還要用三個移位寄存器對命令執(zhí)行的延遲時間進行控制。第一個為指令延時寄存器,用來保證SDRAM有充足時間完成最終指令。例如,如果命令的執(zhí)行需要8個時鐘周期的時間,則指令延時寄存器com_delay的初值設(shè)為“11111111”,同時聲明一個內(nèi)部信號com_done,作為指令執(zhí)行完成的標志的。在指令執(zhí)行期間,每一個時鐘上升沿到來時,移位寄存器向右移位一次,com_delay0的移入com_done,同時“0” 移入最高位com_delay7。當com_done為“0”時,就說明指令的延遲時間已到,即通過com_done的值,就可以判斷當前指令是否執(zhí)行完成。要注意的是:移位寄存器的位數(shù)和初值,應(yīng)該根據(jù)SDRAM的數(shù)據(jù)手冊中命令完成需要的時間和系統(tǒng)的時鐘周期來確定14。實現(xiàn)程序為:if (do_state=refresh or do_state=reada or do_state=writea or do_state=precharge or do_state=load_mode)then command_delay(7 downto 0)=11111111; -移位寄存器初值 command_done=1; else command_done=command_delay(0); -移位操作 command_delay(6 downto 0)= command_delay(7 downto 1); command_delay(7)=0; end if;當輸入的指令為writea和reada指令,將引發(fā)一系列指令的執(zhí)行,和其它指令相比需要附加時間。所以,聲明第二個移位寄存器rw_shift,來計算這兩個指令的附加時間,其工作原理和第一個移位寄存器是一樣的。最后一個移位寄存器oe_shift用來為數(shù)據(jù)通道生成oe,即數(shù)據(jù)輸入、輸出使能信號15。對于非頁模式的讀寫來說,oe保持有效的時間取決于突發(fā)長度。并且oe有效的起始時間對讀操作和寫操作時不同的:讀操作時,oe有效的起始時間取決于CAS延時時間,而對于寫操作時則在寫指令開始時oe就是有效的。 (4)數(shù)據(jù)路徑模塊數(shù)據(jù)路徑模塊主要是在writea和reada命令期間處理數(shù)據(jù)的路徑操作。模塊的結(jié)構(gòu)圖如圖5所示。DQ是雙向數(shù)據(jù)線,用來傳輸從SDRAM讀出數(shù)據(jù)和向SDRAM寫入的數(shù)據(jù)。無論是數(shù)據(jù)在讀出還是寫入時,都是在oe有效,即oe為高電平時才能進行傳輸。DM是由主機輸出的數(shù)據(jù)掩碼,通過DQM輸出到SDRAM的LDQM和UDQM管腳,進而控制SDRAMI/O緩沖的低字節(jié)和高字節(jié)。數(shù)據(jù)路徑模塊數(shù)據(jù)路徑DATAINDMDATAOUOEDQDQM 圖5 數(shù)據(jù)路徑模塊 Fig. 5 data way module該模塊受OE信號的控制,使數(shù)據(jù)的進出和相應(yīng)的操作指令在時序上同步。OE為1時,數(shù)據(jù)可由DQ腳寫入SDRAM,OE為0時,數(shù)據(jù)可從SDRAM的DQ腳讀出。 控制器的使用及仿真時序-根據(jù)系統(tǒng)設(shè)計對SDRAM讀寫要求的不同,對控制器進行簡單的參數(shù)修改(主要是初始化時模式內(nèi)容字的設(shè)置),即可使對SDRAM的控制符合自己的要求16。該控制器使得系統(tǒng)對SDRAM的操作非常簡單。以寫操作為例,初始化結(jié)束后,只要SDRAM空閑,系統(tǒng)就會收到SDRAM_FREE有效信號,此時可以發(fā)出FPGA_WR指令,同時給出ADDR地址信息,在收到反饋的FDATA_ENABLE有效后,系統(tǒng)將數(shù)據(jù)通過DAIN寫到SDRAM中去,即完成寫操作,系統(tǒng)無須關(guān)心SDRAM的刷新和預(yù)充。在寫和讀時序中,CAS=2,BURST LENGTH=PAGE,DC表示無關(guān)(Dont care)。 結(jié)果表明,該控制器可以使得系統(tǒng)對SDRAM的控制非常簡單、方便。 在實際應(yīng)用中,使用ALTERA公司的Cyclone FPGA器件進行設(shè)計,設(shè)計輸入采用Verilog來完成,實現(xiàn)了上述的SDRAM控制器接口電路。此外,由于采用了參數(shù)化設(shè)計思想,對特定容量的SDRAM的特定工作模式而言,只要根據(jù)其器件參數(shù)進行設(shè)定,該控制器就可以適用特定SDRAM的特定工作模式,具有一定的通用性。2.8SDRAM 控制器的設(shè)計SDRAM 控制器主要由控制狀態(tài)機和數(shù)據(jù)緩存(輸入/輸出FIFO )模塊組成 , SDRAM控制器的控制部分采用有限狀態(tài)機來實現(xiàn)系統(tǒng)的初始化 、讀寫和刷新的控制 ??刂破骺驁D如圖6所示 。圖 6 SDRAM控制器結(jié)構(gòu)框圖Fig. 6 SDRAM controller structure diagramSDRAM具有多種工作模式 ,內(nèi)部操作是一個非常復(fù)雜的狀態(tài)機 ,如果將其所有的狀態(tài)都包含在 所設(shè)計的狀態(tài)機中 ,將加大設(shè)計的難度 。考慮到其中一些狀 態(tài)在 本設(shè) 計中 并 不 需 要 , 所 以 本 設(shè) 計 對 SDRAM的狀態(tài)進行了以下簡化 , 根據(jù)控制信號和地址輸入 , SDRAM包括多種輸入命令 : 模式寄存器設(shè)置命令 、激活命令 、預(yù)充電命令 、寫命令 、讀命令 自動 刷 新命 令 與 空 閑 命 令 。根 據(jù) 輸 入 命 令 , SD RA M狀態(tài)在內(nèi)部狀態(tài)間轉(zhuǎn)移 。內(nèi)部狀態(tài)包括 : 模式寄存器設(shè)置狀態(tài) 、激活狀態(tài) 、預(yù)充電狀態(tài) 、寫狀態(tài) 、讀狀態(tài) 、自動刷新狀態(tài)和空閑狀態(tài) 。本設(shè)計只考慮了以下幾點 :(1). 器件僅在上電后進行一次初始化 ,處于正常工作狀態(tài)后就不能再改變工作模式 ;(2)刷新模式僅采用自動刷新模式,不采用自刷新模式,器件空閑時即處于連續(xù)的自動刷新狀態(tài);(3)在有讀/ 寫要求時,先使用激活命令進入激活狀態(tài),然后再使用讀/ 寫命令進入讀/ 寫狀態(tài);(4)在讀/寫操作要求完成或讀/寫滿1行后,使用空閑命令返回空閑狀態(tài);(5)從讀/寫狀態(tài)返回后,立即使用預(yù)充電命令進入預(yù)充電狀態(tài),以便進行下一次的讀/寫操作。這里必須特別注意讀/寫操作。激活狀態(tài)(行鎖定)周期A0A11對應(yīng)總線的A9A20 ,讀/寫狀態(tài)(列鎖定)周期A0A8 對應(yīng)總線的A0A8。列地址空間對應(yīng)一頁的存儲器空間,任意讀/ 寫操作前都必須有激活命令,激活命令激活相應(yīng)bank 并鎖存行地址,激活命令到后續(xù)讀寫的延遲必須不小于SDRAM的行地址選擇信號RAS到CAS的延遲時間指標( tRCD ) 。同時,一旦bank 被激活后,只有執(zhí)行一次預(yù)充命令后才能再次激活同一bank ,兩次激活的間隔不小于RAS 周期時間指( tRC ) 。每次激活后,bank 保持激活狀態(tài)的最長時間由指標tRAS決定,一般這一指標值大于完成一次整頁突發(fā)讀/寫的時間。bank 激活后可以進行存儲器訪問,存儲器讀/寫命令鎖存列地址,寫操作可以單周期完成,讀操作的數(shù)據(jù)在延遲2 個周期后才輸出到總線。本系統(tǒng)中還有個關(guān)鍵性的問題就是讀寫SDRAM前后的兩個FIFO , 我們在FPGA里面設(shè)置兩套SDRAM的控制狀態(tài)機,兩狀態(tài)機一個寫另一個必定是在讀,其中有切換裝置。當寫FIFO是寫滿一幀就切換到讀FIFO ;但由于讀寫的速度不同,這里需要對讀FIFO進行多次讀,在當寫滿寫FIFO時自動切換狀態(tài)機。這樣可以保證大數(shù)據(jù)量的銜接,也保證了圖象顯示出來是連續(xù)實時的。通過連接不同的視頻處理模塊,該SDRAM控制器可以方便地集成到不同的視頻處理系統(tǒng)中。同時通過配置視頻處理FIFO 可以靈活地針對特定算法優(yōu)化SDRAM 控制器的性能,減少資源消耗,從而大大減少系統(tǒng)開發(fā)的時間,提高系統(tǒng)的靈活性。2.9 SDRAM控制器的具體實現(xiàn)在數(shù)據(jù)通信中,需要對上行或下行數(shù)據(jù)存儲。這些數(shù)據(jù)可能是突發(fā)的大量數(shù)據(jù), 也可能是固定的一定數(shù)據(jù),因此要用到SDRAM存儲數(shù)據(jù)。因此設(shè)計需要一個SDRAM控制器,以便對SDRAM進行控制。用VHDL 作為設(shè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家用電器的數(shù)字化營銷協(xié)議
- 新時代教師教育體系的目標與定位分析
- 社交媒體對年輕群體消費行為的影響
- 小學(xué)生藝術(shù)教育與美學(xué)素養(yǎng)
- 家裝水電承包協(xié)議年
- DB15-T 2519-2022 內(nèi)蒙古地區(qū)生態(tài)型羊場設(shè)計與環(huán)境管理規(guī)范
- 農(nóng)村林場林業(yè)種植管理合約
- 年度市場推廣費用預(yù)算分配表
- 設(shè)備維修保養(yǎng)記錄表格-設(shè)備管理與維護服務(wù)記錄
- 寫給未來自己的一封信童話主題(10篇)
- 焊接施工流程圖
- 阜陽混凝土框架結(jié)構(gòu)高層住宅項目實體檢驗及材料送檢專項方案
- 心內(nèi)科用藥安全管理課件
- 2023年江蘇省無錫市梁溪區(qū)小升初語文試卷
- 贛美2011版三年級美術(shù)下冊《瓜果飄香》教案及教學(xué)反思
- 2023年貴州省六盤水市鐘山區(qū)數(shù)學(xué)六下期末達標檢測試題含解析
- 2023年黑龍江省高校畢業(yè)生三支一扶計劃招募考試真題
- 執(zhí)行力案例分享與解析課件
- 新加坡介紹-課件
- 電路理論知到章節(jié)答案智慧樹2023年同濟大學(xué)
- 北科大2023年微機原理期末試卷
評論
0/150
提交評論