版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第8章VerilogHDL存儲器設(shè)計2/1/20231MicroelectronicsSchoolXidianUniversity8.1存儲器簡介和分類2/1/20232MicroelectronicsSchoolXidianUniversity表8.1-1存儲器分類RWMNVRWMROM隨機存取非隨機存取EPROME2PROMFLASHROMSRAMDRAMFIFOLIFO移位寄存器8.1.2存儲器結(jié)構(gòu)(a)存儲器結(jié)構(gòu)(b)利用譯碼器減少地址位數(shù)8.1.3存儲器設(shè)計方法2/1/20233MicroelectronicsSchoolXidianUniversity在基于FPGA的電路設(shè)計方法中,一些固定的模塊已經(jīng)作為IP核來調(diào)用,從而簡化設(shè)計。在專用集成電路設(shè)計過程中,有專用的軟件——memorycompiler來實現(xiàn)存儲器的設(shè)計。memorycompiler的使用也和IP核的調(diào)用類似,通過改變一些參數(shù)來實現(xiàn)設(shè)計中需要的存儲器,不同的是memorycompiler設(shè)計的存儲器是基于具體的工藝的表8.2IP核設(shè)計和MemoryCompiler設(shè)計的主要區(qū)別設(shè)計方法IP核設(shè)計MemoryCompiler需要的參數(shù)存儲器大小,端口信息存儲器大小,端口信息,工作頻率,電源線寬輸出文件網(wǎng)表文件,原理圖文件等網(wǎng)表文件,時序信息文件,布局布線文件,注釋文件可移植性可以用于不同工藝,可以設(shè)計其他IP模塊主要用于存儲器設(shè)計,基于具體工藝,工藝不同則需要重新設(shè)計綜合直接像其他設(shè)計一樣,用designcompiler等工具綜合將輸出文件作為designcompiler的鏈接庫,設(shè)計將直接作為綜合后的宏單元8.2基于FPGA的IP核RAM的設(shè)計及調(diào)用2/1/20234MicroelectronicsSchoolXidianUniversity8.2.1IP核的簡介IP(知識產(chǎn)權(quán))核將一些在數(shù)字電路中常用,但比較復(fù)雜的功能塊,如FIR濾波器、SDRAM控制器、PCI接口等設(shè)計做成一個“黑盒”或者是可修改參數(shù)的模塊,供設(shè)計者使用。IP核包括硬IP與軟IP。調(diào)用IP核能避免重復(fù)勞動,大大減輕設(shè)計人員的工作量。8.2.2FPGA配置和調(diào)用RAM例8.2-1FPGA設(shè)計的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設(shè)計流程2/1/20239MicroelectronicsSchoolXidianUniversity例8.2-2:IP核生成RAM的過程以及例化的過程(1)打開QuartusII(本文使用的版本是QuartusII8.1),新建工程NewQuartusIIProject(2)選擇工程存儲路徑,并設(shè)置工程名,例如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,并在對話框中設(shè)置輸出文件名,例如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)最終設(shè)置完成后,如圖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設(shè)置仿真工具modesim的路徑,如圖8.2-14所示:2/1/202321MicroelectronicsSchoolXidianUniversity(2)在assignments中的settings中進行仿真設(shè)置,首先是仿真工具,選擇modelsim,接著是網(wǎng)表文件格式,這里選擇verilog,并對時間精度進行設(shè)置。2/1/202322MicroelectronicsSchoolXidianUniversity(3)接著是連接的軟件的設(shè)置,在上一個界面中的最下面,選擇第二項testbench的選項,然后點擊后面的testbenches選項彈出如下對話框:2/1/202323MicroelectronicsSchoolXidianUniversity(4)點擊new進行設(shè)置,其中Testbenchname可以隨便設(shè)置,Toplevelmoduleintestbench是testbench中模塊的名字,designinstancenameintestbench是testbench中例化的待測試模塊的名字。2/1/202324MicroelectronicsSchoolXidianUniversity(5)完成設(shè)置。在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設(shè)計過程中的RAM2/1/202327MicroelectronicsSchoolXidianUniversity
例8.3-1:ASIC設(shè)計過程中的RAM的調(diào)用:本例設(shè)計一個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:該設(shè)置是對RAM的命名,由于ram的特性有地址和位數(shù),所以在命名的時候盡量包含這些信息。在本例中我們可以命名為RA2SHD_128×8.(2)numberofwords:該設(shè)置用來確定RAM的深度,即尋址空間大小,本例中為128。(3)numberofbits:該設(shè)置用來確定RAM的寬度,本例中為8。(4)frequency:該設(shè)置用來確定RAM的工作頻率,該設(shè)置確定后就可以基本確定RAM的功耗,估計的結(jié)果位平均電流,通過該數(shù)據(jù)來設(shè)定電源環(huán)的寬度,本例設(shè)定為200MHz。(5)ringwidth:該設(shè)置為工具建議的電源環(huán)寬度,根據(jù)本例的情況,設(shè)計為12um。(6)relativefootprint:該設(shè)置確定RAM的形狀,最好讓RAM的形狀接近正方形。(7)multiplexerwidth:該設(shè)置確定每行的單元數(shù),這里設(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的詳細(xì)信息可以讀取生成RAM的數(shù)據(jù)手冊來得出,里面包含詳細(xì)的面積信息,延時信息等。2/1/202336MicroelectronicsSchoolXidianUniversity2.綜合與布局布線階段在布局布線前,需要考慮RAM的長與寬,估計它的位置與方向,盡量讓功能相關(guān)的模塊靠近一些。將產(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)系上傳者。文件的所有權(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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 律師職業(yè)面試技巧與問題解析
- 翻譯員面試常見問題及答案解析
- 2025年人工智能在醫(yī)療健康領(lǐng)域應(yīng)用項目可行性研究報告
- 2025年在線教育平臺運營與發(fā)展可行性研究報告
- 2025年基于5G的智能制造解決方案可行性研究報告
- 2025年電子商務(wù)產(chǎn)業(yè)鏈優(yōu)化可行性研究報告
- 2025年大數(shù)據(jù)分析與數(shù)據(jù)挖掘項目可行性研究報告
- 2025年線上購物平臺物流優(yōu)化可行性研究報告
- 星辰未來社區(qū)發(fā)展
- 8.1+科學(xué)立法、嚴(yán)格執(zhí)法、公正司法、全民守法(教學(xué)設(shè)計)-中職思想政治《中國特色社會主義法治道路》(高教版2023·基礎(chǔ)模塊)
- 服裝打版制作合同范本
- 技術(shù)部門項目交付驗收流程與標(biāo)準(zhǔn)
- 林場管護知識培訓(xùn)課件
- 2025年江蘇事業(yè)單位筆試真題及答案(完整版)
- 公司反貪腐類培訓(xùn)課件
- 寢室內(nèi)務(wù)規(guī)范講解
- 2025年慢阻肺培訓(xùn)試題(附答案)
- 部隊地雷使用課件
- 航空材料基礎(chǔ)培訓(xùn)課件
- 血細(xì)胞形態(tài)學(xué)幻燈片課件
- 鐵路車務(wù)培訓(xùn)課件
評論
0/150
提交評論