基于FPGA的8路选择器(使用三种方法)

本模块主要是为了实现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)))))));

四、仿真结果

在这里插入图片描述


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值