畢業(yè)設(shè)計(jì)(論文)-基于FPGA的SDRAM控制器的實(shí)現(xiàn)(軟件部分)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于FPGA的SDRAM控制器的實(shí)現(xiàn)(軟件部分)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于FPGA的SDRAM控制器的實(shí)現(xiàn)(軟件部分)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于FPGA的SDRAM控制器的實(shí)現(xiàn)(軟件部分)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于FPGA的SDRAM控制器的實(shí)現(xiàn)(軟件部分)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、畢 業(yè) 設(shè) 計(jì) (論 文) 機(jī)械與電氣工程 學(xué)院 電氣工程及其自動(dòng)化 專(zhuān)業(yè)畢業(yè)設(shè)計(jì)論文題目 基于FPGA的SDRAM控制器的實(shí)現(xiàn)軟件局部學(xué)生姓名 班 級(jí) 電氣工程及其自動(dòng)化 學(xué) 號(hào) 指導(dǎo)教師 完成日期 2021 年 6 月 6 日 基于FPGA的SDRAM控制器的實(shí)現(xiàn)軟件局部The realization of SDRAM controller based on FPGA (software)總計(jì) 畢業(yè)設(shè)計(jì)論文 41 頁(yè) 表 格 6 個(gè)插 圖 21 幅摘要文中介紹了FPGA的開(kāi)發(fā)流程、硬件開(kāi)發(fā)語(yǔ)言及其開(kāi)發(fā)環(huán)境QuartusII和SDRAM的結(jié)構(gòu)特點(diǎn)和工作原理,根據(jù)SDRAM的工作原理、控制時(shí)序

2、和指令特點(diǎn),設(shè)計(jì)一種基于FPGA的SDRAM控制器的方案。SDRAM控制器的設(shè)計(jì)主要由主控制模塊、信號(hào)產(chǎn)生模塊、數(shù)據(jù)路徑模塊和參數(shù)模塊組成。本設(shè)計(jì)解決SDRAM控制復(fù)雜、不方便的問(wèn)題,并用Verilog給予仿真結(jié)果。仿真結(jié)果說(shuō)明使用該方法設(shè)計(jì)實(shí)現(xiàn)的控制器能夠使系統(tǒng)方便,可靠的對(duì)SDRAM進(jìn)行操作。關(guān)鍵字:SDRAM控制器 FPGA 控制模塊 軟件仿真AbstractThis paper introduces the development process and FPGA hardware development language and the development environment

3、 of SDRAM QuartusII and structural characteristics and working principle, according to the working principle of SDRAM, sequence control and instruction characteristics, a scheme based on FPGA SDRAM controller is designed. SDRAM controller design mainly by the master control module, signal module, da

4、ta path module and parameter module composition. This design solved a problem about the controlling complexity of SDRAM controller, and gives the simulation results by using Verilog. The simulation results show that using this method to design the controller can realize the system is convenient, rel

5、iable operation of SDRAM.Key words: SDRAM controller FPGA Control module Software simulation目錄 TOC o 1-3 u 摘要 PAGEREF _Toc327953690 h IAbstract PAGEREF _Toc327953691 h II第一章 緒論 PAGEREF _Toc327953692 h 11.1 課題背景 PAGEREF _Toc327953693 h 11.2 課題研究的意義 PAGEREF _Toc327953694 h 1第二章 FPGA與Quartus II軟件簡(jiǎn)介 PAG

6、EREF _Toc327953695 h 22.1 FPGA簡(jiǎn)介 PAGEREF _Toc327953696 h 22.1.1 FPGA背景 PAGEREF _Toc327953697 h 22.1.2 FGPA結(jié)構(gòu)原理 PAGEREF _Toc327953698 h 22.2 Quartus II軟件簡(jiǎn)介 PAGEREF _Toc327953699 h 32.3 硬件描述語(yǔ)言Verilog PAGEREF _Toc327953700 h 42.4 FPGA開(kāi)發(fā)過(guò)程 PAGEREF _Toc327953701 h 5第三章 SDRAM的技術(shù)介紹 PAGEREF _Toc327953702 h

7、6存儲(chǔ)器概況 PAGEREF _Toc327953703 h 63.2 SDRAM簡(jiǎn)介 PAGEREF _Toc327953704 h 63.2.1 SRAM和DRAM PAGEREF _Toc327953705 h 63.2.2 SDRAM開(kāi)展過(guò)程 PAGEREF _Toc327953706 h 73.3 SDRAM工作原理和根本操作 PAGEREF _Toc327953707 h 83.3.1 SDRAM存儲(chǔ)的工作原理 PAGEREF _Toc327953708 h 93.3.2 SDRAM 的引腳信號(hào) PAGEREF _Toc327953709 h 93.3.3 SDRAM根本命令 PA

8、GEREF _Toc327953710 h 103.3.4 SDRAM初始化 PAGEREF _Toc327953711 h 103.3.5 SDRAM讀、寫(xiě)操作 PAGEREF _Toc327953712 h 113.3.6 終止操作 PAGEREF _Toc327953713 h 12第四章 SDRAM控制器設(shè)計(jì) PAGEREF _Toc327953714 h 134.1 SDRAM控制器 PAGEREF _Toc327953715 h 134.2 主控制模塊 PAGEREF _Toc327953716 h 144.3 信號(hào)產(chǎn)生模塊 PAGEREF _Toc327953717 h 164.

9、4 參數(shù)模塊 PAGEREF _Toc327953718 h 184.5 數(shù)據(jù)通路模塊 PAGEREF _Toc327953719 h 19第五章 SDRAM的讀、寫(xiě)仿真 PAGEREF _Toc327953720 h 205.1 SDRAM控制器時(shí)序仿真 PAGEREF _Toc327953721 h 20時(shí)序仿真 PAGEREF _Toc327953722 h 205.1.2 讀仿真時(shí)序 PAGEREF _Toc327953723 h 215.1.3 寫(xiě)仿真時(shí)序 PAGEREF _Toc327953724 h 215.2 仿真結(jié)果分析 PAGEREF _Toc327953725 h 22結(jié)

10、論 PAGEREF _Toc327953726 h 24參考文獻(xiàn) PAGEREF _Toc327953727 h 25致謝 PAGEREF _Toc327953728 h 26附錄 PAGEREF _Toc327953729 h 27第一章 緒論 課題背景伴隨著電子信息技術(shù)的飛速開(kāi)展和其在通訊、工業(yè)、商業(yè)、醫(yī)療等方面的廣泛應(yīng)用,人們對(duì)信息的需求逐漸向著更快、更多、更準(zhǔn)確開(kāi)展。一般的傳統(tǒng)單片機(jī)電子器件已經(jīng)難以滿(mǎn)足這種高速數(shù)據(jù)傳輸?shù)囊?。因此,現(xiàn)場(chǎng)可編程門(mén)陣列FPGAFieldProgrammable Gate Array以它的集成度高,可完成極其復(fù)雜的時(shí)序與組合邏輯電路功能,更適用于高速、高密度

11、的高端數(shù)字邏輯電路設(shè)計(jì)領(lǐng)域等眾多優(yōu)點(diǎn)成為了現(xiàn)今以致未來(lái)的數(shù)字系統(tǒng)現(xiàn)場(chǎng)集成技術(shù)的領(lǐng)軍代表。與之相同,由于單片機(jī),DSPDigital Signal Processing等微處理器的內(nèi)部RAMRandom access memory有限,所以在處理器外部擴(kuò)展儲(chǔ)存器成了有效的手段。同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器SDRAMSynchronous Dynamic RAM有著密度高、數(shù)據(jù)讀寫(xiě)速度快、價(jià)格低廉的優(yōu)勢(shì),從而成為數(shù)據(jù)緩存的首選存儲(chǔ)器,在數(shù)據(jù)采集與分析系統(tǒng)和圖像處理系統(tǒng)中有著重要和廣泛的應(yīng)用。本設(shè)計(jì)就是在這兩者的突出優(yōu)勢(shì)下,根據(jù)SDRAM的工作原理、控制時(shí)序和指令特點(diǎn),設(shè)計(jì)一種基于FPGA的SDRAM控制

