數(shù)字電路與邏輯設(shè)計(jì) 課件 (陳彥輝)4-6 組合邏輯電路_第1頁
數(shù)字電路與邏輯設(shè)計(jì) 課件 (陳彥輝)4-6 組合邏輯電路_第2頁
數(shù)字電路與邏輯設(shè)計(jì) 課件 (陳彥輝)4-6 組合邏輯電路_第3頁
數(shù)字電路與邏輯設(shè)計(jì) 課件 (陳彥輝)4-6 組合邏輯電路_第4頁
數(shù)字電路與邏輯設(shè)計(jì) 課件 (陳彥輝)4-6 組合邏輯電路_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

組合邏輯電路片上微控制系統(tǒng)原理與項(xiàng)目設(shè)計(jì)第四講內(nèi)容回顧布爾邏輯量布爾邏輯運(yùn)算布爾邏輯函數(shù)數(shù)字邏輯電路邏輯門邏輯電路邏輯符號(hào)真值表波形圖電路功能信號(hào)代數(shù)式數(shù)學(xué)HDL硬件結(jié)構(gòu)授課內(nèi)容組合電路信息處理系統(tǒng)信息獲取信息加工信息顯示信息存儲(chǔ)信息傳輸信息加工和處理算法中的數(shù)學(xué)計(jì)算、比較、選擇、分配、編碼和譯碼等重要操作電路都屬于組合電路。組合電路是無反饋電路,即當(dāng)前輸出只與當(dāng)前輸入有關(guān),相同的輸入產(chǎn)生相同的輸出。組合電路的分析分析方法從輸入端開始,逐級(jí)推導(dǎo)出輸出端的邏輯函數(shù)表達(dá)式根據(jù)邏輯函數(shù)表達(dá)式列出真值表根據(jù)真值表的內(nèi)容概括出電路的功能組合電路的分析某設(shè)備的控制電路圖3-1所示,分析該組合電路的邏輯功能。從輸入量A、B和C開始逐級(jí)推導(dǎo)

