版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
6.1存儲器模塊的用法6.1.1ROM的使用用戶創(chuàng)建ROM前,首先應該建立ROM內的數(shù)據文件。在QuartusⅡ中可以接收兩種數(shù)據文件:MemoryInitializationFile(.mif)格式文件和HexadecimalFile(.hex)格式文件。以下以mif格式文件為例介紹數(shù)據文件的建立和使用。1.數(shù)據文件的建立在QuartusⅡ主界面下,單擊“File”|“New”命令,彈出“New”對話框,單擊“OthersFiles”選項,再選擇“MemoryInitializationFile”選項。然后,單擊“OK”按鈕,彈出“NumberofWords&word…”對話框,如圖6.2所示。下一頁返回6.1存儲器模塊的用法
用戶在“Numberofwords”選項中填入ROM中的數(shù)據個數(shù),在這里先填寫“32”,在“Wordsize”選項中填入數(shù)據寬度,這里取“8”位。這表示本存儲器有32個數(shù)據單元,每個數(shù)據單元可以存儲8位數(shù)據。單擊“OK”按鈕,彈出“mif”文件對話框。在空的.mif數(shù)據表格中填入數(shù)據。用鼠標右擊窗口邊緣的地址欄,彈出格式選擇窗口,可以從中選擇不同的地址格式和數(shù)據格式。表中任意一個數(shù)據對應的地址為左列數(shù)和頂行數(shù)之和。完成后,保存文件并命名為“MY_ROM”上一頁下一頁返回6.1存儲器模塊的用法
2.ROM宏模塊的建立數(shù)據文件建好后,接下來建立RAM宏模塊,并將建立好的數(shù)據文件加載到此RAM中。具體步驟如下:(1)在QuartusⅡ主界面中,單擊“Tools”|“MegaWizardPlug-InMange”命令,彈出窗口“MegaWizardPlug-InMange[page1]”。(2)選擇“Creatanewcustommegafunctionvariation”選項,單擊“Next”按鈕,彈出ROM宏模塊選擇對話框。(3)在左側欄選擇“ROM:1-PORT”選項,在器件和語言選擇對話框中選定相應的器件和語言,為添加的模塊命名。之后單擊“Next”按鈕。上一頁下一頁返回6.1存儲器模塊的用法
(4)在圖6.7所示的對話框中,設置地址線寬度和數(shù)據位寬度對話框,在這里,用戶設置ROM宏模塊的數(shù)據位寬度和存儲單元數(shù)與上面的數(shù)據文件配套,在此,數(shù)據位寬度和存儲單元數(shù)分別取8和32;在“Whatshouldthememoryblocktypebe”一欄選擇默認的“Auto”;時鐘控制信號選擇“Singleclock”選項。(5)以上設置完成后,單擊“Next”按鈕,彈出寄存器和使能信號設置對話框。用戶在對話框中設置寄存器和使能信號等,在這里暫且都選為默認設置。然后,單擊“Next”按鈕后,彈出如圖6.9所示的對話框進行數(shù)據文件的制定。上一頁下一頁返回6.1存儲器模塊的用法
用戶在“Doyouwantto...”一欄中選擇“Yes,usethisfileforthememorycontentdata”選項并單擊“Browse”按鈕選擇上面制定的文件“MY_ROM.mif”。同時選中“AllowIn-SystemMemory...”選項,并在“The‘InstanceID’ofthisRAMis:”一欄中填入“ROM1”作為此ROM的名稱。注意:此設置允許QuartusⅡ通過JTAG口,對下載于FPGA中的這個ROM,進行在系統(tǒng)的測試和讀/寫。如果設計中調用了多個RAM或ROM,那么ID號ROM1就為這個ROM的識別標志。用戶單擊“Next”按鈕,彈出如
所示的仿真庫對話框,從而可以看到仿真庫的基本信息。上一頁下一頁返回6.1存儲器模塊的用法
(6)當用戶單擊“Next”按鈕后,程序將彈出如圖6.11所示的對話框,從中可以看到關于此ROM的信息概要,最后單擊“Finish”按鈕完成ROM的創(chuàng)建。ROM創(chuàng)建完成后,程序將生成文件myrom.vhd。這個文件可以用于原理圖編輯,也可用于頂層文件的實例化,單擊“File”|“Open”命令,找到所存目錄下的“myrom.vhd”,打開這個VHDL程序??梢詫ι傻膔am.vhd文件創(chuàng)建圖元,生成電路圖符號。單擊“File”|“Creat/Update”|“creatsymbolfilesforcurrentfile”命令,生成的電路符號如圖6.12所示。至此,用戶已經完成了ROM的設置操作。上一頁下一頁返回6.1存儲器模塊的用法
6.1.2FIFO的建立使用先入先出存儲器FIFO的創(chuàng)建流程與ROM、RAM的創(chuàng)建流程基本相同。同樣使用MegawizardPlug-InManager工具進行定制。用戶進入如圖6.13所示對話框后,在左側欄選擇“MemoryComplier”項下的“FIFO”選項,器件和語言選項根據需要選定,同時也需要設定路徑。程序將彈出參數(shù)設置對話框,在器件選擇中,用戶可以選擇“CycloneⅡ”選項,數(shù)據寬度則選擇“8”位,數(shù)據數(shù)選擇“32”,如圖6.14所示。上一頁下一頁返回6.1存儲器模塊的用法
用戶單擊“Next”按鈕還可以進行其他參數(shù)的設置,在如圖6.15所示的對話框中,用戶可以選擇其他的輸入/輸出端口,比如清零端等操作。用戶還可以在如圖6.16所示的對話框中進行相關的優(yōu)化方式等設定。用戶通過上述設定所生成的LY_FIFO原理圖符號,如圖6.17所示。上一頁返回6.2乘法器和鎖相環(huán)的使用6.2.1乘法器的使用與ROM和RAM的使用方法類似,用戶也可以使用MegaWizardPlug-InManager工具對乘法器進行定制。具體的操作步驟如下:(1)用戶進入如圖6.18所示的對話框中,并在左側欄選擇“Arithmetic”︱“LPM_MULT”選項。用戶所用的器件和語言可以根據需要進行設定,還要進行路徑和文件的設定,這里先設定為“D:\ASHU\VHDL程序庫\宏模塊及IP核的使用\MULT\MULT.vhd”。(2)用戶單擊“Next”按鈕后,程序將彈出如圖6.19所示的對話框,在這里可以進行乘數(shù)和被乘數(shù)的位寬設定下一頁返回6.2乘法器和鎖相環(huán)的使用
(3)用戶單擊“Next”按鈕還可以進行其他參數(shù)的設定,如圖6.20所示。用戶單擊“Next”按鈕,將進入如圖6.21所示的對話框。注意:在這里,用戶可以選擇時鐘控制。(4)用戶繼續(xù)往下單擊“Next”按鈕,直到單擊“Finish”按鈕完成MULT的所有操作。最后,用戶可以打開生成的電路原理圖符號,。其中,clock是時鐘信號,dataa[7..0]為被乘數(shù),datab[7..0]為乘數(shù),result[15..0]為相乘后的結果。對其進行電路連接得到乘法器電路圖。用戶對該電路進行仿真,得到如圖6.24所示的仿真波形圖,以驗證是否滿足需要。上一頁下一頁返回6.2乘法器和鎖相環(huán)的使用
6.2.2鎖相環(huán)的使用在QuartusⅡ中有鎖相環(huán)宏模塊,通常也被稱為嵌入式鎖相環(huán)。這種鎖相環(huán)可以根據需要設置分頻或倍頻的系數(shù)、相移和占空比,性能非常優(yōu)越。具體使用步驟如下:(1)在QuartusⅡ主界面,用戶可以單擊“Tools”|“MegaWizardPlug-InManager”命令,在對話框的左側欄中單擊“I/O”選項,選擇“ALTPLL”選項,如圖6.25所示。在右側欄中確定使用的HDL語言、器件和存放文件的路徑。上一頁下一頁返回6.2乘法器和鎖相環(huán)的使用
(2)用戶單擊“Next”按鈕以后,程序將彈出參數(shù)設置對話框。注意:在這里,用戶可以設定器件、輸入時鐘頻率inclock0和工作模式。這里時鐘頻率設置為“20MHz”,工作模式選為“InNormalMode”。(3)用戶單擊“Next”按鈕,彈出控制信號選擇對話框。在此可以進行鎖相環(huán)控制信號的選擇,如使能控制pllena、異步復位areset等。(4)單擊“Next”按鈕,彈出輸出時鐘信號的設置對話框。上一頁下一頁返回6.2乘法器和鎖相環(huán)的使用
用戶選擇選項中的“Usethisclock”選項,表示選擇了該輸出時鐘c0,并且在“ClockTapSettings”的設置選項中,“Clockmultiplicationfactor”選項用于設置倍頻因子;“Clockdivisionfactor”選項用于設置分頻因子;“Clockphaseshift”選項用于設置時鐘相移;“Clockdutycycle”選項用于設置占空比。單擊“Next”按鈕,可以生成其他輸出時鐘c1.、e0等,并進行各項參數(shù)設置。設置完后出現(xiàn)“SummaryPage”界面。(5)創(chuàng)建完成后,用戶可以打開生成的電路符號,如圖6.30所示。其中,inclk0為參考時鐘輸入,areset為異步復位信號,c0、c1和e0為輸出的時鐘端口,locked是相位鎖定輸出。上一頁下一頁返回6.3基于宏模塊的設計實例在數(shù)字系統(tǒng)的設計中,用戶使用宏模塊和LPM函數(shù)可以簡化設計過程,提高設計效率。一般基于宏模塊的設計,都是調用宏模塊和LPM函數(shù),根據需要進行參數(shù)設置,然后生成相應的HDL程序或原理圖符號,作為總設計的一個元件,被頂層文件調用或直接被用在原理圖中。6.3.1正弦波信號發(fā)生器的設計正弦波信號發(fā)生器的設計方法很多,但最常用的方法是查表法。就是對正弦波進行等間隔采樣,將正弦波一個周期的采樣值依次記錄下來,并將這些值存放在存儲器中。下一頁返回6.3基于宏模塊的設計實例
在外部時鐘的驅動下,把這些值依次取出來送到輸出端,周而復始地循環(huán)執(zhí)行,輸出的數(shù)據通過8位的D/A轉換成模擬信號,就得到了正弦波。改變時鐘頻率,就可以改變正弦波的頻率。設計一個正弦信號發(fā)生器,用戶采用ROM宏功能模塊存儲一個周期的正弦波數(shù)據,共存儲64個數(shù)據,每個數(shù)據用8位二進制碼表示。設計一個模64的加法計數(shù)器,其輸出接到ROM的地址輸入端,依次來保證周而復始地依次輸出正弦波數(shù)據,從而產生正弦波信號。用戶可以按照ROM宏功能模塊的定制方法定制一個ROM,存儲正弦波數(shù)據的.mif文件。上一頁下一頁返回6.3基于宏模塊的設計實例
程序將生成相應的sin_rom.vhd文件以后,用戶可以將其作為一個元件放入工程中,準備調用,設計頂層文件,實現(xiàn)設計。代碼如下:LIBRARYIEEE;//調用標準庫文件USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYsinfsqISPORT(//端口定義clk:INSTD_LOGIC;dout:OUTSTD_LOGIC_VECTOR(5DOWNTO0));上一頁下一頁返回6.3基于宏模塊的設計實例
ENDsinfsq;ARCHITECTUREbehaviorOFsinfsqISCOMPONENTsin_rom//聲明ROM元件PORT(address:INSTD_LOGIC_VECTOR(5DOWNTO0);inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;SIGNALwt:STD_LOGIC_VECTOR(5DOWNTO0);上一頁下一頁返回6.3基于宏模塊的設計實例
BEGINPROCESS(clk)BEGINIFclk'EVENTANDclk='1'THENwt<=wt+1;ENDIF;ENDPROCESS;u1:rom_dataPORTMAP(address=>wt,inclock=>clk,q=>dout);//例化ROM元件ENDbehavior;上一頁下一頁返回6.3基于宏模塊的設計實例
在這段代碼中,用一個進程來設計計數(shù)器,聲明ROM元件并例化,在端口映射表中將計數(shù)器和ROM的相關引腳連接,實現(xiàn)了正弦波信號發(fā)生器的功能。6.3.2乘累加器的設計乘累加器在信號處理電路中有廣泛的應用。用戶可以使用混合輸入設計方法來設計一個16位的乘累加器,具體代碼如下:modulemac_v(clk,a,b,s);inputclk;input[15:0]a,b;上一頁下一頁返回6.3基于宏模塊的設計實例
output[32:0]s;wire[32:0]s;mac03u1(.clock0(clk),.dataa(a),.datab(b),.result(s));endmodule上一頁下一頁返回6.3基于宏模塊的設計實例
在工程中定制一個乘累加器,在“MegaWizardPlug-InManager”庫中選擇“ALTMULT_ACCUM(MAC)”選項,生成MAC模塊,我們選擇生成模塊的VerilogHDL文件和.bsf文件。生成VerilogHDL代碼如下:modulemac03(clock0,dataa,datab,result);inputclock0;上一頁下一頁返回6.3基于宏模塊的設計實例
input[15:0]dataa;input[15:0]datab;output[32:0]result;'ifndefALTERA_RESERVED_QIS//synopsystranslate_off'endiftri1clock0;tri0[15:0]dataa;上一頁下一頁返回6.3基于宏模塊的設計實例
tri0[15:0]datab;'ifndefALTERA_RESERVED_QIS//synopsystranslate_on'endifwire[32:0]sub_wire0;wire[32:0]result=sub_wire0[32:0];altmult_accumaltmult_accum_component(.dataa(dataa),上一頁下一頁返回6.3基于宏模塊的設計實例
.datab(datab),.clock0(clock0),.result(sub_wire0),.accum_is_saturated(),.accum_round(1'b0),.accum_saturation(1'b0),.accum_sload(1'b0),.accum_sload_upper_data(1'b0),.aclr0(1'b0),上一頁下一頁返回6.3基于宏模塊的設計實例
.aclr1(1'b0),.aclr2(1'b0),.aclr3(1'b0),.addnsub(1'b1),.clock1(1'b1),.clock2(1'b1),.clock3(1'b1),.ena0(1'b1),.ena1(1'b1),上一頁下一頁返回6.3基于宏模塊的設計實例
.ena2(1'b1),.ena3(1'b1),.mult_is_saturated(),.mult_round(1'b0),.mult_saturation(1'b0),.overflow(),.scanina({16{1'b0}}),.scaninb({16{1'b0}}),.scanouta(),上一頁下一頁返回6.3基于宏模塊的設計實例
.scanoutb(),.signa(1'b0),.signb(1'b0),.sourcea(1'b0),.sourceb(1'b0));defparam上一頁下一頁返回6.3基于宏模塊的設計實例
altmult_accum_component.accumulator_rounding="NO",altmult_accum_component.accumulator_saturation="NO",altmult_accum_component.accum_direction="ADD",altmult_accum_component.accum_saturation_pipeline_reg="UNREGISTERED",altmult_accum_component.accum_saturation_reg="UNREGISTERED",altmult_accum_component.addnsub_aclr="UNUSED",altmult_accum_component.addnsub_pipeline_aclr="UNUSED",上一頁下一頁返回6.3基于宏模塊的設計實例
altmult_accum_component.addnsub_pipeline_reg="CLOCK0",altmult_accum_component.addnsub_reg="CLOCK0",altmult_accum_component.dedicated_multiplier_circuitry="AUTO",altmult_accum_component.input_aclr_a="UNUSED",altmult_accum_component.input_aclr_b="UNUSED",altmult_accum_component.input_reg_a="CLOCK0",altmult_accum_component.input_reg_b="CLOCK0",上一頁下一頁返回6.3基于宏模塊的設計實例
altmult_accum_component.input_source_a="DATAA",altmult_accum_component.input_source_b="DATAB",altmult_accum_ended_device_family="StratixII",altmult_accum_component.lpm_type="altmult_accum",altmult_accum_component.multiplier_aclr="UNUSED",altmult_accum_component.multiplier_reg="CLOCK0",上一頁下一頁返回6.3基于宏模塊的設計實例
altmult_accum_component.multiplier_rounding="NO",altmult_accum_component.multiplier_saturation="NO",altmult_accum_component.mult_saturation_aclr="UNUSED",altmult_accum_component.mult_saturation_reg="CLOCK0",altmult_accum_component.output_aclr="UNUSED",altmult_accum_component.output_reg="CLOCK0",altmult_accum_component.port_addnsub="PORT_UNUSED",altmult_accum_component.port_signa="PORT_UNUSED",altmult_accum_component.port_signb="PORT_UNUSED",上一頁下一頁返回6.3基于宏模塊的設計實例
altmult_accum_component.representation_a="UNSIGNED",altmult_accum_component.representation_b="UNSIGNED",altmult_accum_component.sign_acl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 邢臺施工考試題庫及答案
- 美術改革模擬試題及答案
- 開封市公共基礎輔警考試筆試題庫及答案
- 醫(yī)院感染監(jiān)測規(guī)范考題附答案
- 公立醫(yī)院編外招聘試題及答案
- 植物生理判斷題附答案
- 主管護師考試試題練附答案
- 民營企業(yè)會計試題帶答案
- 會計初級考試題目及答案
- 驗光員測試題(含答案)
- 廣東省佛山市南海區(qū)2025-2026學年上學期期末八年級數(shù)學試卷(含答案)
- 【地理】期末重點復習課件-2025-2026學年八年級地理上學期(人教版2024)
- 2026年鄉(xiāng)村治理體系現(xiàn)代化試題含答案
- 通風設備采購與安裝合同范本
- 化工設備清洗安全課件
- 2026元旦主題班會:馬年猜猜樂新春祝福版 教學課件
- 光伏收購合同范本
- 2025海洋水下機器人控制系統(tǒng)行業(yè)市場需求及發(fā)展趨勢分析投資評估規(guī)劃報告
- T∕ZZB 1815-2020 塑料 汽車配件用再生聚碳酸酯(PC)專用料
- 2025~2026學年吉林省吉林市一中高一10月月考語文試卷
- 王洪圖黃帝內經80課時講稿
評論
0/150
提交評論