组合逻辑电路的门级描述.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:27 大小:1.9MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

组合逻辑电路的门级描述.ppt

组合逻辑电路的门级描述.ppt

预览

免费试读已结束,剩余 17 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

4.6用VerilogHDL描述组合逻辑电路行为描述方式:endVerilog基本门级元件1、多输入门X2、多输出门bufif1真值表4、设计举例例2用Verilog的门级元件进行描述由三态门构成的2选1数据选择器。5、分层次的电路设计方法简介modulehalfadder(S,C,A,B);inputA,B;outputS,C;//Instantiateprimitivegatesxor(S,A,B);and(C,A,B);endmodule//Descriptionof1-bitfulladdermodulefulladder(S,CO,A,B,CI);inputA,B,CI;outputS,CO;wireS1,D1,D2;//内部节点信号//InstantiatethehalfadderhalfadderHA1(S1,D1,A,B);halfadderHA2(S,D2,S1,CI);org1(CO,D2,D1);endmodule//Descriptionof4-bitfulladdermodule_4bit_adder(S,C3,A,B,C_1);input[3:0]A,B;inputC_1;output[3:0]S;outputC3;wireC0,C1,C2;//内部进位信号//InstantiatethefulladderfulladderFA0(S[0],C0,A[0],B[0],C_1),FA1(S[1],C1,A[1],B[1],C0),FA2(S[2],C2,A[2],B[2],C1),FA3(S[3],C3,A[3],B[3],C2);endmodule4.6.2组合逻辑电路的数据流建模VerilogHDL的运算符位运算符与缩位运算的比较对同一个操作数的重复拼接还可以双重大括号构成的运算符{{}}例如{4{A}}=4’b1111,{2{A},2{B},C}=8’b11101000。一般用法:condition_expr?expr1:expr2;2、数据流建模举例//Dataflowdescriptionofa2-to-4-linedecoder,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//Dataflowdescriptionof2-to-1-linemultiplexermodulemux2x1_df(A,B,SEL,L);inputA,B,SEL;outputL;assignL=SEL?A:B;endmodule4.6.3组合逻辑电路的行为级建模if(condition_expr1)true_statement1;elseif(condition_expr2)true_statement2;elseif(condition_expr3)true_statement3;……elsedefault_statement;是一种多分支条件选择语句,一般形式如下:case(case_expr)item_expr1:statement1;item_expr2:statement2;……default:default_statement;//default语句可以省略//Behavioraldescriptionof2-to-1-linemultiplexermodulemux2to1_bh(A,B,SEL,L);inputA,B,SEL;outputL;regL;//defineregistervariablealways@(SELorAorB)if(SEL==1)L=b;//也可以写成if(SEL)L=B;elseL=A;endmodule//Behavioraldescriptionof4-to-1-linemultiplexermodulemux4to1_bh(A,SEL,E,L);input[3:0]A;input[1:0]SEL;outputL;regL;always@(AorSELorE)beginif(E==1)L=0;elsecase(SEL)2’d0:L=A[0];2’d1:L=A[1];2’d2:L=A[2];2’d3:L=A[3];endcaseendendmodule