ABCFABCF00001000001010110100110101111111從表中可以看出,只要有兩個(gè)或兩個(gè)以上的輸入為1,輸出就為1。因此,該電路可以視為是一種“少數(shù)服從多數(shù)”的表決器。組合電路的分析硬件描述語句,有時(shí)分析語句即可知道功能,有時(shí)要列出真值表通過觀察得到功能,有時(shí)需要語句分析與列真值表相結(jié)合?!纠糠治鱿旅鎂erilog語言描述的邏輯電路的功能。moduletest(A,B,C,F); inputA,B,C; outputregF; wire[1:0]x; assignx=A+B+C; always@(*) if(x<2'd2) F<=1'b0; else F<=1'b1;endmodule組合電路設(shè)計(jì)設(shè)計(jì)某種功能的電路時(shí),首先進(jìn)行邏輯抽象,即將文字描述的邏輯命題轉(zhuǎn)換為真值表;然后根據(jù)真值表和選用的邏輯器件類型寫出相應(yīng)的邏輯函數(shù)表達(dá)式。在邏輯抽象中,先分析邏輯命題,確定輸入和輸出變量;再采用二值邏輯的0和1分別對(duì)輸入和輸出進(jìn)行值描述(即0和1的含義),并列出輸出和輸入之間的邏輯真值表。組合電路設(shè)計(jì)【例】某產(chǎn)品重量檢測單元電路有四個(gè)輸入D3D2D1D0(其組合值為輸入的產(chǎn)品重量值)和3個(gè)輸出信號(hào)FL(不足)、FM(合格)和FH(超重)。輸入輸出關(guān)系為:(1)僅當(dāng)質(zhì)量值小于5時(shí)FL=1,其它情況FL=0;(2)僅當(dāng)質(zhì)量值大于10時(shí)FH=1,其它情況FH=0;(3)僅當(dāng)質(zhì)量值不小于5且不大于10時(shí)FM=1,其它情況FM=0。設(shè)計(jì)該單元電路。組合電路設(shè)計(jì)①輸入變量為D3、D2、D1和D0,輸出變量為FL、FH和FM。②邏輯真值表組合電路設(shè)計(jì)

組合電路設(shè)計(jì)

組合電路設(shè)計(jì)moduletest(D,FL,FM,FH); input[3:0]D; outputregFL,FM,FH; always@(*) if(D<4'd5) {FL,FM,FH}<=3'b100; elseif(D<=4’d10) {FL,FM,FH}<=3'b010; else {FL,FM,FH}<=3'b001;endmodule【例】某比賽項(xiàng)目有三個(gè)裁判,每個(gè)裁判有一個(gè)表決按鈕,按下按鈕表明“通過”。運(yùn)動(dòng)員最終成績通過是否亮燈來表示,燈亮表示“通過”,燈滅表示“未通過”。僅當(dāng)兩個(gè)或兩個(gè)以上裁判按下按鈕時(shí),燈才亮。①輸入輸出定義有三個(gè)表決按鈕,分別采用三個(gè)輸入A、B和C來表示按鈕狀態(tài),當(dāng)按鈕按下時(shí),相應(yīng)的變量值為0,否則為1。燈控信號(hào)采用輸出F表示,F(xiàn)為1時(shí)燈亮,為0時(shí)燈滅

logisimmoduletest(A,B,C,F); inputA,B,C; outputregF; always@(*) case({A,B,C}) 0,1,2,4:F<=1'b0; 3,5,6,7:F<=1'b1; endcaseendmodule加/減法器1.全加器

最基本的加法器是兩個(gè)比特相加的一位二進(jìn)制數(shù)加法,其數(shù)學(xué)公式為(CO,S)=A+B+CI,其中A和B是兩個(gè)本位加數(shù),CI為低位向本位的進(jìn)位,S為本位和,CO為本位向高位的進(jìn)位。該加法器也稱為全加器。問題:算術(shù)邏輯單元ALU如何設(shè)計(jì)?支持加、減、乘、除、與、或、非運(yùn)算,由控制線控制全加器S=A

B

CICO=A

B+A

CI+B

CImoduleadd1(A,B,CI,S,CO); inputA,B,CI; outputS,CO; assign{CO,S}=A+B+CI;endmodule半加器沒有低位進(jìn)位的加法器稱為半加器,即(CO,S)=A+B2.全減器全減器包括三個(gè)輸入,即本位的被減數(shù)A、減數(shù)B和低位向本位的借位CI,兩個(gè)輸出,即本位差D和本位向高位的借位CO。減法運(yùn)算式為:(CO,D)=A-B-CImodulesub1(CI,A,B,CO,D);inputCI,A,B;outputCO,D; assign{CO,D}=A–B-CI;endmodule多位加/減法器多位加/減法器通常由全加器級(jí)聯(lián)構(gòu)成。2位加法器在數(shù)學(xué)運(yùn)算中,兩位數(shù)加是從最低位開始,逐位相加。最低位的A0、B0和CI相加,結(jié)果為CO0和S0,將CO0作為CI1,參加高位的加運(yùn)算,A1、B1和CI1相加結(jié)果為CO和S1。以此類推,n位加法器由一個(gè)n-1位加法器和一個(gè)全加器級(jí)聯(lián)而成,n-1位加法器的進(jìn)位作為一個(gè)全加器的低位進(jìn)位CI,全加器輸出和的第n位和進(jìn)位CO。moduleaddn(CI,A,B,S,CO);parametern=;inputCI;input[n-1:0]A,B;output[n-1:0]S;outputCO;assign{CO,S}=A+B+CI;endmodule應(yīng)用示例【例】有符號(hào)數(shù)加法器:輸入8位有符號(hào)數(shù)A和B,輸出8位本位和S和1位進(jìn)位標(biāo)志CF,有符號(hào)數(shù)的加法還會(huì)出現(xiàn)溢出現(xiàn)象,因此同時(shí)也輸出1位溢出標(biāo)志OF。moduleSAdd8(A,B,S,CF,OF); input[7:0]A,B; output[7:0]S; outputCF,OF; wireCp; assign{Cp,S[6:0]}=A[6:0]+B[6:0];//產(chǎn)生本位和的低6位和次高位進(jìn)位標(biāo)志 assign{CF,S[7]}=A[7]+B[7]+Cp;//產(chǎn)生本位和的最高位和最高位進(jìn)位標(biāo)志 assignOF=Cp^CF;//產(chǎn)生溢出標(biāo)志endmodulemoduletest;reg[7:0]A,B;wire[7:0]S;wireCF,OF;

SAdd8sadd8_0(.A(A),.B(B),.S(S),.CF(CF),.OF(OF));initialbeginA=100;B=27;#100;B=28;#100;A=-100;B=-28;#100;B=-29;#100;$stop;endendmodulemoduleaddn(CI,A,B,S,CO);parametern=;inputCI;input[n-1:0]A,B;output[n-1:0]S;outputCO;assign{CO,S}=A+B+CI;endmodule數(shù)據(jù)選擇/分配器1.數(shù)據(jù)選擇器從多路輸入中選擇一個(gè)作為輸出,也稱為多路選擇器(MUX)。它有n個(gè)地址輸入An-1,…,A0、N=2n個(gè)數(shù)據(jù)輸入DN-1,…,D0和1個(gè)數(shù)據(jù)輸出Y。n個(gè)地址構(gòu)成的二進(jìn)制值i,輸出Y就等于輸入Di,其數(shù)學(xué)描述為:Y=Di,i=(An-1…A0)2。moduleMux4(A,D,Y); input[1:0]A; input[3:0]D; outputregY; integeri; always@(*) for(i=0;i<4;i=i+1) if(A==i) Y<=D[i];endmodule

本節(jié)內(nèi)容moduletop_module(input[15:0]a,b,c,d,e,f,g,h,i,input[3:0]sel,output[15:0]out);always@(*)begincase(sel)4'b0:out<=a;4'b1:out<=b;4'd2:out<=c;4'd3:out<=d;4'd4:out<=e;4'd5:out<=f;4'd6:out<=g;4'd7:out<=h;4'd8:out<=i;default:out<=16'b1111_1111_1111_1111;endcaseendendmodule

moduleDemux4(A,D,Y); input[1:0]A; inputD; outputreg[3:0]Y; integeri;//循環(huán)結(jié)構(gòu)中的計(jì)數(shù)量,不是信號(hào) always@(*) for(i=0;i<4;i=i+1)//生成4個(gè)if語句 if(A==i) Y[i]<=D; else Y[i]<=1;endmodule應(yīng)用實(shí)例-ALU算術(shù)邏輯運(yùn)算器運(yùn)算器支持8種兩個(gè)8位數(shù)X和Y的數(shù)據(jù)運(yùn)算,即加、減、位與、位或、位異或、左移1位、右移1位、賦值,但每次只能進(jìn)行1種運(yùn)算,通過3位控制信號(hào)OP改變運(yùn)算類型,同時(shí)給出進(jìn)/借位標(biāo)志CF、溢出標(biāo)志OF、符號(hào)標(biāo)志SF和結(jié)果為零標(biāo)志ZF。設(shè)計(jì)此運(yùn)算器的電路結(jié)構(gòu)圖及相應(yīng)的HDL代碼。 always@(*) case(OP) 0:{OF,CF,Z}<={oa,ca,sa}; 1:{OF,CF,Z}<={os,cs,ds}; 2:{OF,CF,Z}<={2'b0,X&Y}; 3:{OF,CF,Z}<={2'b0,X|Y}; 4:{OF,CF,Z}<={2'b0,X^Y}; 5:{OF,CF,Z}<={2'b00,X[6:0],1'b0}; 6:{OF,CF,Z}<={2'b00,1'b0,X[7:1]}; 7:{OF,CF,Z}<={2'b0,Y}; endcase assignSF=Z[7]; assignZF=~|Z;endmodulemoduleALU(OP,X,Y,Z,CF,OF,SF,ZF); input[2:0]OP; input[7:0]X,Y; outputreg[7:0]Z; outputregCF,OF; outputSF,ZF; wire[7:0]sa; wire[7:0]ds; wireca,oa,cs,os; SAdd8sadd8_0(.A(X),.B(Y),.S(sa),.CF(ca),.OF(oa)); SSub8ssub8_0(.A(X),.B(Y),.D(ds),.CF(cs),.OF(os));moduletest;reg[2:0]OP;reg[7:0]X,Y;wire[7:0]Z;wireCF,OF,SF,ZF;integeri;

ALUalu_0(.OP(OP),.X(X),.Y(Y),.Z(Z),.CF(CF),.OF(OF),.SF(SF),.ZF(ZF));initialbeginX=8'b01010101;Y=8'b10101010;for(i=0;i<8;i=i+1)beginOP=i;#100;end$finish;endendmodule作業(yè)實(shí)現(xiàn)“算術(shù)邏輯運(yùn)算器”例子,并給出仿真結(jié)果。要求X、Y分別為本人學(xué)號(hào)的前兩位和后兩位。例如,學(xué)號(hào)為“12345678”,則X=00001100(12),Y=01001110(78)組合邏輯電路2片上微控制系統(tǒng)原理與項(xiàng)目設(shè)計(jì)第五講授課內(nèi)容組合電路分析與設(shè)計(jì)基本組合電路模塊加/減法器數(shù)據(jù)選擇器/分配器數(shù)值比較器編/譯碼器競爭與冒險(xiǎn)應(yīng)用實(shí)例【例】雙通道數(shù)據(jù)選擇器:備選數(shù)據(jù)有六個(gè)8位數(shù)D0、D1、D2、D3、D4和D5,兩個(gè)通道輸出8位數(shù)Y0和Y1,在通道數(shù)據(jù)選擇信號(hào)S0和S1控制下,每個(gè)通道獨(dú)立地從六個(gè)數(shù)中選擇其中之一輸出。試給出雙通道選擇控制邏輯電路及相應(yīng)的HDL代碼?!痉治觥繌墓δ苌峡梢钥闯觯撨壿嬰娐酚蓛蓚€(gè)選擇器構(gòu)成,兩個(gè)選擇器的數(shù)據(jù)源是相同的,由兩個(gè)不同的選擇控制信號(hào)來決定每個(gè)源操作數(shù)的輸出。moduleSrcSel(D0,D1,D2,D3,D4,D5,S0,S1,Y0,Y1); input[7:0]D0,D1,D2,D3,D4,D5; input[2:0]S0,S1; outputreg[7:0]Y0,Y1; always@(*) begin case(S0) 0:Y0<=D0; 1:Y0<=D1; 2:Y0<=D2; 3:Y0<=D3; 4:Y0<=D4; 5:Y0<=D5; default:Y0<=0; endcase case(S1) 0:Y1<=D0; 1:Y1<=D1; 2:Y1<=D2; 3:Y1<=D3; 4:Y1<=D4; 5:Y1<=D5; default:Y1<=0; endcase end endmodulemoduletest;reg[47:0]D;reg[2:0]S1,S0;wire[7:0]Y1,Y0;integeri,j;

SrcSelsrcsel_0(.D0(D[7:0]),.D1(D[15:8]),.D2(D[23:16]),.D3(D[31:24]),.D4(D[39:32]),.D5(D[47:40]),.S0(S0),.S1(S1),.Y0(Y0),.Y1(Y1));initialbeginD={8'd5,8'd4,8'd3,8'd2,8'd1,8'd0};for(i=0;i<6;i=i+1)for(j=0;j<6;j=j+1)beginS1=i;S0=j;#100;end$finish;endendmodule【作業(yè)】數(shù)據(jù)傳輸分配器:外部產(chǎn)生待傳8位數(shù)據(jù)DI和一位數(shù)據(jù)有效信號(hào)DE,分配器根據(jù)3位通道選擇信號(hào)S將待傳數(shù)據(jù)及數(shù)據(jù)有效信號(hào)傳輸?shù)轿鍌€(gè)通道中之一,五個(gè)通道輸出分別為DO0~DO4和E0~E4。試給出分配器控制邏輯電路及相應(yīng)的HDL代碼。數(shù)值比較器數(shù)值比較器是對(duì)兩個(gè)位數(shù)相同的二進(jìn)制數(shù)進(jìn)行數(shù)值比較,輸出兩個(gè)數(shù)的比較結(jié)果:大于、等于或小于。比較可以從最高位向最低位開始也可以從最低位向最高位開始前位是高位SA>BSA=BSA<BABFA>BFA=BFA<B001

00101000010010010010101010001011010100

100前位是低位,如何設(shè)計(jì)?多位數(shù)值比較器moduleCmp(A,B,FL,FE,FH);//FL表示FA<B,F(xiàn)L表示FA=B,F(xiàn)L表示FA>B。 parametern=;//數(shù)據(jù)數(shù)位值 input[n-1:0]A,B; outputregFL,FE,FH; always@(*) if(A<B) {FL,FE,FH}<=3’b100; elseif(A==B) {FL,FE,FH}<=3’b010; else {FL,FE,FH}<=3’b001;endmodule應(yīng)用示例【例】某電路輸入為4位的x,其輸出為4位的y,y和x之間的關(guān)系如圖所示,試設(shè)計(jì)一組合邏輯電路來實(shí)現(xiàn)該功能,給出電路結(jié)構(gòu)圖和相應(yīng)的HDL代碼。

modulefunc(x,y); input[3:0]x; outputreg[3:0]y; always@(*) if(x<4'd5) y<=x; elseif(x>4'd10) y<=~x; else y<=5;endmodulemoduletest;reg[3:0]x;wire[3:0]y;integeri;funcfunc_0(.x(x),.y(y));initialbeginfor(i=0;i<16;i=i+1)beginx=i;#100;end$finish;endendmodule編/譯碼器編碼器是采用m位比特來表示n條信號(hào)線中的有效信號(hào)線。n位輸入線,理論上共有2n種組合m位輸出編碼,M?2n。使能信號(hào)nE編碼有效信號(hào)nYs功能表nEnI7nI6nI5nI4nI3nI2nI1nI0nYsY2Y1Y00xxxxxxx000000xxxxxx0100010xxxxx01100100xxxx011100110xxx0111101000xx01111101010x01111110110001111111011101111111111111xxxxxxxx1111moduleEncoder8(nE,nI,Y,nYs); inputnE; input[0:7]nI; outputreg[2:0]Y; outputregnYs; always@(*) if(nE) casex(nI) 8'b0xxxxxxx:{nYs,Y}<=4'b0000; 8'b10xxxxxx:{nYs,Y}<=4'b0001; 8'b110xxxxx:{nYs,Y}<=4'b0010; 8'b1110xxxx:{nYs,Y}<=4'b0011; 8'b11110xxx:{nYs,Y}<=4'b0100; 8'b111110xx:{nYs,Y}<=4'b0101; 8'b1111110x:{nYs,Y}<=4'b0110; 8'b11111110:{nYs,Y}<=4'b0111; default:{nYs,Y}<=4'b1111; endcase else {nYs,Y}<=4'b1111;endmodule二進(jìn)制譯碼器譯碼器n個(gè)輸入線,有N條輸出線,N>n。不同輸入值代表N條輸出線上的不同的特定電平組合,相當(dāng)于電平翻譯工作。二進(jìn)制譯碼器nEA1A0nY0nY1nY2nY31

11110000111001101101011010111110if(nE) nY<=4'b1111;else case(A) 0:nY<=4'b1110; 1:nY<=4'b1101; 2:nY<=4'b1011; 3:nY<=4'b0111; endcase應(yīng)用示例【例】某快遞自動(dòng)快件分撿系統(tǒng)可以自動(dòng)根據(jù)寄件地址碼自動(dòng)分檢出A區(qū)、B區(qū)、C區(qū)和D區(qū)的郵件,將其它地區(qū)郵件送至人工分檢處。系統(tǒng)通過控制擋板A、擋板B、擋板C和擋板D的轉(zhuǎn)動(dòng)來選擇區(qū)域?!痉治觥空麄€(gè)系統(tǒng)由掃碼器、控制器和擋板組成。掃碼器產(chǎn)生七位地址碼A6A5A4A3A2A1A0,控制器根據(jù)地址碼產(chǎn)生擋板控制信號(hào)nK0、nK1、nK2和nK3來分別控制擋板A、B、C和D是否轉(zhuǎn)動(dòng)。快件地址碼為7位二進(jìn)制數(shù)A區(qū)地址碼范圍為0x00~0x0FB區(qū)地址碼范圍為0x10~0x1FC區(qū)地址碼范圍為0x20~0x2FD區(qū)地址碼范圍為0x30~0x3F當(dāng)快件的地址碼處于某區(qū)范圍內(nèi),該區(qū)的擋板自動(dòng)打開引導(dǎo)快件進(jìn)入該區(qū)

從表中可以看出,恰是一個(gè)2線-4線譯碼器的功能,采用譯碼器的電路結(jié)構(gòu)如圖。moduletest;reg[6:0]A;wire[3:0]nK;reg[2:0]i;

AutoSortingCtrlautoinst(.A(A),.nK(nK));initialbeginfor(i=0;i<8;i=i+1)begin A={i,4’b0000}; #100;end$finish;endendmodulemoduleAutoSortingCtrl(A,nK);input[6:0]A;output[3:0]nK;

Decoder4decoder4_0(.nE(A[6]),.A(A[5:4]),.nY(nK));endmodule顯示譯碼器在數(shù)字系統(tǒng)中,經(jīng)常采用發(fā)光二極管來顯示數(shù)字或字符信息。最為常用的是7段顯示數(shù)碼管,它采用七個(gè)矩形發(fā)光二極管圍成8字型。它含有7個(gè)輸入a~g分別控制一個(gè)發(fā)光二極管。發(fā)光二極管是特殊的二極管,導(dǎo)通時(shí)發(fā)光。數(shù)碼管有共陽、共陰之分。【例】設(shè)計(jì)一共陽7段顯示數(shù)碼管的譯碼器電路,使其可以實(shí)現(xiàn)數(shù)字0~9的顯示。always@(*) case(D) 4'h0:F<=7'h01; 4'h1:F<=7'h4f; 4'h2:F<=7'h12; 4'h3:F<=7'h06; 4'h4:F<=7'h4c; 4'h5:F<=7'h24; 4'h6:F<=7'h20; 4'h7:F<=7'h0f; 4'h8:F<=7'h00; 4'h9:F<=7'h04; default:F<=7'h7f; endcase【實(shí)驗(yàn)】護(hù)士呼叫顯示控制系統(tǒng)系統(tǒng)負(fù)責(zé)8個(gè)病床,每個(gè)病床上安有呼叫開關(guān)。當(dāng)病人按下開關(guān)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論