




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章組合邏輯電路
組合邏輯電路:電路在任一時刻的輸出狀態(tài)僅由該時刻的輸入信號決定,與電路在此信號輸入之前的狀態(tài)無關(guān)。3.1概述3.2組合邏輯電路的分析分析步驟:(1)根據(jù)邏輯電路圖,寫出輸出邏輯函數(shù)表達(dá)式;(2)根據(jù)邏輯表達(dá)式,列出真值表;(3)由真值表或表達(dá)式分析電路功能.例3.1分析下圖所示邏輯電路F=P2+P3+P4P2=A·P1P3=B·P1P4=C·P1P1=ABC=(A+B+C)·ABC真值表:ABCF000100100100011000010101001111邏輯功能:
一致電路=ABC+ABCP1P2P3P4&ABCF&&&≥13.3組合邏輯電路設(shè)計一般步驟:(1)由實際邏輯問題列出真值表;(2)由真值表寫出邏輯表達(dá)式;(3)化簡、變換輸出邏輯表達(dá)式;(4)畫出邏輯圖。例3.3試用與非門設(shè)計一個三變量表決電路,表決規(guī)則為少數(shù)服從多數(shù).解:(1)列真值表設(shè):由A、B、C表示三個輸入變量,F(xiàn)表示表決結(jié)果。并設(shè)A、B、C為1表示贊成,為0表示反對;F為1表示表決通過,為0表示不通過。ABCF000000100100011100010111011111(2)化簡、求最簡函數(shù)表達(dá)式ABC01000111101111F=AB+AC+BC=AB·AC·BC(3)畫出電路圖ABCF&&&&例3.4設(shè)計一個兩位二進(jìn)制數(shù)比較器。解設(shè)被比較的數(shù)分別為A=A1A0,B=B1B0;比較的結(jié)果為:A1A0>B1B0時,輸出F1=1;A1A0=B1B0時,輸出F2=1;A1A0<B1B0時,輸出F3=1.列真值表:A1A0B1B0
F1
F2
F3
A1A0B1B0
F1
F2
F30000010100010000010011001100001000110100100011001101100101001001100100010101011011000110001111010001110011111010畫卡諾圖化簡:A1A0B1B00001111000011110111111F1F1=A1B1+A1A0B0+A0B1B0A1A0B1B000011110000111101111F2F2=A1A0B1B0+A1A0B1B0+A1A0B1B0+
A1A0B1B0A1A0B1B00001111000011110111111F3F3=A1B1+A1A0B0+A0B1B0按F1、F2和F3表達(dá)式可方便地用門電路實現(xiàn)比較器的邏輯功能。3.4組合邏輯電路中的冒險
前面分析組合邏輯電路時,沒有考慮門電路的延遲時間對電路的影響。實際上,由于門電路延遲時間的關(guān)系,在輸入信號變化的瞬間可能會使邏輯電路產(chǎn)生錯誤輸出。通常把這種現(xiàn)象稱為“冒險”。產(chǎn)生冒險的原因:≥11AF1=A+A=1理想情況AAF1實際情況由于A和A變化后到達(dá)或(與)門的時間不同。0冒險&1AF2=AA=0理想情況AAF2實際情況1冒險組合電路中冒險的分類1.靜態(tài)冒險:輸入變化的前后,輸出不應(yīng)該變化,但實際
上卻出現(xiàn)了0→1→0,或1→0→1的情況。2.動態(tài)冒險:輸入變化的前后,輸出是變化的,即0→1,
或1→0;但實際上卻出現(xiàn)了0→1→0→1,
或1→0→1→0短暫反復(fù)的情況。動態(tài)冒險通常是由前級電路的靜態(tài)冒險引起的靜態(tài)冒險的分類3.4.1功能冒險與消除方法
(1)多個輸入發(fā)生變化;
(2)由電路的邏輯功能決定,
無法通過修改邏輯設(shè)計來消除。
消除功能冒險的方法:
(1)增加選通脈沖;
(2)
在輸出端并聯(lián)電容器:邏輯電路在較慢速度下工作,
可以在輸出端到地間并聯(lián)一電容,該電容和邏輯門
的輸出電阻構(gòu)成RC低通網(wǎng)絡(luò),對窄脈沖起平滑作用。3.4.2邏輯冒險與消除方法
(1)通常是只有一個輸入發(fā)生變化;
(2)可以通過修改邏輯設(shè)計來消除。(1)
發(fā)現(xiàn)并消去互補(bǔ)變量例如:F=(A+B)(A+C)
在B=C=0時,F(xiàn)=AA.若直接根據(jù)這個邏輯表達(dá)式組成電路,就可能出現(xiàn)冒險。將上式寫成:F=AC+AB+BC,
已將AA去掉,則不會出現(xiàn)冒險。消除邏輯冒險的方法:(2)
增加乘積項例如:F=AC+BC,
當(dāng)A=B=1時,F(xiàn)=C+C.若直接根據(jù)這個邏輯表達(dá)式組成電路,就可能出現(xiàn)冒險。(3)增加選通脈沖;將上式寫成:F=AC+BC+AB,這樣,當(dāng)A=B=1時,不會出現(xiàn)F=C+C,所以C狀態(tài)的變化,不會影響輸出。(4)輸出端并聯(lián)電容器3.5硬件描述語言----Verilog
利用可編程邏輯器件(PLD,ProgrammableLogicDevice)來實現(xiàn)電路的設(shè)計
硬件描述語言(HDL,HardwareDescriptionLanguage)就是可以描述硬件電路的功能VHDL和VerilogHDL是應(yīng)用最為廣泛的國際標(biāo)準(zhǔn)電子設(shè)計語言3.5.1硬件描述語言Verilog語言一種用于數(shù)字系統(tǒng)設(shè)計的語言,它既是一種行為描述語言也是一種結(jié)構(gòu)描述語言。
運用VerilogHDL設(shè)計一個系統(tǒng)時,一般采用自頂向下的層次化、結(jié)構(gòu)化的設(shè)計方法。
一個復(fù)雜的數(shù)字電路系統(tǒng)的VerilogHDL模型通常是由若干個VerilogHDL模塊構(gòu)成,模塊(Module)是VerilogHDL的基本單元。Verilog于1995年成為IEEE標(biāo)準(zhǔn),稱為IEEEStandard1364-1995(Verilog-1995)IEEE“1364-2001”標(biāo)準(zhǔn)(Verilog-2001)也獲得通過,多數(shù)綜合器、仿真器都已支持Verilog-2001標(biāo)準(zhǔn)3.5.2Verilog基本語法1.標(biāo)識符和關(guān)鍵字
給對象(如模塊名、電路的輸入與輸出端口、變量等)取名所用的字符串稱為標(biāo)識符。標(biāo)識符通常由英文字母、數(shù)字、$或者下劃線組成,并且規(guī)定標(biāo)識符必須以英文字母或下劃線開始,不能以數(shù)字或$符開頭。
關(guān)鍵字是Verilog本身規(guī)定的特殊字符串,用來定義語言結(jié)構(gòu),每個關(guān)鍵字均有其特定的語法作用,用戶不能隨便將關(guān)鍵字當(dāng)標(biāo)識符來使用。關(guān)鍵詞均為小寫的英文字符串。2.注釋符和間隔符(1)單行注釋是以“//”開始到本行結(jié)束,注釋內(nèi)容只能寫在一行中;(2)多行注釋是以“/*”開始,到“*/”結(jié)束,注釋的內(nèi)容可以跨越多行。間隔符包括空格符、制表符、換行符及換頁符。Verilog支持單行注釋和多行注釋這兩種形式的注釋符:3.信號的值、整數(shù)和參數(shù)Verilog支持代表單位信號的標(biāo)量線網(wǎng)和變量,以及代表多位信號的向量。每個單位信號有四種可能的值:0(邏輯0、邏輯假);1(邏輯1、邏輯真);x或X(不確定的值);z或Z(高阻態(tài)、三態(tài))。Verilog中整數(shù)的表示有兩種,一種是簡單十進(jìn)制數(shù)的格式,例如:127
//有符號數(shù),用8位二進(jìn)制數(shù)表示為0111
1111-1
//有符號數(shù),用8位二進(jìn)制數(shù)表示為1111
1111-128
//有符號數(shù),用8位二進(jìn)制數(shù)表示為1000
0000Verilog中整數(shù)還可以用帶基數(shù)格式的形式表示,表示方法如下:
<+/-><位寬>'<進(jìn)制><數(shù)值>8'b10101100
//位寬為8的無符號二進(jìn)制數(shù)10101100-8'd5
//十進(jìn)制數(shù)-5,用8位二進(jìn)制補(bǔ)碼形式存儲,即111110116'o45
//位寬為6的八進(jìn)制數(shù),即1001018'hfx
//位寬為8的十六進(jìn)制數(shù),即1111xxxx
參數(shù)(parameter)是由一個標(biāo)識符和一個常數(shù)組成,通常出現(xiàn)在模塊內(nèi)部,僅在聲明該參數(shù)的模塊內(nèi)部起作用,一般用于指定傳輸延遲、變量的位寬等。例如:
parameterk=8;
parameterS0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;4.數(shù)據(jù)類型
Verilog的數(shù)據(jù)類型有四種邏輯狀態(tài)取值:0、1、x或X、z或Z,其中0、1、z是可綜合的,而x表示不定值,通常只用在仿真中。Verilog主要有兩種數(shù)據(jù)類型:net型、variable型。net型數(shù)據(jù)相當(dāng)于實際硬件電路中各種物理連接,最常用的可綜合的net型信號變量是wire型,定義格式如下:
wire[n-1:0]變量名1,變量名2,……,變量名n;例如:
wirea,b,y;
//聲明3個1位的wire型變量
wire[7:0]usb_data;
//聲明1個8位位寬的wire型變量在Verilog中最常用的可綜合的variable型信號變量是reg型,定義格式如下:
reg[n-1:0]變量名1,變量名2,……,變量名n;
例如:
regclock;
//聲明1個1位的reg型變量
reg[7:0]counter;
//聲明1個8位位寬的reg型變量
在Verilog模塊中如果沒有明確地定義輸入、輸出信號的數(shù)據(jù)類型,則默認(rèn)為是wire型;如果沒有明確地聲明wire型的位寬,則位寬為1位。variable型變量只能在過程語句中(例如:initial、always)被賦值,在下一條賦值語句再次給該變量賦值之前,變量的值保持不變。3.5.3Verilog運算符(1)算術(shù)運算符
+,-,*,/,%(取余數(shù))(2)邏輯運算符
&&(邏輯與),||(邏輯或),!(邏輯非)(3)位運算符
&(與),|(或),~(非),^(異或),
^~/~^(同或)(4)縮位運算符
&(縮位與),|(縮位或),~&(縮位與非)
~|(縮位或非),^(縮位異或),^~/~^(縮位同或)(5)關(guān)系運算符
>,<,>=,<=(6)相等運算符
==(相等),!=(不等),===(全等),!==(不全等)(7)條件運算符
?:
(信號=條件?
表達(dá)式1:表達(dá)式2)(8)移位運算符
<<(左移),>>(右移)(9)
拼接運算符
{}3.5.4
Verilog程序的基本結(jié)構(gòu)moduleaoi(a,b,c,d,f);inputa,b,c,d; outputf; assignf=~((a&b)|(~(c&d)));endmodule描述接口描述邏輯功能Verilog程序是由模塊構(gòu)成的。每個模塊的內(nèi)容都嵌在module和endmodule兩個關(guān)鍵字之間;每個模塊實現(xiàn)特定的功能。每個模塊首先要進(jìn)行端口定義,并說明輸入和輸出口(input、output或inout),然后對模塊的功能進(jìn)行定義。Verilog程序書寫格式自由,一行可以寫幾個語句,一個語句也可以分多行寫。除了endmodule等少數(shù)語句外,每個語句的最后必須有分號??捎?*……*/和//……對Verilog程序作注釋。
module
aoi(a,b,c,d,f);/*
模塊名為aoi,端口列表a,b,c,d,f
*/input
a,b,c,d; //模塊的輸入端口為a,b,c,doutputf; //模塊的輸出端口為fwire
a,b,c,d,f;//定義信號的數(shù)據(jù)類型assignf=~((a&b)|(~(c&d)));//邏輯功能描述endmodule1.模塊聲明模塊聲明包括模塊名字,模塊輸入、輸出端口列表。模塊定義格式如下:module
aoi(a,b,c,d,f);input
a,b,c,d; outputf; //Verilog1995標(biāo)準(zhǔn)module
aoi(inputa,b,c,d,outputf); //Verilog2001標(biāo)準(zhǔn)2.端口(Port)定義說明模塊的輸入輸出端口類型其格式為:input
端口名1,端口名2,……端口名n; //輸入端口output
端口名1,端口名2,……端口名n;
//輸出端口inout
端口名1,端口名2,……端口名n; //輸入輸出端口
多位端口定義:output[width-1:0]端口名1,端口名2,……端口名n;說明端口或內(nèi)部用到的信號類型常用的信號類型有線網(wǎng)型(wire)、寄存器型(reg)、整數(shù)型(integer)等。如果信號的數(shù)據(jù)類型沒有定義,則綜合器將其默認(rèn)為為wire型。其格式為:輸出端口可以聲明為reg型,但輸入和雙向端口信號不能聲明為reg型。3.信號類型聲明4.邏輯功能定義Verilog模塊中最核心的部分是邏輯功能定義。定義邏輯功能的幾種基本方法:結(jié)構(gòu)描述:調(diào)用元件(元件例化)數(shù)據(jù)流描述:用assign連續(xù)賦值語句定義行為描述:用always過程塊定義3.5.5
Verilog邏輯功能的描述方式1.結(jié)構(gòu)描述方式(門級)調(diào)用門元件的格式如下:
門元件名字<例化的門名字>(<端口列表>)普通門的端口列表按下面順序:
(輸出,輸入1,輸入2,輸入3……);例如:
andU1(out1,in1,in2,in3);//三輸入與門,名字為U1(可省略)常用的VerilogHDL的內(nèi)置門元件
and(與門)
;
nand(與非門);
or
(或門)
;
nor
(或非門);
xor(異或門)
;
xnor(同或門);
not(非門)
;
buf(緩沖器);
……moduleVrxnor_1(A,B,F);//Verilog-1995,定義模塊名為”Vrxnor_1”
inputA,B;//輸入端口聲明
outputF;//輸出端口聲明
wireF1,F2,F3;//電路內(nèi)部節(jié)點聲明
norU1(F1,A,B);//”nor”是Verilog
內(nèi)部定義的或非門,調(diào)用名U1可以省略
orU2(F2,A,F1);//”or”是Verilog
內(nèi)部定義的或門orU3(F3,B,F1);andU4(F,F2,F3);//”and”是Verilog
內(nèi)部定義的與門endmodule【例3.5】
用門級描述方式描述以下電路邏輯功能。F1F2F3
2.數(shù)據(jù)流描述方式
主要使用assign持續(xù)賦值,多用于描述組合邏輯電路。
moduleVrxnor_2(A,B,F);//Verilog-1995,定義模塊名為”Vrxnor_2”
inputA,B;//輸入端口聲明
outputF;//輸出端口聲明
wireF;//變量的數(shù)據(jù)類型聲明
assignF=(A|(~(A|B)))&(B|(~(A|B)));/*表達(dá)式中的“~”為非運算符、
“|”為
或運算、“&”為與運算符*/endmodule
【例3.6】
用數(shù)據(jù)流描述方式描述以下電路邏輯功能。moduleVrxnor_3(A,B,F);
inputA,B;//輸入端口聲明
outputF;
//輸出端口聲明
regF;//變量的數(shù)據(jù)類型聲明
always@(AorB)//電路的功能描述begin
case({A,B})//用case語句完成電路功能的描述
2'b00:F=1;2'b01:F=0;2'b10:F=0;2'b11:F=1;
default:F=0;
endcaseendendmodule3.行為描述方式【例3.7】用行為描述方式描述電路邏輯功能。
Verilog語言基本描述語句1.賦值語句(1)連續(xù)賦值語句格式:assign變量名=表達(dá)式;給線網(wǎng)型(wire)變量賦值;多用于組合邏輯電路的賦值;只要右邊表達(dá)式的值有變化,就給左邊變量重新賦值;不能給寄存器型(reg)變量賦值。(2)過程賦值語句分為阻塞賦值和非阻塞賦值兩類:非阻塞賦值:“<=”
例如:begina<=5;b<=a;c<=b;end并行執(zhí)行語句結(jié)果:a=5,b=a原來的值c=b原來的值既可以用來描述組合電路,也可以描述時序電路。阻塞賦值:“=”
例如:begina=5;b=a;c=b;end順序執(zhí)行語句結(jié)果:a=b=c=5只能給寄存器型(reg)變量賦值;用于always和initial語句內(nèi)賦值;2.結(jié)構(gòu)說明語句(1)always語句
格式:always@(敏感事件列表);always@(*);程序一開始就執(zhí)行,不斷重復(fù),直至程序結(jié)束;一個模塊可以有多個always說明語句;always塊中的輸出必須是reg類型;敏感事件可以是電平觸發(fā),也可以是邊沿觸發(fā)。
(上升沿:posedge
下降沿:negedge)(2)initial語句格式:initialbegin……end程序一開始就執(zhí)行,只執(zhí)行一次;主要用于初始化和波形生成。3.條件語句(1)if-else語句格式:if(條件表達(dá)式1)
語句1;elseif(條件表達(dá)式2)語句2;……else語句m;根據(jù)某個條件來確定是否執(zhí)行其后的語句(2)case語句格式:case(條件表達(dá)式)
分支1:語句1;分支2:語句2;……default:語句m;
endcase4.循環(huán)語句(1)for語句格式:for(i=0;i<=3;i++)
語句;用來控制執(zhí)行語句的執(zhí)行次數(shù)(2)while語句格式:while(條件表達(dá)式)
語句;(3)repeat語句格式:repeat(循環(huán)次數(shù))
語句;(4)forever語句格式:forever
語句;moduleVrmux2to1(S,F,W1,W0);
inputS,W1,W0;
outputF;
regF;
always@(SorW1orW0
)if
(S==0)
F=W0;
else
F=W1;
endmodule【例3.8】用if-else語句描述一個2選1數(shù)據(jù)選擇器的Verilog代碼。
moduleVrmux4to1(S,F,W);
input[3:0]W;
input[1:0]S;
outputF;
regF;
always@(*
)if
(S==2'b00)
F=W[0];elseif
(S==2'b01)
F=W[1];elseif
(S==2'b10)
F=W[2];else
F=W[3];
endmodule【例3.9】用多重if語句描述一個4選1數(shù)據(jù)選擇器的Verilog代碼。
moduleVrmux4to1_2(S,F,W3,W2,W1,W0);
inputW3,W2,W1,W0;
input[1:0]S;
outputF;
regF;
always@(*
)begin
case(S)
2'b00:F=W0;
2'b01:F=W1;
2'b10:F=W2;
2'b11:F=W3;
default:F=W0;
endcase
endendmodule【例3.10】用case語句描述一個4選1數(shù)據(jù)選擇器的Verilog代碼。
moduleVrvoter7(S,F);
input[7:1]S;
outputF;
regF;
reg[2:0]SUM;
integerk;
always@(S
)begin
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重點安排的2025年稅法考試試題及答案
- 公司計算機(jī)試題及答案
- 重要稅務(wù)法規(guī)的變更試題及答案
- 財務(wù)成本管理在教育行業(yè)的應(yīng)用探討試題及答案
- 法律專技崗試題及答案
- 2025年計算機(jī)二級Msoffice考試深度試題及答案解析
- 辦公軟件的隱秘功能Msoffice試題及答案
- 法律宣講面試題及答案大全
- 法律文書試題題庫及答案
- 法律史 試題及答案
- [北京]大型房地產(chǎn)開發(fā)項目成本測算實例及表格(全套)
- 黃腐酸鉀項目可行性研究報告-用于立項備案
- 管理人員責(zé)任追究制度
- 自動旋轉(zhuǎn)門PLC控制
- 電影場記表(雙機(jī)位)
- 畢設(shè)高密電法探測及數(shù)據(jù)處理解釋
- 【課件】第2課如何鑒賞美術(shù)作品課件-高中美術(shù)人教版(2019)美術(shù)鑒賞
- Q-GDW-11179.4-2014 電能表用元器件技術(shù)規(guī)范 第4部分:光電耦合器
- 坐標(biāo)紙直接A4打印
- 慢性腎功能衰竭的護(hù)理查房
- 少先隊基礎(chǔ)知識-PPT課件.ppt
評論
0/150
提交評論