数据选择器

在这里插入图片描述
设计1个8位或16位的数据选择器:
ENA是使能控制输入端。当ENA=1时,电路不能工作,输出Y=0;当ENA=0时,电路处于工作状态。8位数据选择器有三个数据控制端,如ENA=0时,S2、S1、S0=000,则A[0]被选中,输出Y=A[0]。16位数据选择器有四个数据控制端,如ENA=0时,S3、S2、S1、S0=1111时,则输入A[15]被选中,输出Y=A[15]。

设计代码

module choose8(input [7:0] A,
               input S0,S1,S2,ENA,clk,
                output reg Y=0);
always@(negedge clk)
    if(ENA==1) Y = 0; 
    else
        casex({S2,S1,S0})
            3'b000:Y=A[0];
            3'b001:Y=A[1];
            3'b010:Y=A[2];
            3'b011:Y=A[3];
            3'b100:Y=A[4];
            3'b101:Y=A[5];
            3'b110:Y=A[6];
            3'b111:Y=A[7];
        default:Y=0;
        endcase
endmodule

仿真代码

module text8( );
parameter DELAY=20;
reg [7:0] A;
reg S0,S1,S2,ENA,clk;
wire Y;
choose8 il(
        .A(A),
        .S0(S0),
        .S1(S1),
        .S2(S2),
        .ENA(ENA),
        .clk(clk),
        .Y(Y));
initial 
    begin
        ENA=1; A=8'b10001101;S0=0;S1=0;S2=0;clk=0;
        #DELAY ENA=0; 
        #(DELAY*2) S0=1;S1=0;S2=0;
        #(DELAY*2) S0=0;S1=1;S2=0;
        #(DELAY*2) S0=1;S1=1;S2=0;
        #(DELAY*2) S0=0;S1=0;S2=1;
        #(DELAY*2) S0=1;S1=0;S2=1;
        #(DELAY*2) S0=0;S1=1;S2=1;
        #(DELAY*2) S0=1;S1=1;S2=1;
    end
    always begin
        #(DELAY/2) clk = ~clk;
    end
endmodule

仿真图样

在这里插入图片描述

框图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠风丶北枝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值