概述
设计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
仿真图样
框图
最后
以上就是动听钥匙为你收集整理的数据选择器的全部内容,希望文章能够帮你解决数据选择器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复