12、器的方案并利用QuartusII對(duì)FPGA訪問(wèn)SDRAM的讀/寫(xiě)過(guò)程進(jìn)行功能仿真驗(yàn)證。1.2 課題研究的意義數(shù)據(jù)采集處理技術(shù)是現(xiàn)代信號(hào)處理技術(shù)的根底,廣泛應(yīng)用于聲納,雷達(dá),瞬態(tài)信號(hào)測(cè)試,軟件無(wú)線電等領(lǐng)域。伴隨信息科技的飛速開(kāi)展,人們面臨的信號(hào)處理任務(wù)越來(lái)越繁重,對(duì)數(shù)據(jù)采集處理系統(tǒng)水平的要求也越來(lái)越高。隨著內(nèi)存SDRAM的技術(shù)廣泛應(yīng)用,如何更好地控制SDRAM的讀與寫(xiě),使其到達(dá)最大的帶寬利用率,如何更好地降低讀寫(xiě)數(shù)據(jù)的延遲時(shí)間,已經(jīng)成為各大芯片廠家和FPGA供給商研究的熱點(diǎn)工程。本課題采用FPGA來(lái)進(jìn)行系統(tǒng)設(shè)計(jì)。因?yàn)槭褂脗鹘y(tǒng)的單片機(jī)編程方式來(lái)實(shí)現(xiàn)算法雖然靈活性較高,但是在復(fù)雜的工作面前處理的速度

13、遠(yuǎn)遠(yuǎn)達(dá)不到要求,而且單片機(jī)的時(shí)序性也較差。為了改善這一問(wèn)題,F(xiàn)PGA就成了很好的選擇??删幊踢壿嬈骷﨔PGA憑借其強(qiáng)大的功能,開(kāi)發(fā)過(guò)程投資少、周期短,開(kāi)發(fā)工具智能化,可反復(fù)編程修改等特點(diǎn),成為了當(dāng)今硬件設(shè)計(jì)的潮流。選擇FPGA是借助它集成度高,可完成極其復(fù)雜的時(shí)序和邏輯組合電路功能,更適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計(jì)的特點(diǎn)。由此可見(jiàn),采用FPGA來(lái)完成SDRAM控制器的實(shí)現(xiàn)可將其內(nèi)存上升到一個(gè)新級(jí)別。這對(duì)SDRAM控制器的設(shè)計(jì)和研究有著重要的意義。第二章 FPGA與Quartus II軟件簡(jiǎn)介2.1 FPGA簡(jiǎn)介2 FPGA背景FPGA,即現(xiàn)場(chǎng)可編程門(mén)陣列。它是現(xiàn)代IC設(shè)計(jì)驗(yàn)證的技術(shù)主

14、流,通過(guò)硬件描述語(yǔ)言Verilog設(shè)計(jì)的電路都可以在它之上進(jìn)行測(cè)試。FPGA可編程元件是在以前的PALProgrammable Array Logic、GALGeneric Array Logic、CPLDComplex Programmable Logic Device等可編程器件的根底上進(jìn)一步開(kāi)展的產(chǎn)物。它是作為專(zhuān)用集成電路ASIC,Application Specific Integrated Circuit領(lǐng)域中的一種半定制電路而出現(xiàn)的,一般來(lái)說(shuō),F(xiàn)PGA比ASIC的速度要慢,無(wú)法完成復(fù)雜的設(shè)計(jì),且對(duì)電能的消耗也大。但它擁有著能快速成品,編輯程序可修改利用和造價(jià)低廉等優(yōu)點(diǎn)。因此,F(xiàn)PG

15、A普遍成為了設(shè)計(jì)開(kāi)發(fā)者的選擇。圖為幾款FPGA芯片。圖2.1 FGPA芯片2 FGPA結(jié)構(gòu)原理現(xiàn)場(chǎng)可編程門(mén)陣列FPGA是可編程器件。FPGA采用了邏輯單元陣列LCALogic Cell Array這樣一個(gè)概念,其主要包括可配置邏輯模塊CLBConfigurable Logic Block、輸出輸入模塊IOBInput Output Block和內(nèi)部連線Interconnect三個(gè)局部,F(xiàn)PGA芯片主要由7局部完成,分別為:可編程輸入輸出單元、根本可編程邏輯單元、完整的時(shí)鐘管理、嵌入塊式RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專(zhuān)用硬件模塊。與傳統(tǒng)的邏輯電路和門(mén)陣列如PAL,GAL及CPL

16、D器件相比,F(xiàn)PGA具有不同的結(jié)構(gòu),F(xiàn)PGA的可編程邏輯單元是利用小型查找表161RAM和觸發(fā)器來(lái)實(shí)現(xiàn)組合邏輯。查找表Look-Up-Table)簡(jiǎn)稱(chēng)為L(zhǎng)UT,其本質(zhì)上就是一個(gè)靜態(tài)存儲(chǔ)器SRAM。查找表實(shí)現(xiàn)方法是先計(jì)算邏輯電路的所有可能結(jié)果,然后把結(jié)果寫(xiě)入查找表中,當(dāng)FPGA工作時(shí),信號(hào)的邏輯運(yùn)算就等同于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容后輸出,也就實(shí)現(xiàn)了邏輯功能。如果是時(shí)序電路的話,需要的觸發(fā)器會(huì)配置在查找表后面,實(shí)現(xiàn)邏輯時(shí)觸發(fā)器旁路掉。FPGA允許無(wú)限次的編程.。圖為FPGA芯片邏輯單元構(gòu)成圖。圖2.2 FPGA芯片邏輯單元構(gòu)成圖2.2 Quartus II軟件簡(jiǎn)介Quartus I

17、I 是Altera公司繼Max+plus II之后開(kāi)發(fā)的一種針對(duì)其公司生產(chǎn)的系列PLD/PGFA綜合性開(kāi)發(fā)軟件,其支持原理圖編輯、VHDLVery-High-Speed Integrated Circuit Hardware Description Language以及AHDLAltera Hardware Description Language等多種設(shè)計(jì)形式,能夠完整的完成數(shù)據(jù)輸入到硬件配置的設(shè)計(jì)流程。Quartus II軟件的優(yōu)點(diǎn)顯著,主要有以下幾點(diǎn):一、該軟件有良好的界面,功能強(qiáng)大,是一個(gè)完全集成化的可編程邏輯設(shè)計(jì)環(huán)境,是先進(jìn)的EDA工具軟件。該軟件具有開(kāi)放性、與結(jié)構(gòu)無(wú)關(guān)、多平臺(tái)、完全

18、集成化、豐富的設(shè)計(jì)庫(kù)、模塊化工具等特點(diǎn),支持編輯原理圖、VerilogHDL以及AHDL等多種設(shè)計(jì)輸入形式。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶(hù)圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。二、Quartus II擁有多方面的支持功能,對(duì)Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,MAX7000/MAX3000等乘積項(xiàng)器件,MAX II 的CP

19、LD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。它還支持IP核,包含了LPM/MegaFunction宏功能模塊庫(kù),簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度,用戶(hù)可以充分利用成熟的模塊。此外,Quartus II 通過(guò)和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng),支持Altera的片上可編程系統(tǒng)SOPC開(kāi)發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開(kāi)發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開(kāi)發(fā)平臺(tái)。三、Quartus II也支持第三方EDAElectronic Design Automation工具,使

