用verilog实现3-8译码器功能

本文使用always中case方法来编写代码:

module decoder3_8(
input wire in1,
input wire in2,
input wire in3,
output reg [7:0] out
);
//out 根据输入的3 bit 信号选择输出对应的8 bit 的out信号。
always@(*)
    case({in1,in2,in3})//{in1,in2,in3}是将三位输入信号串联起来,即case括号内的值是三bit 的信号000/001等
        3'b000 : out = 8'b0000_0001; //输入与输出的 8 种译码对应关系
        3'b001 : out = 8'b0000_0010;
        3'b010 : out = 8'b0000_0100;
        3'b011 : out = 8'b0000_1000;
        3'b100 : out = 8'b0001_0000;
        3'b101 : out = 8'b0010_0000;
        3'b110 : out = 8'b0100_0000;
        3'b111 : out = 8'b1000_0000;
//因为 case 中列举了 in 所有可能输入的 8 种情况,且每种情况都有对应确定的输出
//所以此处 default 可以省略,但是为了以后因不能够完全列举而产生 latch
//所以我们默认一定要加上 default,并任意指定一种确定的输出情况
        default : out = 8'b1000_0000;
    endcase
endmodule

当然也可以使用if-else方法,两者思维方式都是一样的。

接下来就是仿真代码的编写了。

Verilog实现3-8译码器的仿真代码_自由的luge的博客-CSDN博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值