




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1Verilog設(shè)計(jì)快速入門設(shè)計(jì)快速入門 2內(nèi)部信號(hào)聲明內(nèi)部信號(hào)聲明assign語句語句底層模塊或門原語底層模塊或門原語調(diào)用調(diào)用(包括生成塊包括生成塊)Initial或或always語句塊語句塊任務(wù)和函數(shù)定義任務(wù)和函數(shù)定義module 模塊名模塊名 (端口列表端口列表);端口信號(hào)聲明端口信號(hào)聲明;參數(shù)聲明參數(shù)聲明;endmodulespecify 塊塊(路徑延遲路徑延遲)Verilog模塊結(jié)構(gòu)模塊結(jié)構(gòu)說明:說明:n淺色部分用得較少;淺色部分用得較少;n常用語句只有三種:常用語句只有三種:nassign語句語句nalways語句語句n底層模塊調(diào)用語句底層模塊調(diào)用語句n三種語句順序無關(guān)三種語句順序
2、無關(guān)n除開始的除開始的module模模塊名塊名和結(jié)束的和結(jié)束的endmodule必須寫必須寫外,其他都是可選的。外,其他都是可選的。功能描述部分功能描述部分模塊說明部分模塊說明部分3Verilog模塊結(jié)構(gòu)模塊結(jié)構(gòu)例例1:二選一數(shù)據(jù)選擇器的描述:二選一數(shù)據(jù)選擇器的描述二選一數(shù)據(jù)選擇器的結(jié)構(gòu)之一二選一數(shù)據(jù)選擇器的結(jié)構(gòu)之一二選一數(shù)據(jù)選擇器的符號(hào)二選一數(shù)據(jù)選擇器的符號(hào)設(shè)設(shè)a、b、s波形已知,可得波形已知,可得y波形:波形:4Verilog模塊結(jié)構(gòu)模塊結(jié)構(gòu)2選選1多路選擇器的多路選擇器的Verilog描述描述內(nèi)部信號(hào)內(nèi)部信號(hào)聲明聲明assign語句語句底層模塊或底層模塊或門原語調(diào)用門原語調(diào)用always
3、語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號(hào)聲明端口信號(hào)聲明; 參數(shù)聲明參數(shù)聲明;endmoduleabsyMUX21a5Verilog程序結(jié)構(gòu)程序結(jié)構(gòu)例例2:邊沿:邊沿D觸發(fā)器的觸發(fā)器的Verilog描述描述內(nèi)部信號(hào)內(nèi)部信號(hào)聲明聲明assign語句語句底層模塊或底層模塊或門原語調(diào)用門原語調(diào)用always語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號(hào)聲明端口信號(hào)聲明; 參數(shù)聲明參數(shù)聲明;endmodule6Verilog模塊結(jié)構(gòu)模塊結(jié)構(gòu)1模塊說明部分模塊說明部分 module 模塊名模塊名 (端口列表端口列表); 端口信號(hào)聲明端口信號(hào)聲明;
4、 參數(shù)聲明參數(shù)聲明;l 模塊名是指電路的名字,由用戶指定,最好與文件名一致(特別是在模塊名是指電路的名字,由用戶指定,最好與文件名一致(特別是在Quartus II軟件中調(diào)試時(shí));軟件中調(diào)試時(shí));l 端口列表是指電路的輸入端口列表是指電路的輸入/輸出信號(hào)名稱列表,信號(hào)名由用戶指定,各名輸出信號(hào)名稱列表,信號(hào)名由用戶指定,各名稱間用逗號(hào)隔開;稱間用逗號(hào)隔開;l 端口信號(hào)聲明是要說明端口信號(hào)的輸入輸出屬性、信號(hào)的數(shù)據(jù)類型,以及端口信號(hào)聲明是要說明端口信號(hào)的輸入輸出屬性、信號(hào)的數(shù)據(jù)類型,以及信號(hào)的位寬;輸入輸出屬性有信號(hào)的位寬;輸入輸出屬性有input,output,inout三種,信號(hào)的數(shù)三種,信
5、號(hào)的數(shù)據(jù)類型常用的有據(jù)類型常用的有wire和和reg兩種;信號(hào)的位寬用兩種;信號(hào)的位寬用n1:n2表示;同一類表示;同一類信號(hào)之間用逗號(hào)隔開;信號(hào)之間用逗號(hào)隔開;l 參數(shù)聲明要說明參數(shù)的名稱和初值參數(shù)聲明要說明參數(shù)的名稱和初值輸入輸出屬性輸入輸出屬性 數(shù)據(jù)類型數(shù)據(jù)類型 位寬位寬 名稱名稱 parameter 數(shù)據(jù)類型數(shù)據(jù)類型 參數(shù)名參數(shù)名 = 初值初值7例:例:module full_adder (A,B,CIN,S,COUT); input 3:0 A,B; input CIN; output reg 3:0 S; output COUT;位寬如果不做說明的話,默認(rèn)是位寬如果不做說明的話,默
6、認(rèn)是1位;位;數(shù)據(jù)類型不做說明的話,默認(rèn)是數(shù)據(jù)類型不做說明的話,默認(rèn)是wire型的。型的。S位寬為位寬為4位,對(duì)應(yīng)信號(hào)為位,對(duì)應(yīng)信號(hào)為S3、S2、S1、S0根據(jù)模塊說明部分,我們可以得出電路符號(hào)根據(jù)模塊說明部分,我們可以得出電路符號(hào)ABCINSfull_adderCOUT82. assign語句語句內(nèi)部信號(hào)內(nèi)部信號(hào)聲明聲明assign語句語句底層模塊或底層模塊或門原語調(diào)用門原語調(diào)用always語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號(hào)聲明端口信號(hào)聲明;endmoduleassign語句稱作連續(xù)賦值語句語句稱作連續(xù)賦值語句assign 賦值目標(biāo)賦值目標(biāo) = 表達(dá)式表
7、達(dá)式例:例:特點(diǎn):特點(diǎn):l之所以稱為連續(xù)賦值語句是指其總是處于激活狀態(tài),只之所以稱為連續(xù)賦值語句是指其總是處于激活狀態(tài),只要表達(dá)式中的操作數(shù)有變化,立即進(jìn)行計(jì)算和賦值。要表達(dá)式中的操作數(shù)有變化,立即進(jìn)行計(jì)算和賦值。(與連續(xù)賦值語句對(duì)應(yīng)的另一種語句稱為過程賦值語句)(與連續(xù)賦值語句對(duì)應(yīng)的另一種語句稱為過程賦值語句)l賦值目標(biāo)必須是賦值目標(biāo)必須是wire型的,型的,wire表示電路間的連線。表示電路間的連線。ayAbyassign y=a;assign y=a&b;基本格式:基本格式:92. assign語句語句例:例:assign M=B|C; assign Y=A&M; MM和
8、和Y都必須是都必須是wire型的型的102. assign語句語句Verilog具有豐富的表達(dá)式運(yùn)算功能,可用于具有豐富的表達(dá)式運(yùn)算功能,可用于assign語句語句詳見夏宇聞教材第詳見夏宇聞教材第6章,自學(xué)。章,自學(xué)。(1) 算術(shù)型*乘法/除法+加法-減法%求余* 求冪例:Y=5%2;Y=2*3;求余,結(jié)果為1求冪,結(jié)果為8說明l 加減乘除、求冪的操作數(shù)可以是實(shí)數(shù)也可以是整數(shù),求余運(yùn)算的操作數(shù)只能是整數(shù)。l 求余運(yùn)算結(jié)果取第一個(gè)操作數(shù)的符號(hào);(2) 邏輯型!邏輯非&邏輯與|邏輯或例:Y=! (32) Y=(26);Y=(26);Y=(2大于= 大于等于2) Y=(3=2);Y=(3=2
9、);Y=(3右移 算術(shù)右移 1;Y= 4sb1001 1; 結(jié)果為0100結(jié)果為1100說明l 移位運(yùn)算的操作數(shù)是1位或多位二進(jìn)制數(shù);l 向左或向右移n位;l 只有對(duì)有符號(hào)數(shù)的算術(shù)右移自動(dòng)補(bǔ)符號(hào)位;l 其他移位均自動(dòng)補(bǔ)0。操作數(shù) 移位符 n;格式(8) 拼接復(fù)制運(yùn)算符拼接復(fù)制拼接例:Y= 4b1001, 2b11;Y= 42b01; Y= 42b01, 2b11; 結(jié)果為100111結(jié)果為01010101說明l將多個(gè)操作數(shù)拼接起來;l將操作數(shù)復(fù)制n遍并拼接起來;l可以組合使用。操作數(shù)1, 操作數(shù)2, 格式n操作數(shù)1, 操作數(shù)2, 格式(9) 條件運(yùn)算符? : 用于條件賦值例:Y= a ? b
10、: c;Y= s1 ? (s0 ? d3 : d2) : (s0? d1 : d0);如果a=1,則y=b;如果a=0,則y=c。如果a=x,則y=x。說明l根據(jù)表達(dá)式1的值,決定運(yùn)算結(jié)果;l如果表達(dá)式1值為1,則結(jié)果等于表達(dá)式2;l如果表達(dá)式1值為0,則結(jié)果等于表達(dá)式3;l如果表達(dá)式1值為x,則結(jié)果為x;l可以嵌套。表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3格式一203. always語句塊語句塊內(nèi)部信號(hào)內(nèi)部信號(hào)聲明聲明assign語句語句底層模塊或底層模塊或門原語調(diào)用門原語調(diào)用always語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號(hào)聲明端口信號(hào)聲明;endmodule
11、always語句塊又稱過程塊語句塊又稱過程塊基本格式:基本格式:always (敏感信號(hào)條件表敏感信號(hào)條件表) 各類順序語句;各類順序語句; 特點(diǎn):特點(diǎn):l always語句本身不是單一的有意義的一條語句,而是和下面的語語句本身不是單一的有意義的一條語句,而是和下面的語句一起構(gòu)成一個(gè)語句塊,稱之為過程塊;過程塊中的賦值語句稱過句一起構(gòu)成一個(gè)語句塊,稱之為過程塊;過程塊中的賦值語句稱過程賦值語句;程賦值語句;l 該語句塊不是總處于激活狀態(tài),當(dāng)滿足激活條件時(shí)才能被執(zhí)行,否該語句塊不是總處于激活狀態(tài),當(dāng)滿足激活條件時(shí)才能被執(zhí)行,否則被掛起,掛起時(shí)即使操作數(shù)有變化,也不執(zhí)行賦值,賦值目標(biāo)值則被掛起,掛
12、起時(shí)即使操作數(shù)有變化,也不執(zhí)行賦值,賦值目標(biāo)值保持不變;保持不變;l 賦值目標(biāo)必須是賦值目標(biāo)必須是reg型的。型的。例: always (posedge CLK) Q=D;3. always語句塊語句塊l激活條件由敏感信號(hào)條件表決定,當(dāng)敏感條件滿足時(shí),激活條件由敏感信號(hào)條件表決定,當(dāng)敏感條件滿足時(shí),過程塊被激活。過程塊被激活。敏感條件有兩種,一種是邊沿敏感,一種是電平敏感。敏感條件有兩種,一種是邊沿敏感,一種是電平敏感。電平敏感:(posedge 信號(hào)名)邊沿敏感:(negedge 信號(hào)名)(信號(hào)名列表)信號(hào)上升沿到來信號(hào)下降沿到來例:(posedge clk)例:(negedge clk)信
13、號(hào)列表中的任一個(gè)信號(hào)有變化例:(a,b,c)當(dāng)a,b,c中有一個(gè)發(fā)生變化說明: 逗號(hào)可以換成or例:(a or b or c)3. always語句塊語句塊例:例:always (posedge CLK)always (posedge CLK) Q=D Q=D;當(dāng)當(dāng)CLKCLK上升沿到來時(shí),激活該語句塊,上升沿到來時(shí),激活該語句塊,將將D D的值賦給的值賦給Q Q;否則,該語句塊掛起,即使否則,該語句塊掛起,即使D D有變化,有變化,Q Q的值也保持不變,直到下一次賦值。的值也保持不變,直到下一次賦值。例:例:always (D)always (D) Q=D Q=D;當(dāng)當(dāng)D D有變化時(shí)(不管是
14、由有變化時(shí)(不管是由1 1變變0 0還是由還是由0 0變變1 1),激活該語句塊,將),激活該語句塊,將D D的值賦的值賦給給Q Q;否則,該語句塊掛起,否則,該語句塊掛起,Q Q的值保持不的值保持不變,直到下一次賦值。變,直到下一次賦值。D DQ QD DCLKCLKQ QD DQ Q3. always語句塊語句塊說明:l過程塊中的賦值目標(biāo)必須是reg型的。l由于always語句可以描述邊沿變化,在設(shè)計(jì)時(shí)序電路中得到廣泛應(yīng)用。lalways語句中還可以使用if、case、for循環(huán)等語句,其功能更加強(qiáng)大。例:always (posedge CLK) Q=D;例:always (D) Q=D;
15、必須是reg型的3. always語句塊語句塊253. always語句塊語句塊assign語句和語句和always語句的主要區(qū)別:語句的主要區(qū)別:連續(xù)賦值語句總是處于激活狀態(tài),只要操作數(shù)有變化馬上進(jìn)行連續(xù)賦值語句總是處于激活狀態(tài),只要操作數(shù)有變化馬上進(jìn)行計(jì)算和賦值;計(jì)算和賦值;過程賦值語句只有當(dāng)激活該過程時(shí),才會(huì)進(jìn)行計(jì)算和賦值,如過程賦值語句只有當(dāng)激活該過程時(shí),才會(huì)進(jìn)行計(jì)算和賦值,如果該過程不被激活,即使操作數(shù)發(fā)生變化也不會(huì)計(jì)算和賦值。果該過程不被激活,即使操作數(shù)發(fā)生變化也不會(huì)計(jì)算和賦值。verilog規(guī)定規(guī)定assign中的賦值目標(biāo)必須是中的賦值目標(biāo)必須是wire型的,而型的,而alway
16、s語句中的賦值目標(biāo)必須是語句中的賦值目標(biāo)必須是reg型的。型的。assign Q=Dalways (posedge clk) Q=D;例:例:只要只要D發(fā)生變化,馬發(fā)生變化,馬上進(jìn)行計(jì)算和賦值;上進(jìn)行計(jì)算和賦值; Q必須是必須是wire型。型。只有當(dāng)只有當(dāng)clk上升沿到來時(shí),才能激活該上升沿到來時(shí),才能激活該塊語句,才能進(jìn)行計(jì)算和賦值;否則,塊語句,才能進(jìn)行計(jì)算和賦值;否則,即使即使D發(fā)生變化也不會(huì)計(jì)算和賦值。在發(fā)生變化也不會(huì)計(jì)算和賦值。在未被激活時(shí),未被激活時(shí),Q的值保持不變。的值保持不變。Q必須是必須是reg型。型。263. always語句塊語句塊lalways語句塊中除了可以使用表達(dá)式
17、賦值以外,還可以使用語句塊中除了可以使用表達(dá)式賦值以外,還可以使用if,case等行為描述語句,還能夠描述邊沿變化,因此其功等行為描述語句,還能夠描述邊沿變化,因此其功能比能比assign語句更強(qiáng)大(語句更強(qiáng)大(assign語句不能使用語句不能使用if等語句,也等語句,也不能描述邊沿變化)。不能描述邊沿變化)。例:例:module DFF2 (CLK,D,Q,RST,EN)input CLK,D,RST,EN;output Q;reg Q;always (posedge CLK or negedge RST)begin if (!RST) Q=0; else if (EN) Q=Dendend
18、moduleDENQDCLKQRST273. always語句塊語句塊always語句塊中如果有多條賦值語句必須將其用語句塊中如果有多條賦值語句必須將其用begin end包括起來,包括起來,assign語句中沒有語句中沒有begin end。例:例:module adder (a,b,cin,s,cout) input a,b,cin; output s,cout; reg s,cout;always (a,b,cin)begin s=abcin; cout=(a&b)|(a&cin)|(b&cin);endendmodule思考問題:在仿思考問題:在仿真時(shí),真時(shí),b
19、egin和和end之間的語句之間的語句執(zhí)行順序如何?執(zhí)行順序如何?請(qǐng)大家畫出該請(qǐng)大家畫出該模塊的端口符模塊的端口符號(hào)圖和電路圖號(hào)圖和電路圖3. always語句塊語句塊begin end之間的賦值語句有阻塞賦值和非阻塞賦值之分。之間的賦值語句有阻塞賦值和非阻塞賦值之分。阻塞賦值:語句順序執(zhí)行,前面的執(zhí)行完才能執(zhí)行后面;阻塞賦值:語句順序執(zhí)行,前面的執(zhí)行完才能執(zhí)行后面;賦值符號(hào):賦值符號(hào):=非阻塞賦值:所有語句并行執(zhí)行。非阻塞賦值:所有語句并行執(zhí)行。賦值符號(hào):賦值符號(hào):=賦值目標(biāo)賦值目標(biāo)1=表達(dá)式表達(dá)式1;賦值目標(biāo)賦值目標(biāo)2=表達(dá)式表達(dá)式2;賦值目標(biāo)賦值目標(biāo)1=表達(dá)式表達(dá)式1;賦值目標(biāo)賦值目標(biāo)2
20、=表達(dá)式表達(dá)式2;賦值語句賦值語句1會(huì)阻塞賦值語句會(huì)阻塞賦值語句2 ,即只有當(dāng)賦值語句,即只有當(dāng)賦值語句1執(zhí)執(zhí)行完才能執(zhí)行賦值語句行完才能執(zhí)行賦值語句2。賦值語句賦值語句1不會(huì)阻塞賦不會(huì)阻塞賦值語句值語句2 ,賦值語句,賦值語句1和賦值語句和賦值語句2并行執(zhí)行。并行執(zhí)行。3. always語句塊語句塊舉例比較:舉例比較:l阻塞賦值阻塞賦值begin m=a*b; y=m;endl非阻塞賦值非阻塞賦值begin m=a*b; y=m;end當(dāng)當(dāng)m=a*b 執(zhí)行完才能執(zhí)行執(zhí)行完才能執(zhí)行y=m 。當(dāng)當(dāng)m賦值完成后,才能執(zhí)行賦值完成后,才能執(zhí)行y的賦值,的賦值,y得到的得到的是是m的新值。的新值。m和
21、和y的賦值并行執(zhí)行,的賦值并行執(zhí)行,y得到的是得到的是m的舊值。的舊值。m=a*b 和和y=m并行執(zhí)行并行執(zhí)行 。l阻塞賦值的實(shí)質(zhì):右邊表達(dá)式的計(jì)算和對(duì)左邊寄存器變量的賦值是一個(gè)統(tǒng)一的原子操作中的兩個(gè)動(dòng)作,這兩個(gè)動(dòng)作之間不能再插入其他任何動(dòng)作。l非阻塞賦值的實(shí)質(zhì):首先按順序計(jì)算右邊表達(dá)式的值,但是并不馬上賦值,而是要等到過程結(jié)束時(shí)再按順序賦值。賦值目標(biāo)1=表達(dá)式1;賦值目標(biāo)2=表達(dá)式2;賦值目標(biāo)1=表達(dá)式1;賦值目標(biāo)2=表達(dá)式2;l 阻塞賦值【例8-6】always (A,B)beginM1=A;M2=B&M1;Q=M1|M2;end設(shè)A、B同時(shí)由0變1激活前:M1=0,M2=0,Q=
22、0激活后:先計(jì)算A=1,馬上賦值給M1再計(jì)算B&M1=1,馬上賦值給M2再計(jì)算M1|M2=1,馬上賦值給Ql 非阻塞賦值【例8-7】always (A,B)beginM1=A;M2=B&M1;Q=M1|M2;end先計(jì)算A=1,(等待,不賦值)再計(jì)算B&M1=0,(等待,不賦值)再計(jì)算M1|M2=0,(等待,不賦值)過程結(jié)束先賦值給M1=1再賦值給M2=0再賦值給Q=0舉例比較:323.2多路選擇器的多路選擇器的Verilog描述描述應(yīng)用:l 設(shè)計(jì)組合電路時(shí)常用阻塞賦值;l 設(shè)計(jì)時(shí)序電路時(shí)常用非阻塞賦值;l 但不是絕對(duì)的。l 不建議在一個(gè)always塊中混合使用阻塞賦值
23、和非阻塞賦值例:阻塞賦值實(shí)現(xiàn)的組合電路module MY (A,B,C,Y) input A,B,C; output Y; reg Y; reg M;always (A,B,C)begin M=B|C; Y=A&M; endendmoduleM例:非阻塞賦值實(shí)現(xiàn)的移位寄存器module DDF3(CLK,D,Q)output Q;input CLK,D;reg a,b,Q;always (posedge CLK)begina=D;b=a;Q=b;end333. always語句塊語句塊綜合舉例:綜合舉例:4位二進(jìn)制加法計(jì)數(shù)器位二進(jìn)制加法計(jì)數(shù)器module CNT4 (CLK,Q); i
24、nput CLK; output 3:0 Q; reg 3:0 Q1;always (posedge CLK)begin Q1=Q1+1;endassign Q=Q1;endmodule此程序中有此程序中有always和和assign兩兩條語句,他們之間是并行的;條語句,他們之間是并行的;此程序中有一個(gè)內(nèi)部變量此程序中有一個(gè)內(nèi)部變量Q1,使用時(shí)要進(jìn)行聲明;使用時(shí)要進(jìn)行聲明;內(nèi)部信號(hào)聲明格式:內(nèi)部信號(hào)聲明格式:數(shù)據(jù)類型數(shù)據(jù)類型 位寬位寬 信號(hào)名稱信號(hào)名稱 元素個(gè)數(shù)元素個(gè)數(shù)344. 底層模塊和門原語調(diào)用底層模塊和門原語調(diào)用例:圖示電路的描述例:圖示電路的描述daclkqCLKCLK內(nèi)部信號(hào)內(nèi)部信號(hào)
25、聲明聲明assign語句語句底層模塊或底層模塊或門原語調(diào)用門原語調(diào)用always語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號(hào)聲明端口信號(hào)聲明;endmodule該電路是由兩個(gè)該電路是由兩個(gè)D觸發(fā)器和一個(gè)或門構(gòu)成的,設(shè)計(jì)思路之一觸發(fā)器和一個(gè)或門構(gòu)成的,設(shè)計(jì)思路之一是先設(shè)計(jì)底層電路是先設(shè)計(jì)底層電路D觸發(fā)器,然后再設(shè)計(jì)頂層電路,在頂層觸發(fā)器,然后再設(shè)計(jì)頂層電路,在頂層電路中可調(diào)用底層模塊。電路中可調(diào)用底層模塊。一、底層模塊調(diào)用一、底層模塊調(diào)用354. 底層模塊和門原語調(diào)用底層模塊和門原語調(diào)用底層模塊描述底層模塊描述module DFF(CLK,D,Q) output re
26、g Q; input CLK,D;always (posedge CLK) Q=D;endmoduleQCLKCLKDDFF頂層模塊描述頂層模塊描述為了調(diào)用底層模塊,需要加兩個(gè)為了調(diào)用底層模塊,需要加兩個(gè)內(nèi)部變量內(nèi)部變量d1和和q1;并給兩次調(diào)用的模塊進(jìn)行命名;并給兩次調(diào)用的模塊進(jìn)行命名;調(diào)用時(shí)例化名不能省略。調(diào)用時(shí)例化名不能省略。daclkqCLKCLKq1d1DFFDFFdff1dff2module examp (clk,d,a,q) output q; input clk,d,a; wire d1; wire q1;DFF dff1(.CLK(clk),.D(d1),.Q(q1);DFF
27、 dff2(q1,d,q);or (d1,a,q);endmodule底層模塊調(diào)用格式:底層模塊調(diào)用格式:底層模塊名底層模塊名 例化名例化名 (端口映射端口映射);364. 底層模塊和門原語調(diào)用底層模塊和門原語調(diào)用端口映射有兩種方法:端口映射有兩種方法:端口名關(guān)聯(lián)法(命名法)端口名關(guān)聯(lián)法(命名法)位置關(guān)聯(lián)法(順序法)位置關(guān)聯(lián)法(順序法)命名法格式:命名法格式:(.底層端口名底層端口名1(外接信號(hào)名外接信號(hào)名1),.底層端口名底層端口名2(外接信號(hào)名外接信號(hào)名2),)順序法格式:順序法格式:(外接信號(hào)名外接信號(hào)名1,外接信號(hào)名外接信號(hào)名2,)必須嚴(yán)格按照底層模塊的端口信號(hào)列表順序書寫必須嚴(yán)格按照
28、底層模塊的端口信號(hào)列表順序書寫因?yàn)橛忻謱?duì)應(yīng),不必按底層模塊的端口信號(hào)列表順序因?yàn)橛忻謱?duì)應(yīng),不必按底層模塊的端口信號(hào)列表順序daclkqCLKCLKq1d1DFFDFFdff1dff2module DFF(CLK,D,Q)QCLKCLKDDFFDFF dff1(.CLK(clk),.D(d1),.Q(q1);DFF dff2(q1,d,q);4. 底層模塊和門原語調(diào)用底層模塊和門原語調(diào)用二、門原語調(diào)用二、門原語調(diào)用門原語名門原語名 實(shí)例名實(shí)例名 (端口連接端口連接)門原語調(diào)用格式:門原語調(diào)用格式:例:例:and (out, in1, in2); 其中實(shí)例名可省略(和模塊調(diào)用不同),端口連接只
29、能采其中實(shí)例名可省略(和模塊調(diào)用不同),端口連接只能采用順序法,輸出在前,輸入在后。用順序法,輸出在前,輸入在后。outin1in1and (與)or(或)xor(異或)nand(與非)nor(或非)xnor(同或)端口連接中第一個(gè)是輸出,其余是輸入,輸入個(gè)數(shù)不限。端口連接中第一個(gè)是輸出,其余是輸入,輸入個(gè)數(shù)不限。Verilog語言提供已經(jīng)設(shè)計(jì)好的門,稱為門原語(語言提供已經(jīng)設(shè)計(jì)好的門,稱為門原語(primitive,共共12個(gè)),這些門可直接調(diào)用,不用再對(duì)其進(jìn)行功能描述。個(gè)),這些門可直接調(diào)用,不用再對(duì)其進(jìn)行功能描述。與門等與門等6個(gè)個(gè)384. 底層模塊調(diào)用底層模塊調(diào)用端口列表中前面是輸出,
30、最后一個(gè)是輸入,輸出個(gè)數(shù)不限。端口列表中前面是輸出,最后一個(gè)是輸入,輸出個(gè)數(shù)不限。not (非門)buf(緩沖器)not (OUT1, IN); INOUT1INOUT1OUT2buf b1_2out(OUT1, OUT2, IN);例:例:非門和緩沖器非門和緩沖器4. 底層模塊調(diào)用底層模塊調(diào)用三態(tài)門三態(tài)門bufif1(控制端控制端1有效緩沖器有效緩沖器)notif1(控制端(控制端1有效非門)有效非門)bufif0 (控制端控制端0有效緩沖器有效緩沖器)notif0(控制端(控制端0有效非門)有效非門)例:例:bufif1 b1 (out, in, ctrl);bufif0 b0 (out,
31、 in, ctrl);notif1 n1 (out, in, ctrl);notif0 n0 (out, in, ctrl);端口列表中前面是輸出,中間是輸入,最后是使能端,輸出端口列表中前面是輸出,中間是輸入,最后是使能端,輸出個(gè)數(shù)不限。個(gè)數(shù)不限。outoutoutoutininininctrlctrlctrlctrlbufif1三態(tài)門bufif0三態(tài)門notif1三態(tài)門notif0三態(tài)門5. Verilog中的數(shù)據(jù)類型中的數(shù)據(jù)類型Verilog中的數(shù)據(jù)類型分為兩大類中的數(shù)據(jù)類型分為兩大類線網(wǎng)類(線網(wǎng)類(net類)類)變量類(變量類(variable類)類)因連續(xù)賦值語句和過程賦值語句的激活
32、特點(diǎn)不同,故賦值目標(biāo)因連續(xù)賦值語句和過程賦值語句的激活特點(diǎn)不同,故賦值目標(biāo)特點(diǎn)也不同,前者不需要保存,后者需要保存,因此規(guī)定兩種特點(diǎn)也不同,前者不需要保存,后者需要保存,因此規(guī)定兩種數(shù)據(jù)類型,數(shù)據(jù)類型,net型用于連續(xù)賦值的賦值目標(biāo)或門原語的輸出,型用于連續(xù)賦值的賦值目標(biāo)或門原語的輸出,且仿真時(shí)不需要分配內(nèi)存空間,且仿真時(shí)不需要分配內(nèi)存空間,variable用于過程賦值的賦值用于過程賦值的賦值目標(biāo),且仿真時(shí)需要分配內(nèi)存空間。目標(biāo),且仿真時(shí)需要分配內(nèi)存空間。lnet類中的數(shù)據(jù)類型wire(線型)tri(三態(tài))tri0(下拉電阻)supply0(地)wand(線與)triand(三態(tài)與)tri1(
33、上拉電阻)supply1(電源)wor(線或)trior(三態(tài)或)trireg(電容性線網(wǎng))reg(寄存器型)integer(整型)time(時(shí)間型)real(實(shí)型)realtime(實(shí)時(shí)間型)lvariable類中的數(shù)據(jù)類型最常用的是wire最常用的是reg將一個(gè)信號(hào)定義成將一個(gè)信號(hào)定義成net型還是型還是varible型,由以下兩方面決定型,由以下兩方面決定使用何種賦值語句對(duì)該信號(hào)進(jìn)行賦值,如果是使用何種賦值語句對(duì)該信號(hào)進(jìn)行賦值,如果是連續(xù)賦值或連續(xù)賦值或門原語賦值門原語賦值或或例化語句賦值例化語句賦值,則定義成,則定義成net型型;如果是;如果是過過程賦值程賦值則定義成則定義成varia
34、ble型型。a. 對(duì)于端口信號(hào)來說,對(duì)于端口信號(hào)來說,input信號(hào)和信號(hào)和inout信號(hào)必須定義成信號(hào)必須定義成net型的;型的;output信號(hào)可以是信號(hào)可以是net型的也可以是型的也可以是variable型的,決定于如何對(duì)其賦值(同型的,決定于如何對(duì)其賦值(同a)。)。netnetvariable 或或 net例:例:abcde該圖中該圖中d和和e的賦值有三種方法的賦值有三種方法(1) 使用連續(xù)賦值語句使用連續(xù)賦值語句assign d=a&b;assign e=d|c;此時(shí),此時(shí),d和和e必須定必須定義為義為net型的。型的。(2) 使用門原語賦值使用門原語賦值and (d,a,
35、b);or (e,d,c);此時(shí),此時(shí),d和和e也必須也必須定義為定義為net型的。型的。(3) 使用過程賦值語句使用過程賦值語句always (a,b,d,c)begin d=a&b; e=d|c;end此時(shí),此時(shí),d和和e必須定義為必須定義為variable型的。型的。四個(gè)端口信號(hào)中四個(gè)端口信號(hào)中A、B必須是必須是net型的;型的;SO、CO可以是可以是net型的也可以是型的也可以是variable型的,決定于如何對(duì)其賦值型的,決定于如何對(duì)其賦值例:例:A AB BSOSOCOCOinsth_adder例:例:l c決定于如何對(duì)其賦值決定于如何對(duì)其賦值;l d如果是端口信號(hào),則必須
36、是如果是端口信號(hào),則必須是net型的;如果來自其它驅(qū)型的;如果來自其它驅(qū)動(dòng)源則決定于如何對(duì)其賦值。動(dòng)源則決定于如何對(duì)其賦值。l e、f、g、h必須是必須是net型的;型的;abcdA AB BSOSOCOCOinstA AB BSOSOCOCOinstefghh_adderh_adderh_adder U1(a,b,c,d);h_adder U2(c,d,e,f);46例:例:2b00 5d8 無符號(hào)數(shù)的表示方法:無符號(hào)數(shù)的表示方法:有符號(hào)數(shù)的表示方法:有符號(hào)數(shù)的表示方法: 例:例:8sb10111011 8b10111011 注意有符號(hào)數(shù)是按照補(bǔ)碼表示的,即第一位是符號(hào)位。注意有符號(hào)數(shù)是按照
37、補(bǔ)碼表示的,即第一位是符號(hào)位。6. Verilog中數(shù)字的表示格式中數(shù)字的表示格式比較:比較:(00)2(01000)2(-69)10(187)10477. 邏輯值邏輯值1:邏輯:邏輯1,高電平,數(shù)字,高電平,數(shù)字10:邏輯:邏輯0,低電平,數(shù)字,低電平,數(shù)字0 x:不確定:不確定z:高阻態(tài):高阻態(tài)Verilog語言中的邏輯值有四種語言中的邏輯值有四種488. if語句語句4種類型的種類型的if語句語句if () 語句語句 ;if () 真語句真語句 ; else 假語句假語句 ;if () 語句語句1 ;else if ()語句語句2 ;else if ()語句語句3 ;計(jì)算條件表達(dá)式計(jì)算條
38、件表達(dá)式,如果結(jié)果為真如果結(jié)果為真(1或非或非0值值),則執(zhí)行真語句,則執(zhí)行真語句,如果條件為假如果條件為假(0或或x),則執(zhí)行假語句。,則執(zhí)行假語句。if ()語句語句1 ;else if ()語句語句2 ;else if ()語句語句3 ;else 默認(rèn)語句默認(rèn)語句 ;l顯然、種可比顯然、種可比、種描述更復(fù)雜、種描述更復(fù)雜的條件關(guān)系。的條件關(guān)系??梢允且粭l語句,也可以是一組語句可以是一條語句,也可以是一組語句498. if語句語句例:計(jì)數(shù)器例:計(jì)數(shù)器always (posedge CLK) if (!RST) Q=0; else Q=Q+1; +A3.0B3.0ADDERDQPREENAC
39、LRSELDATAADATABOUT0MUX21Add04 h1 -Q3.0reg0CLKRSTQ3.0Q3.04 h0 -8. if語句語句 加加elsealways (a,b)if (sel) Q=a;else Q=b;always (a,b)Q=a;if (sel) Q=b;使條件完整的兩種方法:使條件完整的兩種方法:01QselQab01QabselQ2.設(shè)初值設(shè)初值l在用在用if語句設(shè)計(jì)語句設(shè)計(jì)“組合電路組合電路”時(shí)要注意,如果條件不完整,時(shí)要注意,如果條件不完整,會(huì)綜合出寄存器。會(huì)綜合出寄存器。518. if語句語句計(jì)算表達(dá)式計(jì)算表達(dá)式可以是任意形式的表達(dá)式;可以是任意形式的表達(dá)式
40、;條件表達(dá)式的結(jié)果只有條件表達(dá)式的結(jié)果只有0和和1兩種,如果計(jì)算表達(dá)式的值為兩種,如果計(jì)算表達(dá)式的值為0,則條件表達(dá)式的值為則條件表達(dá)式的值為0,否則為,否則為1。例如:設(shè)例如:設(shè)a=1000, b=0110條件表達(dá)式計(jì)算表達(dá)式結(jié)果if (a=b)00if (ab)11if (a)10001if (a*b)11_0000(前兩位被截掉)0if (a|b)11101if (a&b)00000 (計(jì)算表達(dá)式計(jì)算表達(dá)式)條件表達(dá)式格式:條件表達(dá)式格式:529. case語句語句case (表達(dá)式表達(dá)式)取值取值1: 語句語句1;取值取值2: 語句語句2;取值取值3: 語句語句3;.defau
41、lt: 默認(rèn)語句默認(rèn)語句;endcasecase (表達(dá)式表達(dá)式)取值取值1: 語句語句1;取值取值2:語句語句2;取值取值3:語句語句3;.endcase如果表達(dá)式的值如果表達(dá)式的值=取值取值1,則執(zhí)行語句,則執(zhí)行語句1;如果表達(dá)式的值如果表達(dá)式的值=取值取值2,則執(zhí)行語句,則執(zhí)行語句2;如果表達(dá)式的值如果表達(dá)式的值=取值取值3,則執(zhí)行語句,則執(zhí)行語句3;如果表達(dá)式的值和上述取值都不相等,則執(zhí)行默認(rèn)語句。如果表達(dá)式的值和上述取值都不相等,則執(zhí)行默認(rèn)語句。default語句可以不帶。語句可以不帶。功能:功能:格式格式539 case語句語句例:例:module MUX41 (a,b,c,d,s
42、1,s0,y);input a,b,c,d,s1,s0;output reg y;/reg y;always (a,b,c,d,s1,s0)begincase (s1,s0) 2b00 : y=a; 2b01 : y=b; 2b10 : y=c; 2b11 : y=d; default : y=0;endcaseendendmoduleSEL1.0DATA3.0OUTMUXyabcds0s1Mux0如果條件描述不完整,則會(huì)綜如果條件描述不完整,則會(huì)綜合出寄存器;在設(shè)計(jì)組合電路合出寄存器;在設(shè)計(jì)組合電路時(shí)要注意使條件描述完整。時(shí)要注意使條件描述完整。加加default語句可以使條件完語句可以使條
43、件完整。如果條件描述完整也可以整。如果條件描述完整也可以不加不加default語句。語句。5410. Verilog語言的描述風(fēng)格語言的描述風(fēng)格n結(jié)構(gòu)化描述(也稱門級(jí)描述)(全部用門原語和底層模結(jié)構(gòu)化描述(也稱門級(jí)描述)(全部用門原語和底層模塊調(diào)用)塊調(diào)用) n數(shù)據(jù)流級(jí)描述(全部用數(shù)據(jù)流級(jí)描述(全部用assign語句)語句)n行為級(jí)描述(全部用行為級(jí)描述(全部用always語句配合語句配合if、case語句等)語句等)三種描述方式三種描述方式nRTL級(jí)描述(數(shù)據(jù)流級(jí)級(jí)描述(數(shù)據(jù)流級(jí)+行為級(jí),可綜合)行為級(jí),可綜合)有些資料中提到另外一種描述方式:有些資料中提到另外一種描述方式:RTL級(jí)描述方式級(jí)描述方式實(shí)際描述是三種混合的實(shí)際描述是三種混合的舉例:用門級(jí)描述、數(shù)據(jù)流描述、行為描述分別設(shè)計(jì)數(shù)據(jù)選舉例:用門級(jí)描述、數(shù)據(jù)流
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 荊州市中考英語試卷
- 財(cái)務(wù)會(huì)計(jì)系統(tǒng)控制制度
- 高二地理期中試卷
- 2024學(xué)年第二學(xué)期八年級(jí)道德與法治學(xué)科期末考試
- 計(jì)劃生育年度工作計(jì)劃(集錦5篇)
- 部編版三年級(jí)上冊(cè)第四單元《總也倒不了的老屋》教案
- 傻瓜小說閱讀題目及答案
- 國家標(biāo)準(zhǔn)關(guān)于《機(jī)械制圖》的基本規(guī)定(一)
- 2023-2024學(xué)年廣東省梅州市高二下學(xué)期7月期末考試數(shù)學(xué)試題(解析版)
- 2025屆湖北省部分學(xué)校高三三模(4月調(diào)研)語文試題(解析版)
- 熱力發(fā)電廠課程設(shè)計(jì)說明書
- 階梯軸的機(jī)械加工工藝過程卡片
- 特發(fā)性矮小病例分享
- 氣體吸收操作-吸收塔結(jié)構(gòu)認(rèn)知(化工單元操作課件)
- 2023年副主任醫(yī)師(副高)-中西醫(yī)結(jié)合內(nèi)科學(xué)(副高)考試參考題庫附帶答案
- 北京市海淀區(qū)八年級(jí)下學(xué)期期末考試語文試題
- 人工智能知到章節(jié)答案智慧樹2023年復(fù)旦大學(xué)
- DB5206T16-2018梵凈山茶葉加工場所基本條件
- 學(xué)習(xí)鄉(xiāng)村振興知識(shí)競賽100題及答案
- 種植基地管理手冊(cè)
- 工業(yè)機(jī)器人操作與運(yùn)維考試中級(jí)理論知識(shí)模擬試題
評(píng)論
0/150
提交評(píng)論