20、用戶(hù)可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三放EDA工具。本設(shè)計(jì)采用Quartus II軟件作為FPGA的開(kāi)發(fā)環(huán)境。圖2.3 Quartus II軟件2.3 硬件描述語(yǔ)言VerilogVerilog HDLHDL:Hardware Discription Language是一種硬件描述語(yǔ)言,它具有描述硬件的結(jié)構(gòu)和邏輯行為的功能。當(dāng)今世界上,Verilog HDL和VHDL是最流行的兩種硬件描述語(yǔ)言。Verilog HDL 語(yǔ)言最初是于1983 年由Gateway Design Automation 公司為其模擬器產(chǎn)品開(kāi)發(fā)的硬件建模語(yǔ)言。那時(shí)它只是一種專(zhuān)用語(yǔ)言。由于他們的模擬、仿真器產(chǎn)品的廣泛使用

21、,Verilog HDL作為一種便于使用且實(shí)用的語(yǔ)言逐漸為眾多設(shè)計(jì)者所接受。在一次努力增加語(yǔ)言普及性的活動(dòng)中,Verilog HDL 語(yǔ)言于1990 年被推向公眾領(lǐng)域。Open Verilog InternationalOVI是促進(jìn)Verilog 開(kāi)展的國(guó)際性組織。1992 年,OVI 決定致力于推廣Verilog OVI 標(biāo)準(zhǔn)成為IEEE 標(biāo)準(zhǔn)。這一努力最后獲得成功,Verilog 語(yǔ)言于1995 年成為IEEE 標(biāo)準(zhǔn),稱(chēng)為IEEE Std13641995 。完整的標(biāo)準(zhǔn)在Verilog 硬件描述語(yǔ)言參考手冊(cè)中有詳細(xì)描述。Verilog HDL就是在用途最廣泛的C語(yǔ)言的根底上開(kāi)展起來(lái)的一種硬件

22、描述語(yǔ)言。Verilog HDL以其簡(jiǎn)單易學(xué)的特點(diǎn)已成為業(yè)界標(biāo)準(zhǔn),一個(gè)復(fù)雜電路系統(tǒng)的完整Verilog HDL模型是由假設(shè)干個(gè)Verilog HDL模塊構(gòu)成的,每一個(gè)模塊又可以由假設(shè)干個(gè)子模塊構(gòu)成。其中有些模塊需要綜合成具體電路,而有些模塊只是與用戶(hù)所設(shè)計(jì)的模塊交互的現(xiàn)存電路或鼓勵(lì)信號(hào)源。Verilog HDL它支持多級(jí)建模方式:算法、行為級(jí)建模;存放器傳輸(RTL)級(jí)建模;門(mén)級(jí)建模;開(kāi)關(guān)級(jí)建模和支持多種建模方式:行為功能建模方式;結(jié)構(gòu)建模方式;數(shù)據(jù)流建模方式。作為集成電路設(shè)計(jì)的初學(xué)者的我,比起使用更專(zhuān)業(yè)、更復(fù)雜難學(xué)的VHDL,使用Verilog HDL只要有C語(yǔ)言的編程根底,通過(guò)二十學(xué)時(shí)的學(xué)

23、習(xí),再加上一段時(shí)間的實(shí)際操作,可在二三個(gè)月內(nèi)掌握這種設(shè)計(jì)技術(shù)。而掌握VHDL設(shè)計(jì)技術(shù)就比擬困難。這是因?yàn)閂HDL不很直觀,還需要有Ada編程根底。2.4 FPGA開(kāi)發(fā)過(guò)程FPGA的開(kāi)發(fā)過(guò)程主要有兩局部組成,分別是模塊原理圖和硬件描述語(yǔ)言編程HDLHardware Description Language。本次設(shè)計(jì)是從軟件方面進(jìn)行FPGA的開(kāi)發(fā),所以采用硬件描述語(yǔ)言Verilog HDL設(shè)計(jì)法。HDL可以描述數(shù)字電路或系統(tǒng),并通過(guò)仿真的手段來(lái)驗(yàn)證設(shè)計(jì)的正確性,大大的減少設(shè)計(jì)的設(shè)計(jì)失敗可能,縮短設(shè)計(jì)時(shí)間。HDL的設(shè)計(jì)過(guò)程見(jiàn)圖。功能設(shè)計(jì)用Verilog HDL,描述電路軟件模擬仿真結(jié)果邏輯綜合搭建硬

24、件電路完成圖2.4 HDL的設(shè)計(jì)過(guò)程圖基于HDL的FPGA的設(shè)計(jì)流程主要在于用Verilog HDL描述集成電路,具體可以分成以下幾個(gè)過(guò)程步驟:1、設(shè)計(jì)定義與HDL實(shí)現(xiàn);2、功能仿真;3、邏輯綜合;4、前仿真;5、布局布線;6、后仿真;7、系統(tǒng)測(cè)試。第三章 SDRAM的技術(shù)介紹3.1存儲(chǔ)器概況存儲(chǔ)器是擁有記憶功能的能力,用來(lái)保存信息,比方數(shù)據(jù)、指令與運(yùn)行結(jié)果等并能根據(jù)需要存取的電氣器件。為了實(shí)現(xiàn)自動(dòng)計(jì)算,各種信息必須預(yù)先存放在計(jì)算機(jī)內(nèi)的某個(gè)地方,這個(gè)地方就是存儲(chǔ)器。構(gòu)成存儲(chǔ)器的存儲(chǔ)介質(zhì),目前主要采用半導(dǎo)體器件和磁性材料。如今,存儲(chǔ)器在這信息世界的影響力是舉足輕重的,按用途分類(lèi)它主要可以分為外存

25、儲(chǔ)器和內(nèi)存儲(chǔ)器兩類(lèi)。1 外存儲(chǔ)器外存儲(chǔ)器是在外部用于擴(kuò)充存儲(chǔ)容量的存儲(chǔ)器。它的特點(diǎn)是儲(chǔ)存容量大、價(jià)格低,但儲(chǔ)存速度慢,一般用來(lái)存放大量暫時(shí)不用的程序、數(shù)據(jù)和中間結(jié)果,并可成批的與內(nèi)存進(jìn)行信息交換。外存只能與內(nèi)存交換信息,不能被計(jì)算機(jī)系統(tǒng)的其他部件直接訪問(wèn)。外存儲(chǔ)器分為很多種類(lèi),例如硬盤(pán)Hard drive、軟盤(pán)Floppy diskCD光盤(pán)、CD-R可拷貝光盤(pán)、CD-ROM只讀光盤(pán)、CD-RW讀寫(xiě)光盤(pán)、有些大型計(jì)算時(shí)機(jī)用讀寫(xiě)磁帶來(lái)儲(chǔ)存網(wǎng)絡(luò)進(jìn)程的龐大數(shù)據(jù)。2 內(nèi)存儲(chǔ)器內(nèi)存儲(chǔ)器,即RAM是能直接與CPU聯(lián)系的使用二進(jìn)制數(shù)據(jù)儲(chǔ)存單元。他的特點(diǎn)是大大減少了讀取數(shù)據(jù)的時(shí)間,但RAM上所存數(shù)據(jù)在關(guān)機(jī)斷電時(shí)

26、或計(jì)算機(jī)異常時(shí)是會(huì)自動(dòng)去除,所以人們才需要將數(shù)據(jù)保存在硬盤(pán)等外存儲(chǔ)器上。構(gòu)成存儲(chǔ)器的主要存儲(chǔ)介質(zhì),目前主要采用半導(dǎo)體器件和磁性材料。它是由多個(gè)存儲(chǔ)單元組成起來(lái)的,每個(gè)存儲(chǔ)單元由假設(shè)干個(gè)存儲(chǔ)元,每個(gè)存儲(chǔ)元可以存儲(chǔ)一個(gè)二進(jìn)制代碼,然而存儲(chǔ)單元的位置都由一個(gè)編號(hào)標(biāo)示,這既是地址,一般為十六進(jìn)制。存儲(chǔ)器中的全部存儲(chǔ)單元可存放的數(shù)據(jù)大小稱(chēng)之為存儲(chǔ)容量。假設(shè)一個(gè)存儲(chǔ)器的地址碼由20位二進(jìn)制數(shù)即5位十六進(jìn)制數(shù)組成,那么可表示2的20次方,即1K個(gè)存儲(chǔ)單元地址。每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié),那么該存儲(chǔ)器的存儲(chǔ)容量為1KB。隨著信息量的逐漸增加,存儲(chǔ)器的存儲(chǔ)容量也隨之增大,用戶(hù)對(duì)RAM的系統(tǒng)性能的提高的要求也愈演愈

