资源描述:
《第4章-Verilog-HDL常用电路设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章VerilogHDL常用电路设计4.1常用组合逻辑电路设计4.2常用时序逻辑电路设计4.3小结4.1常用组合逻辑电路设计1数据选择器2译码器3加法器4乘法器5比较器6ALU7三态总线4.1常用组合逻辑电路设计数据选择器【例4-1】参数型n位,mx1数据选择器modulemultiplexer_N(X1,X2,X3,X4,sel,Y);parameterN=8;//该参数定义了一个(8位)的4选一多路选择器input[N-1:0]X1,X2,X3,X4;input[1:0]sel;outputreg[N-
2、1:0]Y;always@(sel,X1,X2,X3,X4)case(sel)2'b00:Y=X1;2'b01:Y=X2;2'b10:Y=X3;2'b11:Y=X4;endcaseendmodule译码器【例4-2】参数型lognxn译码器moduledecode_N(sel,Y);parameterN=4;//该参数定义了一个4输出(4位)的译码器input[1:0]sel;//此参数为2位,通过计算log4=2得到,可得到4输出译码器outputreg[N-1:0]Y;always@(sel)case(s
3、el)2'b00:Y=4'b0001;2'b01:Y=4'b0010;2'b10:Y=4'b0100;2'b11:Y=4'b1000;endcaseendmodule加法器【例4-3】参数型N位加法器moduleadd_N(X,Y,sum,co);parameterN=8;input[N-1:0]X,Y;output[N-1:0]sum;outputco;assign{co,sum}=X+Y;endmodule乘法器【例4-4】参数型N位乘法器modulemul_N(X,Y,mul);parameterN=8
4、;input[N-1:0]X,Y;output[2*N-1:0]mul;assignmul=X*Y;endmodule比较器【例4-5】参数型N位比较器modulecompare_N(X,Y,X_gt_Y,X_eq_Y,X_lt_Y);parameterN=8;//参与比较的数的位数为8input[N-1:0]X,Y;outputregX_gt_Y,X_eq_Y,X_lt_Y;always@(X,Y)if(X>Y)beginX_gt_Y=1;X_eq_Y=0;X_lt_Y=0;endelseif(X==Y)b
5、eginX_gt_Y=0;X_eq_Y=1;X_lt_Y=0;endelsebeginX_gt_Y=0;X_eq_Y=0;X_lt_Y=1;endendmoduleALU【例4-6】参数型n位,m功能ALUmodulealu_N(X,Y,sel,result);parameterN=8;input[2:0]sel;//3位可定义m=8功能input[N-1:0]X,Y;outputreg[N-1:0]result;always@(X,Y,sel)begincase(sel)3'b000:result=X+Y;
6、//加法3'b001:result=X-Y;//减法3'b010:result=X<<1;//左移1位3'b011:result=X>>1;//右移1位3'b100:result=X&Y;//相与3'b101:result=X^Y;//异或3'b110:result=~X;//求反3'b111:result=X;//直通endcaseendendmodulesel输入操作说明000result=X+Y加法001result=X-Y减法010result=X<<1左移1位011result=X>>1右移1位10
7、0result=X&Y相与101result=X^Y异或110result=~X求反111result=X直通三态总线【例4-7】三态门设计moduletri_s(enable,datain,dataout);parameterN=8;inputenable;input[N-1:0]datain;outputreg[N-1:0]dataout;always@(enable,datain)if(enable==1)dataout=datain;elsedataout='bz;endmodule三态总线【例4-8
8、】N位4通道的三态总线驱动器moduletri_bus(input3,input2,input1,input0,enable,out);parameterN=8;input[N-1:0]input3,input2,input1,input0;input[1:0]enable;outputreg[N-1:0]out;always@(enable,input3,input2,input1,input0)