![chVerilogHDL基礎(chǔ)與組合電路建模演示文稿_第1頁](http://file4.renrendoc.com/view/e4ffa85fe3ed99c7d00d4ea7336fa1ae/e4ffa85fe3ed99c7d00d4ea7336fa1ae1.gif)
![chVerilogHDL基礎(chǔ)與組合電路建模演示文稿_第2頁](http://file4.renrendoc.com/view/e4ffa85fe3ed99c7d00d4ea7336fa1ae/e4ffa85fe3ed99c7d00d4ea7336fa1ae2.gif)
![chVerilogHDL基礎(chǔ)與組合電路建模演示文稿_第3頁](http://file4.renrendoc.com/view/e4ffa85fe3ed99c7d00d4ea7336fa1ae/e4ffa85fe3ed99c7d00d4ea7336fa1ae3.gif)
![chVerilogHDL基礎(chǔ)與組合電路建模演示文稿_第4頁](http://file4.renrendoc.com/view/e4ffa85fe3ed99c7d00d4ea7336fa1ae/e4ffa85fe3ed99c7d00d4ea7336fa1ae4.gif)
![chVerilogHDL基礎(chǔ)與組合電路建模演示文稿_第5頁](http://file4.renrendoc.com/view/e4ffa85fe3ed99c7d00d4ea7336fa1ae/e4ffa85fe3ed99c7d00d4ea7336fa1ae5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
chVerilogHDL基礎(chǔ)與組合電路建模演示文稿現(xiàn)在是1頁\一共有112頁\編輯于星期日3.1VerilogHDL基本語法規(guī)則3.2VerilogHDL門級建模3.3VerilogHDL數(shù)據(jù)流建模與運算符3.4組合電路的行為級建模3.5分層次的電路設(shè)計方法現(xiàn)在是2頁\一共有112頁\編輯于星期日3.1VerilogHDL基本語法規(guī)則3.1.1詞法規(guī)定3.1.2邏輯值集合3.1.3常量及其表示3.1.4數(shù)據(jù)類型3現(xiàn)在是3頁\一共有112頁\編輯于星期日3.1.1詞法規(guī)定為對數(shù)字電路進(jìn)行描述,Verilog語言規(guī)定了一套完整的語法結(jié)構(gòu)。1.間隔符:Verilog的間隔符主要起分隔文本的作用,可以使文本錯落有致,便于閱讀與修改。間隔符包括空格符(\b)、TAB鍵(\t)、換行符(\n)及換頁符。2.注釋符:注釋只是為了改善程序可讀性,編譯時不起作用。多行注釋符(用于寫多行注釋):/*---*/;單行注釋符:以//開始到行尾結(jié)束為注釋文字。4現(xiàn)在是4頁\一共有112頁\編輯于星期日任何用VerilogHDL語言描述的“東西”都通過其名字來識別,這個名字被稱為標(biāo)識符。如源文件名、模塊名、端口名、變量名、常量名、實例名等。標(biāo)識符可由字母、數(shù)字、下劃線和$符號構(gòu)成;但第一個字符必須是字母或下劃線,不能是數(shù)字或$符號!在VerilogHDL中變量名是區(qū)分大小寫的!合法的名字:A_99_ZReset_54MHz_Clock$Module
不合法的名字:123a$datamodule7seg.v標(biāo)識符不能與關(guān)鍵字同名!三、標(biāo)識符和關(guān)鍵字
5現(xiàn)在是5頁\一共有112頁\編輯于星期日關(guān)鍵字——事先定義好的確認(rèn)符,用來組織語言結(jié)構(gòu);或者用于定義VerilogHDL提供的門元件(如and,not,or,buf)。用小寫字母定義!——如always,assign,begin,case,casex,else,end,for,function,if,input,output,repeat,table,time,while,wire用戶程序中的變量、節(jié)點等名稱不能與關(guān)鍵字同名!三、標(biāo)識符和關(guān)鍵字
6現(xiàn)在是6頁\一共有112頁\編輯于星期日為了表示數(shù)字邏輯電路的邏輯狀態(tài),Verilog語言規(guī)定了4種基本的邏輯值。0邏輯0、邏輯假1邏輯1、邏輯真x或X不確定的值(未知狀態(tài))z或Z高阻態(tài)3.1.2邏輯值集合7現(xiàn)在是7頁\一共有112頁\編輯于星期日數(shù)據(jù)類型是用來表示數(shù)字電路硬件中的數(shù)據(jù)存儲和傳送元素的。常量是在程序運行過程中,其值不能被改變的量。3.1.3常量及其表示8現(xiàn)在是8頁\一共有112頁\編輯于星期日3.1.3常量及其表示三種類型的常量整數(shù)型常量實數(shù)型常量字符串型常量實數(shù)型常量十進(jìn)制記數(shù)法如:0.1、2.0、5.67科學(xué)記數(shù)法如:23_5.1e2、5E-4
23510.0、0.0005十進(jìn)制數(shù)形式的表示方法:表示有符號常量例如:30、-2帶基數(shù)形式的表示方法:格式為:<+/-><位寬>’<基數(shù)符號><數(shù)值>整數(shù)型常量例如:3’b101、5’o37、8’he3,8’b1001_0011
9現(xiàn)在是9頁\一共有112頁\編輯于星期日3.1.3常量及其表示;Verilog允許用參數(shù)定義語句定義一個標(biāo)識符來代表一個常量,稱為符號常量。定義的格式為:
parameter參數(shù)名1=常量表達(dá)式1,參數(shù)名2=常量表達(dá)式2……如parameterBIT=1,BYTE=8,PI=3.14;字符串常量字符串是用雙撇號括起來的字符序列,它必須包含在同一行中,不能分成多行書寫。例如:
''thisisastring''''helloworld!''符號常量10現(xiàn)在是10頁\一共有112頁\編輯于星期日3.1.4
數(shù)據(jù)類型變量的數(shù)據(jù)類型寄存器型線網(wǎng)型線網(wǎng)類:是指輸出始終根據(jù)輸入的變化而更新其值的變量,它一般指的是硬件電路中的各種物理連接.常用的網(wǎng)絡(luò)類型由關(guān)鍵詞wire定義,格式如下:wire[n-1:0]變量名1,變量名2,…,變量名n;變量寬度例:網(wǎng)絡(luò)型變量L的值由與門的驅(qū)動信號a和b所決定,即L=a&b。a、b的值發(fā)生變化,線網(wǎng)L的值會立即跟著變化。11現(xiàn)在是11頁\一共有112頁\編輯于星期日wire型數(shù)據(jù)常用來表示用以assign關(guān)鍵字指定的組合邏輯信號。Verilog程序模塊中輸入、輸出信號類型默認(rèn)時,自動定義為wire型。wire型信號可以用做任何方程式的輸入,也可以用做assign語句或?qū)嵗妮敵?。wirea;//定義了一個1位的wire型數(shù)據(jù)wire[7:0]b;//定義了一個8位的wire型數(shù)據(jù)wire[4:1]c,d;//定義了二個4位的wire型數(shù)據(jù)wire型12現(xiàn)在是12頁\一共有112頁\編輯于星期日表3.1.3線網(wǎng)類型變量及其說明線網(wǎng)類型功能說明wire,tri用于表示單元(元件)之間的連線,wire為一般連線;tri用于描述由多個信號源驅(qū)動的線網(wǎng),并沒有其他特殊意義,兩者的功能完全相同。wor,trior具有線或特性的線網(wǎng),用于一個線網(wǎng)被多個信號驅(qū)動的情況wand,riand具有線與特性的線網(wǎng),用于一個線網(wǎng)被多個信號驅(qū)動的情況trireg具有電荷保持特性的線網(wǎng)類型,用于開關(guān)級建模tri1上拉電阻,用于開關(guān)級建模tri0下拉電阻,用于開關(guān)級建模supply1用于對電源建模,高電平1supply0用于對地建模,低電平013現(xiàn)在是13頁\一共有112頁\編輯于星期日關(guān)于“多重驅(qū)動”在寫可綜合的Verilog代碼時,建議不要對同一個變量進(jìn)行多次賦值(簡稱多重驅(qū)動),以避免出現(xiàn)多個信號同時驅(qū)動一個輸出變量的情況。BLAC圖3.1.2多重驅(qū)動示意圖例如,A、B、C三個內(nèi)部信號同時接到(驅(qū)動)一個輸出端L?;蛘哒f,輸出L同時被三個內(nèi)部信號所驅(qū)動。此時L的邏輯值可能無法確定。14現(xiàn)在是14頁\一共有112頁\編輯于星期日3.1.4
數(shù)據(jù)類型變量的數(shù)據(jù)類型寄存器型線網(wǎng)型寄存器型變量對應(yīng)的是具有狀態(tài)保持作用的電路等元件,如觸發(fā)器寄存器。寄存器型變量只能在initial或always內(nèi)部被賦值。15現(xiàn)在是15頁\一共有112頁\編輯于星期日寄存器變量類型寄存器類型功能說明reg常用的寄存器型變量integer32位帶符號的整數(shù)型變量real/realtime64位帶符號的實數(shù)型變量time64位無符號的時間變量表3.1.5寄存器變量類型及其說明例:regclock;//一個1位寄存器變量的聲明
reg[3:0]counter;//一個4位寄存器變量的聲明抽象描述,不對應(yīng)具體硬件end16現(xiàn)在是16頁\一共有112頁\編輯于星期日3.2VerilogHDL門級建模3.2.1多輸入門3.2.4門級建模舉例3.2.2多輸出門3.2.3三態(tài)門17現(xiàn)在是17頁\一共有112頁\編輯于星期日基本概念:結(jié)構(gòu)級建模:就是根據(jù)邏輯電路的結(jié)構(gòu)(邏輯圖),實例引用VerilogHDL中內(nèi)置的基本門級元件或者用戶定義的元件或其他模塊,來描述結(jié)構(gòu)圖中的元件以及元件之間的連接關(guān)系。門級建模:VerilogHDL中內(nèi)置了12個基本門級元件(Primitive,有的翻譯為“原語”)模型,引用這些基本門級元件對邏輯圖進(jìn)行描述,也稱為門級建模。18現(xiàn)在是18頁\一共有112頁\編輯于星期日VerilogHDL基本門級元件(Primitive:原語)
多輸入門:and、nand、or、nor、xor、xnor
只有單個輸出,1個或多個輸入多輸出門:not、buf
允許有多個輸出,但只有一個輸入三態(tài)門:bufif0、bufif1、notif0、notif1
有一個輸出,一個數(shù)據(jù)輸入和一個控制輸入上拉電阻pullup、下拉電阻pulldown19現(xiàn)在是19頁\一共有112頁\編輯于星期日6.4.1多輸入門原語名稱圖形符號邏輯表達(dá)式and(與門)L=A&Bnand(與非門)L=~(A&B)or(或門)L=A|Bnor(或非門)L=~(A|B)xor(異或門)L=A^Bxnor(同或門)L=A~^B
共6個:and、nand、or、nor、xor、xnor
特點:只有1個輸出,有多個輸入多輸入門的一般引用格式為:Gate_name<instance>(OutputA,Input1,Input2,…,InputN);20現(xiàn)在是20頁\一共有112頁\編輯于星期日基本門的調(diào)用方法舉例:若同一個基本門在當(dāng)前模塊中被調(diào)用多次,可在一條調(diào)用語句中加以說明,中間以逗號相隔。andA1(out,in1,in2,in3);xnorNX1(out,in1,in2,in3,in4);
對基本門級元件,調(diào)用名A1、NX1可以省略。21現(xiàn)在是21頁\一共有112頁\編輯于星期日真值表舉例表3.2.2and、nand真值表and輸入1nand輸入101xz01xz輸入200000輸入201111101xx110xxx0xxxx1xxxz0xxxz1xxx22現(xiàn)在是22頁\一共有112頁\編輯于星期日3.2.2多輸出門允許有多個輸出,但只有一個輸入。notN1(out1,out2,…,in);xx10zx10輸入buf輸出buf真值表輸出xx01zx10輸入notnot真值表bufB1(out1,out2,…,in);out1inout2outN…23現(xiàn)在是23頁\一共有112頁\編輯于星期日3.2.3三態(tài)門有一個輸出、一個數(shù)據(jù)輸入和一個輸入控制。如果輸入控制信號無效,則三態(tài)門的輸出為高阻態(tài)z。24現(xiàn)在是24頁\一共有112頁\編輯于星期日boutasel//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é):門級建模就是列出電路圖結(jié)構(gòu)中的元件,并按網(wǎng)表連接。3.2.4門級建模舉例25現(xiàn)在是25頁\一共有112頁\編輯于星期日moduleaddbit(a,b,ci,sum,co);inputa,b,ci;outputsum,co;wirea,b,ci,sum,co,n1,n2,n3;xoru0(n1,a,b,),
u1(sum,n1,ci);andu2(n2,a,b),
u3(n3,n1,ci);or(co,n2,n3);endmodule-1位全加器3.2.4門級建模舉例26現(xiàn)在是26頁\一共有112頁\編輯于星期日門級描述小結(jié):1.給電路圖中的每個輸入輸出引腳賦以端口名.2.給電路圖中每條內(nèi)部連線取上各自的連線名.3.給電路圖中的每個邏輯元件取一個編號(即“調(diào)用名”).4.給所要描述的這個電路模塊確定一個模塊名.5.用module定義相應(yīng)模塊名的結(jié)構(gòu)描述,并將邏輯圖中所有的輸入輸出端口名列入端口名表項中,再完成對各端口的輸入輸出類型說明.6.依照電路圖中的連接關(guān)系,確定各單元之間端口信號的連接,完成對電路圖內(nèi)部的結(jié)構(gòu)描述.7.最后用endmodule結(jié)束模塊描述全過程.end27現(xiàn)在是27頁\一共有112頁\編輯于星期日3.3VerilogHDL數(shù)據(jù)流建模與運算符3.3.1數(shù)據(jù)流建模3.3.2運算符及其優(yōu)先級28現(xiàn)在是28頁\一共有112頁\編輯于星期日在數(shù)字電路中,信號經(jīng)過組合邏輯時會類似于數(shù)據(jù)流動,即信號從輸入流向輸出,并不會在其中存儲。當(dāng)輸入發(fā)生變化時,總會在一定時間以后體現(xiàn)在輸出端。同樣,我們可以模擬數(shù)字電路的這一特性,對其進(jìn)行建模,這種建模方式通常被稱為數(shù)據(jù)流建模。3.3VerilogHDL數(shù)據(jù)流建模與運算符29現(xiàn)在是29頁\一共有112頁\編輯于星期日3.3VerilogHDL數(shù)據(jù)流建模與運算符對于基本單元邏輯電路,使用Verilog語言提供的門級元件模型描述電路非常方便。但隨著電路復(fù)雜性的增加,使用的邏輯門較多時,使用HDL門級描述的工作效率就很低。本節(jié)介紹的數(shù)據(jù)流建模能夠在較高的抽象級別描述電路的邏輯功能,并且通過邏輯綜合軟件,能夠自動地將數(shù)據(jù)流描述轉(zhuǎn)換成為門級電路。數(shù)據(jù)流建模主要使用邏輯表達(dá)式,所以要了解各種運算符和表達(dá)式。30現(xiàn)在是30頁\一共有112頁\編輯于星期日3.3.1數(shù)據(jù)流建模
數(shù)據(jù)流建模使用的連續(xù)賦值語句,由關(guān)鍵詞assign開始,后面跟著由操作數(shù)和運算符等組成的邏輯表達(dá)式。一般用法如下:
wire[位寬說明]變量名1,變量名2,……,變量名n;
assign變量名=表達(dá)式;注意,assign語句只能對wire型變量進(jìn)行賦值,所以等號左邊變量名的數(shù)據(jù)類型必須是wire型。31現(xiàn)在是31頁\一共有112頁\編輯于星期日3.3.1數(shù)據(jù)流建模
數(shù)據(jù)流建模使用的連續(xù)賦值語句,由關(guān)鍵詞assign開始,后面跟著由操作數(shù)和運算符等組成的邏輯表達(dá)式。一般用法如下:
wire[位寬說明]變量名1,變量名2,……,變量名n;
assign變量名=表達(dá)式;連續(xù)賦值語句的執(zhí)行過程是:只要邏輯表達(dá)式右邊變量的邏輯值發(fā)生變化,則等式左邊的值立即被計算出來并賦給左邊的變量。32現(xiàn)在是32頁\一共有112頁\編輯于星期日modulemux2to1_dataflow(D0,D1,S,Y
);
inputD0,D1,S;outputY;wireY;//下面是邏輯功能描述
assignY=(~S&D0)|(S&D1);//表達(dá)式左邊Y必須是wire型endmodule
端口類型說明電路結(jié)構(gòu)描述數(shù)據(jù)類型說明例用數(shù)據(jù)流描述方式建立模型33現(xiàn)在是33頁\一共有112頁\編輯于星期日modulemux2x1_df(D0,D1,S,L);inputD0,D1,S;outputL;assignL=S?D1:D0;endmodule例:用條件運算符描述了一個2選1的數(shù)據(jù)選擇器。條件運算符:如果S=1,則輸出L=D1;否則L=D0。34現(xiàn)在是34頁\一共有112頁\編輯于星期日例:用數(shù)據(jù)流建模方法對2線-4線譯碼器的行為進(jìn)行描述。
35現(xiàn)在是35頁\一共有112頁\編輯于星期日moduledecoder_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ù)流建模方法對2線-4線譯碼器的行為進(jìn)行描述。
36現(xiàn)在是36頁\一共有112頁\編輯于星期日例:用數(shù)據(jù)流描述風(fēng)格對一個4位二進(jìn)制數(shù)的加法器建模。
moduleadder4(Cout,Sum,A,B,Cin);parameterwidth=4;
output[width-1:0]Sum;
outputCout;
input[width-1:0]A,B;
inputCin;
assign{Cout,Sum}=A+B+Cin;
endmodule37現(xiàn)在是37頁\一共有112頁\編輯于星期日3.3.1數(shù)據(jù)流建模數(shù)據(jù)流建模提供了用邏輯表達(dá)式描述電路的一種方式。不必考慮電路的組成以及元件之間的連接,是描述組合邏輯電路常用的一種方式。38現(xiàn)在是38頁\一共有112頁\編輯于星期日3.3.2
表達(dá)式與操作數(shù)表達(dá)式由運算符合操作數(shù)構(gòu)成,其目的是根據(jù)運算符的含義計算出一個結(jié)果值。A~^B;Add1[31:20]+Add2[31:20]操作數(shù)可以是常數(shù)、整數(shù)、實數(shù)、線網(wǎng)、寄存器、時間等任何數(shù)據(jù)類型。39現(xiàn)在是39頁\一共有112頁\編輯于星期日運算符按功能分為9類:算術(shù)運算符邏輯運算符關(guān)系運算符等式運算符縮減運算符條件運算符位運算符移位運算符位拼接運算符運算符按操作數(shù)的個數(shù)分為3類:單目運算符——帶一個操作數(shù)邏輯非!,按位取反~,縮減運算符,移位運算符雙目運算符——帶兩個操作數(shù)算術(shù)、關(guān)系、等式運算符,邏輯、位運算符的大部分三目運算符——帶三個操作數(shù)條件運算符
3.3.3
運算符及其優(yōu)先級40現(xiàn)在是40頁\一共有112頁\編輯于星期日3.3.3
運算符及其優(yōu)先級1.運算符(9類)?:條件運算符{}連接運算符<<,>>邏輯移位運算符==,!=,===,!==相等與全等運算符<,>,<=,>=關(guān)系運算符(雙目)!,&&,||邏輯運算符&,~&,|,~|,^,^~or~^縮位運算符(單目)~,&,|,^,^~or~^位運算符+,-,*,/,%算術(shù)運算符所含運算符運算符分類41現(xiàn)在是41頁\一共有112頁\編輯于星期日一、算術(shù)運算符算術(shù)運算符說明+-*/%加減乘除求模雙目運算符進(jìn)行整數(shù)除法運算時,結(jié)果值略去小數(shù)部分,只取整數(shù)部分!%稱為求模(或求余)運算符,要求%兩側(cè)均為整型數(shù)據(jù);求模運算結(jié)果值的符號位取第一個操作數(shù)的符號位!
[例]-11%3結(jié)果為-2進(jìn)行算術(shù)運算時,若某操作數(shù)為不定值x,則整個結(jié)果也為x。 MAX+PLUSII不支持“/”
和“%”運算!QuartusII都支持!42現(xiàn)在是42頁\一共有112頁\編輯于星期日[例]除法和求模運算的區(qū)別注意/和%的區(qū)別!43現(xiàn)在是43頁\一共有112頁\編輯于星期日9/4=29%4=1arithmetic.vwf44現(xiàn)在是44頁\一共有112頁\編輯于星期日二、關(guān)系運算符關(guān)系運算符說明<<=>>=小于小于或等于大于大于或等于雙目運算符括號內(nèi)先運算!算術(shù)運算先運算!運算結(jié)果為1位的邏輯值1或0或x。關(guān)系運算時,若關(guān)系為真,則返回值為1;若聲明的關(guān)系為假,則返回值為0;若某操作數(shù)為不定值x,則返回值為x。所有的關(guān)系運算符優(yōu)先級別相同。關(guān)系運算符的優(yōu)先級低于算術(shù)運算符。[例]a<size-1 等同于:a<(size-1)
size-(1<a) 不等同于:size-1<a45現(xiàn)在是45頁\一共有112頁\編輯于星期日三、等式運算符等式運算符說明==!====!==等于不等于全等不全等雙目運算符運算結(jié)果為1位的邏輯值1或0或x。等于運算符(==)和全等運算符(===)的區(qū)別:使用等于運算符時,兩個操作數(shù)必須逐位相等,結(jié)果才為1;若某些位為x或z,則結(jié)果為x。使用全等運算符時,若兩個操作數(shù)的相應(yīng)位完全一致(如同是1,或同是0,或同是x,或同是z),則結(jié)果為1;否則為0。所有的等式運算符優(yōu)先級別相同。===和!==運算符常用于case表達(dá)式的判別,又稱為“case等式運算符”。MAX+PLUSII和QuartusII都不支持!46現(xiàn)在是46頁\一共有112頁\編輯于星期日[例]if(A
==
1’bx)$display(“AisX”);//當(dāng)A為不定值時,式(A==1’bx)的運算結(jié)果為x,則該語句不執(zhí)行if(A
===
1’bx)$display(“AisX”);//當(dāng)A為不定值時,式(A===1’bx)的運算結(jié)果為1,該語句執(zhí)行==01xz01xz10xx01xxxxxxxxxx===01xz01xz1000010000100001“==”的真值表“===”的真值表等于運算的結(jié)果可能為1或0或x全等于運算的結(jié)果只有1或047現(xiàn)在是47頁\一共有112頁\編輯于星期日a、b的初值同為4‘b0100,c和d的初值同為4’b10x0a==ba!=ba===ba!==b1010c==dc!=dc===dc!==dxx10相等與全等運算符==(邏輯相等),!=(邏輯不等)===(條件全等),!==(條件不全等)48現(xiàn)在是48頁\一共有112頁\編輯于星期日四、邏輯運算符邏輯運算符把它的操作數(shù)當(dāng)作布爾變量:非零的操作數(shù)被認(rèn)為是真(1‘b1);零被認(rèn)為是假(1‘b0);不確定的操作數(shù)如4’bxx00,被認(rèn)為是不確定的(可能為零,也可能為非零)(記為1’bx);但4’bxx11被認(rèn)為是真(記為1’b1,因為它肯定是非零的)。邏輯運算符說明
&&(雙目)||(雙目)!(單目)邏輯與邏輯或邏輯非進(jìn)行邏輯運算后的結(jié)果為布爾值(為1或0或x)!49現(xiàn)在是49頁\一共有112頁\編輯于星期日“&&”和“||”的優(yōu)先級除高于條件運算符外,低于關(guān)系運算符、等式運算符等幾乎所有運算符;邏輯非“!”優(yōu)先級最高。[例](a>b)&&(b>c) 可簡寫為:a>b&&b>c(a==b)||(x==y) 可簡寫為:a==b||x==y(!a)||(a>b) 可簡寫為:!a||a>b為提高程序的可讀性,明確表達(dá)各運算符之間的優(yōu)先關(guān)系,建議使用括號!50現(xiàn)在是50頁\一共有112頁\編輯于星期日五、位運算符位運算符說明~&|^^~,~^按位取反按位與按位或按位異或按位同或雙目運算符單目運算符位運算其結(jié)果與操作數(shù)位數(shù)相同。位運算符中的雙目運算符要求對兩個操作數(shù)的相應(yīng)位逐位進(jìn)行運算。兩個不同長度的操作數(shù)進(jìn)行位運算時,將自動按右端對齊,位數(shù)少的操作數(shù)會在高位用0補(bǔ)齊。
[例]若A=5’b11001,B=3’b101,則A&B=(5’b11001)&(5’b00101)=5’b00001
51現(xiàn)在是51頁\一共有112頁\編輯于星期日六、縮減運算符縮減運算符說明&~&|~|^^~,~^與與非或或非異或同或單目運算符運算法則與位運算符類似,但運算過程不同!對單個操作數(shù)進(jìn)行遞推運算,即先將操作數(shù)的最低位與第二位進(jìn)行與、或、非運算,再將運算結(jié)果與第三位進(jìn)行相同的運算,依次類推,直至最高位。運算結(jié)果縮減為1位二進(jìn)制數(shù)。[例]reg[3:0]a;
b=|a;//等效于b=((a[0]|a[1])|a(2))|a[3]注意縮減運算符和位運算符的區(qū)別!52現(xiàn)在是52頁\一共有112頁\編輯于星期日位運算符與縮位運算的比較A:4’b1010、B:4’b1111,A~^B=1010A^B=0101A|B=1111A&B=1010~A=0101~B=0000
位運算~^A=1~^B=1^A=0^B=0|A=1~|B=0~&A=1&B=1&A=1&0&1&0=0
縮位運算53現(xiàn)在是53頁\一共有112頁\編輯于星期日七、移位運算符移位運算符說明>><<右移左移單目運算符只有當(dāng)右操作數(shù)為常數(shù)時MAX+PLUSII支持!左移會擴(kuò)充位數(shù)!用法:A>>n或A<<n
將操作數(shù)右移或左移n位,同時用n個0填補(bǔ)移出的空位。[例]4’b1001>>3=4’b0001;4’b1001>>4=4’b00004’b1001<<1=5’b10010;4’b1001<<2=6’b100100;
1<<6=32’b1000000將操作數(shù)右移或左移n位,相當(dāng)于將操作數(shù)除以或乘以2n。右移位數(shù)不變,但右移的數(shù)據(jù)會丟失!54現(xiàn)在是54頁\一共有112頁\編輯于星期日八、條件運算符三目運算符in1outMUXin0sel信號=條件?表達(dá)式1:表達(dá)式2條件運算符為?:用法:[例]數(shù)據(jù)選擇器assignout=sel?in1:in0;當(dāng)條件為真,信號取表達(dá)式1的值;為假,則取表達(dá)式2的值。sel=1時out=in1;sel=0時out=in055現(xiàn)在是55頁\一共有112頁\編輯于星期日對同一個操作數(shù)的重復(fù)拼接還可以雙重大括號構(gòu)成的運算符{{}}例如{4{A}}=4’b1111,{2{A},2{B},C}=8’b11101000?!?在VerilogHDL語言中有一個特殊的運算符:位拼接運算符{}作用是將兩個或多個信號的某些位拼接起來成為一個新的操作數(shù),進(jì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。{信號1的某幾位,信號2的某幾位,……,信號n的某幾位}56現(xiàn)在是56頁\一共有112頁\編輯于星期日2.運算符的優(yōu)先級優(yōu)先級的順序從下向上依次增加。類型符號優(yōu)先級別取反!~-(求2的補(bǔ)碼)最高優(yōu)先級算術(shù)*/+-最低優(yōu)先級移位>><<關(guān)系<<=>>=等于==!=縮位&~&^^~|~|邏輯&&||條件?:end為提高程序的可讀性,建議使用括號來控制運算的優(yōu)先級![例](a>b)&&(b>c)
(a==b)||(x==y)
(!a)||(a>b)57現(xiàn)在是57頁\一共有112頁\編輯于星期日3.4組合電路的行為級建模行為建模是VerilogHDL行為建模的主要方法,也是VerilogHDL最能體現(xiàn)其高級編程語言之處,如果學(xué)過其他高級變成語言(如C語言),就會對本節(jié)介紹的諸如if-else、for循環(huán)之類的語法結(jié)構(gòu)非常熟悉。此外,本節(jié)還將介紹過程賦值的特點和用法。就像連續(xù)賦值用于數(shù)據(jù)流行為建模一樣,過程賦值用于順序行為建?!,F(xiàn)在是58頁\一共有112頁\編輯于星期日3.4VerilogHDL行為級建模行為級建模就是描述數(shù)字邏輯電路的功能和算法。在Verilog中,行為級描述主要使用由關(guān)鍵詞initial或always定義的兩種結(jié)構(gòu)類型的語句。一個模塊的內(nèi)部可以包含多個initial或always語句。initial語句是一條初始化語句,僅執(zhí)行一次,經(jīng)常用于測試模塊中,對激勵信號進(jìn)行描述,在硬件電路的行為描述中,有時為了仿真的需要,也用initial語句給寄存器變量賦初值。initial語句主要是一條面向仿真的過程語句,不能用于邏輯綜合。在always結(jié)構(gòu)型語句內(nèi)部有一系列過程性賦值語句,用來描述電路的功能(行為)。59現(xiàn)在是59頁\一共有112頁\編輯于星期日3.5VerilogHDL行為級建模在詳細(xì)解釋二者的使用方法之前,可以僅從其英文單詞的字面意思來了解一下它們的作用:initial用于做“初始化”操作,always則“始終”在執(zhí)行某些操作。作為順序行為建模的兩條基本語句,initial和always存在一些共同的特點:60現(xiàn)在是60頁\一共有112頁\編輯于星期日所有的initial和always語句都是在時刻0(仿真剛開始)開始執(zhí)行;initial和always之后都跟隨著一段程序,這段程序會被封裝成一個“程序塊”,可以用begin-end(順序語句塊)封裝,也可以用fork-join(并行語句塊)封裝。如果這段程序只有1條語句,可以不用封裝;一個模塊中可以包含任意多個initial或always語句,這些initial語句和always語句彼此之間都是并行執(zhí)行的,即這些語句的執(zhí)行順序與其在模塊中書寫的順序無關(guān)。61現(xiàn)在是61頁\一共有112頁\編輯于星期日3.4.1行為級建?;A(chǔ)下面介紹行為級建模中經(jīng)常使用的語句:1.initial語句結(jié)構(gòu)及過程賦值語句2.always語句結(jié)構(gòu)及過程賦值語句3.條件語句(if-else)4.多路分支語句(case-endcase)5.for循環(huán)語句(例如for等)62現(xiàn)在是62頁\一共有112頁\編輯于星期日1.initial語句的一般用法:所有在initial語句內(nèi)的語句構(gòu)成了一個initial塊。initial塊從仿真0時刻開始執(zhí)行,在整個仿真過程中只執(zhí)行一次。如果一個模塊中包括了若干個initial塊,則這些initial塊從仿真0時刻開始并發(fā)執(zhí)行,且每個塊的執(zhí)行是各自獨立的。如果在塊內(nèi)包含了多條行為語句,那么需要將這些語句組成一組,一般是使用關(guān)鍵字begin和end將它們組合為一個塊語句;如果塊內(nèi)只有一條語句,則不必使用begin和end。由于initial塊語句在整個仿真期間只能執(zhí)行一次,因此它一般被用于初始化、信號監(jiān)視、生成仿真波形等目的。63現(xiàn)在是63頁\一共有112頁\編輯于星期日64現(xiàn)在是64頁\一共有112頁\編輯于星期日可以發(fā)現(xiàn),initial語句執(zhí)行時可以通過指定時延而控制某個信號的值不斷變化。如果這個變化是很有規(guī)律的,而且所有時延值都相同,并且值只在0和1之間交替變換,就可以在這個信號上形成一個時鐘波形。通過改變時延值和不同的變化值,可以生成任意的波形信號??梢奿nitial語句主要用于初始化和波形生成。65現(xiàn)在是65頁\一共有112頁\編輯于星期日always語句包括的所有行為語句構(gòu)成了一個always語句塊。該always語句塊從仿真0時刻開始順序執(zhí)行其中的行為語句;在最后一條執(zhí)行完成后,再次開始執(zhí)行其中的第一條語句,如此循環(huán)往復(fù),直至整個仿真結(jié)束。always語句通常用于對數(shù)字電路中一組反復(fù)執(zhí)行的活動進(jìn)行建模。例如時鐘信號發(fā)生器,每半個時鐘周期時鐘信號翻轉(zhuǎn)一次。在現(xiàn)實電路中只要電源接通,時鐘信號發(fā)生器從時刻0就有效,一直工作下去。2.always語句的一般用法:66現(xiàn)在是66頁\一共有112頁\編輯于星期日2.always語句的一般用法:always@(事件控制表達(dá)式)begin:塊名塊內(nèi)局部變量的定義;過程賦值語句(包括高級語句);endbegin…end之間只有一條語句時,關(guān)鍵詞可以省略;begin…end之間的多條語句被稱為順序語句塊??梢越o語句塊取一個名字,稱為有名塊?!癅”稱為事件控制運算符,用于掛起某個動作,直到事件發(fā)生?!笆录刂票磉_(dá)式”也稱為敏感事件表,它是后面begin和end之間的語句執(zhí)行的條件。當(dāng)事件發(fā)生或某一特定的條件變?yōu)椤罢妗睍r,后面的過程賦值語句就會被執(zhí)行。67現(xiàn)在是67頁\一共有112頁\編輯于星期日時延控制“#10”,always語句從時刻0開始,每隔10個單位時間就把Clk上的值翻轉(zhuǎn)一次,這樣就在Clk上得到了一個周期為20的波形信號。always中的時序控制可以是上例中的時延控制,也可以是事件控制。事件控制就是等待某一事件發(fā)生,該事件的發(fā)生將執(zhí)行always語句。68現(xiàn)在是68頁\一共有112頁\編輯于星期日[例]用符號“@”定義了事件控制的always語句。reg[0:5]InstrReg;reg[3:0]Accum;wireExecuteCycle;always@(EcecuteCycle)//always語句開始執(zhí)行的條件是事件EcecuteCycle的發(fā)生begin//順序語句塊開始case(InstrReg[0:1])//順序語句塊內(nèi)的case開始2'b00:Store(Accum,InstrReg[2:5]);//Store是用戶在別處自定義的任務(wù)2'b11:Load(Accum,InstrReg[2:5]);//Load是用戶在別處自定義的任務(wù)2'b01:Jump(InstrReg[2:5]);//Jump是用戶在別處自定義的任務(wù)2'b10:;//不做任何操作endcase//順序語句塊內(nèi)的case結(jié)構(gòu)開始end//順序語句塊結(jié)束69現(xiàn)在是69頁\一共有112頁\編輯于星期日這個always語句用到了符號@,意思是只要ExecuteCycle上有事件發(fā)生(值的變化),就執(zhí)行順序語句塊中的語句。符號“@”定義的是觸發(fā)事件,一旦檢測到ExecuteCycle上的電平跳變時的邊沿,就執(zhí)行always語句。事件控制”@”缺省為“電平敏感事件”,若使用關(guān)鍵詞“posedge”和“negedge”定義邊沿觸發(fā)。70現(xiàn)在是70頁\一共有112頁\編輯于星期日moduleDFF(Clk,D,Set,Q,Qbar);inputClk,D,Set;outputQ,Qbar;regQ,Qbar;always@(negedgeClk)beginif(Set!=1)begin#5Q=D;#1Qbar=~Q;endelsebegin#3Q=1;#2Qbar=0;endendendmodule[例]一個邊沿敏感事件控制的always語句71現(xiàn)在是71頁\一共有112頁\編輯于星期日begin
語句1;語句2;
…
語句n;endbegin:塊名塊內(nèi)聲明語句;語句1;語句2;
…
語句n;end注:塊內(nèi)聲明語句可以是參數(shù)聲明、reg型變量聲明、integer型變量聲明、real型變量聲明語句?;?、順序塊的格式72現(xiàn)在是72頁\一共有112頁\編輯于星期日[例1]beginb=a;c=b;//c的值為a的值end[例2]beginb=a;
#10c=b;//在兩條賦值語句間延遲10個時間單位end注:這里標(biāo)識符“#”表示延遲;在模塊調(diào)用中“#”表示參數(shù)的傳遞舉例73現(xiàn)在是73頁\一共有112頁\編輯于星期日[例]使用行為描述風(fēng)格對下圖所示的2線4線譯碼器進(jìn)行建模74現(xiàn)在是74頁\一共有112頁\編輯于星期日75現(xiàn)在是75頁\一共有112頁\編輯于星期日4、條件語句一、if-else語句判定所給條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。if-else語句有3種形式其中“表達(dá)式”為邏輯表達(dá)式或關(guān)系表達(dá)式,或一位的變量。若表達(dá)式的值為0、x或z,則判定的結(jié)果為“假”;若為1,則結(jié)果為“真”。語句可為單句,也可為多句;多句時一定要用“begin_end”語句括起來,形成一個復(fù)合塊語句。對于每個判定只有兩個分支條件語句分為兩種:if-else語句和case語句;它們都是順序語句,應(yīng)放在“always”塊內(nèi)!76現(xiàn)在是76頁\一共有112頁\編輯于星期日4、條件語句允許一定形式的表達(dá)式簡寫方式,如:if(expression)等同于if(expression==1)if(!expression)等同于if(expression!=1)if(表達(dá)式)語句1;if(表達(dá)式1)語句1;else 語句2;if(表達(dá)式1)語句1;elseif(表達(dá)式2)語句2;
…elseif(表達(dá)式n)語句n;方式1:方式2:方式3:適于對不同的條件,執(zhí)行不同的語句77現(xiàn)在是77頁\一共有112頁\編輯于星期日4、條件語句if語句可以嵌套;若if與else的數(shù)目不一樣,注意用“begin_end”語句來確定if與else的配對關(guān)系!if(表達(dá)式1)
if(表達(dá)式2)語句1;
else語句2;elseif(表達(dá)式3)語句3;
else語句4;if(表達(dá)式1)
beginif(表達(dá)式2)語句1;
endelse
語句2;當(dāng)if與else的數(shù)目不一樣時,最好用“begin_end”語句將單獨的if語句括起來:if語句的嵌套:78現(xiàn)在是78頁\一共有112頁\編輯于星期日例:使用if-else語句對4選1數(shù)據(jù)選擇器的行為進(jìn)行描述注意,過程賦值語句只能給寄存器型變量賦值,因此,輸出變量Y的數(shù)據(jù)類型定義為reg。modulemux4to1_bh(D,S,Y);input[3:0]D;//輸入端口
input[1:0]S;//輸入端口
outputregY;//輸出端口及變量數(shù)據(jù)類型
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];endmodule79現(xiàn)在是79頁\一共有112頁\編輯于星期日5、多路分支語句(case語句)case(敏感表達(dá)式)值1:語句1;值2:語句2;
…
值n:語句n;
default:語句n+1;endcase1.case語句當(dāng)敏感表達(dá)式取不同的值時,執(zhí)行不同的語句。功能:當(dāng)某個(控制)信號取不同的值時,給另一個(輸出)信號賦不同的值。常用于多條件譯碼電路(如譯碼器、數(shù)據(jù)選擇器、狀態(tài)機(jī)、微處理器的指令譯碼)!case語句有3種形式:case,casez,casex適于對同一個控制信號取不同的值時,輸出取不同的值!case語句與if-else語句有什么區(qū)別呢?80現(xiàn)在是80頁\一共有112頁\編輯于星期日說明:其中“敏感表達(dá)式”又稱為“控制表達(dá)式”,通常表示為控制信號的某些位。值1~值n稱為分支表達(dá)式,用控制信號的具體狀態(tài)值表示,因此又稱為常量表達(dá)式。default項可有可無,一個case語句里只能有一個default項!值1~值n必須互不相同,否則矛盾。值1~值n的位寬必須相等,且與控制表達(dá)式的位寬相同。3、多路分支語句(case語句)81現(xiàn)在是81頁\一共有112頁\編輯于星期日2.casez與casex語句是case語句的兩種變體在case語句中,分支表達(dá)式每一位的值都是確定的(或者為0,或者為1);在casez語句中,若分支表達(dá)式某些位的值為高阻值z,則不考慮對這些位的比較;在casex語句中,若分支表達(dá)式某些位的值為z或不定值x,則不考慮對這些位的比較。在分支表達(dá)式中,可用“?”來標(biāo)識x或z。
3、多路分支語句(case語句)82現(xiàn)在是82頁\一共有112頁\編輯于星期日例:對具有使能端En的4選1數(shù)據(jù)選擇器的行為進(jìn)行Verilog描述。當(dāng)En=0時,數(shù)據(jù)選擇器工作,En=1時,禁止工作,輸出為0。modulemux4to1_bh
(D,S,Y,En);input[3:0]D,[1:0]S;inputEn;
outputregY;
always@(D,S,En)beginif(En==1)Y=0;//En=1時,輸出為0
else//En=0時,選擇器工作case(S)2’d0:Y=D[0];2’d1:Y=D[1];2’d2:Y=D[2];2’d3:Y=D[3];endcaseendendmodule83現(xiàn)在是83頁\一共有112頁\編輯于星期日應(yīng)注意列出所有條件分支,否則當(dāng)條件不滿足時,編譯器會生成一個鎖存器保持原值!這一點可用于設(shè)計時序電路,如計數(shù)器:條件滿足時加1,否則保持原值不變。而在組合電路設(shè)計中,應(yīng)避免生成隱含鎖存器!有效的方法是在if語句最后寫上else項;在case語句最后寫上default項。三、使用條件語句注意事項84現(xiàn)在是84頁\一共有112頁\編輯于星期日6、循環(huán)語句循環(huán)語句分為4種:所有的循環(huán)語句都只能在initial或always中使用for語句——通過3個步驟來決定語句的循環(huán)執(zhí)行:(1)給控制循環(huán)次數(shù)的變量賦初值。(2)判定循環(huán)執(zhí)行條件,若為假則跳出循環(huán);若為真,則執(zhí)行指定的語句后,轉(zhuǎn)到第(3)步。(3)修改循環(huán)變量的值,返回第(2)步。repeat語句——連續(xù)執(zhí)行一條語句n次while語句——執(zhí)行一條語句,直到循環(huán)執(zhí)行條件不滿足;若一開始條件即不滿足,則該語句一次也不能被執(zhí)行!forever語句——無限連續(xù)地執(zhí)行語句,可用disable語句中斷!85現(xiàn)在是85頁\一共有112頁\編輯于星期日一、for語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句for(循環(huán)變量賦初值;循環(huán)執(zhí)行條件;循環(huán)變量增值)執(zhí)行語句兩條語句8條語句一般形式簡單應(yīng)用形式相當(dāng)于采用while語句建立的循環(huán)結(jié)構(gòu):begin
循環(huán)變量賦初值;
while(循環(huán)執(zhí)行條件)
begin
<執(zhí)行語句>
循環(huán)變量增值;
endendfor語句比while語句簡潔!86現(xiàn)在是86頁\一共有112頁\編輯于星期日例:用for實現(xiàn)顯示一個32位整數(shù)的循環(huán)moduleloop1;integeri;initialfor(i=0;i<4;i=i+1)begin$display("i=%h",i);endendmodule87現(xiàn)在是87頁\一共有112頁\編輯于星期日moduleecoder3to8_bh(A,En,Y);input[2:0]A,En;
outputreg[7:0]Y;
integerk;//聲明一個整型變量k
always@(A,En)//
begin
Y=8’b1111_1111;//設(shè)譯碼器輸出的默認(rèn)值
for(k=0;k<=7;k=k+1)//下面的if-else語句循環(huán)8次
if((En==1)&&(A==k))Y[k]=0;//當(dāng)En=1時,根據(jù)A進(jìn)行譯碼
elseY[k]=1;//處理使能無效或輸入無效的情況
endendmodule
試用Verilog語言描述具有高電平使能的3線-8線譯碼器.循環(huán)8次88現(xiàn)在是88頁\一共有112頁\編輯于星期日[例]用for語句描述的7人投票表決器:若超過4人(含4人)投贊成票,則表決通過。modulevote7(pass,vote); outputpass; input[6:0]vote; reg[2:0]sum;//sum為reg型變量,用于統(tǒng)計贊成的人數(shù)
integeri;regpass;always@(vote)beginsum=0;//sum初值為0
for(i=0;i<=6;i=i+1)//for語句
if(vote[i])sum=sum+1;
//只要有人投贊成票,則sum加1
if(sum[2])pass=1;//若超過4人贊成,則表決通過
elsepass=0;
endendmodule或?qū)憺閕f(sum[2:0]>=3’d4)
89現(xiàn)在是89頁\一共有112頁\編輯于星期日超過4人贊成,則pass=1
90現(xiàn)在是90頁\一共有112頁\編輯于星期日[例]編寫一個能夠統(tǒng)計輸入變量Din中1的個數(shù)的程序。moduleforloop_demo(Din,out);input[2:0]Din;output[1:0]out;integernum_bits;always@(Din)begin:B1integeri;num_bits=0;for(i=0;i<3;i=i+1)if(Din[i]==1)num_bits=num_bits+1;elsenum_bits=num_bits;endassignout=num_bits;endmodule91現(xiàn)在是91頁\一共有112頁\編輯于星期日92現(xiàn)在是92頁\一共有112頁\編輯于星期日1.while語句有條件地執(zhí)行一條或多條語句。首先判斷循環(huán)執(zhí)行條件表達(dá)式是否為真。若為真,則執(zhí)行后面的語句或語句塊;然后再回頭判斷循環(huán)執(zhí)行條件表達(dá)式是否為真,若為真,再執(zhí)行一次后面的語句;如此不斷,直到條件表達(dá)式不為真。while(循環(huán)執(zhí)行條件表達(dá)式)語句while(循環(huán)執(zhí)行條件表達(dá)式)
begin
……end或格式二、while和forever語句93現(xiàn)在是93頁\一共有112頁\編輯于星期日注1:首先判斷循環(huán)執(zhí)行條件表達(dá)式是否為真,若不為真,則其后的語句一次也不被執(zhí)行!注2:在執(zhí)行語句中,必須有一條改變循環(huán)執(zhí)行條件表達(dá)式的值的語句!注3:while語句只有當(dāng)循環(huán)塊有事件控制(即@(posedgeclock))時才可綜合!94現(xiàn)在是94頁\一共有112頁\編輯于星期日modulecount1s_while(count,rega,clk); output[3:0]count; input[7:0]rega;inputclk;reg[3:0]count;always@(posedgeclk) begin:count1reg[7:0]tempreg;//用作循環(huán)執(zhí)行條件表達(dá)式
count=0;//count初值為0
tempreg=rega;//tempreg初值為rega
while(tempreg)//若tempreg非0,則執(zhí)行以下語句
beginif(tempreg[0])count=count+1;
//只要tempreg最低位為1,則count加1
tempreg=tempreg>>1;//右移1位
endendendmodule[例]用while語句對一個8位二進(jìn)制數(shù)中值為1的位進(jìn)行計數(shù)。改變循環(huán)執(zhí)行條件表達(dá)式的值95現(xiàn)在是95頁\一共有112頁\編輯于星期日96現(xiàn)在是96頁\一共有112頁\編輯于星期日無條件連續(xù)執(zhí)行forever后面的語句或語句塊。forever
語句foreverbegin……end或常用在測試模塊中產(chǎn)生周期性的波形,作為仿真激勵信號。常用disable語句跳出循環(huán)!注:不同于always語句,不能獨立寫在程序中,一般用在initial語句塊中!格式initialbegin:Clocking clk=0;#10forever#10clk=!clk;endinitialbegin:Stimulus ……disableClocking;//停止時鐘
end一般情況下是不可綜合的!常用在測試文件中2.forever語句97現(xiàn)在是97頁\一共有112頁\編輯于星期日連續(xù)執(zhí)行一條或多條語句n次。repeat
(循環(huán)次數(shù)表達(dá)式)語句repeat(循環(huán)次數(shù)表達(dá)式)
begin
……
end執(zhí)行語句為多條語句或格式只有部分綜合工具可以綜合此語句!三、repeat語句98現(xiàn)在是98頁\一共有112頁\編輯于星期日3.5.1
設(shè)計方法
3.5.2模塊實例引用語句
3.5分層次的電路設(shè)計方法現(xiàn)在是99頁\一共有112頁\編輯于星期日3.5.1設(shè)計方法
分層次建模就是將一個比較復(fù)雜數(shù)字電路劃分為多個組成模塊,分別對每個模塊建模,然后將這些模塊組合成一個總模塊,完成所需的功能。通常有自頂向下(top-down)和自底向上(bottom-up)自頂向下:先將最終設(shè)計目標(biāo)定義成頂層模塊,再按一定方法將頂層模塊劃分成各個子模塊,然后對子模塊進(jìn)行邏輯設(shè)計。自底向上:由基本元件構(gòu)成的各個子模塊首先被確定下來,然后將這些子模塊組合起來構(gòu)成頂層模塊,最后得到所要求的電路。100現(xiàn)在是100頁\一共有112頁\編輯于星期日BottomUp的設(shè)計方法1.由基本門構(gòu)成各個組合與時序邏輯2.由邏輯單
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2018-2024年中國載貨汽車市場深度評估及投資方向研究報告
- 2025-2030年中國汽車電瓶糟蓋行業(yè)深度研究分析報告
- 教育行業(yè)線上課程開發(fā)與運營規(guī)范
- 共同賣房合同范本
- 農(nóng)業(yè)車輛承包協(xié)議合同范本
- 書采購加工合同范本
- 借用合同與買賣合同范本
- 2025年度建筑工程綠色建材采購勞務(wù)分包合同范本
- 勞動變更合同范例
- 農(nóng)業(yè)耕種合同范本
- 操作系統(tǒng)課程設(shè)計報告
- 《學(xué)校體育科研方法》課件
- 護(hù)士團(tuán)隊的協(xié)作和領(lǐng)導(dǎo)力培養(yǎng)培訓(xùn)課件
- QFD模板含計算公式計分標(biāo)準(zhǔn)說明模板
- 慢阻肺試題練習(xí)
- 人工智能在生物醫(yī)學(xué)倫理與法律中的基因編輯與生命倫理問題研究
- 饅頭制作過程
- 國有資產(chǎn)管理辦法-國有資產(chǎn)管理辦法條例
- 公務(wù)車輛定點維修車輛保養(yǎng)(附彩圖) 投標(biāo)方案
- 00015-英語二自學(xué)教程-unit3
- 第二章共混改性基本原理
評論
0/150
提交評論