27、烈。本設(shè)計(jì)課題涉及儲(chǔ)存器SDRAM和其FPGA方式的控制實(shí)現(xiàn),能較好的解決這一問(wèn)題,就讓我們先來(lái)了解一下SDRAM控制器情況。3.2 SDRAM簡(jiǎn)介了解SDRAM之前,我們先看看SRAM存儲(chǔ)器和DRAM存儲(chǔ)器的差異。 SRAM和DRAMSRAMStatic RAM即靜態(tài)隨機(jī)存儲(chǔ)器。它是一種具有靜止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部存儲(chǔ)的數(shù)據(jù),而且也不是行列地址復(fù)用的,但集成度比擬低是它的缺點(diǎn),不適合做容量大的內(nèi)存。一般情況下SRAM是用在處理器的緩存里面。SRAM是一種非常重要的存儲(chǔ)器,它的用途廣泛,主要用于二級(jí)高速緩存(Level2 C ache)。它利用晶體管來(lái)存儲(chǔ)數(shù)據(jù)。與DRA

28、M相比,SRAM的速度快,但在相同面積中SRAM的容量要比其他類(lèi)型的內(nèi)存小。SRAM內(nèi)部采用的是雙穩(wěn)態(tài)電路的形式來(lái)存儲(chǔ)數(shù)據(jù)。所以SRAM的電路結(jié)構(gòu)非常復(fù)雜,制造相同容量的SRAM比DRAM的本錢(qián)高的多。正因?yàn)槿绱?,才使得其開(kāi)展受到了限制。DRAMDynamic RAM即動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。DRAM 只能將數(shù)據(jù)保持很短的時(shí)間,為了保持?jǐn)?shù)據(jù),DRAM使用電容存儲(chǔ),所以 必須隔一段時(shí)間刷新一次,如果存儲(chǔ)單元沒(méi)有被刷新,存儲(chǔ)的信息就會(huì)喪失,也就是所謂的關(guān)機(jī)就會(huì)喪失數(shù)據(jù)。 SDRAM開(kāi)展過(guò)程SDRAMSynchronous DRAM即同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,屬于DRAM中的一種。同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器的意思是其

29、內(nèi)存工作需要同步時(shí)鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn),其存儲(chǔ)陣列需要不斷的刷新來(lái)保證數(shù)據(jù)不喪失其,其數(shù)據(jù)不是線性依次存儲(chǔ),而是自由指定地址進(jìn)行數(shù)據(jù)讀寫(xiě)。DRAM和SDRAM由于實(shí)現(xiàn)工藝問(wèn)題,容量較SRAM大。但是讀寫(xiě)速度不如SRAM。一般的嵌入式產(chǎn)品里面的內(nèi)存和電腦的內(nèi)存都是用的SDRAM,其集成度非常高,因?yàn)槭莿?dòng)態(tài)的,所以必須有刷新電路,每隔一段時(shí)間必須得刷新數(shù)據(jù)。同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器芯片為168腳,帶寬為64位,其中RAM和CPU由于鎖在同一個(gè)時(shí)鐘內(nèi),因此共享著一個(gè)時(shí)鐘的周期,以相同的速度進(jìn)行同步工作,在3.3v工作電壓下其運(yùn)行速度高出EDO內(nèi)存一半。在一段不短的時(shí)間內(nèi),SDR

30、AM曾經(jīng)是市場(chǎng)的主流內(nèi)存,不管事430TX芯片組還是845芯片組都支持SDRAM的使用。但伴隨著新推出的DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM,SDRAM也漸漸退出了人們的視線范圍。第一代SDRAM 內(nèi)存為PC66 標(biāo)準(zhǔn),但很快由于Intel 和AMD的頻率之爭(zhēng)將CPU外頻提升到了100MHz,所以PC66內(nèi)存很快就被PC100內(nèi)存取代,接著133MHz 外頻的PIII以及K7時(shí)代的來(lái)臨,PC133標(biāo)準(zhǔn)也以相同的方式進(jìn)一步提升SDRAM 的整體性能,帶寬提高到1GB/sec以上。由于SDRAM 的帶寬為64位,正好對(duì)應(yīng)CPU 的64位數(shù)據(jù)總線寬度,因此它只需要一條內(nèi)存便

31、可工作,便捷性進(jìn)一步提高。在性能方面,由于其輸入輸出信號(hào)保持與系統(tǒng)外頻同步,因此速度明顯超越EDOExtended Data Out DRAM 內(nèi)存。新一代DDR SDRAM(Double Data Rate SDRAM)簡(jiǎn)稱(chēng)DDR,也就是“雙倍速率SDRAM的意思。DDR可以說(shuō)是SDRAM的升級(jí)版本, DDR在時(shí)鐘信號(hào)上升沿與下降沿各傳輸一次數(shù)據(jù),這使得DDR的數(shù)據(jù)傳輸速度為傳統(tǒng)SDRAM的兩倍。由于僅多采用了下降緣信號(hào),因此并不會(huì)造成能耗增加。至于定址與控制信號(hào)那么與傳統(tǒng)SDRAM相同,僅在時(shí)鐘上升緣傳輸。伴隨著信息量的增加,DDR2 SDRAM的出現(xiàn)也無(wú)可厚非,與DDR相比,DDR2最主

32、要的改良是在內(nèi)存模塊速度相同的情況下,可以提供相當(dāng)于DDR內(nèi)存兩倍的帶寬。這主要是通過(guò)在每個(gè)設(shè)備上高效率使用兩個(gè)DRAM核心來(lái)實(shí)現(xiàn)的。作為比照,在每個(gè)設(shè)備上DDR內(nèi)存只能夠使用一個(gè)DRAM核心。技術(shù)上講,DDR2內(nèi)存上仍然只有一個(gè)DRAM核心,但是它可以并行存取,在每次存取中處理4個(gè)數(shù)據(jù)而不是兩個(gè)數(shù)據(jù)。DDR3 SDRAM也是現(xiàn)時(shí)流行的內(nèi)存產(chǎn)品,相比DDR2有著更低的工作電壓,從DDR2的1.8V降落到1.5V,性能更好更為省電;DDR2的4位預(yù)讀升級(jí)為8位預(yù)讀。DDR3目前最高能夠到達(dá)2000Mhz的速度,盡管目前最為快速的DDR2內(nèi)存速度已經(jīng)提升到800Mhz/1066Mhz的速度,但是D

33、DR3內(nèi)存模組仍會(huì)從1066Mhz起跳。3.3 SDRAM工作原理和根本操作SDRAM是DRAM的一種,和DRAM一樣它需要周期性的刷新操作,訪問(wèn)之前必須要依序給出行列地址,不同的是SDRAM的輸入信號(hào)都用系統(tǒng)時(shí)鐘的上升沿鎖存,必須在外部同步時(shí)鐘控制下才可完成數(shù)據(jù)的讀入和寫(xiě)出。SDRAM中內(nèi)嵌有一個(gè)同步控制邏輯電路,它使得SDRAM支持突發(fā)方式進(jìn)行連續(xù)讀寫(xiě),能夠到達(dá)數(shù)倍于傳統(tǒng)DRAM的傳輸速度,而且只要有首地址就可以對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)。再加上它具有可編程同步時(shí)序模式和突發(fā)長(zhǎng)度更加使其使用方法靈活多變。3 SDRAM存儲(chǔ)的工作原理SDRAM的工作原理是以電荷的形式,把信息存儲(chǔ)在MOS管柵極和源極之

