基于FPGA的DDR SDRAM控制器的設計畢業(yè)設計(論文)_第1頁
基于FPGA的DDR SDRAM控制器的設計畢業(yè)設計(論文)_第2頁
基于FPGA的DDR SDRAM控制器的設計畢業(yè)設計(論文)_第3頁
基于FPGA的DDR SDRAM控制器的設計畢業(yè)設計(論文)_第4頁
基于FPGA的DDR SDRAM控制器的設計畢業(yè)設計(論文)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

普通本科畢業(yè)設計題目:基于FPGA的DDRSDRAM控制器的設計摘要隨著半導體技術的開展,A/D采樣的速率越來越高,相應需要越來越大容量的存儲器。存儲器是目前數(shù)字系統(tǒng)中的關鍵部件之一,DDRSDRAMDoubleDataRateSDRAM,雙倍數(shù)據(jù)率同步動態(tài)隨機存儲器以其大容量、高速率和良好的兼容性以及低本錢在計算機、消費類電子、通信等領域得到了相當廣泛的應用。DDR控制器實際上就是用戶端與DDR存儲器之間進行數(shù)據(jù)傳輸?shù)囊粋€橋梁,通過DDR控制器,用戶端命令被轉化成DDR存儲器所支持的命令格式,從而實現(xiàn)用戶端對DDR的訪問。本文對DDRSDRAM及其控制器的結構、接口和時序進行了深入研究與分析,得出一些DDRSDRAM控制器的關鍵技術特性,然后基于Altera公司CycloneII系列的FPGA芯片EP2C8Q208C8平臺,利用Verilog硬件描述語言設計實現(xiàn)了DDRSDRAM存儲控制器。編寫自動生成自加數(shù)據(jù)的模塊,將自加數(shù)據(jù)寫入到SDRAM中,再從SDRAM中讀回,從UART發(fā)送出去并在串口調試工具上顯示?!娟P鍵詞】可編程邏輯門陣列DDRSDRAM存儲控制器通用異步收發(fā)器

AbstractAlongwiththedevelopmentofsemiconductortechnology,A/Dsamplingrateishigherandhigher,requiringmorecapacityofcorresponding.Storageofmemoryisoneofthecrucialdevicesinthedigitalsystematpresent,theDDRDoubleDataRateSDRAMhasmanyadvantagesforit'slargecapacity,highspeedandthelowcost,ithasbeenusedinquiteanumberoffields,suchastheServer,theWorkStation,thePersonalcomputerandtheconsumerelectronics,thecommunicationandotherareas.DDRcontrolleractuallyisabridgebetweenclientandDDRmemoryfordatatransmission,throughtheDDRcontroller,clientcommandwasconvertedintotheDDRmemorywhichsupportcommandformat,soastorealizethevisitofDDRclients.ThepivotaltechnologiesofDDRSDRAMandmemorycontroller,suchasStructure,InterfaceandTimingareexploredinthisarticle,afteraresearchonthemainfeatureinsidetheDDRcontroller,severalfunctionalmodulesofthecontrolleraredesignedout,andthenbasedonFPGAchipCycloneIIAlteracompanyEP2C8Q208C8platformseriesusedVeriloghardwaredescriptionlanguage.Writeautomaticgenerationandadddatamodules,withdatafromthedatawrittentoaddSDRAM,andagainreadbackfromSDRAM,senditoutfromUARTanddisplayonserialportdebuggingtools.【Keywords】FPGA;DDRSDRAM;MemoryController;UART

