版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 主要內(nèi)容主要內(nèi)容n在Verilog程序中可通過(guò)如下方式描述電路的結(jié)構(gòu)n 調(diào)用Verilog內(nèi)置門(mén)元件(門(mén)級(jí)結(jié)構(gòu)描述)n 調(diào)用開(kāi)關(guān)級(jí)元件(晶體管級(jí)結(jié)構(gòu)描述)n 用戶自定義元件UDP(也在門(mén)級(jí))Verilog的內(nèi)置門(mén)元件 n調(diào)用門(mén)元件的格式為:n門(mén)元件名字 ()n:可以省略n其中普通門(mén)的端口列表按下面的順序列出:n(輸出,輸入1,輸入2,輸入3);n比如:nand a1(out,in1,in2,in3);/三輸入與門(mén)n對(duì)于三態(tài)門(mén),則按如下順序列出輸入輸出端口:n(輸出,輸入,使能控制端);n比如:nbufif1 mytri1(out,in,enable);/高電平使能的三態(tài)門(mén)n對(duì)于buf和not
2、兩種元件的調(diào)用,需注意的是:它們?cè)试S有多個(gè)輸出,但只能有一個(gè)輸入一個(gè)輸入。比如:n not N1(out1,out2,in); n/1個(gè)輸入in,2個(gè)輸出out1,out2n buf B1(out1,out2,out3,in); n /1個(gè)輸入in,3個(gè)輸出out1,out2,out3用基本門(mén)實(shí)現(xiàn)的用基本門(mén)實(shí)現(xiàn)的4選選1 MUX原理圖原理圖 401310210101inssinssinssinssoutnmodule mux4_1a(out,in1,in2,in3,in4,s0,s1);ninput in1,in2,in3,in4,s0,s1; output out;nwire s0_n,s1
3、_n,w,x,y,z;/中間變量定義可以省略中間變量定義可以省略nnot (s0_n,s0),(s1_n,s1);nand (w,in1,s0_n,s1_n),(x,in2,s0_n,s1),n (y,in3,s0,s1_n),(z,in4,s0,s1);nor (out,w,x,y,z);nendmodulen【例【例3.1】 調(diào)用門(mén)元件實(shí)現(xiàn)的調(diào)用門(mén)元件實(shí)現(xiàn)的4選選1 MUX這種結(jié)構(gòu)描述方法缺點(diǎn)是必須了解邏輯電路的內(nèi)部結(jié)構(gòu)這種結(jié)構(gòu)描述方法缺點(diǎn)是必須了解邏輯電路的內(nèi)部結(jié)構(gòu)關(guān)系,它猶如電路圖設(shè)計(jì),需將所用到的邏輯函數(shù)通過(guò)實(shí)例關(guān)系,它猶如電路圖設(shè)計(jì),需將所用到的邏輯函數(shù)通過(guò)實(shí)例化門(mén)元件調(diào)用實(shí)現(xiàn)邏輯
4、功能描述,是較為低級(jí)的電路功能描化門(mén)元件調(diào)用實(shí)現(xiàn)邏輯功能描述,是較為低級(jí)的電路功能描述方式。述方式。三態(tài)緩沖器模型:采用調(diào)用內(nèi)部實(shí)例化調(diào)用實(shí)現(xiàn)自建三態(tài)緩沖器模型:采用數(shù)據(jù)流描述建立三態(tài)緩沖器nMOS開(kāi)關(guān)共有以下6種類(lèi)型ncmos pmos nmos rcmos rpmos rnmosn這6種類(lèi)型的門(mén)可用來(lái)給單向開(kāi)關(guān)建模,也就是說(shuō),通過(guò)設(shè)置控制輸入的值(1/0)可以接通或者關(guān)閉從輸入流向輸出的數(shù)據(jù)流。單向控制開(kāi)關(guān)n語(yǔ)法格式 :ngate_type instance_name(outputA,inputB,controlC)n如rnmos u2rnmos(outputA, inputB, cont
5、rolC) npmos 9pmos(iol_bus,read_data,gate_ctrl)inputBoutputAcontrolCread_dataiol_busgate_ctrlnmos switchpmos switch注意:(r)cmos具有一個(gè)數(shù)據(jù)輸入、一個(gè)數(shù)據(jù)輸出和兩個(gè)控制輸入。相當(dāng)以上兩種控制的組合。n雙向控制開(kāi)關(guān)ntran rtuan tranif0 rtranif0 tranif1 rtranif1這些開(kāi)關(guān)是雙向的,也就是說(shuō),數(shù)據(jù)可以雙向流動(dòng),并且當(dāng)數(shù)據(jù)通過(guò)開(kāi)關(guān)傳播時(shí)沒(méi)有延時(shí),后4個(gè)開(kāi)關(guān)能夠通過(guò)設(shè)置合適的控制信號(hào)而關(guān)閉,但前2個(gè)開(kāi)關(guān)不能被關(guān)閉。前2種格式類(lèi)型:(r)tran
6、instance_name(signalA,signalB)gate_typeinstance_name(signalA,signalB,controlC)后4種格式類(lèi)型:字頭帶r的開(kāi)關(guān)類(lèi)型,信號(hào)流過(guò)時(shí),信號(hào)強(qiáng)度會(huì)出現(xiàn)衰減。n其格式為:其格式為:nassign LHS_net=RHS_expression;n右邊表達(dá)式中的操作數(shù)無(wú)論何時(shí)發(fā)右邊表達(dá)式中的操作數(shù)無(wú)論何時(shí)發(fā)生變化,都會(huì)引起表達(dá)式值的重新計(jì)算生變化,都會(huì)引起表達(dá)式值的重新計(jì)算, 并將重新計(jì)算后的值賦予左邊表達(dá)式的并將重新計(jì)算后的值賦予左邊表達(dá)式的net型變量。型變量。 n用數(shù)據(jù)流描述模式設(shè)計(jì)電路與用傳統(tǒng)的邏輯用數(shù)據(jù)流描述模式設(shè)計(jì)電路與
7、用傳統(tǒng)的邏輯方程設(shè)計(jì)電路很相似方程設(shè)計(jì)電路很相似。設(shè)計(jì)中只要有了布爾代數(shù)。設(shè)計(jì)中只要有了布爾代數(shù)表達(dá)式就很容易將它用數(shù)據(jù)流方式表達(dá)出來(lái)。表表達(dá)式就很容易將它用數(shù)據(jù)流方式表達(dá)出來(lái)。表達(dá)方法是用達(dá)方法是用Verilog中的邏輯運(yùn)算符置換布爾邏輯中的邏輯運(yùn)算符置換布爾邏輯運(yùn)算符即可。運(yùn)算符即可。n比如,如果邏輯表達(dá)式為:比如,如果邏輯表達(dá)式為: n則用數(shù)據(jù)流方式描述為:則用數(shù)據(jù)流方式描述為:assign F=(a&b)|(c&d)。cdabFassign #time LHS_net=RHS_expression;#time表示信號(hào)由右端輸入變化反映在左端輸出的延時(shí)時(shí)間。nmodule
8、 mux4_1c(out,in1,in2,in3,in4,s0,s1);ninput in1,in2,in3,in4,s0,s1; noutput out;n/數(shù)據(jù)流描述時(shí)所用的變量類(lèi)型一般都是線型(數(shù)據(jù)流描述時(shí)所用的變量類(lèi)型一般都是線型(wire)nassign out=(in1 & s0 & s1)|(in2 & s0 & s1)|n(in3& s0 & s1)|(in4 & s0 & s1);nendmodulen【例例3.2】 數(shù)據(jù)流描述的數(shù)據(jù)流描述的4選選1 MUX401310210101inssinssinssinss
9、out邏輯表達(dá)式:邏輯表達(dá)式:n 就是對(duì)設(shè)計(jì)實(shí)體的數(shù)學(xué)模型的描述,就是對(duì)設(shè)計(jì)實(shí)體的數(shù)學(xué)模型的描述,其抽象程度遠(yuǎn)高于結(jié)構(gòu)描述方式。行為其抽象程度遠(yuǎn)高于結(jié)構(gòu)描述方式。行為描述類(lèi)似于高級(jí)編程語(yǔ)言,描述類(lèi)似于高級(jí)編程語(yǔ)言,當(dāng)描述一個(gè)當(dāng)描述一個(gè)設(shè)計(jì)實(shí)體的行為時(shí),無(wú)需知道具體電路設(shè)計(jì)實(shí)體的行為時(shí),無(wú)需知道具體電路的結(jié)構(gòu),只需要描述清楚輸入與輸出信的結(jié)構(gòu),只需要描述清楚輸入與輸出信號(hào)的行為,而不需要花費(fèi)更多的精力關(guān)號(hào)的行為,而不需要花費(fèi)更多的精力關(guān)注設(shè)計(jì)功能的門(mén)級(jí)實(shí)現(xiàn)。注設(shè)計(jì)功能的門(mén)級(jí)實(shí)現(xiàn)。 module mux4_1b(out,in1,in2,in3,in4,s0,s1);input in1,in2,in
10、3,in4,s0,s1; output reg out;always(*) /使用通配符使用通配符case(s0,s1)2b00:out=in1;2b01:out=in2;2b10:out=in3;2b11:out=in4;default:out=2bx;endcaseendmodule【例例3.3】 用用case語(yǔ)句描述的語(yǔ)句描述的4選選1 MUXn用行為描述模式設(shè)計(jì)電路,可以降低設(shè)用行為描述模式設(shè)計(jì)電路,可以降低設(shè)計(jì)難度。計(jì)難度。行為描述只需描述輸入與輸出之間的行為描述只需描述輸入與輸出之間的關(guān)系,不需要包含關(guān)系,不需要包含任何結(jié)構(gòu)方面的信息任何結(jié)構(gòu)方面的信息。n設(shè)計(jì)者只需寫(xiě)出源程序,而挑
11、選電路方設(shè)計(jì)者只需寫(xiě)出源程序,而挑選電路方案的工作由案的工作由EDA軟件自動(dòng)完成。軟件自動(dòng)完成。n當(dāng)電路的規(guī)模較大或者需要描述復(fù)雜的當(dāng)電路的規(guī)模較大或者需要描述復(fù)雜的邏輯關(guān)系時(shí),應(yīng)首先考慮用行為描述方式設(shè)計(jì)邏輯關(guān)系時(shí),應(yīng)首先考慮用行為描述方式設(shè)計(jì)電路,如果設(shè)計(jì)的結(jié)果不能滿足資源占有率的電路,如果設(shè)計(jì)的結(jié)果不能滿足資源占有率的要求,要求,則應(yīng)改變其他描述方式則應(yīng)改變其他描述方式。n對(duì)設(shè)計(jì)者而言,采用的描述級(jí)別對(duì)設(shè)計(jì)者而言,采用的描述級(jí)別越高,設(shè)計(jì)越容易;對(duì)綜合器而言,行越高,設(shè)計(jì)越容易;對(duì)綜合器而言,行為級(jí)的描述為綜合器的優(yōu)化提供了更大為級(jí)的描述為綜合器的優(yōu)化提供了更大的空間,較之門(mén)級(jí)結(jié)構(gòu)描述更
12、能發(fā)揮綜的空間,較之門(mén)級(jí)結(jié)構(gòu)描述更能發(fā)揮綜合器的性能,所以在電路設(shè)計(jì)中,合器的性能,所以在電路設(shè)計(jì)中,除非除非一些關(guān)鍵路徑的設(shè)計(jì)采用門(mén)級(jí)結(jié)構(gòu)描述一些關(guān)鍵路徑的設(shè)計(jì)采用門(mén)級(jí)結(jié)構(gòu)描述外,一般更多地采用行為建模描述方式。外,一般更多地采用行為建模描述方式。 下面是三種硬件描述方法來(lái)實(shí)現(xiàn)一位全加器的下面是三種硬件描述方法來(lái)實(shí)現(xiàn)一位全加器的Verilog的源程序:的源程序:nmodule full_add1(a, b, cin, sum, cout);ninput a, b, cin;noutput sum, cout;nwire s1,m1, m2, m3;nand (m1, a, b),n (m2,
13、 b, cin),n (m3, a, cin);nxor (s1, a, b),n (sum, s1, cin);nor (cout, m1, m2, m3);nendmoduleinbcin)(acabcoutbacinabcoutcinbasum或nmodule full_add2(a,b,cin,sum,cout);ninput a, b, cin;noutput sum, cout;nassign sum = a b cin;nassign cout = (a & b ) | (b & cin ) | (cin & a );n/或僅使用下面一條語(yǔ)句替代上面兩條或
14、僅使用下面一條語(yǔ)句替代上面兩條n/assign cout,sum=a+b+cinnendmodule module full_add3(a,b,cin,sum,cout);ninput a,b,cin;noutput reg sum,cout;/必須定義為寄存器型變量必須定義為寄存器型變量nalways * n/或?qū)憺榛驅(qū)憺閍lways (a ,b , cin)nbegin n cout,sum=a+b+cin; nendnendmodule像這種組合電路一般不建議采用行為描述方法,因?yàn)檫^(guò)程被像這種組合電路一般不建議采用行為描述方法,因?yàn)檫^(guò)程被賦值的變量必須定義為寄存器型,而且敏感列表必須將所
15、有賦值的變量必須定義為寄存器型,而且敏感列表必須將所有輸入變量列出。最好采用數(shù)據(jù)流描述。輸入變量列出。最好采用數(shù)據(jù)流描述。下面是混合設(shè)計(jì)方式的 1 位全加器實(shí)例。module F A _ M i x (A, B, Cin, Sum, Cout) ;input A,B, Cin ;output Sum, Cout;reg Cout;reg T1, T2, T3;wire S1;xor X1( S1, A, B ); /門(mén)實(shí)例語(yǔ)句。always ( A , B , Cin ) / always 語(yǔ)句。begin T1 = A & Cin;T2 = B & Cin;T3 = A &a
16、mp; B;Cout = ( T1| T2) | T3;endassign Sum = S1 Cin; / 連續(xù)賦值語(yǔ)句。endmodule模塊中采用三種描述方法綜合進(jìn)行電路設(shè)計(jì),而這三種語(yǔ)句在模塊中是并行執(zhí)行的。1、原理圖輸入方式、原理圖輸入方式 是一種最直接的描述方式,在可編程芯片發(fā)展的早是一種最直接的描述方式,在可編程芯片發(fā)展的早期應(yīng)用比較廣泛,它將所需的器件從元件庫(kù)中調(diào)出來(lái),期應(yīng)用比較廣泛,它將所需的器件從元件庫(kù)中調(diào)出來(lái),畫(huà)出原理圖。這種方法雖然直觀并易于仿真,但效率畫(huà)出原理圖。這種方法雖然直觀并易于仿真,但效率很低,且不易維護(hù),不利于模塊構(gòu)造和重用。更主要很低,且不易維護(hù),不利于模塊
17、構(gòu)造和重用。更主要的缺點(diǎn)是可移植性差,當(dāng)芯片升級(jí)后,所有的原理圖的缺點(diǎn)是可移植性差,當(dāng)芯片升級(jí)后,所有的原理圖都需要作一定的改動(dòng)。都需要作一定的改動(dòng)。2、HDL輸入方式輸入方式分為普通分為普通 HDL (結(jié)構(gòu)和數(shù)據(jù)流)和行為描述方法:(結(jié)構(gòu)和數(shù)據(jù)流)和行為描述方法: 普通普通 HDL (結(jié)構(gòu)和數(shù)據(jù)流)(結(jié)構(gòu)和數(shù)據(jù)流) :支持邏輯方程、真值:支持邏輯方程、真值表和狀態(tài)機(jī)等表達(dá)方式,主要用于簡(jiǎn)單的小型設(shè)計(jì)。表和狀態(tài)機(jī)等表達(dá)方式,主要用于簡(jiǎn)單的小型設(shè)計(jì)。 行為行為 HDL:在中大型工程中,主要使用行為:在中大型工程中,主要使用行為 HDL,其主流語(yǔ)言是其主流語(yǔ)言是 Verilog HDL 和和 VH
18、DL。 也可以用也可以用 HDL 為主,原理圖為輔的混合設(shè)計(jì)方式,為主,原理圖為輔的混合設(shè)計(jì)方式,以發(fā)揮兩者的各自特色。以發(fā)揮兩者的各自特色。u如果數(shù)字系統(tǒng)比較復(fù)雜,可采用如果數(shù)字系統(tǒng)比較復(fù)雜,可采用“Top-down”的方法進(jìn)行設(shè)計(jì)的方法進(jìn)行設(shè)計(jì)。首先把系統(tǒng)分為幾個(gè)模塊,每個(gè)模塊再分為幾個(gè)子模塊,以。首先把系統(tǒng)分為幾個(gè)模塊,每個(gè)模塊再分為幾個(gè)子模塊,以此類(lèi)推,直到易于實(shí)現(xiàn)為止。這種此類(lèi)推,直到易于實(shí)現(xiàn)為止。這種“Top-down”的方法能夠把的方法能夠把復(fù)雜的設(shè)計(jì)分解為許多簡(jiǎn)單的邏輯來(lái)實(shí)現(xiàn),同時(shí)也適合于多人復(fù)雜的設(shè)計(jì)分解為許多簡(jiǎn)單的邏輯來(lái)實(shí)現(xiàn),同時(shí)也適合于多人進(jìn)行分工合作,如同用進(jìn)行分工合作
19、,如同用C語(yǔ)言編寫(xiě)大型軟件一樣。語(yǔ)言編寫(xiě)大型軟件一樣。Verilog語(yǔ)言語(yǔ)言能夠很好地支持這種能夠很好地支持這種“Top-down”的設(shè)計(jì)方法的設(shè)計(jì)方法。u多層次結(jié)構(gòu)電路的描述既可以采用文本方式,也可以用圖多層次結(jié)構(gòu)電路的描述既可以采用文本方式,也可以用圖形和文本混合設(shè)計(jì)的方式。用一個(gè)形和文本混合設(shè)計(jì)的方式。用一個(gè)1位全加器的設(shè)計(jì)為例來(lái)位全加器的設(shè)計(jì)為例來(lái)說(shuō)明這兩種設(shè)計(jì)方式。說(shuō)明這兩種設(shè)計(jì)方式。u前面所說(shuō)的都是在一個(gè)模塊中進(jìn)行設(shè)計(jì)的方法,而前面所說(shuō)的都是在一個(gè)模塊中進(jìn)行設(shè)計(jì)的方法,而層次電層次電路設(shè)計(jì)是針對(duì)系統(tǒng)設(shè)計(jì)提出的方法。路設(shè)計(jì)是針對(duì)系統(tǒng)設(shè)計(jì)提出的方法。上級(jí)模塊對(duì)下級(jí)模塊調(diào)用采用實(shí)例化的語(yǔ)
20、法格式為:上級(jí)模塊對(duì)下級(jí)模塊調(diào)用采用實(shí)例化的語(yǔ)法格式為:采用名稱(chēng)對(duì)應(yīng)方式,其順序可以任意。采用名稱(chēng)對(duì)應(yīng)方式,其順序可以任意。模塊名模塊名 實(shí)例名實(shí)例名 (.端口名(連接線端口名(連接線1), .端口名端口名2(連(連接線接線2),),););采用位置對(duì)應(yīng)方式,可省略端口名,但其順序必須是采用位置對(duì)應(yīng)方式,可省略端口名,但其順序必須是與原來(lái)定義的端口順序一致。與原來(lái)定義的端口順序一致。模塊名模塊名 實(shí)例名實(shí)例名 (連接線(連接線1), (連接線(連接線2),),););例如一位全加器設(shè)計(jì)可以通過(guò)兩個(gè)半加器實(shí)例調(diào)用完成:例如一位全加器設(shè)計(jì)可以通過(guò)兩個(gè)半加器實(shí)例調(diào)用完成:一位全加器一位半加器U1一位
21、半全加器U2實(shí)例化調(diào)用語(yǔ)句總是執(zhí)行的,多個(gè)調(diào)用語(yǔ)句是并行執(zhí)行。module half_add(a,b,so,co);ninput a,b; output so,co;nassign co=a&b; assign so=ab;nendmodule采用數(shù)據(jù)流描述設(shè)計(jì)建模,并通過(guò)編譯、仿真得到正確的半加器電路,保存文件,用于頂層文件調(diào)用。采用采用混合建模混合建模:建立頂層全加器電路工程,采:建立頂層全加器電路工程,采用電路圖輸入法,建立電路圖文件用電路圖輸入法,建立電路圖文件full_add,其中其中的半加器符號(hào)采用將底層文件加入到頂層工程中的半加器符號(hào)采用將底層文件加入到頂層工程中,并將該
22、底層文件生成電路符號(hào),并將該底層文件生成電路符號(hào)half_add。 根據(jù)根據(jù)全加器原理將電路組合如下:全加器原理將電路組合如下:full_addnmodule full_add(ain,bin,cin,sum,cout);ninput ain,bin,cin; output sum,cout;nwire d,e,f; /用于內(nèi)部連接的節(jié)點(diǎn)信號(hào)nhalf_add u1(ain,bin,e,d); n/半加器模塊調(diào)用,采用位置關(guān)聯(lián)方式,n/或名稱(chēng)對(duì)應(yīng)方式 n/hall_add u1(.a(ain),. b(bin), .so(e),.co(d)nhalf_add u2(e,cin,sum,f);
23、nor u3(cout,d,f); /或門(mén)調(diào)用nendmodule例例3.7 一位全加器頂層模塊程序一位全加器頂層模塊程序?qū)㈨攲幽K用硬件描述語(yǔ)言進(jìn)行設(shè)計(jì),在這里需要調(diào)用底層半加器模塊來(lái)實(shí)現(xiàn)。n、按功能將整個(gè)系統(tǒng)分為各層功能子模塊。、按功能將整個(gè)系統(tǒng)分為各層功能子模塊。n、完成每個(gè)模塊的輸入、編譯與仿真調(diào)試。、完成每個(gè)模塊的輸入、編譯與仿真調(diào)試。n、建立總工程(頂層模塊),將各個(gè)模塊加入到總、建立總工程(頂層模塊),將各個(gè)模塊加入到總工程中,并對(duì)每個(gè)模塊文件生成電路符號(hào)??偣こ棠9こ讨?,并對(duì)每個(gè)模塊文件生成電路符號(hào)??偣こ棠K可采用兩種方法建立:塊可采用兩種方法建立:n混合建模:混合建模:因?yàn)?/p>
24、總工程已變成若干模塊的組合,可因?yàn)榭偣こ桃炎兂扇舾赡K的組合,可采用直觀的電路圖建模,將各個(gè)子模塊用電路圖連接采用直觀的電路圖建模,將各個(gè)子模塊用電路圖連接起來(lái),再進(jìn)行總工程編譯、仿真與調(diào)試。起來(lái),再進(jìn)行總工程編譯、仿真與調(diào)試。n編程建模:編程建模:可以對(duì)總工程進(jìn)行可以對(duì)總工程進(jìn)行Verilog編程,通過(guò)實(shí)編程,通過(guò)實(shí)例化調(diào)用連接各個(gè)模塊。例化調(diào)用連接各個(gè)模塊?;旌辖5玫降娜悠鞴こ探D示混合建模得到的全加器工程建模圖示2 2、四位加法器層次化設(shè)計(jì)、四位加法器層次化設(shè)計(jì)四位全加器一位全加器U1一位全加器U3一位全加器U2一位全加器U4nmodule add4_1(sum,cout,a,b,
25、cin);noutput 3:0 sum;noutput cout;ninput 3:0 a,b;ninput cin;nfull_add U1(a0,b0,cin,sum0,cin1);nfull_add U2(a1,b1,cin1,sum1,cin2);nfull_add U3(a2,b2,cin2,sum2,cin3);nfull_add U4(a3,b3,cin3,sum3,cout);nendmodule當(dāng)然可采用圖形與文本編程混合設(shè)計(jì)當(dāng)然可采用圖形與文本編程混合設(shè)計(jì)。例例3.8 4位全加器頂層模塊程序位全加器頂層模塊程序4位二進(jìn)制加法器的位二進(jìn)制加法器的Verilog描述描述 mo
26、dule add4_bin(cout,sum,ina,inb,cin);input cin; input3:0 ina,inb;output3:0 sum; output cout;assign cout,sum=ina+inb+cin;/*邏輯功能定義邏輯功能定義*/endmodule簡(jiǎn)便編程直接建模設(shè)計(jì):數(shù)據(jù)流描述的簡(jiǎn)便編程直接建模設(shè)計(jì):數(shù)據(jù)流描述的4位加法器設(shè)計(jì)位加法器設(shè)計(jì)累加器累加器設(shè)計(jì)設(shè)計(jì)8位全加器位全加器module add8(sum,cout,b,a,cin);output7:0 sum;output cout;input7:0 a,b;input cin;assign cout
27、,sum=a+b+cin;endmodule8位寄存器位寄存器module reg8(qout,in,clk,clear);output7:0 qout;input7:0 in;input clk,clear;reg7:0 qout;always (posedge clk or posedge clear)beginif(clear) qout=0; /異步清異步清0else qout=in;endendmodule圖形與文本編程混合設(shè)計(jì)圖形與文本編程混合設(shè)計(jì)module acc(accout,cout,accin,cin,clk,clear);output7:0 accout;output
28、cout;input7:0 accin;input cin,clk,clear;wire7:0 sum;add8 accadd8(sum,cout,accout,accin,cin); /調(diào)用調(diào)用add8子模塊子模塊reg8 accreg8(accout,sum,clk,clear); /調(diào)用調(diào)用reg8子模塊子模塊endmodule例例3.9 累加器頂層文本描述設(shè)計(jì)(調(diào)用底層的累加器累加器頂層文本描述設(shè)計(jì)(調(diào)用底層的累加器accadd8和緩存寄存器和緩存寄存器accreg8兩個(gè)模塊)。兩個(gè)模塊)。 對(duì)于上面的模塊調(diào)用,可采用位置對(duì)應(yīng)的方式,即調(diào)用時(shí)對(duì)于上面的模塊調(diào)用,可采用位置對(duì)應(yīng)的方式,即
29、調(diào)用時(shí)模塊端口列表中信號(hào)的排列順序與模塊定義時(shí)端口列表中的信模塊端口列表中信號(hào)的排列順序與模塊定義時(shí)端口列表中的信號(hào)排列順序相同;也可以采用信號(hào)名對(duì)應(yīng)方式,此時(shí)不必按順號(hào)排列順序相同;也可以采用信號(hào)名對(duì)應(yīng)方式,此時(shí)不必按順序,例如上面對(duì)序,例如上面對(duì)reg8的調(diào)用:的調(diào)用:module reg8(qout,in,clk,c lear);/reg8的模塊聲明的模塊聲明reg8 accreg8(accout,sum,clk,clear); /調(diào)用方式調(diào)用方式1,位置對(duì)應(yīng),位置對(duì)應(yīng)Reg8 accreg8(.qout(accout),.clear(clear), .in(sum),.clk(clk)
30、;/調(diào)用方式調(diào)用方式2,信號(hào)名對(duì)應(yīng),信號(hào)名對(duì)應(yīng)n1、采用三種硬件描述方法分別設(shè)計(jì)5人投票表決電路。n2、采用電路層次方法設(shè)計(jì)100以?xún)?nèi)整數(shù)階乘運(yùn)算。 函數(shù)是用于為不同變量進(jìn)行相同運(yùn)算時(shí)采用的一種方法,這種重復(fù)運(yùn)算函數(shù)是用于為不同變量進(jìn)行相同運(yùn)算時(shí)采用的一種方法,這種重復(fù)運(yùn)算設(shè)計(jì)為一個(gè)函數(shù)模塊。運(yùn)算后函數(shù)可以返回一個(gè)值,因此函數(shù)可出現(xiàn)在等號(hào)設(shè)計(jì)為一個(gè)函數(shù)模塊。運(yùn)算后函數(shù)可以返回一個(gè)值,因此函數(shù)可出現(xiàn)在等號(hào)右邊的表達(dá)式中。右邊的表達(dá)式中。定義函數(shù)的語(yǔ)法如下所示:定義函數(shù)的語(yǔ)法如下所示:function 返回值類(lèi)型或?qū)挾确祷刂殿?lèi)型或?qū)挾?; /不需要端口列表,寬度缺省為不需要端口列表,寬度缺省為一位
31、寄存器一位寄存器 ; /至少一個(gè)輸入變量,不用定義輸出變量至少一個(gè)輸入變量,不用定義輸出變量 ; /當(dāng)多于一個(gè)語(yǔ)句時(shí),用當(dāng)多于一個(gè)語(yǔ)句時(shí),用begin end語(yǔ)句塊語(yǔ)句塊endfunction 函數(shù)的調(diào)用包含函數(shù)名和參數(shù)列表。函數(shù)的調(diào)用包含函數(shù)名和參數(shù)列表。函數(shù)通常在表達(dá)式中調(diào)用函數(shù)通常在表達(dá)式中調(diào)用,其返,其返回的結(jié)果可以用于表達(dá)式的進(jìn)一步計(jì)算或者賦值給語(yǔ)句的左邊變量,如:回的結(jié)果可以用于表達(dá)式的進(jìn)一步計(jì)算或者賦值給語(yǔ)句的左邊變量,如: = (函數(shù)參數(shù)(函數(shù)參數(shù).););/參數(shù)必須與定義的輸入變量對(duì)應(yīng),參數(shù)必須與定義的輸入變量對(duì)應(yīng),調(diào)用語(yǔ)句放在模塊中任何位置均可調(diào)用語(yǔ)句放在模塊中任何位置均可
32、1、函數(shù)( function)module bcd_enc(in,out); input9:0in; output3:0out; assign out=func_enc(in); /函數(shù)調(diào)用 function 3:0 func_enc; /函數(shù)定義 input9:0 in; case(in) 10b00_0000_0001:func_enc=0; 10b00_0000_0010:func_enc=1; 10b00_0000_0100:func_enc=2; 10b00_0000_1000:func_enc=3; 10b00_0001_0000:func_enc=4; 10b00_0010_00
33、00:func_enc=5; 10b00_0100_0000:func_enc=6; 10b00_1000_0000:func_enc=7; 10b01_0000_0000:func_enc=8; 10b10_0000_0000:func_enc=9;endcaseendfunctionendmodule函數(shù)定義module tryfunc(result,n,reset,clk);output31:0 result;input3:0 n;input reset,clk;reg31:0 result;always (posedge clk)begin if(!reset) result=0; e
34、lse result=factorial(n); /函數(shù)調(diào)用endfunction31:0 factorial; /函數(shù)名為factorialinput3:0 operand;reg4:0 index;begin factorial=operand?1:0; for(index=2,index=operand; index=index+1) factorial=index*factorial;endendfunctionendmodule定義函數(shù)復(fù)位后,時(shí)鐘上升沿每來(lái)一次,調(diào)用一次函數(shù)子程序,并將階層計(jì)算結(jié)果輸復(fù)位后,時(shí)鐘上升沿每來(lái)一次,調(diào)用一次函數(shù)子程序,并將階層計(jì)算結(jié)果輸出。出。funct
35、ion7:0 get0; /定義函數(shù)名為定義函數(shù)名為get0 input7:0 x; integer i; reg7:0 count; begin count=0; /逐條執(zhí)行下面語(yǔ)句逐條執(zhí)行下面語(yǔ)句 for (i=0;iy) begin tmp=x; x=y; y=tmp; endendtaskendmodule 升序排序升序排序VaVbVcVda=3b=6c=2d=42634第一次調(diào)用第二次調(diào)用2436第三次調(diào)用2436第四次調(diào)用24362346第五次調(diào)用Va Vb Vc Vd Ve2 8 5 9 32 8 5 9 32 8 3 9 52 8 3 9 52 8 3 9 52 8 3 5 9
36、2 3 8 5 92 3 5 8 9比較每個(gè)位置關(guān)系,兩側(cè)位置比較兩次,中間比較三次,最后得到排序結(jié)果。比較每個(gè)位置關(guān)系,兩側(cè)位置比較兩次,中間比較三次,最后得到排序結(jié)果。輸入輸入4個(gè)已知數(shù)據(jù)個(gè)已知數(shù)據(jù)a,b,c,d,經(jīng)過(guò)排序得到如下仿真結(jié)果,經(jīng)過(guò)排序得到如下仿真結(jié)果輸入數(shù)據(jù)輸入數(shù)據(jù)a、b、c、d,通過(guò)調(diào)用任務(wù)程序進(jìn)行排序,實(shí)現(xiàn)輸入數(shù)據(jù),通過(guò)調(diào)用任務(wù)程序進(jìn)行排序,實(shí)現(xiàn)輸入數(shù)據(jù)由小到大排序過(guò)程,并輸出給由小到大排序過(guò)程,并輸出給ra、rb、rc、rd,也稱(chēng)冒泡程序。,也稱(chēng)冒泡程序。排序電路是組合邏輯電路module sort4(clk,ra,rb,rc,rd,a,b,c,d);output3:0ra,rb,rc,rd;input3:0a,b,c,d;input clk;reg3:0ra,rb,rc,rd;reg3:0va,vb,vc,vd;always (posedge clk) begin va,vb,vc,vd=a,b,c,d sort2(va,vc);/依次調(diào)用任務(wù) sort2(vb,vd); sort2(va,vb); sort2(vc,vd); sort2
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電氣工程師的工作總結(jié)
- 2025年度商業(yè)寫(xiě)字樓車(chē)位使用權(quán)轉(zhuǎn)讓合同模板
- 二零二五年度大型商場(chǎng)消防工程驗(yàn)收及安全評(píng)估合同3篇
- 二零二五年度個(gè)人消費(fèi)信貸合同模板8篇
- 二零二五年度青少年戶外夏令營(yíng)活動(dòng)參加協(xié)議3篇
- 二零二五版房地產(chǎn)售后服務(wù)居間合同范本
- 二零二五年度個(gè)人房產(chǎn)買(mǎi)賣(mài)合同終止協(xié)議3篇
- 二零二五年度鋼材采購(gòu)與供應(yīng)合同范本
- 二零二五年度深海探測(cè)設(shè)備制造個(gè)人工勞務(wù)分包合同4篇
- 二零二五年度離婚探望權(quán)協(xié)議范本與子女監(jiān)護(hù)權(quán)規(guī)定3篇
- 給排水科學(xué)與工程基礎(chǔ)知識(shí)單選題100道及答案解析
- 2024年土地變更調(diào)查培訓(xùn)
- 2024年全國(guó)外貿(mào)單證員鑒定理論試題庫(kù)(含答案)
- 新版中國(guó)食物成分表
- 《財(cái)務(wù)管理學(xué)(第10版)》課件 第5、6章 長(zhǎng)期籌資方式、資本結(jié)構(gòu)決策
- 房屋永久居住權(quán)合同模板
- 初中英語(yǔ)不規(guī)則動(dòng)詞表(譯林版-中英)
- 2024年3月四川省公務(wù)員考試面試題及參考答案
- 新生兒黃疸早期識(shí)別課件
- 醫(yī)藥營(yíng)銷(xiāo)團(tuán)隊(duì)建設(shè)與管理
- 二年級(jí)數(shù)學(xué)上冊(cè)口算題100道(全冊(cè)完整)
評(píng)論
0/150
提交評(píng)論