34、間的極間電容或?qū)iT(mén)集成的電容上。如圖為單管式動(dòng)態(tài)存儲(chǔ)元。圖3.3單管動(dòng)態(tài)存儲(chǔ)元單管動(dòng)態(tài)存儲(chǔ)元中電荷存儲(chǔ)在電容Cs上,行選通三極管T的導(dǎo)通條件為高電平,當(dāng)T導(dǎo)通時(shí),數(shù)據(jù)線上的信號(hào)才能通過(guò)T進(jìn)入Cs或從Cs上讀出。讀出操作時(shí),根據(jù)讀出電壓在數(shù)據(jù)線上的增量決定讀出的數(shù)據(jù)是0還是1,再通過(guò)高靈敏的讀出放大器輸出數(shù)據(jù)。讀出結(jié)束后,必須進(jìn)行重寫(xiě),三極管T信號(hào)為低電平截止,Cs上電荷不斷流出,一段時(shí)間后電荷消失,動(dòng)態(tài)存儲(chǔ)器就刷新了一次,一般在2ms左右。 SDRAM 的引腳信號(hào)SDRAM讀寫(xiě)操作的引腳信號(hào)分為控制信號(hào)、地址選擇信號(hào)、數(shù)據(jù)信號(hào)等,其中控制信號(hào)包括片選信號(hào)、同步時(shí)針信號(hào)、時(shí)鐘使能信號(hào)、讀寫(xiě)使能信

35、號(hào),地址信號(hào)包括行地址選通信號(hào)、列地址選通信號(hào)、行列地址線、Bank地址線,數(shù)據(jù)信號(hào)包括雙向數(shù)據(jù)端口和接收數(shù)據(jù)有效信號(hào)。SDRAM是多個(gè)邏輯存儲(chǔ)庫(kù)Bank結(jié)構(gòu),在一個(gè)具有兩個(gè)邏輯存儲(chǔ)庫(kù)的SDRAM的模組中,其中一個(gè)邏輯存儲(chǔ)庫(kù)在進(jìn)行預(yù)充電期間,另一個(gè)邏輯存儲(chǔ)庫(kù)卻馬上可以被讀取,這樣當(dāng)進(jìn)行一次讀取后,又馬上去讀取已經(jīng)預(yù)充電邏輯存儲(chǔ)庫(kù)的數(shù)據(jù)時(shí),就無(wú)需等待而是可以直接讀取了,這也就大大提高了存儲(chǔ)器的訪問(wèn)速度。為了實(shí)現(xiàn)這個(gè)功能,SDRAM需要增加對(duì)多個(gè)邏輯存儲(chǔ)庫(kù)的管理,實(shí)現(xiàn)控制其中的邏輯存儲(chǔ)庫(kù)進(jìn)行預(yù)充電。在一個(gè)具有2個(gè)以上邏輯存儲(chǔ)庫(kù)的SDRAM中,一般會(huì)多一根叫做BAn的引腳,用來(lái)實(shí)現(xiàn)在多個(gè)邏輯存儲(chǔ)庫(kù)之

36、間的選擇。SDRAM信號(hào)引腳接口功能如表。表3.1 引腳信號(hào)表名稱(chēng)引腳符號(hào)備注控制信號(hào)片選信號(hào)CS輸入信號(hào),低電平有效。只有當(dāng)片選信號(hào)有效后,SDRAM才能識(shí)別控制器發(fā)送來(lái)的命令同步時(shí)針信號(hào)CLK輸入信號(hào),SDRAM所有輸入信號(hào)的邏輯狀態(tài)都需要通過(guò)CLK的上升沿采樣確定。時(shí)鐘使能信號(hào)CKE輸入信號(hào),高電平有效。CKE信號(hào)的用途有兩個(gè),即關(guān)閉時(shí)鐘以進(jìn)入省電模式和進(jìn)入自刷新?tīng)顟B(tài)。CKE無(wú)效時(shí),SDRAM內(nèi)部所有與輸入相關(guān)的功能模塊停止工作。讀寫(xiě)使能信號(hào)WE輸入信號(hào),低電平有效。地址選擇信號(hào)行地址選通信號(hào)RAS輸入信號(hào),低電平有效。列地址選通信號(hào)CAS輸入信號(hào),低電平有效。行/列地址線SA0SA12

37、分時(shí)復(fù)用Bank 塊地址線BA0BA1分時(shí)復(fù)用數(shù)據(jù)信號(hào)雙向數(shù)據(jù)端口DQ0DQ15一個(gè)信號(hào)輸入,一個(gè)信號(hào)輸出接收數(shù)據(jù)有效信號(hào)DQM接收數(shù)據(jù)有效 SDRAM根本命令對(duì)SDRAM的操作要通過(guò)指令命令來(lái)執(zhí)行,指令命令到達(dá)控制RAS、CAS、WE實(shí)現(xiàn)操作。具體見(jiàn)表。表3.2 SDRAM操作命令 SDRAM初始化V的電壓后要等待一下,大約100-200 us,之后至少執(zhí)行一個(gè)空操作;然后對(duì)所以頁(yè)執(zhí)行預(yù)充電命令,并接著執(zhí)行一個(gè)空操作,使所有陣列中器件處于待機(jī)狀態(tài);待機(jī)后SDRAM要執(zhí)行兩條自刷新命令并每條后執(zhí)行一個(gè)空操作,使芯片內(nèi)部刷新且讓計(jì)數(shù)器進(jìn)入正常運(yùn)行狀態(tài);之后執(zhí)行加載模式存放器LOAD MODE R

38、EGISTER命令,完成對(duì)SDRAM 工作模式存放器的設(shè)定。模式設(shè)置命令使用地址線A10A0作為模式數(shù)據(jù)輸入線。其中A2A0作為突發(fā)長(zhǎng)度,A3為突發(fā)類(lèi)型,A6A4為CAS延遲,A8A7為操作模式,A9為寫(xiě)突發(fā)模式。模式存放器的設(shè)置值必須與器件的延遲參數(shù)以及讀寫(xiě)操作的控制時(shí)序一致。模式存放器的設(shè)置值如下表所示。完成以上步驟后,SDRAM 就可進(jìn)入正常工作狀態(tài)。SDRAM初始化過(guò)程圖如圖。表3.3 SDRAM工作模式存放器 A11A10A9A8A7A6A5A4A3A2A1A0ReserveWrite burst modeOperating modeLatency modeBurst typeBur

39、st length表3.4 模式設(shè)置值圖3.4 SDRAM初始化 SDRAM讀、寫(xiě)操作SDRAM的讀寫(xiě)操作是在控制線路和地址線路配合發(fā)出的一系列命令完成的,分為突發(fā)模式和非突發(fā)式模式兩種。SDRAM的讀操作只有突發(fā)模式,而寫(xiě)操作那么有突發(fā)和非突發(fā)兩種模式,其中帶有預(yù)充電的突發(fā)讀、寫(xiě)模式一次能夠訪問(wèn)的列地址最大數(shù)據(jù)周期數(shù)為1,2,4,8,并且突發(fā)模式可配置為順序或間隔型,不帶充電的讀寫(xiě)模式可任意控制一次訪問(wèn)的列地址的最大數(shù)。對(duì)于SDRAM的訪問(wèn)操作,最主要的是讀、寫(xiě)操作。SDRAM在進(jìn)行讀、寫(xiě)操作前,必須先進(jìn)行頁(yè)激活A(yù)CT操作是存儲(chǔ)單元翻開(kāi)。當(dāng)SDRAM進(jìn)行讀操作時(shí),內(nèi)部的地址被存放,等到大約1