目錄1緒論 21.1DDRSDRAM的現(xiàn)狀及開展趨勢 2DDR內存的現(xiàn)狀 2DDR內存的開展趨勢 31.2課題研究的意義 31.3課題研究的要求 21.4本文的安排 22DDRSDRAM技術介紹 42.1DDRSDRAM的分類 42.2DDRSDRAM的根本概念 4DRAM存儲原理 5DDRSDRAM的邏輯BANK與芯片位寬 5DDRSDRAM芯片容量 5DDRSDRAM內存刷新 62.3DDRSDRAM的命令 6初始化 6DDRSDRAM指令 72.4DDRSDRAM讀寫操作時序 8讀操作時序 8寫操作時序 83FPGA和QuartusII簡介 103.1FPGA技術簡介 10FPGA根本結構 10FPGA的根本特點 10FPGA芯片的選擇 113.2QuartusⅡ簡介 113.3QuartusII的設計流程 114系統(tǒng)硬件設計 134.1系統(tǒng)整體框架 134.2自動累加數(shù)據(jù)產生模塊 134.3DDRSDRAM控制器模塊 14DDRSDRAM控制器整體狀態(tài)分析 14DDRSDRAM控制器總體架構 15輸入/輸出FIFO模塊 16控制接口模塊設計 17控制接口模塊設計 19數(shù)據(jù)通路模塊設計 214.4串口讀數(shù)據(jù)模塊 235系統(tǒng)控制器的功能驗證 265.1系統(tǒng)控制器的功能仿真 26系統(tǒng)控制器Testbench設計 26系統(tǒng)控制器Testbench總體架構 26DDRSDRAMControllerTestbench頂層模塊設計 26DDRSDRAMControllerTestbench仿真波形 275.2串口讀取數(shù)據(jù)驗證 286總結 29參考文獻 30致謝 311緒論1.1DDRSDRAM的現(xiàn)狀及開展趨勢DDR內存的現(xiàn)狀目前DDR內存市場占有量非常大,尤其是近些年隨著市場需求的高速增長使得參加該行業(yè)和研究該技術的人員也越來越多,DDR控制技術處于高速開展階段。和顯卡、主板等差異化較大的市場相比,內存市場由于有著強大的JDEDC把持,并且產品本身形態(tài)較為單一,因此各家產品性能和設計差距都不太大,同質化現(xiàn)象較嚴重。不過,同質化并不意味著開展速度慢,相反,也正是由于有了統(tǒng)一的JEDEC標準,內存一直按部就班地開展著。對于DDR系統(tǒng)來說,DDR控制器的研究是其關鍵核心,該局部要完成讀寫控制、地址控制等功能。DDR內存的開展趨勢第一代DDR200標準并沒有得到普及,第二代PC266DDRSDRAM〔133MHz時鐘×2倍數(shù)據(jù)傳輸=266MHz帶寬〕是由PC133SDRAM內存所衍生出的,它將DDR內存帶向第一個高潮,其后來的DDR333內存也屬于一種過度,而DDR400內存成為目前的主流平臺選配,雙通道DDR400內存已經(jīng)成為800FSB處理器搭配的根本標準,隨后的DDR533標準那么成為超頻用戶的選擇對象?,F(xiàn)在DDR2/3都在擴大產量,DDR3量產后,供給將大增,而本錢將會降低,所以DDR3將會降價,這樣也能促進普及,而普及又會促使廠商增加產量,產量增加又會進一步攤薄本錢降低價格。隨著人們要求的變高,速率更快容量更大的內存不斷會涌現(xiàn)出來。1.2課題研究的意義DDR內存遍布于各種電子產品,正漸漸成為現(xiàn)代社會中不可或缺的信息存儲載體。存儲器對現(xiàn)在的數(shù)字化系統(tǒng)性能至關重要,是決定系統(tǒng)性能的關鍵設備之一。面對越來越多樣化的應用需求,存儲技術開展得相當迅速,其中DDRSDRAM作為一種在性能與本錢之間折中的解決方案,以其高速、大容量、運行穩(wěn)定與高性價比等優(yōu)點已經(jīng)成為目前存儲器的主流。

隨著電子技術在工業(yè)、醫(yī)療、商業(yè)等領域的開展,人們對數(shù)據(jù)傳輸率的要求越來越高,傳統(tǒng)的單片機早已不能滿足這種高速數(shù)據(jù)傳輸?shù)囊?。與此同時,可編程邏輯器件FPGA以其強大的功能,開發(fā)過程投資小、周期短,可反復編程修改,開發(fā)工具智能化等特點,成為當今硬件設計的潮流;它的集成度高,可完成極其復雜的時序與組合邏輯電路功能,更適用于高速、高密度的高端數(shù)字邏輯電路設計領域。本設計采用FPGA來進行系統(tǒng)設計。采用傳統(tǒng)的單片機編程實現(xiàn)算法的方法雖靈活性較高,但是執(zhí)行復雜工作時處理速度遠遠不能滿足要求,而且單片機的時序性較差。要改善這個問題,F(xiàn)PGA是很好的選擇之一,它有足夠大的邏輯陣列密度百萬門級以上,比擬高的速度400MHZ以上。由此可見,采用FPGA完成DDRSDRAM控制器的設計可以使內存上升到一個新級別。因此對DDR存儲控制器的設計研究具有重要意義。1.3課題研究的要求本課題要求完成基于FPGA的DDRSDRAM〔此SDRAM為公司的K4S6432H芯片〕控制器的設計,實現(xiàn)以下功能要求:〔1〕初始化DDRSDRAM;〔2〕簡化DDRSDRAM的讀寫時序;〔3〕將DDRSDRAM接口的雙時鐘沿數(shù)據(jù)轉換為單時鐘沿數(shù)據(jù),使得對DDRSDRAM的操作類似于普通RAM;〔4〕控制器還要產生周期性的刷新命令來維持DDRSDRAM內的數(shù)據(jù)而不喪失。1.4本文的安排本文對DDRSDRAM控制器從整體設計到各局部細化設計展開討論,對系統(tǒng)涉及的各模塊的設計進行詳細描述,最后對系統(tǒng)功能仿真以及讀寫數(shù)據(jù)驗證。全文的內容安排如下:第一局部為緒論。簡單介紹了內存的現(xiàn)狀與開展趨勢,對本課題的研究意義及其要求做了簡單論述。第二局部,介紹了DDRSDRAM相關技術,首先對DDR的存儲原理、邏輯BANK、位寬等根本概念進行了大致介紹,然后對其命令進行簡單介紹,最后對其讀寫時序做了詳細分析。第三局部,介紹了FPGA相關知識并對此系統(tǒng)開發(fā)平臺QuartusII也進行了簡單介紹,接著描繪了此系統(tǒng)在開發(fā)平臺上的設計流程。第四局部,詳細介紹了系統(tǒng)的整體架構包括自數(shù)據(jù)生成模塊、控制器模塊、串口讀模塊,并分別重點構成控制器的主要模塊:輸入/輸出FIFO模塊、數(shù)據(jù)接口模塊、命令模塊、數(shù)據(jù)通路模塊。第五局部,主要是對控制系統(tǒng)的功能進行驗證。將編寫好的測試文件在Modelsim平臺上完成功能仿真,并對系統(tǒng)的讀寫功能進行了串口輸出驗證。最后,總結

