版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
組合邏輯電路設計
主要內容◆基本門電路◆加法器◆比較器◆編碼器◆譯碼器◆多路數(shù)據選擇器◆其它組合電路設計1.基本門電路設計//門級結構描述
modulegate1(F,A,B,C,D);inputA,B,C,D;outputF;nand(F1,A,B);//調用門元件and(F2,B,C,D);or(F,F1,F2);endmoduleF2F11.基本門電路設計數(shù)據流描述modulegate2(F,A,B,C,D);inputA,B,C,D;outputF;assignF=(~(A&B))|(B&C&D);//assign持續(xù)賦值endmodule基本門電路設計行為描述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。當A>B時,A_gt_B=1;當A<B時,A_it_B=1;當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ù)據輸入端,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ù)轉換成相應的未編碼前的8位二進制串。與8-3編碼器不同的是,解碼器多了一個使能端En,只有在使能端有效的時候,解碼器才能工作。3-8解碼器下圖所示是一個一般解碼器——3-8解碼器,其中Ain[2]~Ain[0]是數(shù)據輸入端,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ù)據選擇器
多路數(shù)據選擇器是一種應用廣泛的通用邏輯器件,它能夠根據按需要從多個輸入信號中選擇一個送到輸出端。用if-else構造的4選1選擇器
下圖所示是一個用if-else語句構造的有優(yōu)先級的選擇器,c、d、e、f是4個數(shù)據輸入端,pout是數(shù)據輸出端,s是選擇信號輸入端。S取00時,pout=cS取01時,pout=dS取10時,pout=eS取其它值,pout=fIf-else是一個有優(yōu)先級的條件執(zhí)行語句結構,排在前面的判斷條件優(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構造的4選1選擇器下圖是一個用case語句構造的4選1多路選擇器,C、D、E、F是4個數(shù)據輸入端,MUX_OUT是數(shù)據輸出端,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構造的12選1選擇器下圖所示,這是一個用case語句構造的12選1多路選擇器,其中A~M是12個數(shù)據輸入端,mux_out是數(shù)據輸出端,mux_sel是選擇信號輸入端。為了能從12個輸入中選擇1個,選擇信號mux_sel至少應有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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB51T 1026-2010 四川省農產品地理標志產品感官品質鑒評規(guī)范
- 生態(tài)有機肥項目立項申請報告
- 微特電機簡單課程設計
- 新建氨基復合材料及制品項目立項申請報告
- 苯檢測儀器項目立項申請報告
- (施工建設)工業(yè)園區(qū)項目可行性研究報告
- 2024年度農村土地流轉合同書-租賃權益補充協(xié)議3篇
- 2024-2030年新版中國電動消音單體項目可行性研究報告
- 2024-2030年新版中國人造纖維板專用蠟項目可行性研究報告
- 2024-2030年撰寫:中國金屬廢渣處理項目風險評估報告
- 醫(yī)學心理學(廣東藥科大學)智慧樹知到期末考試答案2024年
- MOOC 西方園林歷史與藝術-北京林業(yè)大學 中國大學慕課答案
- 墜積性肺炎治療新進展
- 化學趣味科普小知識
- 主生產計劃處理邏輯流程
- 員工手冊范本
- T-CSES 128-2023 公共建筑綜合性減碳改造項目碳減排量認定技術規(guī)范
- 農信社案防培訓課件
- 隧道瞬變電磁法超前地質預報技術規(guī)程
- 客房年度工作計劃
- 婦產科孕期保健PDCA循環(huán)案例
評論
0/150
提交評論