40、-3個(gè)時(shí)鐘周期的延遲后,讀出的數(shù)據(jù)就會(huì)進(jìn)入數(shù)據(jù)總線上;當(dāng)SDRAM進(jìn)行寫(xiě)操作時(shí),其內(nèi)部的列地址和數(shù)據(jù)都會(huì)被記錄到存放器中等待下一次的寫(xiě)出操作。 終止操作SDRAM的操作終止?jié)M足兩個(gè)條件就可以觸發(fā)。首先,當(dāng)SDRAM接收到讀、寫(xiě)操作指令后,開(kāi)始進(jìn)行順次的讀寫(xiě)操作,直到操作指令到達(dá)突發(fā)長(zhǎng)度時(shí)終止操作;其次,當(dāng)SDRAM接收到突發(fā)終止指令BT時(shí),操作終止。第四章 SDRAM控制器設(shè)計(jì)4.1 SDRAM控制器通過(guò)上述介紹可知,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器SDRAM是一個(gè)具有存儲(chǔ)容量大、速度快、價(jià)格低廉、體積小等優(yōu)點(diǎn)的理想型存儲(chǔ)器。但相對(duì)其他存儲(chǔ)器,SDRAM的控制邏輯復(fù)雜,使用起來(lái)很不方便。為了解決這個(gè)問(wèn)題,通

41、常采用的方法是設(shè)計(jì)SDRAM控制器,然而這使得很多人不得不放棄SDRAM選擇更昂貴的SRAM。為此,本設(shè)計(jì)采用FPGA來(lái)控制數(shù)據(jù)的時(shí)序和指令實(shí)現(xiàn)對(duì)SDRAM的讀、寫(xiě)操作的控制器。由于SDRAM的控制時(shí)序很復(fù)雜,為了完成對(duì)SDRAM的讀、寫(xiě)操作且減少開(kāi)發(fā)難度,筆者設(shè)計(jì)的SDRAM控制器必須要有初始化、自動(dòng)刷新、讀寫(xiě)操作和其優(yōu)先級(jí)仲裁機(jī)制和轉(zhuǎn)換機(jī)制等功能。SDRAM控制器接口原理圖如下。圖4.1 SDRAM控制器接口原理圖控制器接口信號(hào)由兩局部組成,分別為主機(jī)對(duì)SDRAM控制器信號(hào)和控制器對(duì)SDRAM信號(hào)。1、主機(jī)對(duì)SDRAM信號(hào)系統(tǒng)時(shí)鐘信號(hào)(CLK),系統(tǒng)復(fù)位信號(hào)RESET。CMD2:0:譯碼指

42、令,詳見(jiàn)表3.4 模式設(shè)置值。CMDACK:指令應(yīng)答信號(hào),回饋主機(jī)SDRAM命令已執(zhí)行。ADDR:地址線,A0-A7為列地址, A8-A19 為行地址,A20-A22為頁(yè)地址。DARAIN/DARAOUT:輸入/輸出數(shù)據(jù)總線。DM:數(shù)據(jù)掩碼。控制器對(duì)SDRAM信號(hào)CLK:系統(tǒng)時(shí)鐘信號(hào)。SADDR:12位地址線,在讀、寫(xiě)操作時(shí),地址線為行、列地址分時(shí)復(fù)用。BA:頁(yè)地址。CS:片選信號(hào)。CKE:時(shí)鐘使能信號(hào)。RAS/CAS/WE:命令控制信號(hào)。DQM:數(shù)據(jù)掩碼。DQ:雙向數(shù)據(jù)線。綜上所述,本設(shè)計(jì)中SDRAM控制器主要分成四個(gè)模塊設(shè)計(jì)。四個(gè)模塊分別為:主控制模塊、信號(hào)產(chǎn)生模塊、數(shù)據(jù)路徑模塊和參數(shù)模塊

43、。圖為SDRAM控制器總體結(jié)構(gòu)框圖。圖4.2 SDRAM控制器結(jié)構(gòu)框圖4.2 主控制模塊主控制模塊是SDRAM控制器的主體,包含控制工作模式的各種存放器,如圖4.2中的控制存放器就是主控制模塊??刂拼娣牌髦饕▋深?lèi):一是初始化模式控制存放器,作用于控制SDRAM初始化指令的產(chǎn)生方式;二是SDRAM模式控制存放器,用于SDRAM的刷新及其它操作指令參數(shù)的控制。主控制模塊包含兩個(gè)狀態(tài)機(jī)和一個(gè)時(shí)鐘計(jì)數(shù)器,它的功能是依據(jù)系統(tǒng)接口控制信號(hào),產(chǎn)生正確的初始化狀態(tài)和命令狀態(tài)輸出。如下圖的命令狀態(tài)機(jī)INIT_FSM是用于描述SDRAM在初始化過(guò)程涉及的初始化狀態(tài)。SDRAM上電后必須初始化才能正常工作, 復(fù)

44、位時(shí), SDRAM工作在空閑狀態(tài)(i_NOP);復(fù)位后, 在瑣相環(huán)時(shí)鐘周期的上升沿采樣信號(hào)(sys_100s), 判斷電源和時(shí)鐘穩(wěn)定所需的100s延遲是否完成。在電源和時(shí)鐘穩(wěn)定后,SDRAM初始化時(shí)序開(kāi)始,這段時(shí)間實(shí)際是個(gè)自檢過(guò)程。接著,INIT_FSM由空閑狀態(tài)(i_NOP)進(jìn)入預(yù)充電狀態(tài)i_PRE,執(zhí)行預(yù)充電命令PRECHARGE,然后,兩次進(jìn)入刷新?tīng)顟B(tài)i_AR1,執(zhí)行自刷新命令A(yù)UTO REFRESH,最后,執(zhí)行裝載模式存放器命令LOAD MODE REGISTER,完成對(duì)SDRAM工作模式的設(shè)定,INIT_FSM進(jìn)入初始化的準(zhǔn)備狀態(tài)i_ready 。信號(hào)sys_INIT_DONE此時(shí)為

45、高電平,表示初始化完成,SDRAM進(jìn)入正常工作狀態(tài),等待控制器對(duì)其進(jìn)行讀、寫(xiě)和刷新等操作。狀態(tài)i_tRP、i_tRFC1、i_tRFC2、i_tMRD是等待各命令響應(yīng)的延遲態(tài)。初始化狀態(tài)機(jī)如圖4.4所示命令狀態(tài)機(jī)CMD_FSM是用于描述SDRAM在讀、寫(xiě)、刷新過(guò)程涉及的命令狀態(tài)。本次設(shè)計(jì)中,SDRAM的讀寫(xiě)操作采用的突發(fā)模式是連續(xù)型(sequential)的全頁(yè)模式,因此,在讀寫(xiě)操作中,必須用突發(fā)中斷命令(Burst Terminate)結(jié)束。 命令狀態(tài)機(jī)CMD_FSM中涉及的命令狀態(tài)有空閑狀態(tài)(c_idle) 、激活狀態(tài)(c_ACTIVE) 、讀地址狀態(tài)(c_READA) 、讀數(shù)據(jù)狀態(tài)(c_

46、rdata) 、寫(xiě)地址狀態(tài) (c_WRITEA) 、寫(xiě)數(shù)據(jù)狀態(tài)(c_wdata)、突發(fā)中斷狀態(tài)(c_BT)和自動(dòng)刷新?tīng)顟B(tài)(c_AR)。狀態(tài) c_tRCD、 c_cl 、c_tBT和c_tRFC為等待各命令響應(yīng)的延遲態(tài)。時(shí)鐘計(jì)數(shù)器原理:當(dāng)計(jì)數(shù)器復(fù)位控制 syncResetClkCNT為1時(shí),立刻復(fù)位計(jì)數(shù),否那么計(jì)數(shù)等待設(shè)置的時(shí)間。具體代碼如下:always (posedge sys_CLK) if (syncResetClkCNT) clkCNT = #tDLY 0; else begin clkCNT = #tDLY clkCNT + 1b1; end圖4.4 命令狀態(tài)機(jī)4.3 信號(hào)產(chǎn)生模塊信