2DDRSDRAM技術介紹2.1DDRSDRAM的分類DDR的頻率可以用工作頻率和等效頻率兩種方式表示,工作頻率是內存顆粒實際的工作頻率,但是由于DDR內存可以在脈沖的上升和下降沿都傳輸數(shù)據(jù),因此傳輸數(shù)據(jù)的等效頻率是工作頻率的兩倍。按DDR的頻率可分為以下幾類,如表2.1所示。表2.1DDR內存分類DDR規(guī)格 傳輸標準 實際頻率 等效傳輸頻率 數(shù)據(jù)傳輸率 DDR200 PC1600 100MHz 200MHz 1600MB/s DDR266 PC2100 133MHz 266MHz 2100MB/s DDR333 PC2700 166MHz 333MHz 2700MB/s DDR400 PC3200 200MHz 400MHz 3200MB/s DDR433 PC3500 216MHz 433MHz 3500MB/s DDR533 PC4300 266MHz 533MHz 4300MB/s 2.2DDRSDRAM的根本概念DDRSDRAM是DoubleDataRateSDRAM的縮寫,是雙倍速率同步動態(tài)隨機存儲器的意思。DDR存儲器的核心建立在SDRAM的根底上,但在速度和容量上有了提高。首先,它使用了更多、更先進的同步電路,使用了差分時鐘輸入;其次,DDR使用了和數(shù)據(jù)選通濾波信號DataStrobesignal,當數(shù)據(jù)有效時,存儲控制器可使用這個數(shù)據(jù)選通濾波信號來精確定位數(shù)據(jù),每8位數(shù)據(jù)對應輸出一次數(shù)據(jù)選通濾波信號,并且同步來自不同的雙存儲器模塊的數(shù)據(jù)。DDR存儲器本質上不需要提高時鐘頻率就能加倍提高SDRAM的速度,它允許在時鐘脈沖的上升治和下降沿讀出數(shù)據(jù),因而其速度是標準SDRAM的兩倍。至于地址與控制信號那么與傳統(tǒng)SDRAM相同,仍在時鐘上升沿進行傳輸。DDR存儲器的設計可讓存儲控制器每一組DQ/DQS/DM與DIMMDualIn-lineMemoryModule,雙列直插式存儲器模塊上的顆粒相接時,維持相同的負載,減少對主板的影響。在存儲器架構上,傳統(tǒng)SDRAM屬于8組式,即存儲器核心中的I/O存放器有8位數(shù)據(jù)I/O,但對于8組的DDRSDRAM而言,存儲器核心中的I/O存放器卻是16位的,即在時鐘信號上升沿時輸出8位數(shù)據(jù),下降沿再輸出8位數(shù)據(jù),一個時鐘周期總共可傳輸16位數(shù)據(jù)。DDR芯片內部除了四個存儲矩陣四個邏輯BANK之外,就是一些控制邏輯、行列緩沖與解碼、I/O存放器或緩沖,使用雙向的DQS信號進行源同步計時定位讀/寫的數(shù)據(jù)信號。DDR存儲器可以在不用大量增加管腳的情況下,大幅度提高數(shù)據(jù)傳輸?shù)膸挕蔡岣吡艘槐丁常⑶夷壳皟r格也非常廉價,性價比很高,足以滿足一般的存儲設計需求。DRAM存儲原理DRAM利用MOS管的柵電容上的電荷來存儲信息,一個DRAM的存儲單元存儲的是0還是1取決于電容是否有電荷,有電荷代表1,無電荷代表0。但時間一長,由于柵極漏電,代表1的電容會放電,代表0的電容會吸收電荷,這樣會造成數(shù)據(jù)喪失,因此需要一個外設電路進行內存刷新操作。刷新操作定期對電容進行檢查,假設電量大于滿電量的1/2,那么認為其代表1,并把電容充滿電;假設電量小于1/2,那么認為其代表0,并把電容放電,藉此來保持數(shù)據(jù)的連續(xù)性。DDRSDRAM的邏輯BANK與芯片位寬DDRSDRAM是一種高速CMOS動態(tài)隨機訪問存儲器,它在內部被配制成4個BANK的DRAM,外部數(shù)據(jù)具有4位、8位、16位三種寬度。DDRSDRAM中每一個BANK中的存儲單元被組織成正方陣列,由假設干行和假設干列組成,這些存儲單元通過行和列的地址譯碼器來尋址。對于任何一個單元的讀操作,整個行均被讀出,然后重新寫回〔刷新〕。對于任何一個單元的寫操作,整個行均被讀出,然后改變其中一個單元的值,最后將整個行寫回。陣列就如同表格一樣,將數(shù)據(jù)填進去,可以把它想象成一張表格。和表格的檢索原理一樣,先指定一個行〔Row〕,再指定一個列〔Column〕,我們就可以準確地找到所需要的單元格,這就是內存芯片尋址的根本原理。對于內存,這個單元格可稱為存儲單元。DDRSDRAM芯片容量內存芯片的容量就是所有L-BANK中的存儲單元的容量總和,計算有多少個存儲單元和計算表格中的單元數(shù)量方法一樣:芯片容量存儲單元數(shù)量位寬〔行數(shù)列數(shù)L-BANK數(shù)量〕位寬DDR?SDRAM具有如下的容量:〔1〕64Mb〔即67,108,864位〕:16M×4〔4M×4×4banks〕、8M×8〔2M×8×4banks〕、4M×16〔1M×16×4banks〕;〔2〕128Mb〔即134,217,728位〕:32M×4〔4M×4×4banks〕、16M×8〔2M×8×4banks〕、8M×16〔1M×16×4banks〕;〔3〕256Mb〔即268,435,456位〕:64M×4〔4M×4×4banks〕、32M×8〔2M×8×4banks〕、16M×16〔1M×16×4banks〕;〔4〕512Mb〔即536,870,912位〕:128M×4〔4M×4×4banks〕、64M×8〔2M×8×4banks〕、32M×16〔1M×16×4banks〕;〔5〕1Gb〔即1,073,741,824位〕:256M×4〔4M×4×4banks〕、128M×8〔2M×8×4banks〕、64M×16〔1M×16×4banks〕可以發(fā)現(xiàn)由于位寬的變化引起了存儲單元的數(shù)量變化,也就是說在相同的總容量下,可以采用多種不同的位寬設計。DDRSDRAM內存刷新內存條應該叫做動態(tài)DRAM,其中的數(shù)據(jù)是靠電容特性存儲的。由于電容會放電,要維持數(shù)據(jù),就要不斷的給它充電。給動態(tài)DRAM定期充電的機制就叫做數(shù)據(jù)刷新時鐘電路,即內存刷新電路。一般情況下,內存刷新電路必須在數(shù)毫秒之內對DRAM刷新一次,否那么數(shù)據(jù)就會喪失。很像是一個流沙漏斗,一旦不加沙就會完全漏光。刷新頻率由芯片的工作頻率以及每個BANK包含的行數(shù)決定。2.3DDRSDRAM的命令初始化DDRSDRAM是一種易失性存儲器器件,也就是說,當器件掉電后,存儲在DDRSDRAM中的所有內容及其配置信息將會喪失。DDRSDRAM每次上電后,必須按一定的順序來初始化其內部狀態(tài)機并配置用戶定義的操作參數(shù),否那么會引起不可預料的操作結果。DDRSDRAM指令DDRSDRAM支持的指令與SDRSDRAM根本一致,本將其根本指令,表2.2中的操作主要由CSn,RASn,CASn,WEn這四個信號來控制〔CKE在這些操作下為高電平〕,需要由CKE來控制的信號放在了表2.3中,即對DDRSDRAM工作狀態(tài)的配置必須配合CKE信號來完成。表2.2DDR根本指令真值表命令 符號 CSn RASn CASn WEn 無操作 NOP L X X 讀 READ L H L H 寫 WRIT L H L L 行激活 ACT L L H H 自動刷新 REF L L L H 預充電 PRE L L H L 寫模式存放器 MRS L L L L 注:L代表低電平,H代表高電平,代表高電平或低電平操作 符號 CKEn-1 CKE 命令 進入自動刷新 SELF H L REF 退出自動刷新 SRE× H H DSEL/NOP 進入低功耗 PWDN H L DSEL/NOP 退出低功耗 PDE× H H DSEL/NOP 表2.3DDR根本指令真值表注:CKEn是CKE信號在第n個clock上升沿的邏輯狀態(tài),CKEn-1是CKE信號在第n-1個clock上升沿的狀態(tài)。2.4DDRSDRAM讀寫操讀操作時序讀操作的時序圖如2-1所示:圖2-1DDRSDRAM讀操作時序圖上圖的信號:CK和/CK是一組差分時鐘,CK的上升沿對準COMMAND〔命令〕和ADDRESS〔地址〕的中央,一般叫做center-align〔中間對齊〕。ADDRESS只是一個columnaddress〔列地址,行地址已經(jīng)在前面用ACTIVE命令翻開了。DQ即數(shù)據(jù)總線,具有雙向性,在空閑時為高阻。DQS可以理解為數(shù)據(jù)使能信號,和數(shù)據(jù)同步,在空閑時也為高阻。DQ和DQS都是和時鐘邊沿對齊,叫做edge-align〔邊沿對齊〕。另外上面有一個CL=2.5的標識,CL即CASLatency。CL是指內存在收到列地址信號〔ColumnAddressStrobe〕后,要等待多少個系統(tǒng)時鐘周期后才進行讀取的動作。注意到上圖中在列地址被采樣2.5個時鐘周期后,數(shù)據(jù)總線上出現(xiàn)了有效的讀數(shù)據(jù)。寫操作時序100MHz的時鐘從緩存中讀走寬度為16位的數(shù)據(jù),當緩存內部的讀計數(shù)器計數(shù)到達設定值時,F(xiàn)ULL信號置低,控制器的讀操作停止。在DDR控制接口模塊產生的時序配合下以雙倍速率完成一次突發(fā)寫。和讀操作不同是發(fā)出寫命令〔write〕后,需要等待DQS時間才能送出寫數(shù)據(jù)〔DQ〕和DQS。tDQS參數(shù)是指DQS的第一個跳變沿相對于寫命令的延時時間,tDQS有最大值和最小值,就是說在最大最小值之間將DQ/DQS送出來,DDRSDRAM都能夠正常接收。寫操作時序圖如2-2圖2-2DDRSDRAM寫操作時序圖

