FPGA入门:二选一多路选择器

FPGA入门学习第一例:二选一多路选择器

设计需求

设计一个二选一多路选择器模块,包含三个输入信号(a/b/sl),一个输出信号(out)。

sl = 1时,out = a;当sl = 0时,out = b

示意图如下所示:

真值表如下图所示:

设计代码

verilog 复制代码
module mux2(
    input a,      /* 1 bit 输入信号 */
    input b,      /* 1 bit 输入信号 */
    input sl,     /* 1 bit 输入信号 */
    output out    /* 1 bit 输出信号 */
);

/* 输出信号赋值:
 * 当 sl == 1 时,out = a
 * 当 sl == 0 时,out = b */
assign out = (sl==1) ? a : b;

endmodule

仿真代码

verilog 复制代码
`timescale 1ns / 1ns  /* 时间单位和时间精度都设置为 1ns  */

module mux2_tb();

    /* 输入/输出定义 */
    reg in_a;
    reg in_b;
    reg in_sel;
    wire out;

    /* 二选一多路选择器模块实例化,并将仿真信号与模块内部信号连接
     * 模块.a <==> in_a
     * 模块.b <==> in_b
     * 模块.sl <==> in_sel
     * 模块.out <==> out */
    mux2 mux2_inst(
        .a(in_a),
        .b(in_b),
        .sl(in_sel),
        .out(out)
    );

    /* 产生激励信号 */
    initial begin
        in_a = 0; in_b = 0; in_sel = 0;
        #200;  /* 延迟200ns */
        in_a = 0; in_b = 0; in_sel = 1;
        #200;
        in_a = 0; in_b = 1; in_sel = 0;
        #200;
        in_a = 0; in_b = 1; in_sel = 1;
        #200;
        in_a = 1; in_b = 0; in_sel = 0;
        #200;
        in_a = 1; in_b = 0; in_sel = 1;
        #200;
        in_a = 1; in_b = 1; in_sel = 0;
        #200;
        in_a = 1; in_b = 1; in_sel = 1;
        #200;
        $stop;  /* 停止仿真 */
    end

endmodule

ModelSim仿真波形

分析波形可以看出,模块的执行结果与真值表一致。

相关推荐
Born_t0ward11 分钟前
基于FPGA实现BPSK 调制
fpga开发
且听风吟5673 小时前
深度为16,位宽8bit的单端口SRAM——学习记录
学习·fpga开发
鸡精拌饭3 小时前
FPAG IP核调用小练习
fpga开发
爱喝西北风的东北风3 小时前
DDS波形发生器仿真及技术原理
单片机·嵌入式硬件·fpga开发
hahaha60167 小时前
Vccaux_IO在DDR3接口中的作用
fpga开发
Water_Sounds21 小时前
【FPGA开发技巧】Modelsim仿真中,显示状态机的名称,而非编码数字
fpga开发
北京青翼科技1 天前
【PCIE736-0】基于 PCIE X16 总线架构的 4 路 QSFP28 100G 光纤通道处理平台
图像处理·人工智能·fpga开发·信号处理
奋斗的牛马1 天前
FPGA_UART
fpga开发
ThreeYear_s2 天前
基于FPGA的智能垃圾桶设计-超声波测距模块-人体感应模块-舵机模块 仿真通过
fpga开发
soulermax2 天前
华为数字芯片机考2025合集4已校正
华为·fpga开发·架构·github·硬件架构