版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四局部
VerilogHDL語(yǔ)言〔第四、五、六、七章〕編輯課件一、
初識(shí)VerilogHDL三、VerilogHDL行為語(yǔ)句主要內(nèi)容:二、VerilogHDL根底四、VerilogHDL設(shè)計(jì)風(fēng)格五、常見(jiàn)組合與時(shí)序邏輯電路VerilogHDL描述編輯課件常用組合電路模塊的設(shè)計(jì)常用時(shí)序電路模塊的設(shè)計(jì)常見(jiàn)組合與時(shí)序邏輯電路VerilogHDL描述用VerilogHDL描述電路模塊小結(jié)編輯課件一、用VerilogHDL描述電路模塊小結(jié)模塊中最重要的局部是邏輯功能定義局部。有3種方法可在模塊中產(chǎn)生邏輯功能:〔1〕用實(shí)例元件:內(nèi)置門(mén)元件、開(kāi)關(guān)元件、自行設(shè)計(jì)生成的元件。〔結(jié)構(gòu)描述〕如:and#2ul(q,a,b)端口信號(hào)名稱可以采用位置關(guān)聯(lián)方法和名稱關(guān)聯(lián)方法進(jìn)行連接。〔2〕用“assign〞聲明語(yǔ)句連續(xù)賦值。〔數(shù)據(jù)流描述〕采用“assign〞語(yǔ)句是描述組合邏輯電路最常用的方法之一?!?〕用“always〞或“initial〞過(guò)程塊?!残袨槊枋觥尘庉嬚n件使用initial和always的區(qū)別“always〞塊既可用于描述組合邏輯,也可描述時(shí)序邏輯。always語(yǔ)句是不斷地重復(fù)活動(dòng)的,直到仿真過(guò)程結(jié)束。但always語(yǔ)句后的過(guò)程塊是否運(yùn)行,那么要看它的觸發(fā)條件是否滿足,如滿足那么運(yùn)行過(guò)程塊一次,再次滿足那么再運(yùn)行一次,直至仿真過(guò)程結(jié)束?!癷nitial〞塊一般用于變量初始化及仿真波形產(chǎn)生。Initial語(yǔ)句只執(zhí)行一次。一個(gè)模塊中這三種表達(dá)方式是并發(fā)執(zhí)行的,有多個(gè)實(shí)例元件、“assign〞聲明語(yǔ)句、“always〞塊也是并發(fā)執(zhí)行的。但“always〞塊內(nèi)是順序執(zhí)行的。在一個(gè)模塊中,使用initial和always語(yǔ)句的次數(shù)是不受限制的,它們都是同時(shí)開(kāi)始運(yùn)行的。編輯課件行為描述“always〞或“initial〞過(guò)程塊構(gòu)成了行為級(jí)建模的根底,即所有行為級(jí)語(yǔ)句只能出現(xiàn)在這兩種塊之中。只有實(shí)例元件和“assign〞連續(xù)賦值語(yǔ)句可以獨(dú)立在塊外。行為級(jí)描述時(shí)如果分支條件比較少,且有先后順序,選擇if-else語(yǔ)句;如果條件分支比較多,使用case〔casez、casex〕語(yǔ)句更加方便。循環(huán)語(yǔ)句有4種(for、repeat、while、forever),建議首選for語(yǔ)句。編輯課件二、常用組合電路模塊的設(shè)計(jì)組合邏輯電路在數(shù)字系統(tǒng)中起著根本組件的作用。組合邏輯電路包括:門(mén)電路、雙向三態(tài)門(mén)、加法器、多路選擇器、比較器、乘法器、總線等。編輯課件〔一〕簡(jiǎn)單組合電路的描述1、根本門(mén)電路的描述編輯課件(2)用assign連續(xù)賦值語(yǔ)句描述modulegate1(F,A,B,C,D);inputA,B,C,D;outputF;assignF=(~(A&B))|(B&C&D);
//連續(xù)賦值語(yǔ)句endmodule(3)用過(guò)程語(yǔ)句always塊描述modulegate2(F,A,B,C,D);inputA,B,C,D;outputF;regF;always@(AorBorCorD)
//always過(guò)程語(yǔ)句
F=~(A&B)|(B&C&D);endmodule〔1〕調(diào)用內(nèi)置門(mén)元件描述modulegate3(F,A,B,C,D);inputA,B,C,D;outputF;nand(F1,A,B);and(F2,B,C,D);or(F,F1,F2);
//調(diào)用內(nèi)置門(mén)endmoduleassignF1=~(A&B);assignF2=(B&C&D);assignF=F1|F2;或編輯課件2、三態(tài)門(mén)的描述regout;beginalways@(enorin)out=en?in:’bz;end〔2〕用assign連續(xù)賦值語(yǔ)句描述 〔3〕用過(guò)程語(yǔ)句always塊描述〔1〕調(diào)用內(nèi)置門(mén)元件描述bufif1b1(out,in,en);assignout=en?in:’bz;編輯課件※在VerilogHDL中,描述簡(jiǎn)單的組合邏輯通常使用assign結(jié)構(gòu)。注意:條件運(yùn)算符是一種在組合邏輯實(shí)現(xiàn)分支判斷時(shí)常使用的格式。編輯課件〔二〕復(fù)雜組合電路的描述※一般用always塊實(shí)現(xiàn)較復(fù)雜的組合邏輯電路1、3線-8線譯碼器moduledecoder_38(out,in);output[7:0]out;input[2:0]in;reg[7:0]out;always@(in)begincase(in)3’b000:out=8’b11111110;3’b001:out=8’b11111101;3’b010:out=8’b11111011;3’b011:out=8’b11110111;3’b100:out=8’b11101111;3’b101:out=8’b11011111;3’b110:out=8’b10111111;3’b111:out=8’b01111111;default:
out
=8
'bx;endcaseendendmodule編輯課件QUARTUSII編譯后的生成的模塊符號(hào):2編輯課件moduledecode4_7(a,b,c,d,e,f,g,D3,D2,D1,D0);outputa,b,c,d,e,f,g;inputD3,D2,D1,D0;rega,b,c,d,e,f,g;always@(D3orD2orD1orD0)begincase({D3,D2,D1,D0})4’d0:{a,b,c,d,e,f,g}=7’b1111110;4’d1:{a,b,c,d,e,f,g}=7’b0110000;4’d2:{a,b,c,d,e,f,g}=7’b1101101;4’d3:{a,b,c,d,e,f,g}=7’b1111001;4’d4:{a,b,c,d,e,f,g}=7’b0110011;4’d5:{a,b,c,d,e,f,g}=7’b1011011;4’d6:{a,b,c,d,e,f,g}=7’b1011111;4’d7:{a,b,c,d,e,f,g}=7’b1110000;4’d8:{a,b,c,d,e,f,g}=7’b1111111;4’d9:{a,b,c,d,e,f,g}=7’b1111011;default:{a,b,c,d,e,f,g}=7’bz;endcaseendendmodule2、BCD碼——七段數(shù)碼顯示譯碼器編輯課件QUARTUSII編譯后的生成的模塊符號(hào):編輯課件3、8線-3線優(yōu)先編碼器moduleencoder8_3(outcode,a,b,c,d,e,f,g,h);output[2:0]outcode;inputa,b,c,d,e,f,g,h;reg[2:0]outcode;always@(aorborcordoreorforgorh)begin
if(h)outcode=3’b111;elseif(g)outcode=3’b110;elseif(f)outcode=3’b101;elseif(e)outcode=3’b100;elseif(d)outcode=3’b011;elseif(c)outcode=3’b010;elseif(b)outcode=3’b001;elseif(a)outcode=3’b000;elseoutcode=3’bzzz;end
endmodule要求:輸入高電平有效,輸出為原碼,哪一個(gè)輸入的優(yōu)先權(quán)最高?哪一個(gè)最低?編輯課件QUARTUSII編譯后的生成的模塊符號(hào):編輯課件4、數(shù)據(jù)選擇器〔2選1、4選1)〔略〕5、奇偶校驗(yàn)位產(chǎn)生器moduleparity(even,odd,bus);input[7:0]bus;outputeven,odd;assignodd=^bus;//縮位運(yùn)算產(chǎn)生奇校驗(yàn)位
assigneven=~odd;
//產(chǎn)生偶校驗(yàn)位endmodule編輯課件6、程序如左所示,說(shuō)出for語(yǔ)句的執(zhí)行過(guò)程,說(shuō)明該電路的功能modulevoter7(pass,vote);outputpass;input[6:0]vote;reg[2:0]sum;integeri;regpass;always@(vote)beginsum=0;for(i=0;i<=6;i=i+1)if(vote[i])sum=sum+1;if(sum[2])pass=1;elsepass=0;endendmodule〔vote[6]orvote[5]orvote[4]orvote[3]orvote[2]orvote[1]orvote[0]〕3’b000循環(huán)體//i=7時(shí)這條語(yǔ)句得到執(zhí)行,判斷sum是否大于等于4電路功能:7人多數(shù)表決器編輯課件練習(xí):采用VerilogHDLcase語(yǔ)句對(duì)半加器進(jìn)行行為描述modulehalfadder(A,B,S,C);inputA,B;outputS,C;regS,C;always@(AorB)begincase({A,B})2'B00:{S,C}=2'B00;2'B01:{S,C}=2'B10;2'B10:{S,C}=2'B10;2'B11:{S,C}=2'B01;endcaseendendmodule編輯課件(一)簡(jiǎn)單時(shí)序邏輯電路的描述※通常使用always@(posedgeclk)或@(negedgeclk)塊來(lái)描述時(shí)序邏輯。基本D觸發(fā)器moduleDFF(Q,D,CLK);outputQ;inputD,CLK;regQ;always@(posedgeCLK)Q<=D;endmodule三、常用時(shí)序電路模塊設(shè)計(jì)上升沿有效的邊沿結(jié)構(gòu)的D觸發(fā)器編輯課件(二)復(fù)雜時(shí)序邏輯電路的描述※通常在always過(guò)程語(yǔ)句里使用條件語(yǔ)句來(lái)實(shí)現(xiàn)較復(fù)雜的時(shí)序邏輯電路。編輯課件1、帶清零端、置1端的D觸發(fā)器moduleDFF1(q,qn,d,clk,set,reset);outputq,qn;inputd,clk,set,reset;regq,qn;always@(posedgeclk)beginif(!reset)beginq=0;qn=1;endelseif(!set)beginq=1;qn=0;endelsebeginq<=d;qn<=~d;endendendmoduleornegedgesetornegedgereset同步清零,低電平有效.優(yōu)先級(jí)高同步置數(shù),低電平有效.優(yōu)先級(jí)低異步置數(shù)或異步清零?編輯課件2、帶清零端、置1端的JK觸發(fā)器moduleJK_FF(CLK,J,K,Q,RS,SET);inputCLK,J,K,SET,RS;outputQ;regQ;always@(posedgeCLKornegedgeRSornegedgeSET)beginif(!RS)Q<=1’B0;elseif(!SET)q<=1’B1;elsecase({J,K})2’b00:Q<=Q;2’b01:Q<=1’b0;2’b10:Q<=1’b1;2’b11:Q<=~Q;endcaseendendmodule異步清零、異步置數(shù)異步清零,低電平有效編輯課件3、數(shù)據(jù)存放器modulereg8(out_data,in_data,clk,clr);output[7:0]out_data;input[7:0]in_data;inputclk,clr;reg[7:0]out_data;always@(posedgeclkorposedgeclr)beginif(clr)out_data=0;elseout_data=in_data;endendmodule
異步清零,高電平有效編輯課件4、數(shù)據(jù)鎖存器modulelatch_8(qout,data,clk);output[7:0]qout;input[7:0]data;inputclk;reg[7:0]qout;always@(clkordata)if(clk)qout=data;endmodule
編輯課件存放器與鎖存器存放器與鎖存器的異同:相同點(diǎn):功能相同,都具有保存數(shù)據(jù)的功能。區(qū)別:鎖存器一般是由電平信號(hào)來(lái)控制的,屬于電平敏感型,而存放器一般由同步時(shí)鐘信號(hào)控制,屬于邊沿敏感型,假設(shè)數(shù)據(jù)有效滯后于控制信號(hào)有效,那么只能使用鎖存器,假設(shè)數(shù)據(jù)提前于控制信號(hào),并要求同步操作,那么可以選擇存放器來(lái)存放數(shù)據(jù)編輯課件moduleshifter(din,clk,clr,dout);inputdin,clk,clr;output[7:0]dout;reg[7:0]dout;always@(posedgeclk)beginif(clr)dout=8’b0;else begin dout=dout<<1; dout[0]=din;endendendmodule5、左移存放器編輯課件6、循環(huán)左移存放器moduleshifter(clk,clr,dout,load,d);inputclk,clr,load;input[7:0]d;output[7:0]dout;reg[7:0]dout;regdin;always@(posedgeclk)beginif(clr)dout=8‘b0;//同步低電平復(fù)位
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 組原課程設(shè)計(jì)循環(huán)結(jié)構(gòu)
- 研學(xué)課程設(shè)計(jì)植物與動(dòng)物
- 2024年貴州省建筑安全員-B證考試題庫(kù)及答案
- 電廠化學(xué)課程設(shè)計(jì)
- 種植勞動(dòng)課程設(shè)計(jì)理念
- 紋身構(gòu)圖課程設(shè)計(jì)
- 小學(xué)體驗(yàn)館課程設(shè)計(jì)
- 宿舍課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)
- 2025安徽省安全員-B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 2024年江蘇省建筑安全員-B證考試題庫(kù)及答案
- 2025蛇年元旦晚會(huì)
- 2024過(guò)敏性休克搶救指南(2024)課件干貨分享
- 2024年貴州貴陽(yáng)市貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 汕頭市中小學(xué)教學(xué)研究中心招聘專(zhuān)職教研員考試試題及答案
- 數(shù)字孿生應(yīng)用技術(shù)基礎(chǔ)知識(shí)考試題庫(kù)(600題)
- 美國(guó)RAZ分級(jí)讀物目錄整理
- 中科院大連化物所模板PPT課件
- YOX液力偶合器使用說(shuō)明書(shū)
- 優(yōu)秀團(tuán)支部申報(bào)表
- 窒息急救流程.doc
評(píng)論
0/150
提交評(píng)論