3FPGA和QuartusII簡介本次設計就是以EDA技術為根底,使用基于FPGA技術,利用Altera公司開發(fā)的功能強大的QuartusII9.1開發(fā)軟件來完成相關的設計。3.1FPGA技術簡介FPGA根本結構FPGA的結構一般分為三局部:可編程輸入/輸出模塊、可編程邏輯單元〔LE〕、可編程內部互連資源〔IR〕。LE是FPGA芯片實現(xiàn)邏輯的根本結構,LE之間可以靈活地互相連接。LE的功能很強,不僅能夠實現(xiàn)邏輯函數(shù),還可以配置成RAM等復雜的形式。FPGA采用SRAM進行功能配置,可重復編程,但系統(tǒng)掉電后,SRAM中的數(shù)據(jù)喪失。因此需在FPGA外加EPROM或FLASH,將配置數(shù)據(jù)寫入其中,系統(tǒng)每次上電自動將數(shù)據(jù)加載到SRAM中。裝載的過程是在FPGA內部的一個時序電路的控制下自動進行的,所以在為FPGA設計電路時,一定要給它配備一個專用的配置芯片。除了上述構成FPGA根本結構的三種資源以外,隨著工藝的進步和應用系統(tǒng)需求的開展,一般在FPGA中還可能包含以下可選資源:存儲器資源〔塊RAM、分布式RAM〕;數(shù)字時鐘管理單元〔分頻/倍頻、數(shù)字延遲、時鐘鎖定〕;算數(shù)運算單元〔高速硬件乘法器、乘加器〕;多電平標準兼容的I/O接口;高速串行I/O接口;特殊功能模塊〔以太網(wǎng)MAC等硬IP核〕;微處理器〔PowerPC405等硬處理器口核〕。FPGA的根本特點FPGA有以下特點:采用FPGA設計ASIC電路,用戶不需要投片生產,就能得到合用的芯片;FPGA可做其它全定制或半定制ASIC電路的中試樣片;FPGA內部有豐富的觸發(fā)器和I/O引腳;FPGA是ASIC電路中設計周期最短、開發(fā)費用最低、風險最小的器件之一;FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。隨著微電子技術、EDA技術、以及應用系統(tǒng)需求的開展,可以說,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最正確選擇之一。FPGA正在逐漸成為數(shù)字系統(tǒng)開發(fā)的平臺,并將在以下方面繼續(xù)完善和提高:〔1〕高集成度,大容量、低本錢、低電壓,低功耗;〔2〕資源多樣化;〔3〕適用于片上系統(tǒng):處理器、高速串行I/O、DSP等等;〔4〕深亞微米工藝的使用。目前基于90nm工藝的FPGA已經(jīng)商用,正在向65nm挺進;〔5〕各種軟硬IP庫的開展和完善;〔6〕動態(tài)可重構技術實用化。FPGA芯片的選擇根據(jù)系統(tǒng)的功能要求,本設計使用的FPGA是Altera公司的CycloneII系列的EP2C8Q208C8,CycloneIIFPGA是Altera公司推出的低本錢FPGA。CycloneII系列的FPGA有專門的DDRSDRAM接口電路,可以方便地實現(xiàn)FPGA與DDRSDRAM的連接。在整個邏輯設計中,利用Altera公司的PLL鎖相環(huán)Megafuntion產生所需要的時鐘,采用AlteraLPM宏功能模塊中的異步FIFO,DD控制器接口采用AlteraLPM宏功能模塊中的DDRMEMORY接口。采用現(xiàn)成的IP核,方便了我們的設計,不僅在設計效率上得到了提高,而且在可靠性方面也得到了一定程度的保證。DDRSDRAM系統(tǒng)中數(shù)據(jù)通路設計以及控制時序是本系統(tǒng)設計的核心,在構建系統(tǒng)之前,基于以下因素選擇了CycloneII系列的EP2C8芯片:〔1〕高達400MHz的工作頻率可以滿足高速數(shù)據(jù)處理以及傳輸?shù)囊螅弧?〕Altera公司研發(fā)的QuartusII軟件擁有更直觀的開發(fā)界面,為整個系統(tǒng)的擴展和開發(fā)提供了很大的便捷。3.2QuartusⅡ簡介QuartusII是Altera開發(fā)的CPLD/FPGA應用軟件工具,QuartusII提供了完善的集成而且與電路構造不關聯(lián)的設計環(huán)境,擁有數(shù)字邏輯設計的全部特性。此外,QuartusII軟件為設計流程的每個階段提供QuartusII圖形用戶界面、EDA工具界面和命令行界面。設計流程包括以下幾個步驟:設計輸入;綜合;仿真;器件編程與配置。其中器件編程與配置包括以下四種編程模式:被動串行模式、JTAG模式、插座內編程模式和主動串行模式。3.3QuartusII的設計流程建立工程是每個開發(fā)過程的開始,當工程建立好后,要適中選擇設計的輸入方式,設計輸入就是完成電路設計。QuartusII提供原理圖輸入方式、文本輸入方式和內存編輯輸入方式。大多數(shù)工程設計時,都會用到LPM功能模塊和宏功能模塊來加速設計輸入。當編譯成功后,進行功能仿真驗證電路功能是否正確。通過功能仿真能及時發(fā)現(xiàn)設計中的錯誤,加快設計速度,提高設計的可靠性。綜合優(yōu)化是指將HDL語言、原理圖等設計輸入翻譯成由與、或、非門,RAM,觸發(fā)器等根本邏輯單元組成的邏輯連接。綜合優(yōu)化完成后需要檢查綜合結果是否與原設計一致,做綜合后仿真。在仿真時,把綜合優(yōu)化生成的標準延時文件反標注到綜合仿真模型中去,可估計門延時帶來的影響.綜合后仿真雖然比功能仿真準確一些,但是只能估計門延時,不能估計線延時。這些都通過后,進行程序下載和功能確認。滿足設計要求,設計完成,否那么繼續(xù)上述工作。設計流程如圖3-1所示圖3-1QuartusII設計流程圖4系統(tǒng)硬件設計4.1系統(tǒng)整體框架系統(tǒng)主要由三大塊組成,分別是自加數(shù)據(jù)產生模塊、DDRSDRAM控制器模塊、串口讀數(shù)據(jù)模塊。其中DDRSDRAM控制器模塊是本設計的重點,它又由命令模塊、控制器接口模塊、數(shù)據(jù)通路模塊相互協(xié)作來完成數(shù)據(jù)的讀寫操作。系統(tǒng)的整體框架如圖4-1所示。圖4-1系統(tǒng)整體框圖4.2自加數(shù)據(jù)產生模塊為了驗證DDRSDRAM控制器的功能,在FPGA內部設計了一個自數(shù)據(jù)產生器供給SDRAM的寫入數(shù)據(jù)局部。自加數(shù)據(jù)產生模塊的原理圖如圖4-2所示圖4-2自加數(shù)據(jù)產生模塊自加數(shù)據(jù)產生模塊局部代碼如下:always@posedgeclkornegedgerst_nif!rst_nwrf_dinr16'd0;wrf_dinrwrf_dinr+1'b1; //寫入數(shù)據(jù)遞增ssignwrf_wrreqwrf_wrreqr;assignwrf_dinwrf_dinr;endmodule4.3DDRSDRAM控制器模塊控制器整體狀態(tài)分析狀態(tài)轉換圖如圖4-3所示。圖4-3DDRSDRAM控制器狀態(tài)機控制器總體架構控制器包括輸入輸出FIFO、控制接口模塊、CMD命令模塊、數(shù)據(jù)通路模塊。其中控制接口模塊包括命令接口模塊和刷新控制模塊,用于接收系統(tǒng)的控制信號,進而產生不同的CMD命令模塊用于接收CMD命令并解碼成操作指令并產生SDRAM的操作動作,包括仲裁和命令產生模塊;數(shù)據(jù)通路模塊那么用于控制數(shù)據(jù)的有效輸入和輸出。大致框架如圖4-4所示圖4-4DDRSDRAM控制器框圖輸入/輸出FIFO模塊FIFO模塊的頂層原理圖文件如圖4-5所示。圖4-5輸入輸出FIFO模塊FIFO模塊局部代碼如下://例化SDRAM寫入數(shù)據(jù)緩存FIFO模塊Wrfifouut_wrfifodatawrf_din,rdclkclk_100m,rdreqsdram_wr_ack,wrclkclk_25m,wrreqwrf_wrreq,qsys_data_in,wrusedwwrf_use;//例化SDRAM讀出數(shù)據(jù)緩存FIFO模塊Rdfifouut_rdfifodatasys_data_out,rdclkclk_25m,rdreqrdf_rdreq,wrclkclk_100m,wrreq/*rdf_wrreq*/sdram_rd_ack,qrdf_dout,wrusedwrdf_use;endmodule控制接口模塊設計系統(tǒng)控制接口模塊包括命令接口和刷新控制兩個模塊,該模塊內含了初始化機制和系統(tǒng)指令分析機制。將CMD[2:0]翻譯成接口指令和對刷新計數(shù)器的控制。首先通過狀態(tài)機完成對CMD[2:0]的翻譯,根據(jù)CMD[2:0]輸入來決定狀態(tài)的轉移,完成CMD[2:0]的解碼,系統(tǒng)控制接口模塊如圖4-6所示。SDRAM需要周期性刷新來保持數(shù)據(jù)的不喪失,芯片數(shù)據(jù)手冊中通常會給出在一定時間T內至少刷新次,如果用戶使用的頻率為FMHz的時鐘,那么刷新周期Tf可以通過Tf〔T*Fr〕/計算得到。刷新控制在程序中通過一個計數(shù)器來完成,當?shù)竭_規(guī)定的計數(shù)周期,就向SDRAM發(fā)出REFREQ刷新請求,知道SDRAM完成刷新操作,發(fā)出REFACK刷新應答信號,計數(shù)器才重新賦值開始下一次的計數(shù)。上述初始化過程結束后,系統(tǒng)指令分析機制才可接收并分析系統(tǒng)的讀寫信號和地址信息,以及從下個模塊反應回來的CMDACK信號,并產生對應的CMD命令和SADDR地址信息給CMD命令解析模塊。通過程序設置,實現(xiàn)了根據(jù)初始化配置的參數(shù)來確定在讀寫到特定時刻發(fā)出recharge或者Refresh的CMD指令,從而簡化了系統(tǒng)的控制。而每當收到CMDACK為1時,表示CMD指令已經(jīng)發(fā)出并有效,此時就要發(fā)出NOP命令。要說明的是,SADDR是分時復用的,在初始化載入模式時,SADDR用以傳輸用戶自己定義的模式字內容;而在正常的讀寫期間,SADDR作為地址線傳輸SDRAM所需的行、列和塊地址。此外,系統(tǒng)指令分析機制會根據(jù)控制器對SDRAM的操作處于什么樣的狀態(tài),而反應SDRAM_FREE和FDATA_ENABLE信號給系統(tǒng)用戶。圖4-6系統(tǒng)控制接口模塊ddr_control_interface模塊局部代碼:always@posedgeCLKornegedgeRESET_NbeginifRESET_N0beginNOP0;READA0;WRITEA0;REFRESH0;PRECHARGE0;LOAD_MODE0;LOAD_REG20;LOAD_REG10;SADDR0;end//Thisalwaysblockimplementstherefreshtimer刷新計時器〔16bit〕執(zhí)行邏輯always@posedgeCLKornegedgeRESET_NbeginifRESET_N0begintimer0;timer_zero0;REF_REQ0;endendmodule控制接口模塊設計此模塊由兩個子模塊組成:命令仲裁子模塊和命令產生子模塊。命令仲裁子模塊主要用來對主機總線命令和由控制器產生的刷新命令進行決斷。該模塊對CMD指令進行判斷,其結果就是輸出相應的操作指令信號給命令響應模塊。例如,CMD為001時,那么會輸出do_read信號為1,CMD為010時,那么會輸出do_write信號為1,在同一時刻,只會輸出一種有效的的操作指令。此外,該模塊內含用以預設某些模式參數(shù)的模式存放器,主要包括三類:第一類是SDRAM模式控制存放器,在LOAD_MODE指令時,將該存放器的值送入SDRAM的模式存放器中,以控制SDRAM的工作模式第二類是SDRAM控制器的參數(shù)存放器LOAD_REG1,使得SDRAM控制器的工作方式與外部的SDRAM器件的工作方式匹配第三類是SDRAM的刷新周期控制存放器,該存放器預設用戶定義的自動刷新計數(shù)值,用于SDRAM的刷新周期預設。上述三類存放器的預設值都是系統(tǒng)控制接口模塊在初始化時通過SADDR傳送給來的。assignraddrADDR[ROWSTART+ROWSIZE-1:ROWSTART]//raddr為行地址assigncaddrADDR[COLSTART+COLSIZE-1:COLSTART]//caddr為列地址assignbaddrADDR[BANKSTART+`BANKSIZE-1:BANKSTART]//baddr為BANK地址ROWSTART、COLSTART、BANKSTART分別為行、列、塊在ADDR中的起始位在程序中,WRITEA和READA的CMD指令實際隱含了ACTIVE命令,所以該模塊在收到do_write或do_read指令后,會先進行激活動作,經(jīng)過初始化配置規(guī)定的CAS延遲時間之后再進行讀寫動作。例如初始化時,模式字規(guī)定CAS=2,BURSTLENGTHPAGE,那么從命令接口模塊收到do_write1后,會先做出激活動作并給出行地址發(fā)出RAS_N0,CAS_N1,WE_N1,SAraddr,過2個時鐘延遲后,再做出寫動作并給出列地址發(fā)出RAS_N1,CAS_N0,WE_N0,SAcaddr。此外,收到各類操作指令后,該模塊會反應給CMD命令解析模塊cmdack信號為1,并最終反應到系統(tǒng)控制接口模塊的CMDACK信號為1,如果沒有收到任何操作指令,那么cmdack0,CMDACK信號為。系統(tǒng)控制命令模塊如圖4-7所示圖4-7命令模塊ddr_command局部代碼如下://address,cs,cke,andcommandsignalsras,cas,wen產生邏輯always@posedgeCLKbeginifRESET_N0beginSA0;BA0;CS_N1;RAS_N1;CAS_N1;WE_N1;CKE0;end elsebeginCKE1;endmodule數(shù)據(jù)通路模塊設計數(shù)據(jù)通路模塊主要是在writea和reada命令期間處理數(shù)據(jù)的通路操作,是對時序要求最為嚴格的局部,也是最關鍵的局部。由于在上升沿和下降沿都需要處理數(shù)據(jù),所以需要采用一些其他資源來保證時序的精確性。DQ是雙向數(shù)據(jù)線,用來傳輸從SDRAM讀出數(shù)據(jù)和向SDRAM寫入的數(shù)據(jù)。無論是數(shù)據(jù)在讀出還是寫入時,都是在OE有效,即OE為高電平時才能進行傳輸。DM是由主機輸入的數(shù)據(jù)掩碼,通過DQM輸出到SDRAM的LDQM和UDQM管腳,進而控制SDRAMI/O緩沖的低字節(jié)和高字節(jié)。該模塊受OE信號的控制,使數(shù)據(jù)的進出和相應的操作指令在時序上同步,如圖4-8所示。根據(jù)系統(tǒng)設計對SDRAM讀寫要求的不同,對控制器進行簡單的參數(shù)修改〔主要是初始化時模塊內容字的設置〕,即可使對SDRAM的控制符合自己的要求。該控制器使得系統(tǒng)對SDRAM的操作非常簡單。以寫操作為例,初始化結束后,只要SDRAM空閑,系統(tǒng)就會收到SDRAM-FREE有效信號,此時可以發(fā)出FPGA-WR指令,同時給出ADDR地址信息,在收到反應的FDATA-ENABLE有效后,系統(tǒng)將數(shù)據(jù)通過DATAIN寫到SDRAM中去,即完成寫操作,系統(tǒng)無需關心SDRAM的刷新和預充。圖4-8數(shù)據(jù)通路模塊ddr_data_path局部代碼如下://采集來自SDRAM的讀數(shù)據(jù),產生DQS信號always@negedgeCLK200ornegedgeRESET_NbeginifRESET_N0begindqs1a0;dqs2a0;dqs1b0;dqs2b0;delayed_OE0;din2x_10;din2x_20;dqs_oea0;dqs_oeb0;end……assignDQOUTdq2;assignDQOEioen;assignDQS[0]dqs_oea?dqs2a:1'bz;assignDQS[1]dqs_oeb?dqs2b:1'bz;endmodule4.4串口讀數(shù)據(jù)模塊為了實現(xiàn)讀出數(shù)據(jù)的可視化顯示效果,設計在電腦上顯示出來。串口顯示模塊的頂層原理圖文件如圖4-9所示。圖4-9串口讀數(shù)據(jù)模塊uart_ctrl模塊的局部代碼如下:moduleuart_ctrlclk,rst_n,tx_data,tx_start,fifo232_rdreq,rs232_tx;inputclk;//25MHz主時鐘inputrst_n;//低電平復位信號input[7:0]t_data;//待發(fā)送數(shù)據(jù)inputt_start;//串口發(fā)送數(shù)據(jù)啟動標志位,高有效outputfifo232_rdreq;//FIFO讀請求信號,高有效outputrs232_t;//RS232發(fā)送數(shù)據(jù)信號////串口發(fā)送底層模塊和串口波特率選擇模塊接口wireclk_bps;//發(fā)送數(shù)據(jù)標志位,高有效wirebps_start;//波特率時鐘計數(shù)器啟動信號,高有效////例化串口數(shù)據(jù)發(fā)送底層模塊uart_tuut_txclkclk,rst_nrst_n,tx_datatx_data,tx_starttx_start,clk_bpsclk_bps,rs232_txrs232_tx,bps_startbps_start,fifo232_rdreqfifo232_rdreq;//例化串口數(shù)據(jù)發(fā)送波特率控制模塊uart_speed_selectuut_ssclkclk,rst_nrst_n,bps_startbps_start,clk_bpsclk_bps;endmodule

