![西電verilog課件第八章_第1頁](http://file4.renrendoc.com/view/bef11284f172e88acd859b38bc7acd8f/bef11284f172e88acd859b38bc7acd8f1.gif)
![西電verilog課件第八章_第2頁](http://file4.renrendoc.com/view/bef11284f172e88acd859b38bc7acd8f/bef11284f172e88acd859b38bc7acd8f2.gif)
![西電verilog課件第八章_第3頁](http://file4.renrendoc.com/view/bef11284f172e88acd859b38bc7acd8f/bef11284f172e88acd859b38bc7acd8f3.gif)
![西電verilog課件第八章_第4頁](http://file4.renrendoc.com/view/bef11284f172e88acd859b38bc7acd8f/bef11284f172e88acd859b38bc7acd8f4.gif)
![西電verilog課件第八章_第5頁](http://file4.renrendoc.com/view/bef11284f172e88acd859b38bc7acd8f/bef11284f172e88acd859b38bc7acd8f5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第8章VerilogHDL存儲器設計2/1/20231MicroelectronicsSchoolXidianUniversity8.1存儲器簡介和分類2/1/20232MicroelectronicsSchoolXidianUniversity表8.1-1存儲器分類RWMNVRWMROM隨機存取非隨機存取EPROME2PROMFLASHROMSRAMDRAMFIFOLIFO移位寄存器8.1.2存儲器結(jié)構(a)存儲器結(jié)構(b)利用譯碼器減少地址位數(shù)8.1.3存儲器設計方法2/1/20233MicroelectronicsSchoolXidianUniversity在基于FPGA的電路設計方法中,一些固定的模塊已經(jīng)作為IP核來調(diào)用,從而簡化設計。在專用集成電路設計過程中,有專用的軟件——memorycompiler來實現(xiàn)存儲器的設計。memorycompiler的使用也和IP核的調(diào)用類似,通過改變一些參數(shù)來實現(xiàn)設計中需要的存儲器,不同的是memorycompiler設計的存儲器是基于具體的工藝的表8.2IP核設計和MemoryCompiler設計的主要區(qū)別設計方法IP核設計MemoryCompiler需要的參數(shù)存儲器大小,端口信息存儲器大小,端口信息,工作頻率,電源線寬輸出文件網(wǎng)表文件,原理圖文件等網(wǎng)表文件,時序信息文件,布局布線文件,注釋文件可移植性可以用于不同工藝,可以設計其他IP模塊主要用于存儲器設計,基于具體工藝,工藝不同則需要重新設計綜合直接像其他設計一樣,用designcompiler等工具綜合將輸出文件作為designcompiler的鏈接庫,設計將直接作為綜合后的宏單元8.2基于FPGA的IP核RAM的設計及調(diào)用2/1/20234MicroelectronicsSchoolXidianUniversity8.2.1IP核的簡介IP(知識產(chǎn)權)核將一些在數(shù)字電路中常用,但比較復雜的功能塊,如FIR濾波器、SDRAM控制器、PCI接口等設計做成一個“黑盒”或者是可修改參數(shù)的模塊,供設計者使用。IP核包括硬IP與軟IP。調(diào)用IP核能避免重復勞動,大大減輕設計人員的工作量。8.2.2FPGA配置和調(diào)用RAM例8.2-1FPGA設計的RAM外圍電路對RAM進行讀寫操作2/1/20235MicroelectronicsSchoolXidianUniversity7位地址線計數(shù)器`timescale1ns/1psmodulecount(clk,en,count,clr);inputclk,en,clr;output[6:0]count;reg[6:0]count;always@(posedgeclkornegedgeclr)beginif(!clr)count=7'b0;elsebeginif(en)count=count+1;endendendmodule8位數(shù)據(jù)線計數(shù)器`timescale1ns/1psmoduledata_count(clk,count,clr);inputclk,clr;output[7:0]count;reg[7:0]count;always@(posedgeclkornegedgeclr)beginif(!clr)count=8'b0;elsecount=count+1;endendmodule2/1/20236MicroelectronicsSchoolXidianUniversity`timescale1ns/1psmoduleIP_RAM(clk_wr,clk_rd,wren,rden,data_rd,clr);inputclk_wr,clk_rd,wren,rden,clr;output[7:0]data_rd;wire[6:0]addr_wr,addr_rd;wire[7:0]data_wr;wire[7:0]data_rd;
countaddr_wr1(.clk(clk_wr),.en(wren),.count(addr_wr),.clr(clr));
data_countdata_wr1(.clk(clk_wr),.count(data_wr),.clr(clr));countaddr_rd1(.clk(clk_rd),.en(rden),.count(addr_rd),.clr(clr));
RAM_2PORTRAM1(.wrclock(clk_wr),.rdclock(clk_rd),.wren(wren),.data(data_wr),.wraddress(addr_wr),.rdaddress(addr_rd),.q(data_rd));endmodule2/1/20237MicroelectronicsSchoolXidianUniversity`timescale1ns/1psmoduleIP_RAM_tb;regclk_wr,clk_rd,clr;regwren,rden;wire[7:0]data_rd;IP_RAMRAM1(.clk_wr(clk_wr),.clk_rd(clk_rd),.wren(wren),.data_rd(data_rd),.clr(clr),.rden(rden));
initialbegin#1clk_wr=0;clk_rd=0;clr=1;rden=0;#3wren=0;clr=0;#3wren=1;clr=1;#3000wren=0;rden=1;#3000wren=0;rden=0;#500$stop;end
always#10clk_wr=~clk_wr;always#15clk_rd=~clk_rd;endmodule2/1/20238MicroelectronicsSchoolXidianUniversity圖8.2-2寫入過程仿真結(jié)果圖8.2-3讀出過程仿真結(jié)果8.2.3IP核的RAM設計流程2/1/20239MicroelectronicsSchoolXidianUniversity例8.2-2:IP核生成RAM的過程以及例化的過程(1)打開QuartusII(本文使用的版本是QuartusII8.1),新建工程NewQuartusIIProject(2)選擇工程存儲路徑,并設置工程名,例如IP_RAM(2)添加文件,暫時不添加。(4)選擇芯片型號,例如CycloneIIEP2C5Q208C8(5)完成工程的建立(6)點擊tools,選擇Tools—MegaWizardPlug-InManager,創(chuàng)建新的MegaCore;(7)選擇新建一個MegaCore2/1/202310MicroelectronicsSchoolXidianUniversity(8)選擇IP,在左側(cè)選中RAM:2-PORT,選擇VerilogHDL,并在對話框中設置輸出文件名,例如RAM_PORT22/1/202311MicroelectronicsSchoolXidianUniversity(9)定義讀寫端口;2/1/202312MicroelectronicsSchoolXidianUniversity(10)定義輸入數(shù)據(jù)寬度(此處為8),RAM深度(此處為128);2/1/202313MicroelectronicsSchoolXidianUniversity(11)選擇讀寫時鐘;2/1/202314MicroelectronicsSchoolXidianUniversity(12)定義輸出鎖存;2/1/202315MicroelectronicsSchoolXidianUniversity(13)選擇是否進行初始化;2/1/202316MicroelectronicsSchoolXidianUniversity(14)顯示創(chuàng)建的輸出文件類型;2/1/202317MicroelectronicsSchoolXidianUniversity(15)創(chuàng)建原理圖輸入文件;File>New>BlockDiagram/SchematicFile(16)雙擊左鍵,彈出Symbol對話框,可以在上方的libraries中看到project,顯示已創(chuàng)建的RAM_PORT2Symbol;(17)選擇input和outputSymbol;(18)最終設置完成后,如圖8.2-122/1/202318MicroelectronicsSchoolXidianUniversity(19)將該原理圖保存為頂層文件IP;(20)進行全編譯,如圖示,在頂層文件下會顯示實例化(21)一個RAM的IP核已經(jīng)成功調(diào)用。8.2.4對生成的RAM進行仿真2/1/202319MicroelectronicsSchoolXidianUniversity1.直接用quartus手動加激勵仿真2.和其它軟件結(jié)合的testbench仿真方法2/1/202320MicroelectronicsSchoolXidianUniversity(1)在quartus中選擇tools里面的option設置仿真工具modesim的路徑,如圖8.2-14所示:2/1/202321MicroelectronicsSchoolXidianUniversity(2)在assignments中的settings中進行仿真設置,首先是仿真工具,選擇modelsim,接著是網(wǎng)表文件格式,這里選擇verilog,并對時間精度進行設置。2/1/202322MicroelectronicsSchoolXidianUniversity(3)接著是連接的軟件的設置,在上一個界面中的最下面,選擇第二項testbench的選項,然后點擊后面的testbenches選項彈出如下對話框:2/1/202323MicroelectronicsSchoolXidianUniversity(4)點擊new進行設置,其中Testbenchname可以隨便設置,Toplevelmoduleintestbench是testbench中模塊的名字,designinstancenameintestbench是testbench中例化的待測試模塊的名字。2/1/202324MicroelectronicsSchoolXidianUniversity(5)完成設置。在quartus界面編譯,仿真,quartus會自動啟動modelsim軟件進行仿真。本例的testbench程序和仿真結(jié)果如下`timescale1ns/1psmoduleIP_RAM_tb;regclk_wr,clk_rd;regwren;reg[7:0]data_wr;reg[6:0]addr_wr,addr_rd;wire[7:0]data_rd;RAM_2PORTRAM1(.wrclock(clk_wr),.rdclock(clk_rd),.wren(wren),.data(data_wr),.wraddress(addr_wr),.rdaddress(addr_rd),.q(data_rd));initialbegin#1clk_wr=0;clk_rd=0;#3addr_wr=7'b0;addr_rd=7'bz;#3wren=0;data_wr=8'b0000_0100;#3wren=1;#3000wren=0;addr_rd=7'b000_0000;#3000wren=1;#50$stop;endalways#10clk_wr=~clk_wr;always#15clk_rd=~clk_rd;alwaysbegin#20addr_wr=addr_wr+1;end
alwaysbegin#20data_wr=data_wr+1;end
alwaysbegin#30addr_rd=addr_rd+1;endendmodule2/1/202325MicroelectronicsSchoolXidianUniversity圖8.2-18寫入過程的仿真圖圖8.2-19讀出過程的仿真圖8.3用MemoryCompiler生成RAM并仿真2/1/202326MicroelectronicsSchoolXidianUniversity8.3.1MemoryCompiler的簡介MemoryCompiler能夠根據(jù)用戶的要求自動生成ROM或RAM。在生成ROM時需要直接將ROM寫入的數(shù)據(jù)在生成時存進去,在生成RAM的過程則不需要。MemoryCompiler產(chǎn)生RAM的同時會生成用于行為級仿真的verilog代碼。其他重要的文件列舉如下:(1).LIB該數(shù)據(jù)是RAM的時序信息文件(2).VCLEF布局布線工具需要使用的物理信息文件(3).SPECRAM是注釋文件。這里我們使用Artisan的MemoryCompiler——AdvantageSingle-PortRegisterfileGenerator來生成。所使用的工藝是TSMC65nmCL65G+Process。8.3.2ASIC設計過程中的RAM2/1/202327MicroelectronicsSchoolXidianUniversity
例8.3-1:ASIC設計過程中的RAM的調(diào)用:本例設計一個RAM,并可以對其進行讀取。外圍的讀取電路是由一個計數(shù)器控制地址端,另一個計數(shù)器控制數(shù)據(jù)端,實現(xiàn)數(shù)據(jù)的實時寫入和讀出。地址計數(shù)器包含使能端,使能端由RAM的使能控制端cen來控制。2/1/202328MicroelectronicsSchoolXidianUniversity頂層模塊:`timescale1ns/1psmoduleWR_RD_RAM(clk,wen,data_rd,cen,clr);inputclk,wen,cen,clr;output[7:0]data_rd;wire[7:0]data_rd;wire[6:0]addr;wire[7:0]data_wr;countaddr_wr1(.clk(clk),.clr(clr),.en(cen),.count(addr));data_countdata_wr1(.clk(clk),.clr(clr),.count(data_wr));
RF1SHD_128X8RAM(.CLK(clk),.CEN(cen),.WEN(wen),.A(addr),.D(data_wr),.Q(data_rd),.EMA(0),.RETN(1));Endmodule2/1/202329MicroelectronicsSchoolXidianUniversity`timescale1ns/1psmoduleRAM_tb;regclk;regwen,cen,clr;wire[7:0]data_rd;WR_RD_RAMRAM1(.clk(clk),.wen(wen),.cen(cen),.clr(clr),.data_rd(data_rd));initialbegin#1clk=0;cen=1;clr=1;#2cen=0;clr=0;#3clr=1;#3wen=1;#3wen=0;#3000wen=1;#3000cen=1;#50$stop;endalways#10clk=~clk;endmodule2/1/202330MicroelectronicsSchoolXidianUniversity圖8.3-3寫入過程仿真結(jié)果圖8.3-4讀出過程仿真結(jié)果8.3.3MemoryCompiler的使用2/1/202331MicroelectronicsSchoolXidianUniversity圖8.3-4MemoryCompiler的使用流程2/1/202332MicroelectronicsSchoolXidianUniversity例8.3-2用MemoryCompiler生成一個128×8的雙端口的RAM。用verilog例化該RAM并對其進讀寫測試。1.RTL階段參數(shù)說明:(1)instancename:該設置是對RAM的命名,由于ram的特性有地址和位數(shù),所以在命名的時候盡量包含這些信息。在本例中我們可以命名為RA2SHD_128×8.(2)numberofwords:該設置用來確定RAM的深度,即尋址空間大小,本例中為128。(3)numberofbits:該設置用來確定RAM的寬度,本例中為8。(4)frequency:該設置用來確定RAM的工作頻率,該設置確定后就可以基本確定RAM的功耗,估計的結(jié)果位平均電流,通過該數(shù)據(jù)來設定電源環(huán)的寬度,本例設定為200MHz。(5)ringwidth:該設置為工具建議的電源環(huán)寬度,根據(jù)本例的情況,設計為12um。(6)relativefootprint:該設置確定RAM的形狀,最好讓RAM的形狀接近正方形。(7)multiplexerwidth:該設置確定每行的單元數(shù),這里設置為4,能夠讓形狀更接近正方形。2/1/202333MicroelectronicsSchoolXidianUniversity左下角的view中選擇生成的文件名,然后點擊generate就可以生成所需要的文件,如圖8.3-5中的紅色的框框所示。這樣的生成文件的方式需要依次生成想要的文件,如果想要一次生成所有需要的文件,可以選擇utilities->generate,會彈出如圖8.3-6對話框,然后勾選需要的文件,點擊generate就會生成所有我們需要的文件。2/1/202334MicroelectronicsSchoolXidianUniversity接著選擇utilities->advancedoptions,修改電源和地的名字2/1/202335MicroelectronicsSchoolXidianUniversity在MENU中點擊utilities->writespec產(chǎn)生SRAM的注釋文檔:生成的RAM的詳細信息可以讀取生成RAM的數(shù)據(jù)手冊來得出,里面包含詳細的面積信息,延時信息等。2/1/202336MicroelectronicsSchoolXidianUniversity2.綜合與布局布線階段在布局布線前,需要考慮RAM的長與寬,估計它的位置與方向,盡量讓功能相關的模塊靠近一些。將產(chǎn)生的.LIB文件轉(zhuǎn)換成.DB文件,就可以把MemoryCompiler生成的RAM加入到代碼中進行綜合了。在綜合工具的腳本中的serch_path下加入RAM的DB文件地址即可。3.對生成的RAM的例化和仿真`timescale1ns/1psmoduleWR_RD_RAM(clk,wen,addr,data_wr,data_rd,cen);inputclk,wen,cen;input[6:0]addr;input[7:0]data_wr;output[7:0]data_rd;wire[7:0]data_rd;
RF1SHD_128X8RAM(.CLK(clk),.CEN(cen),.WEN(wen),.A(addr),.D(data_wr),.Q(data_rd),.EMA(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保險代理居間合同委托書
- 服裝企業(yè)辦公大廈居間協(xié)議
- 液態(tài)化學試劑配送合同
- 2025年度工業(yè)控制系統(tǒng)安全工程師勞動合同
- 娛樂場所泔水運輸合作協(xié)議
- 家具城配送服務合同模板
- 煤矸石清運施工方案
- 綿陽市道路施工方案
- 完善教育評價體系:深化改革的策略與路徑探索
- 初中藏文版數(shù)學試卷
- 公司安全生產(chǎn)事故隱患內(nèi)部報告獎勵工作制度
- H3CNE認證考試題庫官網(wǎng)2022版
- 感統(tǒng)訓練培訓手冊(適合3-13歲兒童)
- 公司章程范本(完整版)
- 廠房委托經(jīng)營管理合同范本
- 《保險科技》課件-第二章 大數(shù)據(jù)及其在保險領域中的應用
- 父母贈與田地協(xié)議書范本
- 中藥甘草課件
- 解讀國有企業(yè)管理人員處分條例(2024)課件(全文)
- 煙草企業(yè)安全生產(chǎn)標準化規(guī)范1-200題附有答案
- DL∕T 1870-2018 電力系統(tǒng)網(wǎng)源協(xié)調(diào)技術規(guī)范
評論
0/150
提交評論