本模块主要是为了实现8选一多路选择器,使用了if语句,case语句和assign语句。看起来简单,但是自己做的时候还是犯了很多的错误,下次一定要吸取教训。
一、 定义端口
input in1;
input in2;
input in3;
input in4;
input in5;
input in6;
input in7;
input in8;
input [2:0]sel;
output reg led1;
output reg led2;
output wire out;
一、if…else类型
//if..else 语句实现多路选择题
always@(*)
begin
if(sel == 3'b000)
led1 <= in1;
else if(sel == 3'b001)
led1 <= in2;
else if(sel == 3'b010)
led1 <= in3;
else if(sel == 3'b011)
led1 <= in4;
else if(sel == 3'b100)
led1 <= in5;
else if(sel == 3'b101)
led1 <= in6;
else if(sel == 3'b110)
led1 <= in7;
else if(sel == 3'b111)
led1 <= in8;
else led1 <= 0;
end
二、case语句
//case语句实现多路选择题
always@(*)
case(sel)
3'b000 : led2 <= in1;
3'b001 : led2 <= in2;
3'b010 : led2 <= in3;
3'b011 : led2 <= in4;
3'b100 : led2 <= in5;
3'b101 : led2 <= in6;
3'b110 : led2 <= in7;
3'b111 : led2 <= in8;
default: led2 <= 0;
endcase
三、逻辑判断语句
assign out = (sel == 3'b000)?in1:((sel == 3'b001 )
?in2 :((sel ==3'b010)?in3:((sel ==3'b011)?in4:((sel ==3'b100 )
?in5:((sel ==3'b101)?in6:((sel ==3'b110)?in7:((sel ==3'b111)?
in8:0)))))));
四、仿真结果