我是靠谱客的博主 动听钥匙,最近开发中收集的这篇文章主要介绍数据选择器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述
设计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

仿真图样

在这里插入图片描述

框图

在这里插入图片描述

最后

以上就是动听钥匙为你收集整理的数据选择器的全部内容,希望文章能够帮你解决数据选择器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部