verilog语言编写八选一数据选择器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

八选一选择器

一、实验目的

编写一个八选一的选择器,并在verilog软件上进行仿真。

二、代码

1、源代码

(1)用数据流描述的八选一多路选择器模块,采用了逻辑方程module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);

output out;

input i0,i1,i2,i3,i4,i5,i6,i7;

input s2,s1,s0;

assign out=

s2?(s1?(s0?i7:i6):(s0?i5:i4)):(s1?(s0?i3:i2):(s0?i1:i0));

endmodule

(2)用数据流描述的八选一多路选择器模块,采用了条件操作语句module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);

output out;

input i0,i1,i2,i3,i4,i5,i6,i7;

input s2,s1,s0;

assign out=(~s2&~s1&~s0&i0)|

(~s2&~s1&s0&i1)|

(~s2&s1&~s0&i2)|

(~s2&s1&s0&i3)|

(s2&~s1&~s0&i4)|

(s2&~s1&s0&i5)|

(s2&s1&~s0&i6)|

(s2&s1&s0&i7);

endmodule

(3)用行为及描述的八选一多路选择器模块

可描述为:

module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);

output out;

input i0,i1,i2,i3,i4,i5,i6,i7;

input s2,s1,s0;

reg out;

always (s2 or s1 or s0 or i0 or i1 or i2 or i3 or i4 or i5 or i6 or i7)

begin

case({s2,s1,s0})

3'b000:out=i0;

3'b001:out=i1;

3'b010:out=i2;

3'b011:out=i3;

3'b100:out=i4;

3'b101:out=i5;

3'b110:out=i6;

3'b111:out=i7;

defult:$dispiay("Invalid control signals");

endcase

end

endmodule

或者是:

module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);

output out;

input i0,i1,i2,i3,i4,i5,i6,i7;

input s2,s1,s0;

reg out;

always (s2 or s1 or s0 or i0 or i1 or i2 or i3 or i4 or i5 or i6 or i7)

begin

case({s2,s1,s0})

3'd1:out=i0;

3'd2:out=i1;

3'd3:out=i2;

3'd4:out=i3;

3'd5:out=i4;

3'd6:out=i5;

3'd7:out=i6;

3'd8:out=i7;

defult:$dispiay("Invalid control signals");

endcase

end

endmodule

2、激励模块

`timescale 1ns/100ps

module mux8_to_1_tb;

reg I0,I1,I2,I3,I4,I5,I6,I7;

reg S2,S1,S0;

wire OUT;

mux8_to_1 ul(

.out(OUT),

.i0(I0),

.i1(I1),

.i2(I2),

.i3(I3),

.i4(I4),

.i5(I5),

.i6(I6),

.i7(I7),

.s2(S2),

.s1(S1),

.s0(S0)

);

initial

begin

I0=1;I1=0;I2=0;I3=1;I4=1;I5=1;I6=0;I7=0;

S2=0;S1=0;S0=0;

#10 S2=0;S1=0;S0=1;

#10 S2=0;S1=1;S0=0;

#10 S2=0;S1=1;S0=1;

#10 S2=1;S1=0;S0=0;

#10 S2=1;S1=0;S0=1;

#10 S2=1;S1=1;S0=0;

#10 S2=1;S1=1;S0=1;

end

endmodule

三、仿真波形

四、波形说明

波形图中,从上至下依次为:输入数据I0,I1,I2,I3,I4,I5,I6,I7,选择端口S2,S1,S0,输出COUT。该程序实现的是控制选择端口选择对应的数据并输出。

当S2=0,S1=0,S0=0时,选择I0,输出I0的值1;

当S2=0,S1=0,S0=1时,选择I1,输出I0的值0;

当S2=0,S1=1,S0=0时,选择I2,输出I0的值0;

当S2=0,S1=1,S0=1时,选择I3,输出I0的值1;

当S2=1,S1=0,S0=0时,选择I4,输出I0的值1;

当S2=1,S1=0,S0=1时,选择I5,输出I0的值1;

相关文档
最新文档