




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1Verilog設計快速入門設計快速入門 2內部信號聲明內部信號聲明assign語句語句底層模塊或門原語底層模塊或門原語調用調用(包括生成塊包括生成塊)Initial或或always語句塊語句塊任務和函數(shù)定義任務和函數(shù)定義module 模塊名模塊名 (端口列表端口列表);端口信號聲明端口信號聲明;參數(shù)聲明參數(shù)聲明;endmodulespecify 塊塊(路徑延遲路徑延遲)Verilog模塊結構模塊結構說明:說明:n淺色部分用得較少;淺色部分用得較少;n常用語句只有三種:常用語句只有三種:nassign語句語句nalways語句語句n底層模塊調用語句底層模塊調用語句n三種語句順序無關三種語句順序
2、無關n除開始的除開始的module模模塊名塊名和結束的和結束的endmodule必須寫必須寫外,其他都是可選的。外,其他都是可選的。功能描述部分功能描述部分模塊說明部分模塊說明部分3Verilog模塊結構模塊結構例例1:二選一數(shù)據(jù)選擇器的描述:二選一數(shù)據(jù)選擇器的描述二選一數(shù)據(jù)選擇器的結構之一二選一數(shù)據(jù)選擇器的結構之一二選一數(shù)據(jù)選擇器的符號二選一數(shù)據(jù)選擇器的符號設設a、b、s波形已知,可得波形已知,可得y波形:波形:4Verilog模塊結構模塊結構2選選1多路選擇器的多路選擇器的Verilog描述描述內部信號內部信號聲明聲明assign語句語句底層模塊或底層模塊或門原語調用門原語調用always
3、語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號聲明端口信號聲明; 參數(shù)聲明參數(shù)聲明;endmoduleabsyMUX21a5Verilog程序結構程序結構例例2:邊沿:邊沿D觸發(fā)器的觸發(fā)器的Verilog描述描述內部信號內部信號聲明聲明assign語句語句底層模塊或底層模塊或門原語調用門原語調用always語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號聲明端口信號聲明; 參數(shù)聲明參數(shù)聲明;endmodule6Verilog模塊結構模塊結構1模塊說明部分模塊說明部分 module 模塊名模塊名 (端口列表端口列表); 端口信號聲明端口信號聲明;
4、 參數(shù)聲明參數(shù)聲明;l 模塊名是指電路的名字,由用戶指定,最好與文件名一致(特別是在模塊名是指電路的名字,由用戶指定,最好與文件名一致(特別是在Quartus II軟件中調試時);軟件中調試時);l 端口列表是指電路的輸入端口列表是指電路的輸入/輸出信號名稱列表,信號名由用戶指定,各名輸出信號名稱列表,信號名由用戶指定,各名稱間用逗號隔開;稱間用逗號隔開;l 端口信號聲明是要說明端口信號的輸入輸出屬性、信號的數(shù)據(jù)類型,以及端口信號聲明是要說明端口信號的輸入輸出屬性、信號的數(shù)據(jù)類型,以及信號的位寬;輸入輸出屬性有信號的位寬;輸入輸出屬性有input,output,inout三種,信號的數(shù)三種,信
5、號的數(shù)據(jù)類型常用的有據(jù)類型常用的有wire和和reg兩種;信號的位寬用兩種;信號的位寬用n1:n2表示;同一類表示;同一類信號之間用逗號隔開;信號之間用逗號隔開;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;位寬如果不做說明的話,默認是位寬如果不做說明的話,默
6、認是1位;位;數(shù)據(jù)類型不做說明的話,默認是數(shù)據(jù)類型不做說明的話,默認是wire型的。型的。S位寬為位寬為4位,對應信號為位,對應信號為S3、S2、S1、S0根據(jù)模塊說明部分,我們可以得出電路符號根據(jù)模塊說明部分,我們可以得出電路符號ABCINSfull_adderCOUT82. assign語句語句內部信號內部信號聲明聲明assign語句語句底層模塊或底層模塊或門原語調用門原語調用always語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號聲明端口信號聲明;endmoduleassign語句稱作連續(xù)賦值語句語句稱作連續(xù)賦值語句assign 賦值目標賦值目標 = 表達式表
7、達式例:例:特點:特點:l之所以稱為連續(xù)賦值語句是指其總是處于激活狀態(tài),只之所以稱為連續(xù)賦值語句是指其總是處于激活狀態(tài),只要表達式中的操作數(shù)有變化,立即進行計算和賦值。要表達式中的操作數(shù)有變化,立即進行計算和賦值。(與連續(xù)賦值語句對應的另一種語句稱為過程賦值語句)(與連續(xù)賦值語句對應的另一種語句稱為過程賦值語句)l賦值目標必須是賦值目標必須是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具有豐富的表達式運算功能,可用于具有豐富的表達式運算功能,可用于assign語句語句詳見夏宇聞教材第詳見夏宇聞教材第6章,自學。章,自學。(1) 算術型*乘法/除法+加法-減法%求余* 求冪例:Y=5%2;Y=2*3;求余,結果為1求冪,結果為8說明l 加減乘除、求冪的操作數(shù)可以是實數(shù)也可以是整數(shù),求余運算的操作數(shù)只能是整數(shù)。l 求余運算結果取第一個操作數(shù)的符號;(2) 邏輯型!邏輯非&邏輯與|邏輯或例:Y=! (32) Y=(26);Y=(26);Y=(2大于= 大于等于2) Y=(3=2);Y=(3=2
9、);Y=(3右移 算術右移 1;Y= 4sb1001 1; 結果為0100結果為1100說明l 移位運算的操作數(shù)是1位或多位二進制數(shù);l 向左或向右移n位;l 只有對有符號數(shù)的算術右移自動補符號位;l 其他移位均自動補0。操作數(shù) 移位符 n;格式(8) 拼接復制運算符拼接復制拼接例:Y= 4b1001, 2b11;Y= 42b01; Y= 42b01, 2b11; 結果為100111結果為01010101說明l將多個操作數(shù)拼接起來;l將操作數(shù)復制n遍并拼接起來;l可以組合使用。操作數(shù)1, 操作數(shù)2, 格式n操作數(shù)1, 操作數(shù)2, 格式(9) 條件運算符? : 用于條件賦值例: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ù)表達式1的值,決定運算結果;l如果表達式1值為1,則結果等于表達式2;l如果表達式1值為0,則結果等于表達式3;l如果表達式1值為x,則結果為x;l可以嵌套。表達式1 ? 表達式2 : 表達式3格式一203. always語句塊語句塊內部信號內部信號聲明聲明assign語句語句底層模塊或底層模塊或門原語調用門原語調用always語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號聲明端口信號聲明;endmodule
11、always語句塊又稱過程塊語句塊又稱過程塊基本格式:基本格式:always (敏感信號條件表敏感信號條件表) 各類順序語句;各類順序語句; 特點:特點:l always語句本身不是單一的有意義的一條語句,而是和下面的語語句本身不是單一的有意義的一條語句,而是和下面的語句一起構成一個語句塊,稱之為過程塊;過程塊中的賦值語句稱過句一起構成一個語句塊,稱之為過程塊;過程塊中的賦值語句稱過程賦值語句;程賦值語句;l 該語句塊不是總處于激活狀態(tài),當滿足激活條件時才能被執(zhí)行,否該語句塊不是總處于激活狀態(tài),當滿足激活條件時才能被執(zhí)行,否則被掛起,掛起時即使操作數(shù)有變化,也不執(zhí)行賦值,賦值目標值則被掛起,掛
12、起時即使操作數(shù)有變化,也不執(zhí)行賦值,賦值目標值保持不變;保持不變;l 賦值目標必須是賦值目標必須是reg型的。型的。例: always (posedge CLK) Q=D;3. always語句塊語句塊l激活條件由敏感信號條件表決定,當敏感條件滿足時,激活條件由敏感信號條件表決定,當敏感條件滿足時,過程塊被激活。過程塊被激活。敏感條件有兩種,一種是邊沿敏感,一種是電平敏感。敏感條件有兩種,一種是邊沿敏感,一種是電平敏感。電平敏感:(posedge 信號名)邊沿敏感:(negedge 信號名)(信號名列表)信號上升沿到來信號下降沿到來例:(posedge clk)例:(negedge clk)信
13、號列表中的任一個信號有變化例:(a,b,c)當a,b,c中有一個發(fā)生變化說明: 逗號可以換成or例:(a or b or c)3. always語句塊語句塊例:例:always (posedge CLK)always (posedge CLK) Q=D Q=D;當當CLKCLK上升沿到來時,激活該語句塊,上升沿到來時,激活該語句塊,將將D D的值賦給的值賦給Q Q;否則,該語句塊掛起,即使否則,該語句塊掛起,即使D D有變化,有變化,Q Q的值也保持不變,直到下一次賦值。的值也保持不變,直到下一次賦值。例:例:always (D)always (D) Q=D Q=D;當當D D有變化時(不管是
14、由有變化時(不管是由1 1變變0 0還是由還是由0 0變變1 1),激活該語句塊,將),激活該語句塊,將D D的值賦的值賦給給Q Q;否則,該語句塊掛起,否則,該語句塊掛起,Q Q的值保持不的值保持不變,直到下一次賦值。變,直到下一次賦值。D DQ QD DCLKCLKQ QD DQ Q3. always語句塊語句塊說明:l過程塊中的賦值目標必須是reg型的。l由于always語句可以描述邊沿變化,在設計時序電路中得到廣泛應用。lalways語句中還可以使用if、case、for循環(huán)等語句,其功能更加強大。例:always (posedge CLK) Q=D;例:always (D) Q=D;
15、必須是reg型的3. always語句塊語句塊253. always語句塊語句塊assign語句和語句和always語句的主要區(qū)別:語句的主要區(qū)別:連續(xù)賦值語句總是處于激活狀態(tài),只要操作數(shù)有變化馬上進行連續(xù)賦值語句總是處于激活狀態(tài),只要操作數(shù)有變化馬上進行計算和賦值;計算和賦值;過程賦值語句只有當激活該過程時,才會進行計算和賦值,如過程賦值語句只有當激活該過程時,才會進行計算和賦值,如果該過程不被激活,即使操作數(shù)發(fā)生變化也不會計算和賦值。果該過程不被激活,即使操作數(shù)發(fā)生變化也不會計算和賦值。verilog規(guī)定規(guī)定assign中的賦值目標必須是中的賦值目標必須是wire型的,而型的,而alway
16、s語句中的賦值目標必須是語句中的賦值目標必須是reg型的。型的。assign Q=Dalways (posedge clk) Q=D;例:例:只要只要D發(fā)生變化,馬發(fā)生變化,馬上進行計算和賦值;上進行計算和賦值; Q必須是必須是wire型。型。只有當只有當clk上升沿到來時,才能激活該上升沿到來時,才能激活該塊語句,才能進行計算和賦值;否則,塊語句,才能進行計算和賦值;否則,即使即使D發(fā)生變化也不會計算和賦值。在發(fā)生變化也不會計算和賦值。在未被激活時,未被激活時,Q的值保持不變。的值保持不變。Q必須是必須是reg型。型。263. always語句塊語句塊lalways語句塊中除了可以使用表達式
17、賦值以外,還可以使用語句塊中除了可以使用表達式賦值以外,還可以使用if,case等行為描述語句,還能夠描述邊沿變化,因此其功等行為描述語句,還能夠描述邊沿變化,因此其功能比能比assign語句更強大(語句更強大(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思考問題:在仿思考問題:在仿真時,真時,b
19、egin和和end之間的語句之間的語句執(zhí)行順序如何?執(zhí)行順序如何?請大家畫出該請大家畫出該模塊的端口符模塊的端口符號圖和電路圖號圖和電路圖3. always語句塊語句塊begin end之間的賦值語句有阻塞賦值和非阻塞賦值之分。之間的賦值語句有阻塞賦值和非阻塞賦值之分。阻塞賦值:語句順序執(zhí)行,前面的執(zhí)行完才能執(zhí)行后面;阻塞賦值:語句順序執(zhí)行,前面的執(zhí)行完才能執(zhí)行后面;賦值符號:賦值符號:=非阻塞賦值:所有語句并行執(zhí)行。非阻塞賦值:所有語句并行執(zhí)行。賦值符號:賦值符號:=賦值目標賦值目標1=表達式表達式1;賦值目標賦值目標2=表達式表達式2;賦值目標賦值目標1=表達式表達式1;賦值目標賦值目標2
20、=表達式表達式2;賦值語句賦值語句1會阻塞賦值語句會阻塞賦值語句2 ,即只有當賦值語句,即只有當賦值語句1執(zhí)執(zhí)行完才能執(zhí)行賦值語句行完才能執(zhí)行賦值語句2。賦值語句賦值語句1不會阻塞賦不會阻塞賦值語句值語句2 ,賦值語句,賦值語句1和賦值語句和賦值語句2并行執(zhí)行。并行執(zhí)行。3. always語句塊語句塊舉例比較:舉例比較:l阻塞賦值阻塞賦值begin m=a*b; y=m;endl非阻塞賦值非阻塞賦值begin m=a*b; y=m;end當當m=a*b 執(zhí)行完才能執(zhí)行執(zhí)行完才能執(zhí)行y=m 。當當m賦值完成后,才能執(zhí)行賦值完成后,才能執(zhí)行y的賦值,的賦值,y得到的得到的是是m的新值。的新值。m和
21、和y的賦值并行執(zhí)行,的賦值并行執(zhí)行,y得到的是得到的是m的舊值。的舊值。m=a*b 和和y=m并行執(zhí)行并行執(zhí)行 。l阻塞賦值的實質:右邊表達式的計算和對左邊寄存器變量的賦值是一個統(tǒng)一的原子操作中的兩個動作,這兩個動作之間不能再插入其他任何動作。l非阻塞賦值的實質:首先按順序計算右邊表達式的值,但是并不馬上賦值,而是要等到過程結束時再按順序賦值。賦值目標1=表達式1;賦值目標2=表達式2;賦值目標1=表達式1;賦值目標2=表達式2;l 阻塞賦值【例8-6】always (A,B)beginM1=A;M2=B&M1;Q=M1|M2;end設A、B同時由0變1激活前:M1=0,M2=0,Q=
22、0激活后:先計算A=1,馬上賦值給M1再計算B&M1=1,馬上賦值給M2再計算M1|M2=1,馬上賦值給Ql 非阻塞賦值【例8-7】always (A,B)beginM1=A;M2=B&M1;Q=M1|M2;end先計算A=1,(等待,不賦值)再計算B&M1=0,(等待,不賦值)再計算M1|M2=0,(等待,不賦值)過程結束先賦值給M1=1再賦值給M2=0再賦值給Q=0舉例比較:323.2多路選擇器的多路選擇器的Verilog描述描述應用:l 設計組合電路時常用阻塞賦值;l 設計時序電路時常用非阻塞賦值;l 但不是絕對的。l 不建議在一個always塊中混合使用阻塞賦值
23、和非阻塞賦值例:阻塞賦值實現(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例:非阻塞賦值實現(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位二進制加法計數(shù)器位二進制加法計數(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兩兩條語句,他們之間是并行的;條語句,他們之間是并行的;此程序中有一個內部變量此程序中有一個內部變量Q1,使用時要進行聲明;使用時要進行聲明;內部信號聲明格式:內部信號聲明格式:數(shù)據(jù)類型數(shù)據(jù)類型 位寬位寬 信號名稱信號名稱 元素個數(shù)元素個數(shù)344. 底層模塊和門原語調用底層模塊和門原語調用例:圖示電路的描述例:圖示電路的描述daclkqCLKCLK內部信號內部信號
25、聲明聲明assign語句語句底層模塊或底層模塊或門原語調用門原語調用always語句塊語句塊module 模塊名模塊名 (端口列表端口列表); 端口信號聲明端口信號聲明;endmodule該電路是由兩個該電路是由兩個D觸發(fā)器和一個或門構成的,設計思路之一觸發(fā)器和一個或門構成的,設計思路之一是先設計底層電路是先設計底層電路D觸發(fā)器,然后再設計頂層電路,在頂層觸發(fā)器,然后再設計頂層電路,在頂層電路中可調用底層模塊。電路中可調用底層模塊。一、底層模塊調用一、底層模塊調用354. 底層模塊和門原語調用底層模塊和門原語調用底層模塊描述底層模塊描述module DFF(CLK,D,Q) output re
26、g Q; input CLK,D;always (posedge CLK) Q=D;endmoduleQCLKCLKDDFF頂層模塊描述頂層模塊描述為了調用底層模塊,需要加兩個為了調用底層模塊,需要加兩個內部變量內部變量d1和和q1;并給兩次調用的模塊進行命名;并給兩次調用的模塊進行命名;調用時例化名不能省略。調用時例化名不能省略。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底層模塊調用格式:底層模塊調用格式:底層模塊名底層模塊名 例化名例化名 (端口映射端口映射);364. 底層模塊和門原語調用底層模塊和門原語調用端口映射有兩種方法:端口映射有兩種方法:端口名關聯(lián)法(命名法)端口名關聯(lián)法(命名法)位置關聯(lián)法(順序法)位置關聯(lián)法(順序法)命名法格式:命名法格式:(.底層端口名底層端口名1(外接信號名外接信號名1),.底層端口名底層端口名2(外接信號名外接信號名2),)順序法格式:順序法格式:(外接信號名外接信號名1,外接信號名外接信號名2,)必須嚴格按照底層模塊的端口信號列表順序書寫必須嚴格按照
28、底層模塊的端口信號列表順序書寫因為有名字對應,不必按底層模塊的端口信號列表順序因為有名字對應,不必按底層模塊的端口信號列表順序daclkqCLKCLKq1d1DFFDFFdff1dff2module DFF(CLK,D,Q)QCLKCLKDDFFDFF dff1(.CLK(clk),.D(d1),.Q(q1);DFF dff2(q1,d,q);4. 底層模塊和門原語調用底層模塊和門原語調用二、門原語調用二、門原語調用門原語名門原語名 實例名實例名 (端口連接端口連接)門原語調用格式:門原語調用格式:例:例:and (out, in1, in2); 其中實例名可省略(和模塊調用不同),端口連接只
29、能采其中實例名可省略(和模塊調用不同),端口連接只能采用順序法,輸出在前,輸入在后。用順序法,輸出在前,輸入在后。outin1in1and (與)or(或)xor(異或)nand(與非)nor(或非)xnor(同或)端口連接中第一個是輸出,其余是輸入,輸入個數(shù)不限。端口連接中第一個是輸出,其余是輸入,輸入個數(shù)不限。Verilog語言提供已經(jīng)設計好的門,稱為門原語(語言提供已經(jīng)設計好的門,稱為門原語(primitive,共共12個),這些門可直接調用,不用再對其進行功能描述。個),這些門可直接調用,不用再對其進行功能描述。與門等與門等6個個384. 底層模塊調用底層模塊調用端口列表中前面是輸出,
30、最后一個是輸入,輸出個數(shù)不限。端口列表中前面是輸出,最后一個是輸入,輸出個數(shù)不限。not (非門)buf(緩沖器)not (OUT1, IN); INOUT1INOUT1OUT2buf b1_2out(OUT1, OUT2, IN);例:例:非門和緩沖器非門和緩沖器4. 底層模塊調用底層模塊調用三態(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);端口列表中前面是輸出,中間是輸入,最后是使能端,輸出端口列表中前面是輸出,中間是輸入,最后是使能端,輸出個數(shù)不限。個數(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、特點不同,故賦值目標因連續(xù)賦值語句和過程賦值語句的激活特點不同,故賦值目標特點也不同,前者不需要保存,后者需要保存,因此規(guī)定兩種特點也不同,前者不需要保存,后者需要保存,因此規(guī)定兩種數(shù)據(jù)類型,數(shù)據(jù)類型,net型用于連續(xù)賦值的賦值目標或門原語的輸出,型用于連續(xù)賦值的賦值目標或門原語的輸出,且仿真時不需要分配內存空間,且仿真時不需要分配內存空間,variable用于過程賦值的賦值用于過程賦值的賦值目標,且仿真時需要分配內存空間。目標,且仿真時需要分配內存空間。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(時間型)real(實型)realtime(實時間型)lvariable類中的數(shù)據(jù)類型最常用的是wire最常用的是reg將一個信號定義成將一個信號定義成net型還是型還是varible型,由以下兩方面決定型,由以下兩方面決定使用何種賦值語句對該信號進行賦值,如果是使用何種賦值語句對該信號進行賦值,如果是連續(xù)賦值或連續(xù)賦值或門原語賦值門原語賦值或或例化語句賦值例化語句賦值,則定義成,則定義成net型型;如果是;如果是過過程賦值程賦值則定義成則定義成varia
34、ble型型。a. 對于端口信號來說,對于端口信號來說,input信號和信號和inout信號必須定義成信號必須定義成net型的;型的;output信號可以是信號可以是net型的也可以是型的也可以是variable型的,決定于如何對其賦值(同型的,決定于如何對其賦值(同a)。)。netnetvariable 或或 net例:例:abcde該圖中該圖中d和和e的賦值有三種方法的賦值有三種方法(1) 使用連續(xù)賦值語句使用連續(xù)賦值語句assign d=a&b;assign e=d|c;此時,此時,d和和e必須定必須定義為義為net型的。型的。(2) 使用門原語賦值使用門原語賦值and (d,a,
35、b);or (e,d,c);此時,此時,d和和e也必須也必須定義為定義為net型的。型的。(3) 使用過程賦值語句使用過程賦值語句always (a,b,d,c)begin d=a&b; e=d|c;end此時,此時,d和和e必須定義為必須定義為variable型的。型的。四個端口信號中四個端口信號中A、B必須是必須是net型的;型的;SO、CO可以是可以是net型的也可以是型的也可以是variable型的,決定于如何對其賦值型的,決定于如何對其賦值例:例:A AB BSOSOCOCOinsth_adder例:例:l c決定于如何對其賦值決定于如何對其賦值;l d如果是端口信號,則必須
36、是如果是端口信號,則必須是net型的;如果來自其它驅型的;如果來自其它驅動源則決定于如何對其賦值。動源則決定于如何對其賦值。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 無符號數(shù)的表示方法:無符號數(shù)的表示方法:有符號數(shù)的表示方法:有符號數(shù)的表示方法: 例:例:8sb10111011 8b10111011 注意有符號數(shù)是按照補碼表示的,即第一位是符號位。注意有符號數(shù)是按照
37、補碼表示的,即第一位是符號位。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 ;計算條件表達式計算條
38、件表達式,如果結果為真如果結果為真(1或非或非0值值),則執(zhí)行真語句,則執(zhí)行真語句,如果條件為假如果條件為假(0或或x),則執(zhí)行假語句。,則執(zhí)行假語句。if ()語句語句1 ;else if ()語句語句2 ;else if ()語句語句3 ;else 默認語句默認語句 ;l顯然、種可比顯然、種可比、種描述更復雜、種描述更復雜的條件關系。的條件關系。可以是一條語句,也可以是一組語句可以是一條語句,也可以是一組語句498. if語句語句例:計數(shù)器例:計數(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.設初值設初值l在用在用if語句設計語句設計“組合電路組合電路”時要注意,如果條件不完整,時要注意,如果條件不完整,會綜合出寄存器。會綜合出寄存器。518. if語句語句計算表達式計算表達式可以是任意形式的表達式;可以是任意形式的表達式
40、;條件表達式的結果只有條件表達式的結果只有0和和1兩種,如果計算表達式的值為兩種,如果計算表達式的值為0,則條件表達式的值為則條件表達式的值為0,否則為,否則為1。例如:設例如:設a=1000, b=0110條件表達式計算表達式結果if (a=b)00if (ab)11if (a)10001if (a*b)11_0000(前兩位被截掉)0if (a|b)11101if (a&b)00000 (計算表達式計算表達式)條件表達式格式:條件表達式格式:529. case語句語句case (表達式表達式)取值取值1: 語句語句1;取值取值2: 語句語句2;取值取值3: 語句語句3;.defau
41、lt: 默認語句默認語句;endcasecase (表達式表達式)取值取值1: 語句語句1;取值取值2:語句語句2;取值取值3:語句語句3;.endcase如果表達式的值如果表達式的值=取值取值1,則執(zhí)行語句,則執(zhí)行語句1;如果表達式的值如果表達式的值=取值取值2,則執(zhí)行語句,則執(zhí)行語句2;如果表達式的值如果表達式的值=取值取值3,則執(zhí)行語句,則執(zhí)行語句3;如果表達式的值和上述取值都不相等,則執(zhí)行默認語句。如果表達式的值和上述取值都不相等,則執(zhí)行默認語句。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如果條件描述不完整,則會綜如果條件描述不完整,則會綜合出寄存器;在設計組合電路合出寄存器;在設計組合電路時要注意使條件描述完整。時要注意使條件描述完整。加加default語句可以使條件完語句可以使條
43、件完整。如果條件描述完整也可以整。如果條件描述完整也可以不加不加default語句。語句。5410. Verilog語言的描述風格語言的描述風格n結構化描述(也稱門級描述)(全部用門原語和底層模結構化描述(也稱門級描述)(全部用門原語和底層模塊調用)塊調用) n數(shù)據(jù)流級描述(全部用數(shù)據(jù)流級描述(全部用assign語句)語句)n行為級描述(全部用行為級描述(全部用always語句配合語句配合if、case語句等)語句等)三種描述方式三種描述方式nRTL級描述(數(shù)據(jù)流級級描述(數(shù)據(jù)流級+行為級,可綜合)行為級,可綜合)有些資料中提到另外一種描述方式:有些資料中提到另外一種描述方式:RTL級描述方式級描述方式實際描述是三種混合的實際描述是三種混合的舉例:用門級描述、數(shù)據(jù)流描述、行為描述分別設計數(shù)據(jù)選舉例:用門級描述、數(shù)據(jù)流
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貸款汽車購車合同協(xié)議
- 貨物托運協(xié)議書范本
- 貨車有貸款轉讓合同協(xié)議
- 解除場地租用合同協(xié)議
- 起重機勞務合同協(xié)議
- 購車轉賣協(xié)議書范本
- 話費賠償協(xié)議書模板
- 2025屆江蘇省揚州高三上學期開學考-期初調研-物理試題(含答案)
- 2025年大學化學課程理念試題及答案
- 2025年大學化學高效復習法試題及答案
- 國家開放大學一網(wǎng)一平臺電大《建筑測量》實驗報告1-5題庫
- 地基釬探記錄表
- 中班科學《筷子提米》
- 關于熊貓的資料
- 北京大學研修班通訊錄
- 小學勞動教育教研活動記錄(共7次)
- 長輸管道監(jiān)理培訓測試題(含答案)山東港通工程管理咨詢有限公司
- 實習證明表模板
- 乙狀結腸癌根治術的護理查房詳解演示文稿
- (3.1.2)-野外地質工作安全(二)
- GB/Z 41921-2022視障者用輔助器具盲道
評論
0/150
提交評論