5系統(tǒng)控制器的驗證5.1控制器的功能仿真控制器Testbench設計在完成一個設計后,需要進行測試以確認設計的正確性和完整性。而要進行測試,就需要編寫測試鼓勵和結果檢查程序,即測試平臺〔testbench〕。本設計的控制器功能仿真通過利用Verilog語言寫testbench的方法,以Mentor公司的Modelsim作為仿真工具,通過檢查波形來完成。Testbench不僅要產生鼓勵〔即輸入〕,還要驗證響應〔即輸出〕。控制器Testbench總體架構圖5-1DDRSDRAMControllerTestbench總體架構DDRSDRAMControllerTestbench頂層模塊設計DDRSDRAMControllerTestbench局部程序代碼如下:$display"Writingpattern0fffffff0,0xfffffff1,0xfffffff2,0xfffffff3,0xfffffff4,0xfffffff5,0xfffffff6,0xfffffff7";$display"withDMsetto0xf";burst_write0,32'hfffffff0,16'hffff,3,4;$display"Readingandverifingthatthepatternatsdramaddress0x0is";$display"still0,1,2,3,4,5,6,7";burst_read0,0,3,3,4;DDRSDRAMControllerTestbench仿真波形DDRSDRAMControllerTestbench對SDRAM寫仿真波形,如圖5-2所示。圖5-2Testbench對SDRAM寫仿真波形DDRSDRAMControllerTestbench對SDRAM讀、校驗仿真波形,如圖5-3所示。5-3Testbench對SDRAM讀、校驗仿真波形5.2串口讀取數(shù)據(jù)驗證DDRSDRAM控制器的讀信號進行了實時

溫馨提示

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

評論

0/150

提交評論