什么是BCD码?设计一个BCD译码器,输入是0-9。

回答:

BCD英文是binary coded decimal,是一种用二进制表示十进制的数码。BCD译码器使用4位二进制表示十个数,所以也叫做4-10线译码器。

图:4-10译码器原理图

Module decoder4_10(
Input	[3:0]	indata	;
Output	[9:0]	outdata	;
);
//方法1
always@(*)
begin
	case(indata)
4’b0000:	outdata = 10’1111_1111_10;
4’b0001:	outdata = 10’1111_1111_01;
4’b0010:	outdata = 10’1111_1110_11;
4’b0011:	outdata = 10’1111_1101_11;
4’b0100:	outdata = 10’1111_1011_11;
4’b0101:	outdata = 10’1111_0111_11;
4’b0110:	outdata = 10’1110_1111_11;
4’b0111:	outdata = 10’1101_1111_11;
4’b1000:	outdata = 10’1011_1111_11;
4’b1001:	outdata = 10’0111_1111_11;
Default:	outdata = 10’1111_1111_11;
endcase

end
//方法2
Assign	outdata[0]=~( ~indata[3]	&	~indata[2]	&	~indata[1]	&	~indata[0]);
Assign	outdata[1]=~( ~indata[3]	&	~indata[2]	&	~indata[1]	&	indata[0]);
Assign	outdata[2]=~( ~indata[3]	&	~indata[2]	&	indata[1]	&	~indata[0]);
Assign	outdata[3]=~( ~indata[3]	&	~indata[2]	&	~indata[1]	&	~indata[0]);
Assign	outdata[4]=~( ~indata[3]	&	indata[2]	&	~indata[1]	&	~indata[0]);
Assign	outdata[5]=~( ~indata[3]	&	indata[2]	&	~indata[1]	&	indata[0]);
Assign	outdata[6]=~( ~indata[3]	&	indata[2]	&	indata[1]	&	~indata[0]);
Assign	outdata[7]=~( ~indata[3]	&	indata[2]	&	indata[1]	&	indata[0]);
Assign	outdata[8]=~(indata[3]	&	~indata[2]	&	~indata[1]	&	~indata[0]);
Assign	outdata[9]=~(indata[3]	&	~indata[2]	&	~indata[1]	&	indata[0]);
endmodule

说明:

尽量选择使用assign语句来代替always语句块。尤其是对于if-else语句来说使用 assign = ? : 条件选择语句设计出来的电路会更优,因为if-else语句可能会向下一级传播不定态。 造成逻辑电路错误。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值