数据选择器 | 运用always 块设计一个八路数据选择器。要求:每路输入数据与输出数据均为4位2进制数,当选择开关(至少3 位)或输入数据发生变化时,输出数据也相应地变化

//**************************mux_8.v**************************************

module mux_8(mout, addr, in1, in2, in3, in4, in5, in6, in7, in8,ena);
input[3:0] in1, in2, in3, in4, in5, in6, in7, in8;
input ena;
input[2:0] addr; 
output[3:0] mout;
reg[3:0] mout;

always @(in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or addr or ena)
begin
    if(!ena)                            //使能信号ena低电平有效
        case(addr)
            3'b000: mout=in1;
            3'b001: mout=in2;
            3'b010: mout=in3;
            3'b011: mout=in4;
            3'b100: mout=in5;
            3'b101: mout=in6;
            3'b110: mout=in7;
            3'b111: mout=in8;
        endcase
    else mout=4'bx;
end
endmodule

//*****************************mux_8_TB.v******************************

`timescale 1ns / 1ns

module mux_8_TB;
reg[3:0] in1, in2, in3, in4, in5, in6, in7, in8;
reg ena;
reg[2:0] addr; 
wire[3:0] mout;

initial
    begin
    ena=0;
    in1=0;
    in2=0;
    in3=0;
    in4=0;
    in5=0;
    in6=0;
    in7=0;
    in8=0;
    addr= 3'b000;
    repeat(5)
    #10 begin
        in1={$random}%16;
        in2={$random}%16;
        in3={$random}%16;
        in4={$random}%16;
        in5={$random}%16;
        in6={$random}%16;
        in7={$random}%16;
        in8={$random}%16;
        addr=addr+1;
        end
     #10 $stop; 
    end
mux_8 m1(mout, addr, in1, in2, in3, in4, in5, in6, in7, in8,ena);
endmodule

 

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值