47、號(hào)產(chǎn)生模塊是產(chǎn)生請(qǐng)求信號(hào)的計(jì)數(shù)器,由如圖4.2中的初始化請(qǐng)求產(chǎn)生模塊和刷新請(qǐng)求產(chǎn)生模塊兩局部組成。信號(hào)產(chǎn)生模塊根據(jù)命令真值表對(duì)實(shí)際引腳信號(hào)進(jìn)行操作,產(chǎn)生初始化狀態(tài)和命令狀態(tài)中各狀態(tài)對(duì)應(yīng)的命令信號(hào)。狀態(tài)機(jī)中的各狀態(tài)的命令信號(hào)見(jiàn)表4.1,各命令真值表見(jiàn)表4.2。初始化請(qǐng)求產(chǎn)生模塊是上電后初始化請(qǐng)求信號(hào)的產(chǎn)生延遲控制,由于控制器系統(tǒng)上電100us以后時(shí)鐘才能穩(wěn)定,這之后SDRAM才可以開(kāi)始初始化操作,為防止譯碼出錯(cuò),采用計(jì)數(shù)器實(shí)現(xiàn)了延遲的控制,系統(tǒng)復(fù)位結(jié)束后才啟動(dòng)計(jì)數(shù)器,當(dāng)計(jì)數(shù)器計(jì)到設(shè)定的值后計(jì)數(shù)值保持,同時(shí)譯碼產(chǎn)生初始化的請(qǐng)求信號(hào),在SDRAM初始化完成后請(qǐng)求信號(hào)變?yōu)闊o(wú)效。刷新請(qǐng)求產(chǎn)生模塊是根據(jù)模

48、式存放器的配置的頻率產(chǎn)生SDRAM的刷新請(qǐng)求信號(hào)。這局部電路是采用計(jì)數(shù)器實(shí)現(xiàn)的。計(jì)數(shù)器計(jì)到設(shè)定的值后產(chǎn)生刷新請(qǐng)求信號(hào),同時(shí)返回到初值繼續(xù)計(jì)數(shù)。圖4.5為信號(hào)產(chǎn)生模塊。圖4.5 信號(hào)產(chǎn)生模塊表4.1 各狀態(tài)的命令信號(hào)表INIT_FSM的各狀態(tài)命令CMD_FSM的各狀態(tài)命令i_tRPNOPc_idleNOPi_tRFC1c_tRCDi_tRFC2c_tRFCi_tMRDc_cli_NOPc_tBTi_PREPRECHARGEc_rdatai_AR1AUTO_REFRESH c_wdatai_AR2c_BTBURST_TERMINATEi_MRSLOAD_MODE_REGISTERc_ACTIVEA

49、CTIVEc_READAREADc_WRITEAWRITEc_ARAUTO_REFRESH表4.2 各命令真值表命令CSnRASnCASnWEnsdr_CKEsdr_AA10/APsdr_BALOAD_MODE_REGISTER0000任意操作代碼AUTO_REFRESH00011任意PRECHARGE0010任意任意1任意ACTIVE0011任意行地址指定的BANKWRITE WITH AUTOPRECHARGE0100任意列地址1指定的BANKREAD WITH AUTOPRECHARGE0101任意列地址1指定的BANKBURST_TERMINATE0110任意任意NOP0111任意任意

50、INHIBIT11110任意表4.2標(biāo)注:LOAD_MODE_REGISTER:裝載模式存放器,AUTO_REFRESH:自動(dòng)刷新,PRECHARGE:預(yù)充電,ACTIVE:激活,WRITE WITH AUTOPRECHARGE:帶自動(dòng)刷新功能的寫(xiě),READ WITH AUTOPRECHARGE:帶自動(dòng)刷新功能的讀,BURST_TERMINATE:突發(fā)中斷,NOP:空操作,INHIBIT:禁止操作。CSn:芯片選擇Chip Select,除了CLK,CKE,UDQM 和LDQM引腳外,能使所有的輸入引腳有效或無(wú)效;RASn:行地址脈沖選通器,該引腳控制的行地址門(mén)閂線路;CASn:列地址脈沖選通

51、器,該引腳控制的列地址門(mén)閂線路;WEn:寫(xiě)使能;CKEn:時(shí)鐘使能;ADDR:行列地址復(fù)用,行地址A0A12,列地址A0A8;A10:自動(dòng)預(yù)充電標(biāo)志Auto-precharge flag;BA:Bank地址,在 RASn有效期間,選擇的Bank將被激活。在CASn選通時(shí),選擇的Bank將被讀/寫(xiě)。c. 模式存放器中操作代碼的設(shè)置A11A10是用戶(hù)保存位;A9用來(lái)配置寫(xiě)突發(fā)模式;A8A7是操作模式,通常為“00”,代表標(biāo)準(zhǔn)操作模式;A6A4設(shè)置CAS延遲時(shí)間一般為2或3個(gè)時(shí)鐘周期;A3決定突發(fā)操作模式是順序還是間隔型;最后的三位A2A0用來(lái)配置突發(fā)長(zhǎng)度。4.4 參數(shù)模塊參數(shù)模塊是SDRAM控制器

52、中指令翻譯和處理的模塊,包括指令譯碼器模塊和指令仲裁器模塊。圖4.6為參數(shù)模塊。參數(shù)模塊的功能是實(shí)現(xiàn)各項(xiàng)參數(shù)的設(shè)置,其中包括總線寬度設(shè)置、SDRAM模式存放器的定義和設(shè)置、SDRAM 交流特性說(shuō)明、SDRAM AC時(shí)間的時(shí)鐘計(jì)數(shù)的定義、初始化狀態(tài)變量的編碼、命令狀態(tài)變量碼的編碼和SDRAM commands 的定義。圖4.6 參數(shù)模塊指令譯碼器模塊是根據(jù)指令仲裁器的結(jié)果和SDRAM控制器模式存放器對(duì)工作模式參數(shù)的設(shè)置,分別對(duì)初始化指令、刷新指令、讀寫(xiě)指令進(jìn)行譯碼。譯碼結(jié)果為SDRAM需要的RAS、CAS等信號(hào),從而實(shí)現(xiàn)對(duì)SDRAM的控制;指令仲裁器模塊是對(duì)初始化請(qǐng)求、刷新請(qǐng)求和系統(tǒng)的讀寫(xiě)請(qǐng)求等

53、信號(hào)進(jìn)行優(yōu)先級(jí)仲裁,從而判斷產(chǎn)生初始化響應(yīng)、刷新響應(yīng)和讀寫(xiě)響應(yīng)的順序。因?yàn)槌跏蓟僮髦辉谏想姇r(shí)進(jìn)行一次,它是SDRAM正常工作的根底,所以它的優(yōu)先級(jí)最高。其次是刷新請(qǐng)求,讀寫(xiě)請(qǐng)求的優(yōu)先級(jí)最低。當(dāng)某一種操作正在執(zhí)行時(shí)不會(huì)響應(yīng)后來(lái)的請(qǐng)求。4.5 數(shù)據(jù)通路模塊數(shù)據(jù)通路模塊是根據(jù)存放器的設(shè)置及指令譯碼的結(jié)果對(duì)把系統(tǒng)非復(fù)用的地址處理為SDRAM復(fù)用的地址,使得SDRAM的地址及數(shù)據(jù)和相應(yīng)的操作指令在時(shí)序上同步。數(shù)據(jù)路徑模塊如圖4.7。當(dāng)數(shù)據(jù)讀出或是寫(xiě)入時(shí),OE一直處于有效的高電平狀態(tài),DM中的主機(jī)輸出的數(shù)據(jù)掩碼,經(jīng)由DQM傳輸?shù)絊DRAM的LDQM與UDQM引腳上,到達(dá)控制SDRAM存儲(chǔ)器上I/O緩沖的

