ch03-VerilogHDL基礎(chǔ)與組合電路建模_第1頁(yè)
ch03-VerilogHDL基礎(chǔ)與組合電路建模_第2頁(yè)
ch03-VerilogHDL基礎(chǔ)與組合電路建模_第3頁(yè)
ch03-VerilogHDL基礎(chǔ)與組合電路建模_第4頁(yè)
ch03-VerilogHDL基礎(chǔ)與組合電路建模_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

工程學(xué)院信息技術(shù)教研室VerilogHDL與FPGA數(shù)字系統(tǒng)設(shè)計(jì)3.1VerilogHDL基本語(yǔ)法規(guī)則3VerilogHDL基礎(chǔ)語(yǔ)法與組合邏輯電路建模3.2VerilogHDL門(mén)級(jí)建模3.3VerilogHDL數(shù)據(jù)流建模與運(yùn)算符3.4組合電路的行為級(jí)建模3.5分層次的電路設(shè)計(jì)方法3.1VerilogHDL基本語(yǔ)法規(guī)則3.1.1詞法規(guī)定3.1.2邏輯值集合3.1.3常量及其表示3.1.4數(shù)據(jù)類(lèi)型33.1.1詞法規(guī)定為對(duì)數(shù)字電路進(jìn)行描述,Verilog語(yǔ)言規(guī)定了一套完整的語(yǔ)法結(jié)構(gòu)。1.間隔符:

Verilog的間隔符主要起分隔文本的作用,可以使文本錯(cuò)落有致,便于閱讀與修改。間隔符包括空格符(\b)、TAB鍵(\t)、換行符(\n)及換頁(yè)符。2.注釋符:注釋只是為了改善程序可讀性,編譯時(shí)不起作用。多行注釋符(用于寫(xiě)多行注釋):/*---*/;單行注釋符:以//開(kāi)始到行尾結(jié)束為注釋文字。4標(biāo)識(shí)符:給對(duì)象(如模塊名、電路的輸入與輸出端口、變量等)取名所用的字符串。以英文字母或下劃線(xiàn)開(kāi)始如,clk、counter8、_net、bus_A

。關(guān)鍵詞:用Verilog語(yǔ)言本身規(guī)定的特殊字符串定義語(yǔ)言的結(jié)構(gòu)。例如,module、endmodule、input、output、wire、reg、and等都是關(guān)鍵詞。關(guān)鍵詞都是小寫(xiě),關(guān)鍵詞不能作為標(biāo)識(shí)符使用。3.標(biāo)識(shí)符和關(guān)鍵詞5為了表示數(shù)字邏輯電路的邏輯狀態(tài),Verilog語(yǔ)言規(guī)定了4種基本的邏輯值。0邏輯0、邏輯假1邏輯1、邏輯真x或X不確定的值(未知狀態(tài))z或Z高阻態(tài)3.1.2邏輯值集合63.1.3常量及其表示三種類(lèi)型的常量整數(shù)型常量實(shí)數(shù)型常量字符串型常量實(shí)數(shù)型常量十進(jìn)制記數(shù)法如:0.1、2.0、5.67科學(xué)記數(shù)法如:23_5.1e2、5E-423510.0、0.0005十進(jìn)制數(shù)形式的表示方法:表示有符號(hào)常量例如:30、-2帶基數(shù)形式的表示方法:格式為:<+/-><位寬>’<基數(shù)符號(hào)><數(shù)值>整數(shù)型常量例如:3’b101、5’o37、8’he3,8’b1001_0011

73.1.3常量及其表示;Verilog允許用參數(shù)定義語(yǔ)句定義一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)常量,稱(chēng)為符號(hào)常量。定義的格式為:

parameter參數(shù)名1=常量表達(dá)式1,參數(shù)名2=常量表達(dá)式2……如parameterBIT=1,BYTE=8,PI=3.14;字符串常量字符串是用雙撇號(hào)括起來(lái)的字符序列,它必須包含在同一行中,不能分成多行書(shū)寫(xiě)。例如:

