版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
組合邏輯電路設(shè)計
主要內(nèi)容◆基本門電路◆加法器◆比較器◆編碼器◆譯碼器◆多路數(shù)據(jù)選擇器◆其它組合電路設(shè)計1.基本門電路設(shè)計//門級結(jié)構(gòu)描述
modulegate1(F,A,B,C,D);inputA,B,C,D;outputF;nand(F1,A,B);//調(diào)用門元件and(F2,B,C,D);or(F,F1,F2);endmoduleF2F11.基本門電路設(shè)計數(shù)據(jù)流描述modulegate2(F,A,B,C,D);inputA,B,C,D;outputF;assignF=(~(A&B))|(B&C&D);//assign持續(xù)賦值endmodule基本門電路設(shè)計行為描述modulegate3(F,A,B,C,D);inputA,B,C,D;outputF;regF;always@(AorBorCorD)
//過程賦值beginF=(~(A&B))|(B&C&D);endendmodule加法器4位全加器moduleadder4(cout,sum,ina,inb,cin);output[3:0]sum;outputcout;input[3:0]ina,inb;inputcin;assign{cout,sum}=ina+inb+cin;endmodule比較器一個四位大小比較器的輸入是兩個四位數(shù)A和B,我們可以將它們寫成下面的形式,最左邊的為最高有效位:
A=A(3)A(2)A(1)A(0)B=B(3)B(2)B(1)B(0)兩個數(shù)的比較規(guī)則:從最高有效位開始,逐位進行。如果兩個位不相等,則該位值為0的數(shù)為較小的數(shù)。為了用邏輯等式實現(xiàn)這個功能,我們需要定義一個中間變量X。注意下面實現(xiàn)的是同或的功能:
X(i)=A(i)B(i)+A(i)’B(i)’比較器大小比較器的三個輸出為:A_gt_B,A_it_B和A_eq_B。當(dāng)A>B時,A_gt_B=1;當(dāng)A<B時,A_it_B=1;當(dāng)A=B時,A_eq_B=1;其計算公式為:A_gt_B=(A[3]&~B[3])|(X[3]&A[2]&~B[2])|(X[3]&X[2]&A[1]&~B[1])|(X[3]&X[2]&X[1]&A[0]&~B[0]),A_it_B=(~A[3]&B[3])|(X[3]&~A[2]&B[2])|(X[3]&X[2]&~A[1]&B[1])|(X[3]&X[2]&X[1]&~A[0]&B[0]),
A_eq_B=X[3]&X[2]&X[1]&X[0];比較器(方法一)modulecomp1(A,B,A_gt_B,A_it_B,A_eq_B);input[3:0]A,B;outputA_gt_B,A_it_B,A_eq_B;wire[3:0]X;assignX[0]=(A[0]&B[0])|(~A[0]&~B[0]),X[1]=(A[1]&B[1])|(~A[1]&~B[1]),X[2]=(A[2]&B[2])|(~A[2]&~B[2]),X[3]=(A[3]&B[3])|(~A[3]&~B[3]);比較器(方法一)assign
A_gt_B=(A[3]&~B[3])|(X[3]&A[2]&~B[2])|(X[3]&X[2]&A[1]&~B[1])|(X[3]&X[2]&X[1]&A[0]&~B[0]),
A_it_B=(~A[3]&B[3])|(X[3]&~A[2]&B[2])|(X[3]&X[2]&~A[1]&B[1])|(X[3]&X[2]&X[1]&~A[0]&B[0]),
A_eq_B=X[3]&X[2]&X[1]&X[0];endmodule比較器(方法二)modulecomp2(A,B,A_gt_B,A_it_B,A_eq_B);input[3:0]A,B;outputA_gt_B,A_it_B,A_eq_B;assignA_gt_B=(A>B);assignA_it_B=(A<B);assignA_eq_B=(A==B);endmodule比較器(方法三)modulecomp3(A,B,A_gt_B,A_it_B,A_eq_B);input[3:0]A,B;outputA_gt_B,A_it_B,A_eq_B;reg
A_gt_B,A_it_B,A_eq_B;always@(AorB)beginif(A>B)beginA_gt_B<=1;A_it_B<=0;A_eq_B<=0;endelseif(A<B)begin
A_gt_B<=0;A_it_B<=1;A_eq_B<=0;endelseif(A==B)beginA_gt_B<=0;A_it_B<=0;A_eq_B<=1;endelsebeginA_gt_B<=0;A_it_B<=0;A_eq_B<=0;endendendmodule
編碼器
編碼器是指能實現(xiàn)用二進制對輸入信號進行編碼的電路,對于每一路輸入信號將輸出唯一的二進制代碼數(shù)。編碼器又分為一般編碼器和優(yōu)先編碼器兩種,一般編碼器一次只能輸入一個信號,優(yōu)先編碼器一次允許輸入多個信號。下圖所示是一個8-3編碼器,其中in[7]~in[0]是8位數(shù)據(jù)輸入端,out[2]~out[0]是3位編碼輸出端。8-3編碼器若輸入端每次有且只有一個是有效的(高電平),那么用一個8位的二進制串表示該輸入信號是很浪費的(如用00010000表示in[4]端口有效的輸入信號),可以把這個二進制串用一個3位的二進制數(shù)表示(000~111分別表示in[0]~in[7]是有效的),這就是8-3編碼器。8-3編碼器case語句實現(xiàn)moduleencoder(in,out);input[7:0]in;output[2:0]out;reg[2:0]out;always@(in)
case(in)
8'b00000001:out=3’b000;//in[0]為1時輸出編碼0008'b00000010:out=3’b001;//in[1]為1時輸出編碼0018'b00000100:out=3’b010;//in[2]為1時輸出編碼0108'b00001000:out=3’b011;//in[3]為1時輸出編碼0118'b00010000:out=3’b100;//in[4]為1時輸出編碼100
8'b00100000:out=3’b101;//in[5]為1時輸出編碼1018'b01000000:out=3’b110;//in[6]為1時輸出編碼1108'b10000000:out=3’b111;//in[7]為1時輸出編碼111
default:out=3’bxxx;
endcase
endmodule8-3優(yōu)先編碼器if語句實現(xiàn)要求優(yōu)先級依次為:h->a;000~111分別表示a~h是有效的,若a~h沒有一個信號有效時none_on取值為1,其它情況none_on取值為0;8-3優(yōu)先編碼器if語句實現(xiàn)moduleencoder8_3(none_on,out,a,b,c,d,e,f,g,h);
output
none_on;output[2:0]out;
inputa,b,c,d,e,f,g,h;reg[3:0]
outtemp;
assign{none_on,out}=outtemp;
always@(aorborcordoreorforgorh)begin
if(h)outtemp=4'b0111;elseif(g)outtemp=4'b0110;
elseif(f)outtemp=4'b0101;elseif(e)outtemp=4'b0100;elseif(d)outtemp=4'b0011;elseif(c)outtemp=4'b0010;elseif(b)outtemp=4'b0001;elseif(a)outtemp=4'b0000;elseouttemp=4'b1000;end
endmodule
用函數(shù)定義的8-3優(yōu)先編碼器modulecode8_3(in,out);
output[2:0]out;input[7:0]in;function[2:0]codeout;input[7:0]codein;If(codein[7])codeout=3’d7;elseif(codein[6])codeout=3’d6;elseif(codein[5])codeout=3’d5;elseif(codein[4])codeout=3’d4;elseif(codein[3])codeout=3’d3;elseif(codein[2])codeout=3’d2;elseif(codein[1])codeout=3’d1;elsecodeout=3’d0;endfunctionassignout=codeout(in);
end
endmodule
3-8解碼器和8-3編碼器工作過程恰恰相反,3-8解碼器的工作是把已編碼成3位的二進制數(shù)轉(zhuǎn)換成相應(yīng)的未編碼前的8位二進制串。與8-3編碼器不同的是,解碼器多了一個使能端En,只有在使能端有效的時候,解碼器才能工作。3-8解碼器下圖所示是一個一般解碼器——3-8解碼器,其中Ain[2]~Ain[0]是數(shù)據(jù)輸入端,Yout[7]~Yout[0]是解碼輸出端,En是使能控制端。要求:Ain取000~111時,分別代表Yout[0]~Yout[7]有效moduledecoder(Ain,En,Yout);inputEn;input[2:0]Ain;output[7:0]Yout;
reg[7:0]Yout;always@(EnorAin)beginif(!En)
Yout=8'b0;//使能信號無效時會把輸出置0else3-8解碼器case(Ain)3'b000:Yout=8'b00000001;//03'b001:Yout=8'b00000010;//13'b010:Yout=8'b00000100;//23'b011:Yout=8'b00001000;//33'b100:Yout=8'b00010000;//43'b101:Yout=8'b00100000;//5
3'b110:Yout=8'b01000000;//63'b111:Yout=8'b10000000;//7default:Yout=8'b00000000;//default項
endcaseendendmodule多路數(shù)據(jù)選擇器
多路數(shù)據(jù)選擇器是一種應(yīng)用廣泛的通用邏輯器件,它能夠根據(jù)按需要從多個輸入信號中選擇一個送到輸出端。用if-else構(gòu)造的4選1選擇器
下圖所示是一個用if-else語句構(gòu)造的有優(yōu)先級的選擇器,c、d、e、f是4個數(shù)據(jù)輸入端,pout是數(shù)據(jù)輸出端,s是選擇信號輸入端。S取00時,pout=cS取01時,pout=dS取10時,pout=eS取其它值,pout=fIf-else是一個有優(yōu)先級的條件執(zhí)行語句結(jié)構(gòu),排在前面的判斷條件優(yōu)先級高,所以只要排在最前面的判斷條件滿足,就執(zhí)行那個分支語句,把后面的分支全部忽略。在本程序中,4個輸入端c、d、e、f優(yōu)先級依次降低,建模程序如下:moduleIF_MUX(c,d,e,f,s,pout);inputc,d,e,f;input[1:0]s;outputpout;
regpout;always@(cordoreorfors)beginif(s==2'b00)pout=c;//s是00時選通celseif(s==2'b01)pout=d;//s是01時選通delseif(s==2'b10)
pout=e;//s是10時選通eelsepout=f;//s是其他值時選通fendendmodule用case構(gòu)造的4選1選擇器下圖是一個用case語句構(gòu)造的4選1多路選擇器,C、D、E、F是4個數(shù)據(jù)輸入端,MUX_OUT是數(shù)據(jù)輸出端,S[1:0]是選擇信號輸入端。S取00時,pout=cS取01時,pout=dS取10時,pout=eS取其它值,pout=fmoduleMUX(C,D,E,F,S,MUX_OUT);inputC,D,E,F;input[1:0]S;outputMUX_OUT;
regMUX_OUT;
always@(CorDorEorForS)begincase(S)2'b00:MUX_OUT=C;//00時選擇C2'b01:MUX_OUT=D;//01時選擇D2'b10:MUX_OUT=E;//10時選擇Edefault:MUX_OUT=F;//選擇信號是其他值(包括11)時選擇F
endcaseendendmodule用case構(gòu)造的12選1選擇器下圖所示,這是一個用case語句構(gòu)造的12選1多路選擇器,其中A~M是12個數(shù)據(jù)輸入端,mux_out是數(shù)據(jù)輸出端,mux_sel是選擇信號輸入端。為了能從12個輸入中選擇1個,選擇信號mux_sel至少應(yīng)有4位,4位的值可以表示16種信號,沒有用到的4種情況下將把輸出置0。此選擇器的建模程序如下:Modulemux12_1(mux_out,mux_sel,M,L,K,J,H,G,F,E,D,C,B,A);outputmux_out;input[3:0]mux_sel;inputM,L,K,J,H,G,F,E,D,C,B,A;
reg
mux_out;always@({mux_sel[3:0]}orMorLorKorJorHorGorForEorDorCorBorA)begincase({mux_sel[3:0]})4'b0000:mux_out=A;4'b0001:mux_out=B;4'b0010:mux_out=C;
4'b0011:mux_out=D;4'b0100:mux_out=E;4'b0101:mux_out=F;4'b0110:mux_out=G;4'b0111:mux_out=H;4'b1000:mux_out=J;4'b1001:mux_out=K;
4'b1010:mux_out=L;4'b1011:mux_out=M;4'b1100:mux_out=1'b0;//未選擇任何信號,輸出置04'b1101:mux_out=1'b0;//未選擇任何信號,輸出置04'b1110:mux_out=1'b0;//未選擇任何信號,輸出置04'b1111:mux_out=1'b0;
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44837-2024綠色產(chǎn)品評價文具
- 2024年VXI機箱和O槽控制器項目立項申請報告模板
- 2024年數(shù)控精密電火花成形機床項目規(guī)劃申請報告模范
- 仿皮衣行業(yè)市場發(fā)展及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025產(chǎn)品訂購合同(常用版)
- 工廠配電采購合同范例
- 樓梯踏步供貨合同范例
- 水塘開挖施工合同范例
- 墊付資金協(xié)議合同范例
- 石材工程安裝合同范例
- 人際溝通.從心開始(大學(xué)生人際交往)
- KYN28-12A開關(guān)柜技術(shù)規(guī)范書
- 化療藥物滲漏PDCA循環(huán)分析
- 國開《小學(xué)數(shù)學(xué)教學(xué)研究》形考任務(wù)二
- 維修方案模板
- 冶金行業(yè)特殊工種有哪些崗位
- 分布式光伏發(fā)電項目投標(biāo)技術(shù)方案(純方案)
- 增強指數(shù)策略
- 能源中國學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 初中部綜合素質(zhì)評價實施方案范本(三篇)
- 寧夏困難殘疾人生活補貼申請審批表
評論
0/150
提交評論