54、高、低字節(jié)表征。圖4.7 數(shù)據(jù)路徑模塊綜上所述,以上四個(gè)模塊的功能實(shí)現(xiàn)是本設(shè)計(jì)的重點(diǎn)。通過(guò)FPGA實(shí)現(xiàn)這四個(gè)模塊的運(yùn)作要建立在Verilog HDL語(yǔ)言編程上,具體程序見(jiàn)附錄。第五章 SDRAM的讀、寫(xiě)仿真 SDRAM控制器時(shí)序仿真通過(guò)以上對(duì)SDRAM控制器的四大模塊組織的硬件描述語(yǔ)言編程,能得到具有SDRAM控制器根本功能的編程代碼組合。為了驗(yàn)證這些硬件描述語(yǔ)言編程代碼是否真能實(shí)現(xiàn)SDRAM控制器的功能,本設(shè)計(jì)采取計(jì)算機(jī)仿真軟件Quartus II 8.0來(lái)進(jìn)行仿真和驗(yàn)證。時(shí)序仿真為了進(jìn)行仿真驗(yàn)證,我們要借用Quartus II 8.0軟件的仿真功能實(shí)現(xiàn)。,選擇File-New彈出對(duì)話框,選

55、擇Verilog HDL并翻開(kāi)文本編輯器窗口。在Text Editor中輸入Verilog代碼后。點(diǎn)擊Processing-Statt Compilation對(duì)代碼進(jìn)行編譯。編譯正確無(wú)誤后,通過(guò)使用Quartus II 8.0軟件的時(shí)序仿真功能模擬仿真設(shè)計(jì)內(nèi)容。QuartusII自帶仿真功能(QuartusII Simulator),vwf文件全稱(chēng)是矢量波形文件(Vector Waveform File),是Quartus II中仿真輸入、計(jì)算、輸出數(shù)據(jù)的載體。一般設(shè)計(jì)者建立波形文件時(shí),需要自行建立復(fù)位、時(shí)鐘信號(hào)以及控制和輸入數(shù)據(jù)、輸出數(shù)據(jù)信號(hào)等。因此,完成一個(gè)時(shí)序仿真過(guò)程,首先需要新建一個(gè)v

56、wf文件(Vector Waveform File),設(shè)定好輸入信號(hào)。圖為Quartus II 8.0軟件編譯圖。圖5.1 編譯界面圖 讀仿真時(shí)序通過(guò)控制器的讀仿真。時(shí)序仿真圖如圖。當(dāng)激活命令命令發(fā)出后,控制器鎖存相應(yīng)的BANK地址和行地址。等待一定時(shí)間后,控制器會(huì)發(fā)出讀命令字。CAS延遲值個(gè)工作時(shí)鐘后,讀出數(shù)據(jù)依次出現(xiàn)在數(shù)據(jù)總線上。最后,向SDRAM發(fā)出預(yù)充電命令,以關(guān)閉已經(jīng)激活的頁(yè)。之后,才可以開(kāi)始下一次的讀、寫(xiě)操作。圖5.2 讀操作時(shí)序圖 寫(xiě)仿真時(shí)序SDRAM控制器的寫(xiě)操作與讀操作類(lèi)似,在控制線路和地址線路發(fā)出BANK激活命令后,鎖存相應(yīng)的BANK地址和行地址。BANK激活命令后必須等待

57、超過(guò)tRCD(行選通周期)的時(shí)間,線路就會(huì)發(fā)出寫(xiě)命令字。寫(xiě)命令可以立即寫(xiě)入,無(wú)需等待,寫(xiě)入數(shù)據(jù)依次傳送到數(shù)據(jù)線上。在最后一個(gè)數(shù)據(jù)寫(xiě)入后延遲一段時(shí)間后,會(huì)發(fā)出預(yù)充電命令,關(guān)閉已經(jīng)激活的頁(yè)。等待tRPBANK轉(zhuǎn)換速度時(shí)間后,可以展開(kāi)下一次操作。寫(xiě)操作有突發(fā)寫(xiě)和非突發(fā)寫(xiě)兩種。寫(xiě)操作時(shí)序圖如圖。圖5.3 寫(xiě)操作時(shí)序圖5.2 仿真結(jié)果分析通過(guò)對(duì)設(shè)計(jì)內(nèi)容的仿真時(shí)序驗(yàn)證,我得到了以下結(jié)果圖,由于數(shù)據(jù)的出錯(cuò),這并不是正確的仿真結(jié)果,但這讓我對(duì)時(shí)序動(dòng)態(tài)變化有了更深的了解。圖 5.4 讀寫(xiě)功能仿真圖一圖為正確的讀、寫(xiě)操作時(shí)序仿真圖,從圖上可以看出,時(shí)鐘信號(hào)輸出81MHZ 時(shí)鐘后,該頻率由FPGA 內(nèi)部的瑣相環(huán)3

58、倍頻得到,提供了SDRAM 時(shí)鐘信號(hào)并啟動(dòng)FPGA 內(nèi)部復(fù)位功能。由之前命令表可知SDRAM會(huì)處于禁止的工作狀態(tài),啟動(dòng)讀SDRAM 操作命令發(fā)出后, SDRAM 被激活,輸出BANK 地址Ba=00和行地址 A 同樣輸出13 位地,低9 位的列地址為000000000,這是由于本設(shè)計(jì)選用突發(fā)訪問(wèn)SDRAM,所以之前分時(shí)輸入的低9 位列地址無(wú)效,此時(shí),A 輸出的列地址為初始化的列地址,即頁(yè)的起始地址,13位地址中的A001000000000為自動(dòng)充電的標(biāo)志位,該值為1 時(shí),說(shuō)明該次讀SDRAM 的操作為帶自動(dòng)充電的讀操作。寫(xiě)操作與之類(lèi)似,不同的地方在于發(fā)出操作命令后,輸入的低9 位列地址為初始化

59、列地址。圖5.5 讀和寫(xiě)功能仿真圖二通過(guò)仿真驗(yàn)證時(shí)序圖的分析結(jié)果,和其原理沒(méi)有明顯差異,能得出正確的仿真結(jié)果。因此,本設(shè)計(jì)能實(shí)現(xiàn)FPGA的SDRAM控制器的讀、寫(xiě)工作。結(jié)論本設(shè)計(jì)討論的課題是“基于FPGA的SDRAM控制器實(shí)現(xiàn),主要講解了SDRAM的功能、SDRAM控制器的模塊設(shè)計(jì)、基于Verilog的FPGA流程等設(shè)計(jì)問(wèn)題,讓我對(duì)于可編程邏輯器件FPGA、Quartus II開(kāi)發(fā)軟件和硬件描述語(yǔ)言Verilog HDL有了一定了解。本設(shè)計(jì)根據(jù)SDRAM的工作原理、控制時(shí)序和指令特點(diǎn),將SDRAM控制器分成四個(gè)模塊來(lái)設(shè)計(jì)。四個(gè)模塊分別為:主控制模塊、信號(hào)產(chǎn)生模塊、數(shù)據(jù)路徑模塊和參數(shù)模塊。在利用

60、硬件描述語(yǔ)言Verilog HDL對(duì)其編程使之功能得以實(shí)現(xiàn)后,采用QuartusII對(duì)FPGA訪問(wèn)SDRAM的讀/寫(xiě)過(guò)程進(jìn)行功能仿真驗(yàn)證。通過(guò)仿真實(shí)驗(yàn),初步證明了設(shè)計(jì)的正確性、可靠性,能夠結(jié)合集成電路芯片搭建硬件電路。參考文獻(xiàn)1王誠(chéng),吳華,范麗珍,等. Altera FPGA/CPLD設(shè)計(jì)(根底篇). 人民郵電出版社,2005,7.2田豐,鄧建國(guó),李巍,賈治華. SDRAM的設(shè)計(jì)與VHDL實(shí)現(xiàn). 電子技術(shù)應(yīng)用,2003,(31)2:74-77.3劉云清,佟首峰,姜會(huì)林. 利用FPGA實(shí)現(xiàn)SDRAM控制器的設(shè)計(jì). 長(zhǎng)春理工大學(xué)學(xué)報(bào).2005,28(4):47-50.4宋一鳴,謝煜,李春茂. 基于

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論