版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章VerilogHDL基本概念2.1編寫并運(yùn)行一個(gè)簡(jiǎn)單的VerilogHDL語(yǔ)言程序2.2層次建模2.3VerilogHDL語(yǔ)言的數(shù)據(jù)類型及常量和變量
2.4編譯預(yù)處理2.5小結(jié)2.1編寫、運(yùn)行一個(gè)簡(jiǎn)單的VerilogHDL語(yǔ)言程序1.編寫一個(gè)簡(jiǎn)單的VerilogHDL語(yǔ)言程序
2.VerilogHDL語(yǔ)言程序開發(fā)環(huán)境—QuartusII6.0
編寫一個(gè)簡(jiǎn)單的VerilogHDL語(yǔ)言程序【例2-1】實(shí)現(xiàn)一個(gè)二選一多路選擇器modulemux21a(a,b,s,y);inputa,b,s;outputy;assigny=s?b:a;//實(shí)現(xiàn)二選一功能endmodule或:modulemux21a(inputa,b,s,outputy);assigny=s?b:a;//實(shí)現(xiàn)二選一功能endmodule例2-1說明(1)module和endmodule是VerilogHDL語(yǔ)言的關(guān)鍵字,用來(lái)說明模塊。VerilogHDL程序是由模塊構(gòu)成的。每個(gè)模塊的內(nèi)容都是嵌在module和endmodule兩個(gè)語(yǔ)句之間。(2)input和output是VerilogHDL語(yǔ)言的關(guān)鍵字,用來(lái)說明模塊的端口屬性。端口屬性有三種,為input、output和inout,分別為輸入、輸出、輸入輸出屬性。每個(gè)模塊要進(jìn)行端口列表聲明,說明這些端口的輸入、輸出屬性。(3)assign是VerilogHDL語(yǔ)言的關(guān)鍵字,用來(lái)說明模塊內(nèi)部信號(hào)的連接關(guān)系。語(yǔ)句assigny=s?b:a;的功能是:當(dāng)s=1時(shí),y=b;當(dāng)s=0時(shí),y=a。
VerilogHDL語(yǔ)言程序開發(fā)環(huán)境
—QuartusII設(shè)計(jì)流程1.創(chuàng)建工程準(zhǔn)備工作圖2-2
選擇編輯文件及其語(yǔ)言類型QuartusII設(shè)計(jì)流程1.創(chuàng)建工程準(zhǔn)備工作圖2-3鍵入源程序并存盤QuartusII設(shè)計(jì)流程2.創(chuàng)建工程圖2-4
選擇創(chuàng)建新工程QuartusII設(shè)計(jì)流程2.創(chuàng)建工程圖2-5工程位置、工程名稱、頂層模塊名QuartusII設(shè)計(jì)流程2.創(chuàng)建工程圖2-6
將所有相關(guān)的文件都加入進(jìn)此工程
QuartusII設(shè)計(jì)流程2.創(chuàng)建工程圖2-7
選擇目標(biāo)FPGA器件QuartusII設(shè)計(jì)流程2.創(chuàng)建工程圖2-8
選擇第三方工具QuartusII設(shè)計(jì)流程2.創(chuàng)建工程圖2-9使用modelsim作為仿真工作的設(shè)置
QuartusII設(shè)計(jì)流程2.創(chuàng)建工程圖2-10
工程層次界面和設(shè)計(jì)文件界面QuartusII設(shè)計(jì)流程3.編譯設(shè)置圖2-11
設(shè)置對(duì)話框QuartusII設(shè)計(jì)流程3.編譯設(shè)置圖2-12Device設(shè)置對(duì)話框QuartusII設(shè)計(jì)流程3.編譯設(shè)置圖2-13
選擇配置器件的工作方式
QuartusII設(shè)計(jì)流程3.編譯設(shè)置圖2-14
選擇配置器件和編程方式
QuartusII設(shè)計(jì)流程3.編譯設(shè)置圖2-15
未用管腳設(shè)置QuartusII設(shè)計(jì)流程3.編譯設(shè)置圖2-16
編譯進(jìn)度QuartusII設(shè)計(jì)流程3.編譯設(shè)置圖2-17
全程編譯后出現(xiàn)報(bào)錯(cuò)信息QuartusII設(shè)計(jì)流程3.編譯設(shè)置圖2-18
全程編譯成功后的匯總信息4.仿真圖2-19
選擇Vectorwaveformfile界面QuartusII設(shè)計(jì)流程4.仿真圖2-20仿真測(cè)試向量波形文件QuartusII設(shè)計(jì)流程4.仿真圖2-21
仿真波形信號(hào)設(shè)置QuartusII設(shè)計(jì)流程4.仿真圖2-22加入了待觀察信號(hào)的波形圖QuartusII設(shè)計(jì)流程4.仿真QuartusII設(shè)計(jì)流程圖2-23設(shè)置仿真時(shí)間最小間隔4.仿真QuartusII設(shè)計(jì)流程圖2-24設(shè)置仿真時(shí)間長(zhǎng)度4.仿真QuartusII設(shè)計(jì)流程圖2-25
設(shè)置好的激勵(lì)波形圖4.仿真QuartusII設(shè)計(jì)流程圖2-26功能仿真設(shè)置界面4.仿真QuartusII設(shè)計(jì)流程圖2-27
功能仿真波形輸出
4.仿真QuartusII設(shè)計(jì)流程圖2-28時(shí)序仿真設(shè)置界面4.仿真QuartusII設(shè)計(jì)流程圖2-29
時(shí)序仿真波形輸出
5.引腳鎖定
QuartusII設(shè)計(jì)流程圖2-30
引腳鎖定對(duì)話框圖6.把程序下載到硬件上進(jìn)行測(cè)試
QuartusII設(shè)計(jì)流程圖2-31設(shè)置USB硬件端口6.把程序下載到硬件上進(jìn)行測(cè)試
QuartusII設(shè)計(jì)流程圖2-32
下載界面6.把程序下載到硬件上進(jìn)行測(cè)試
QuartusII設(shè)計(jì)流程圖2-33
選擇下載文件2.2層次建模
圖2-34
全加器f_adder電路圖2.2層次建模
【例2-3】實(shí)現(xiàn)一個(gè)1位全加器//*以下為全加器頂層模塊*/modulef_adder(ain,bin,cin,cout,sum);outputcout,sum;inputain,bin,cin;wireain,bin,cin,cout,sum;wired,e,f;h_adderu0(ain,bin,d,e);h_adderu1(e,cin,f,sum);or2au2(d,f,cout);endmodule2.2層次建模
【例2-3】實(shí)現(xiàn)一個(gè)1位全加器/*以下為半加器模塊*/moduleh_adder(a,b,co,so);outputco,so;inputa,b;wirea,b,co,so,bbar;andand2(co,a,b);notnot1(bbar,b);xnorxnor2(so,a,bbar);endmodule/*以下為或門模塊*/moduleor2a(a,b,c);outputc;inputa,b;wirea,b,c;assignc=a|b;endmodule
圖2-35
半加器h_adder電路圖2.2層次建模
圖2-36一位全加器功能仿真波形2.2層次建模
圖2-37
自頂向下設(shè)計(jì)方法2.2層次建模
圖2-38
自底向上設(shè)計(jì)方法2.2層次建模
圖2-41
全加器的設(shè)計(jì)層次模塊實(shí)例化與端口關(guān)聯(lián)
在模塊實(shí)例化中,可以使用兩種方法將模塊定義的端口與外部環(huán)境中的信號(hào)連接起來(lái):位置關(guān)聯(lián)法和名稱關(guān)聯(lián)法。(1)位置關(guān)聯(lián)
h_adderu0(ain,bin,d,e);
h_adderu1(e,cin,f,sum);
or2au2(d,f,cout);(2)名稱關(guān)聯(lián)
h_adderu0(.a(ain),.b(bin),.co(d),.so(e));
//替換h_adderu0(ain,bin,d,e);
h_adderu1(.a(e),.b(cin),.co(f),.so(sum));
//替換h_adderu1(e,cin,f,sum);
or2au2(.a(d),.b(f),.c(cout));
//替換or2au2(d,f,cout);2.3VerilogHDL語(yǔ)言的數(shù)據(jù)類型及常量和變量
1.變量及其數(shù)據(jù)類型
2.常量及其數(shù)據(jù)類型
變量及其數(shù)據(jù)類型
表2-1四值邏輯邏輯值硬件電路中的條件0邏輯0,條件為假1邏輯1,條件為真x邏輯值不確定z高阻,浮動(dòng)狀態(tài)Wire類型wire型信號(hào)的格式如下:wire[n-1:0]數(shù)據(jù)名1,數(shù)據(jù)名2,…數(shù)據(jù)名i;//共有i條總線,每條總線內(nèi)有n條線路 或
wire[n:1]數(shù)據(jù)名1,數(shù)據(jù)名2,…數(shù)據(jù)名i; 例:wirea;//定義了一個(gè)1位的wire型數(shù)據(jù)wire[7:0]b;//定義了一個(gè)8位的wire型數(shù)據(jù)wire[4:1]c,d;//定義了二個(gè)4位的wire型數(shù)據(jù)register類型
reg型數(shù)據(jù)的格式如下:reg[n-1:0]數(shù)據(jù)名1,數(shù)據(jù)名2,…數(shù)據(jù)名i;或
reg[n:1]數(shù)據(jù)名1,數(shù)據(jù)名2,…數(shù)據(jù)名i;
例:regrega;//定義了一個(gè)1位的名為rega的reg型數(shù)據(jù)reg[3:0]regb;//定義了一個(gè)4位的名為regb的reg型數(shù)據(jù)reg[4:1]regc,regd;//定義了兩個(gè)4位的名為regc和regd的reg型數(shù)據(jù)register類型【例2-4】二選一數(shù)據(jù)選擇器示例modulemux21a(a,b,s,y);inputwirea,b,s;outputregy;always@(a,b,s) if(s==1)y=b; elsey=a;endmoduleinteger類型整數(shù)是一種通用的寄存器數(shù)據(jù)類型,用于對(duì)數(shù)據(jù)進(jìn)行操作,使用關(guān)鍵字integer進(jìn)行聲明。整數(shù)的默認(rèn)位寬為32位。通常,聲明為reg類型的寄存器變量為無(wú)符號(hào)數(shù),而整數(shù)類型的寄存器變量則為有符號(hào)數(shù)
向量類型
向量通過[MSB:LSB]進(jìn)行說明,方括號(hào)中左邊的數(shù)總是代表向量的最高有效位。例如:wire[0:31]addr;reg[7:0]data;定義了向量addr和data,則向量addr的最高有效為它的第0位,向量data的最高有效為它的第7位。一個(gè)使用多種數(shù)據(jù)類型的程序片斷【例2-5】一個(gè)使用多種數(shù)據(jù)類型的程序片斷integer
M;reg[3:0]A;reg[7:0]B;initialbeginM=-1;//M為32位整數(shù),采用補(bǔ)碼形式存放,補(bǔ)碼形式為32個(gè)1A=M;//A為4位無(wú)符號(hào)數(shù),截取M的低4位賦給A:1111B=A;//B為8位無(wú)符號(hào)數(shù),將A零擴(kuò)展后送給B:00001111B=A+14//B為29:11101A=A+14;//A+14為29,截取低4位送給A:1101end
memory類型VerilogHDL通過對(duì)reg型變量建立數(shù)組來(lái)對(duì)存儲(chǔ)器建模,可以描述RAM型存儲(chǔ)器、ROM型存儲(chǔ)器、寄存器文件。數(shù)組中的每一個(gè)單元通過一個(gè)數(shù)組索引進(jìn)行尋址。在Verilog中沒有多維數(shù)組存在。memory類型【例2-6】存儲(chǔ)器建模modulerom(clk,rst,rd,data,addr);inputclk,rst,rd;//rd讀使能信號(hào)input[2:0]addr;//建立的存儲(chǔ)器有8個(gè)地址空間outputreg[7:0]data;//數(shù)據(jù)是8位的reg[7:0]memory[0:7];//8x8位數(shù)據(jù)的存儲(chǔ)器always@(posedgeclk,posedgerst) if(rst) begin:init//該順序塊用于初始化ROM值
memory[0]=8’b0000_0001; memory[1]=8’b0000_0010; memory[2]=8’b0000_0100; memory[3]=8’b0000_1000; memory[4]=8’b0001_0000; memory[5]=8’b0010_0000; memory[6]=8’b0100_0000; memory[7]=8’b1000_0000; endelse begin:read//該順序塊用于讀取ROM值
if(rd)data=memory[addr]; endendmodule常量及其數(shù)據(jù)類型
數(shù)字聲明在VerilogHDL中,整型常量即整常數(shù)有以下四種進(jìn)制表示形式:二進(jìn)制整數(shù)(b或B)、十進(jìn)制整數(shù)(d或D)、十六進(jìn)制整數(shù)(h或H)和八進(jìn)制整數(shù)(o或O)。數(shù)字表達(dá)方式有以下三種:①<位寬><進(jìn)制><數(shù)字>,這是一種全面的描述方式。②<進(jìn)制><數(shù)字>,在這種描述方式中,數(shù)字的位寬采用缺省位寬(這由具體的機(jī)器系統(tǒng)決定,但至少為32位)。③<數(shù)字>,在這種描述方式中,進(jìn)制缺省為十進(jìn)制。常量及其數(shù)據(jù)類型
x和z值在數(shù)字電路中,x代表不定值,z代表高阻值。一個(gè)x可以用來(lái)定義十六進(jìn)制數(shù)的四位二進(jìn)制數(shù)的狀態(tài),八進(jìn)制數(shù)的三位,二進(jìn)制數(shù)的一位。z的表示方式同x類似。z還有一種表達(dá)方式是可以寫作“?”。
常量及其數(shù)據(jù)類型
負(fù)數(shù)一個(gè)數(shù)字可以被定義為負(fù)數(shù),只需在位寬表達(dá)式前加一個(gè)減號(hào),減號(hào)必須寫在數(shù)字定義表達(dá)式的最前面。注意減號(hào)不可以放在位寬和進(jìn)制之間,也不可以放在進(jìn)制和具體的數(shù)之間。見下例:-8'd4 //這個(gè)表達(dá)式代表4的補(bǔ)數(shù)(用八位二進(jìn)制數(shù)表示)8'd-4 //非法格式
常量及其數(shù)據(jù)類型
下劃線下劃線可以用來(lái)分隔開數(shù)的表達(dá),以提高程序可讀性。但不可以用在位寬和進(jìn)制處,只能用在具體的數(shù)字之間。見下例:16'b1010_1011_1111_1010 //合法格式8'b_0011_1010
//非法格式當(dāng)常量不說明位數(shù)時(shí),默認(rèn)值是32位。例:10=32’d10=32’b10101=32’d1=32’b1-1=-32’d1=32’hFFFFFFFF‘BX=32’BX=32’HXXXXXXXX常量及其數(shù)據(jù)類型
參數(shù)(parameter)型在VerilogHDL中用parameter來(lái)定義常量,即用parameter定義一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)常量,稱為符號(hào)常量,即標(biāo)識(shí)符形式的常量,采用標(biāo)識(shí)符代表一個(gè)常量可提高程序的可讀性和可維護(hù)性。parameter型數(shù)據(jù)是一種常數(shù)型的數(shù)據(jù),其說明格式如下:parameter 參數(shù)名1=表達(dá)式,參數(shù)名2=表達(dá)式,…,參數(shù)名n=表達(dá)式;設(shè)計(jì)參數(shù)型N位加法器【例2-7】設(shè)計(jì)參數(shù)型N位加法器moduleadd_N(X,Y,sum,co);parameterN=4;input[N-1:0]X,Y;output[N-1:0]sum;outputco;assign{co,sum}=X+Y;endmodule//16位加法器只需要調(diào)用參數(shù)型N位加法器即可moduleadd_16(X,Y,s,c);input[15:0]X,Y;output[15:0]s;outputc;add_N#(16)add16(X,Y,s,c);endmodule//8位加法器只需要調(diào)用參數(shù)型N位加法器即可moduleadd_8(X,Y,s,c);input[7:0]X,Y;output[7:0]s;outputc;add_Nadd8(X,Y,s,c);defparamadd8.N=8;endmodule2.4編譯預(yù)處理
1.宏定義`define
2.“文件包含”處理`include
宏定義應(yīng)用舉例【例2-8】宏定義應(yīng)用舉例`defineM3+2modulemacro_ex(x,y);input[3:0]x;output[5:0]y;assigny=`M*x;endmodule文件包含示例【例2-9】文件包含示例文件one
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 版回遷房購(gòu)房合同
- 灰砂磚代理購(gòu)銷協(xié)議
- 別墅品質(zhì)專業(yè)保證
- 瓷磚質(zhì)量保證書承諾
- 房屋租賃合同補(bǔ)充協(xié)議糾紛處理
- 借款保證書的書寫
- 工作失責(zé)反省書模板
- 經(jīng)濟(jì)印刷服務(wù)合同
- 電信服務(wù)合同仲裁程序說明
- 藝人簽約經(jīng)紀(jì)人合約
- MOOC 葡萄酒文化與鑒賞-西北工業(yè)大學(xué) 中國(guó)大學(xué)慕課答案
- MOOC 民事訴訟法學(xué)-西南政法大學(xué) 中國(guó)大學(xué)慕課答案
- (正式版)SHT 3045-2024 石油化工管式爐熱效率設(shè)計(jì)計(jì)算方法
- (2024年)保安培訓(xùn)圖文課件
- 《數(shù)字圖像處理》題庫(kù)1(選擇題、填空題、判斷題)試題+答案
- 智能網(wǎng)聯(lián)車路云協(xié)同系統(tǒng)架構(gòu)與關(guān)鍵技術(shù)研究綜述
- 2023流域超標(biāo)準(zhǔn)洪水防御預(yù)案編制導(dǎo)則
- 高等數(shù)學(xué)(高職教育)全套教學(xué)課件
- 瑞幸咖啡品牌營(yíng)銷策略研究報(bào)告
- 統(tǒng)編版語(yǔ)文八年級(jí)下冊(cè)全冊(cè)大單元整體教學(xué)設(shè)計(jì)表格式教案
- 蒙牛學(xué)生奶培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論