''thisisastring''''helloworld!''符號(hào)常量83.1.4

數(shù)據(jù)類(lèi)型變量的數(shù)據(jù)類(lèi)型寄存器型線(xiàn)網(wǎng)型線(xiàn)網(wǎng)類(lèi):是指輸出始終根據(jù)輸入的變化而更新其值的變量,它一般指的是硬件電路中的各種物理連接.

常用的網(wǎng)絡(luò)類(lèi)型由關(guān)鍵詞wire定義,格式如下:wire[n-1:0]變量名1,變量名2,…,變量名n;變量寬度例:網(wǎng)絡(luò)型變量L的值由與門(mén)的驅(qū)動(dòng)信號(hào)A和B所決定,即L=A&B。A、B的值發(fā)生變化,線(xiàn)網(wǎng)L的值會(huì)立即跟著變化。9表3.1.3線(xiàn)網(wǎng)類(lèi)型變量及其說(shuō)明線(xiàn)網(wǎng)類(lèi)型功能說(shuō)明wire,tri用于表示單元(元件)之間的連線(xiàn),wire為一般連線(xiàn);tri用于描述由多個(gè)信號(hào)源驅(qū)動(dòng)的線(xiàn)網(wǎng),并沒(méi)有其他特殊意義,兩者的功能完全相同。wor,trior具有線(xiàn)或特性的線(xiàn)網(wǎng),用于一個(gè)線(xiàn)網(wǎng)被多個(gè)信號(hào)驅(qū)動(dòng)的情況wand,riand具有線(xiàn)與特性的線(xiàn)網(wǎng),用于一個(gè)線(xiàn)網(wǎng)被多個(gè)信號(hào)驅(qū)動(dòng)的情況trireg具有電荷保持特性的線(xiàn)網(wǎng)類(lèi)型,用于開(kāi)關(guān)級(jí)建模tri1上拉電阻,用于開(kāi)關(guān)級(jí)建模tri0下拉電阻,用于開(kāi)關(guān)級(jí)建模supply1用于對(duì)電源建模,高電平1supply0用于對(duì)地建模,低電平010關(guān)于“多重驅(qū)動(dòng)”在寫(xiě)可綜合的Verilog代碼時(shí),建議不要對(duì)同一個(gè)變量進(jìn)行多次賦值(簡(jiǎn)稱(chēng)多重驅(qū)動(dòng)),以避免出現(xiàn)多個(gè)信號(hào)同時(shí)驅(qū)動(dòng)一個(gè)輸出變量的情況。BLAC圖3.1.2多重驅(qū)動(dòng)示意圖例如,A、B、C三個(gè)內(nèi)部信號(hào)同時(shí)接到(驅(qū)動(dòng))一個(gè)輸出端L?;蛘哒f(shuō),輸出L同時(shí)被三個(gè)內(nèi)部信號(hào)所驅(qū)動(dòng)。此時(shí)L的邏輯值可能無(wú)法確定。113.1.4

數(shù)據(jù)類(lèi)型變量的數(shù)據(jù)類(lèi)型寄存器型線(xiàn)網(wǎng)型寄存器型變量對(duì)應(yīng)的是具有狀態(tài)保持作用的電路等元件,如觸發(fā)器寄存器。寄存器型變量只能在initial或always內(nèi)部被賦值。12寄存器變量類(lèi)型寄存器類(lèi)型功能說(shuō)明reg常用的寄存器型變量integer32位帶符號(hào)的整數(shù)型變量real/realtime64位帶符號(hào)的實(shí)數(shù)型變量time64位無(wú)符號(hào)的時(shí)間變量表3.1.5

寄存器變量類(lèi)型及其說(shuō)明例:regclock;//一個(gè)1位寄存器變量的聲明

reg[3:0]counter;//一個(gè)4位寄存器變量的聲明抽象描述,不對(duì)應(yīng)具體硬件end13硬件模型的區(qū)別仿真過(guò)程的區(qū)別14線(xiàn)網(wǎng)變量和寄存器變量類(lèi)型的區(qū)別3.2VerilogHDL門(mén)級(jí)建模3.2.1多輸入門(mén)3.2.4門(mén)級(jí)建模舉例3.2.2多輸出門(mén)3.2.3三態(tài)門(mén)15基本概念:結(jié)構(gòu)級(jí)建模:就是根據(jù)邏輯電路的結(jié)構(gòu)(邏輯圖),實(shí)例引用VerilogHDL中內(nèi)置的基本門(mén)級(jí)元件或者用戶(hù)定義的元件或其他模塊,來(lái)描述結(jié)構(gòu)圖中的元件以及元件之間的連接關(guān)系。門(mén)級(jí)建模:VerilogHDL中內(nèi)置了12個(gè)基本門(mén)級(jí)元件(Primitive,有的翻譯為“原語(yǔ)”)模型,引用這些基本門(mén)級(jí)元件對(duì)邏輯圖進(jìn)行描述,也稱(chēng)為門(mén)級(jí)建模。16VerilogHDL基本門(mén)級(jí)元件(Primitive:原語(yǔ))

多輸入門(mén):and、nand、or、nor、xor、xnor

只有單個(gè)輸出,1個(gè)或多個(gè)輸入多輸出門(mén):not、buf

允許有多個(gè)輸出,但只有一個(gè)輸入三態(tài)門(mén):bufif0、bufif1、notif0、notif1

有一個(gè)輸出,一個(gè)數(shù)據(jù)輸入和一個(gè)控制輸入上拉電阻pullup、下拉電阻pulldown176.4.1多輸入門(mén)原語(yǔ)名稱(chēng)圖形符號(hào)邏輯表達(dá)式and(與門(mén))L=A&Bnand(與非門(mén))L=~(A&B)or(或門(mén))L=A|Bnor(或非門(mén))L=~(A|B)xor(異或門(mén))L=A^Bxnor(同或門(mén))L=A~^B

共6個(gè):and、nand、or、nor、xor、xnor

特點(diǎn):只有1個(gè)輸出,有多個(gè)輸入多輸入門(mén)的一般引用格式為:Gate_name<instance>(OutputA,Input1,Input2,…,InputN);18基本門(mén)的調(diào)用方法舉例:若同一個(gè)基本門(mén)在當(dāng)前模塊中被調(diào)用多次,可在一條調(diào)用語(yǔ)句中加以說(shuō)明,中間以逗號(hào)相隔。andA1(out,in1,in2,in3);xnorNX1(out,in1,in2,in3,in4);

對(duì)基本門(mén)級(jí)元件,調(diào)用名A1、NX1可以省略。19真值表舉例表3.2.2and、nand真值表and輸入1nand輸入101xz01xz輸入200000輸入201111101xx110xxx0xxxx1xxxz0xxxz1xxx203.2.2

多輸出門(mén)允許有多個(gè)輸出,但只有一個(gè)輸入。notN1(out1,out2,…,in);xx10zx10輸入buf輸出buf真值表輸出xx01zx10輸入notnot真值表bufB1(out1,out2,…,in);out1inout2outN…213.2.3

三態(tài)門(mén)有一個(gè)輸出、一個(gè)數(shù)據(jù)輸入和一個(gè)輸入控制。如果輸入控制信號(hào)無(wú)效,則三態(tài)門(mén)的輸出為高阻態(tài)z。22boutasel//Gate-leveldescriptionmodule_2to1muxtri(a,b,sel,out);

inputa,b,sel;

outputout;

triout;bufif1(out,b,sel);

bufif0(out,a,sel);endmodule

-2選1數(shù)據(jù)選擇器一些Verilog原型(Primitive)小結(jié):門(mén)級(jí)建模就是列出電路圖結(jié)構(gòu)中的元件,并按網(wǎng)表連接。3.2.4門(mén)級(jí)建模舉例23moduleaddbit(a,b,ci,sum,co);inputa,b,ci;outputsum,co;wirea,b,ci,sum,co,n1,n2,n3;

xor

u0(n1,a,b,),

u1(sum,n1,ci);

and

u2(n2,a,b),

u3(n3,n1,ci);

or(co,n2,n3);endmodule

-1位全加器3.2.4門(mén)級(jí)建模舉例24門(mén)級(jí)描述小結(jié):1.給電路圖中的每個(gè)輸入輸出引腳賦以端口名.2.給電路圖中每條內(nèi)部連線(xiàn)取上各自的連線(xiàn)名.3.給電路圖中的每個(gè)邏輯元件取一個(gè)編號(hào)(即“調(diào)用名”).4.給所要描述的這個(gè)電路模塊確定一個(gè)模塊名.5.用module定義相應(yīng)模塊名的結(jié)構(gòu)描述,并將邏輯圖中所有的輸入輸出端口名列入端口名表項(xiàng)中,再完成對(duì)各端口的輸入輸出類(lèi)型說(shuō)明.6.依照電路圖中的連接關(guān)系,確定各單元之間端口信號(hào)的連接,完成對(duì)電路圖內(nèi)部的結(jié)構(gòu)描述.7.最后用endmodule結(jié)束模塊描述全過(guò)程.end253.3VerilogHDL數(shù)據(jù)流建模與運(yùn)算符3.3.1數(shù)據(jù)流建模3.3.2運(yùn)算符及其優(yōu)先級(jí)263.3VerilogHDL數(shù)據(jù)流建模與運(yùn)算符對(duì)于基本單元邏輯電路,使用Verilog語(yǔ)言提供的門(mén)級(jí)元件模型描述電路非常方便。但隨著電路復(fù)雜性的增加,使用的邏輯門(mén)較多時(shí),使用HDL門(mén)級(jí)描述的工作效率就很低。本節(jié)介紹的數(shù)據(jù)流建模能夠在較高的抽象級(jí)別描述電路的邏輯功能,并且通過(guò)邏輯綜合軟件,能夠自動(dòng)地將數(shù)據(jù)流描述轉(zhuǎn)換成為門(mén)級(jí)電路。數(shù)據(jù)流建模主要使用邏輯表達(dá)式,所以要了解各種運(yùn)算符和表達(dá)式。273.3.1數(shù)據(jù)流建模

數(shù)據(jù)流建模使用的連續(xù)賦值語(yǔ)句,由關(guān)鍵詞assign開(kāi)始,后面跟著由操作數(shù)和運(yùn)算符等組成的邏輯表達(dá)式。一般用法如下:

wire[位寬說(shuō)明]變量名1,變量名2,……,變量名n;

assign

變量名=表達(dá)式;注意,assign

語(yǔ)句只能對(duì)wire型變量進(jìn)行賦值,所以等號(hào)左邊變量名的數(shù)據(jù)類(lèi)型必須是wire型。28modulemux2to1_dataflow(D0,D1,S,Y

);

inputD0,D1,S;outputY;wireY;//下面是邏輯功能描述

assignY=(~S&D0)|(S&D1);

//表達(dá)式左邊Y必須是wire型endmodule

端口類(lèi)型說(shuō)明電路結(jié)構(gòu)描述數(shù)據(jù)類(lèi)型說(shuō)明例用數(shù)據(jù)流描述方式建立模型29modulemux2x1_df(D0,D1,S,L);inputD0,D1,S;outputL;

assignL=S?D1:D0;endmodule例:用條件運(yùn)算符描述了一個(gè)2選1的數(shù)據(jù)選擇器。條件運(yùn)算符:如果S=1,則輸出L=D1;否則L=D0。30moduledecoder_df(A1,A0,E,Y);inputA1,A0,E;output[3:0]Y;

assignY[0]=~(~A1&~A0&~E);assignY[1]=~(~A1&A0&~E);assignY[2]=~(A1&~A0&~E);assignY[3]=~(A1&A0&~E);endmodule例:用數(shù)據(jù)流建模方法對(duì)2線(xiàn)-4線(xiàn)譯碼器的行為進(jìn)行描述。

313.3.2

運(yùn)算符及其優(yōu)先級(jí)1.運(yùn)算符(9類(lèi))?:條件運(yùn)算符{}連接運(yùn)算符<<,>>邏輯移位運(yùn)算符==,!=,===,!==相等與全等運(yùn)算符<,>,<=,>=關(guān)系運(yùn)算符(雙目)!,&&,||邏輯運(yùn)算符&,~&,|,~|,^,^~or~^縮位運(yùn)算符(單目)~,&,|,^,^~or~^位運(yùn)算符+,-,*,/,%算術(shù)運(yùn)算符所含運(yùn)算符運(yùn)算符分類(lèi)32對(duì)同一個(gè)操作數(shù)的重復(fù)拼接還可以雙重大括號(hào)構(gòu)成的運(yùn)算符{{}}例如{4{A}}=4’b1111,{2{A},2{B},C}=8’b11101000。作用是將兩個(gè)或多個(gè)信號(hào)的某些位拼接起來(lái)成為一個(gè)新的操作數(shù),進(jìn)行運(yùn)算操作。位拼接運(yùn)算符設(shè)A=1’b1,B=2’b10,C=2’b00則{B,C}=4’b1000{A,B[1],C[0]}=3’b110{A,B,C,3’b101}=8’b11000101。33位運(yùn)算符與縮位運(yùn)算的比較A:4’b1010、B:4’b1111,A~^B=1010A^B=0101A|B=1111A&B=1010~A=0101~B=0000

位運(yùn)算~^A=1~^B=1^A=0^B=0|A=1~|B=0~&A=1&B=1&A=1&0&1&0=0

縮位運(yùn)算34a、b的初值同為4‘b0100,c和d的初值同為4’b10x0a==ba!=ba===ba!==b1010c==dc!=dc===dc!==dxx10相等與全等運(yùn)算符==(邏輯相等),!=(邏輯不等)===(條件全等),!==(條件不全等)35一般用法:

condition_expr?expr1:expr2;條件運(yùn)算符是三目運(yùn)算符,運(yùn)算時(shí)根據(jù)條件表達(dá)式的值選擇表達(dá)式。首先計(jì)算第一個(gè)操作數(shù)condition_expr的值,如果結(jié)果為邏輯1,則選擇第二個(gè)操作數(shù)expr1的值作為結(jié)果返回,結(jié)果為邏輯0,選擇第三個(gè)操作數(shù)expr2的值作為結(jié)果返回。362.運(yùn)算符的優(yōu)先級(jí)優(yōu)先級(jí)的順序從下向上依次增加。類(lèi)型符號(hào)優(yōu)先級(jí)別取反!~-(求2的補(bǔ)碼)最高優(yōu)先級(jí)算術(shù)*/+-最低優(yōu)先級(jí)移位>><<關(guān)系<<=>>=等于==!=縮位&~&^^~|~|邏輯&&||條件?:end373.4組合電路的行為級(jí)建模3.4VerilogHDL行為級(jí)建模行為級(jí)建模就是描述數(shù)字邏輯電路的功能和算法。在Verilog中,行為級(jí)描述主要使用由關(guān)鍵詞initial或always定義的兩種結(jié)構(gòu)類(lèi)型的語(yǔ)句。一個(gè)模塊的內(nèi)部可以包含多個(gè)initial或always語(yǔ)句。initial語(yǔ)句是一條初始化語(yǔ)句,僅執(zhí)行一次,經(jīng)常用于測(cè)試模塊中,對(duì)激勵(lì)信號(hào)進(jìn)行描述,在硬件電路的行為描述中,有時(shí)為了仿真的需要,也用initial語(yǔ)句給寄存器變量賦初值。initial語(yǔ)句主要是一條面向仿真的過(guò)程語(yǔ)句,不能用于邏輯綜合。這里不介紹它的用法。在always結(jié)構(gòu)型語(yǔ)句內(nèi)部有一系列過(guò)程性賦值語(yǔ)句,用來(lái)描述電路的功能(行為)。393.4.1行為級(jí)建?;A(chǔ)下面介紹行為級(jí)建模中經(jīng)常使用的語(yǔ)句:1.always語(yǔ)句結(jié)構(gòu)及過(guò)程賦值語(yǔ)句2.條件語(yǔ)句(if-else)3.多路分支語(yǔ)句(case-endcase)4.for循環(huán)語(yǔ)句(例如for等)401.always語(yǔ)句的一般用法:always

@(事件控制表達(dá)式)begin:塊名塊內(nèi)局部變量的定義;

過(guò)程賦值語(yǔ)句(包括高級(jí)語(yǔ)句);endbegin…end

之間只有一條語(yǔ)句時(shí),關(guān)鍵詞可以省略;begin…end

之間的多條語(yǔ)句被稱(chēng)為順序語(yǔ)句塊??梢越o語(yǔ)句塊取一個(gè)名字,稱(chēng)為有名塊。

“@”稱(chēng)為事件控制運(yùn)算符,用于掛起某個(gè)動(dòng)作,直到事件發(fā)生。“事件控制表達(dá)式”也稱(chēng)為敏感事件表,它是后面begin和end之間的語(yǔ)句執(zhí)行的條件。當(dāng)事件發(fā)生或某一特定的條件變?yōu)椤罢妗睍r(shí),后面的過(guò)程賦值語(yǔ)句就會(huì)被執(zhí)行。41(3)if(condition_expr1)true_statement1;elseif(condition_expr2)true_statement2;elseif(condition_expr3)true_statement3;……elsedefault_statement;2、條件語(yǔ)句(if語(yǔ)句)條件語(yǔ)句就是根據(jù)判斷條件是否成立,確定下一步的運(yùn)算。(1)if(condition_expr)true_statement;(2)if(condition_expr)true_statement;elsefale_statement;Verilog語(yǔ)言中有3種形式的if語(yǔ)句:if后面的條件表達(dá)式一般為邏輯表達(dá)式或關(guān)系表達(dá)式。執(zhí)行if語(yǔ)句時(shí),首先計(jì)算表達(dá)式的值,若結(jié)果為0、x或z,按“假”處理;若結(jié)果為1,按“真”處理,并執(zhí)行相應(yīng)的語(yǔ)句。42例:使用if-else語(yǔ)句對(duì)4選1數(shù)據(jù)選擇器的行為進(jìn)行描述注意,過(guò)程賦值語(yǔ)句只能給寄存器型變量賦值,因此,輸出變量Y的數(shù)據(jù)類(lèi)型定義為reg。modulemux4to1_bh(D,S,Y);input[3:0]D;//輸入端口

input[1:0]S;//輸入端口

outputregY;//輸出端口及變量數(shù)據(jù)類(lèi)型

always@(D,S)//電路功能描述

if(S==2’b00)Y=D[0];elseif(S==2’b01)Y=D[1];elseif(S==2’b10)Y=D[2];elseY=D[3];endmodule43是一種多分支條件選擇語(yǔ)句,一般形式如下case(case_expr)item_expr1:statement1;item_expr2:statement2;……

default:default_statement;//default語(yǔ)句可以省略endcase注意:當(dāng)分支項(xiàng)中的語(yǔ)句是多條語(yǔ)句,必須在最前面寫(xiě)上關(guān)鍵詞begin,在最后寫(xiě)上關(guān)鍵詞end,成為順序語(yǔ)句塊。另外,用關(guān)鍵詞casex和casez表示含有無(wú)關(guān)項(xiàng)x和高阻z的情況。3、多路分支語(yǔ)句(case語(yǔ)句)44例:對(duì)具有使能端En的4選1數(shù)據(jù)選擇器的行為進(jìn)行Verilog描述。當(dāng)En=0時(shí),數(shù)據(jù)選擇器工作,En=1時(shí),禁止工作,輸出為0。modulemux4to1_bh

(D,S,Y,En);input[3:0]D,[1:0]S;inputEn;outputregY;

always@(D,S,En)//2001,2005syntaxbeginif(En==1)Y=0;//En=1時(shí),輸出為0else//En=0時(shí),選擇器工作case(S)2’d0:Y=D[0];2’d1:Y=D[1];2’d2:Y=D[2];2’d3:Y=D[3];endcaseendendmodule45一般形式如下for(initial_assignment;condition;step_assignment)statement;initial_assignment為循環(huán)變量的初始值。condition為循環(huán)的條件,若為真,執(zhí)行過(guò)程賦值語(yǔ)句statement,若不成立,循環(huán)結(jié)束,執(zhí)行for后面的語(yǔ)句。step_assignment為循環(huán)變量的步長(zhǎng),每次迭代后,循環(huán)變量將增加或減少一個(gè)步長(zhǎng)。4、for循環(huán)語(yǔ)句46moduleecoder3to8_bh(A,En,Y);input[2:0]A,En;outputreg[7:0]Y;integerk;//聲明一個(gè)整型變量kalways@(A,En)//beginY=8’b1111_1111;//設(shè)譯碼器輸出的默認(rèn)值

for(k=0;k<=7;k=k+1)//下面的if-else語(yǔ)句循環(huán)8次

if((En==1)&&(A==k))Y[k]=0;//當(dāng)En=1時(shí),根據(jù)A進(jìn)行譯碼

elseY[k]=1;//處理使能無(wú)效或輸入無(wú)效的情況

endendmodule

試用Verilog語(yǔ)言描述具有高電平使能的3線(xiàn)-8線(xiàn)譯碼器.循環(huán)8次473.5.1

設(shè)計(jì)方法

3.5.2模塊實(shí)例引用語(yǔ)句

3.5分層次的電路設(shè)計(jì)方法3.5.1設(shè)計(jì)方法

分層次建模就是將一個(gè)比較復(fù)雜數(shù)字電路劃分為多個(gè)組成模塊,分別對(duì)每個(gè)模塊建模,然后將這些模塊組合成一個(gè)總模塊,完成所需的功能。通常有自頂向下(top-down)和自底向上(bottom-up)自頂向下:先將最終設(shè)計(jì)目標(biāo)定義成頂層模塊,再按一定方法將頂層模塊劃分成各個(gè)子模塊,然后對(duì)子模塊進(jìn)行邏輯設(shè)計(jì)。自底向上:由基本元件構(gòu)成的各個(gè)子模塊首先被確定下來(lái),然后將這些子模塊組合起來(lái)構(gòu)成頂層模塊,最后得到所要求的電路。493.5.1設(shè)計(jì)方法50全加器電路設(shè)計(jì)舉例使用自下而上的方法:實(shí)例引用基本門(mén)級(jí)元件xor、and定義底層的半加器模塊halfadder;實(shí)例引用兩個(gè)半加器模塊halfadder和一個(gè)基本或門(mén)元件or組合成為全加器模塊fulladder;實(shí)例引用4個(gè)1位的全加器模塊fulladder構(gòu)成4位全加器的頂層模塊。51//************一位半加器的描述(參考圖3.4.26)************modulehalfadder(S,C,A,B);//IEEE1364—1995SyntaxinputA,B;//輸入端口聲明

outputS,C;//輸出端口聲明

xor(S,A,B);//實(shí)例引用邏輯門(mén)原語(yǔ)

and(C,A,B);endmodule

//************一位全加器的描述(參考圖3.4.28)************modulefulladder(Sum,Co,A,B,Ci);inp

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論