多路选择器

一.多路选择器原理

1.1 二选一多路选择器原理

  • 因为两个输入端,sel位宽取1位(即0/1即可表示选择的是in_a还是in_b)我们可以设sel=0时,out=in_a;sel=1时,out=in_b。
    在这里插入图片描述

1.2 二选一多路选择器真值表

in_ain_bselout
0000
0100
1001
1101
0010
0111
1010
1111

1.3 四选一多路选择器原理

  • 同二选一多路选择器原理一样,只不过变成了四个输入,那么就需要用两位宽的sel(00,01,10,11)分别表示选择输出out等于a,b,c,d的哪一个

二.主要代码及编译

2.1 以四选一多路选择器为例

module MUX4_1 (
    input       in_a,
    input       in_b,
    input       in_c,
    input       in_d,
    input [1:0] sel,
    
    output      out
);
    reg out_r;

always @(*) begin
    case (sel)
        2'b00:out_r = in_a;
        2'b01:out_r = in_b;
        2'b10:out_r = in_c;
        2'b11:out_r = in_d; 
        default: ;
    endcase
end

assign out = out_r;
endmodule

2.2 代码分析

  1. 四个输入信号,一个输入的选择信号,一个输出信号。选择信号需要两位位宽足够选择四个输入信号。

  2. 使用组合逻辑电路,always语句中需使用reg类型,所以先定义一个reg类型的out_r在always语句中使用,最后再用assign out = out_r实现同步。

  3. 组合逻辑中要用阻塞赋值“ = ”

  4. case语句中default在无其他情况下可以不写,但是“ ; ”是一定要写的,容易在这个地方出现错误。

2.3 编译

在这里插入图片描述

  • Quartus上面的菜单栏中,如图中框1是全编译,如图中框2为分析综合。仅分析综合可以实现语法检错,并且比全编译要更快一些。
    在这里插入图片描述

  • 如上图所示即为全编译通过

2.4 原理图

  • Quartus中点击Tools->Netlist Viewers->RTL viewer可以查看原理图
    在这里插入图片描述

四.仿真及仿真效果

4.1 仿真代码

  • 此处由于赋值的种类太多了,我只列举了其中几种。
`timescale 1ns/1ns
module tb_MUX4_1 ();
    
//激励信号
reg tb_in_a;
reg tb_in_b;
reg tb_in_c;
reg tb_in_d;
reg [1:0] tb_sel;

//输出信号
wire out;

//模块例化
MUX4_1 u_MUX4_1(
.in_a   (tb_in_a),
.in_b   (tb_in_b),
.in_c   (tb_in_c),
.in_d   (tb_in_d),
.sel    (tb_sel),

.out(out)
);

initial begin
    tb_in_a = 0;
    tb_in_b = 0;
    tb_in_c = 0;
    tb_in_d = 0;
    tb_sel = 2'b01;
    #20;
    tb_in_a = 0;
    tb_in_b = 0;
    tb_in_c = 1;
    tb_in_d = 0;
    tb_sel = 2'b10;
    #20; 
    tb_in_a = 0;
    tb_in_b = 1;
    tb_in_c = 1;
    tb_in_d = 0;
    tb_sel = 2'b00;
    #20;
    tb_in_a = 1;
    tb_in_b = 0;
    tb_in_c = 1;
    tb_in_d = 0;
    tb_sel = 2'b00;
    #20;
end
endmodule

4.2 仿真过程

  • 将仿真文件添加进建立的工程中
    在这里插入图片描述

在这里插入图片描述

  • setting中添加仿真文件
    在这里插入图片描述

在这里插入图片描述

  • 点击菜单栏中Tools->Run Simulation Tools->RTL Simulation
    在这里插入图片描述

4.3 波形及有关操作

  • 打开波形后点击左上方的图标即可显示波形
    在这里插入图片描述

  • 观测例化模块波形按下图操作
    在这里插入图片描述

  • 回到wave界面对波形crtl+A,再ctrl+G可以对信号进行分类。再点击Restart和Run all,即可得到最终的信号波形
    在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值