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仿真波形

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

相关推荐
FPGA_ADDA22 分钟前
ORIN+FPGA 高速采集AI 智能处理板
人工智能·fpga开发
卡姆图拉夫30 分钟前
基于米尔 MYD-YM90X 开发板的项目测评与技术分享
fpga开发
奋进的电子工程师4 小时前
新架构下高精度时间戳总线接口卡 TestBase VCI 0620
测试工具·fpga开发·软件工程
上大科技蔡生5 小时前
CS5567:具有宽占空比范围的60V同步降压DCDC控制器
单片机·嵌入式硬件·fpga开发·dcdc
bruk_spp6 小时前
verilog spi slave回环模拟
fpga开发
ShiMetaPi6 小时前
GM-3568JHF丨ARM+FPGA异构开发板系列教程:外设教程 08 串口
stm32·单片机·fpga开发·rk3568
Aaron15887 小时前
基于RFSOC+VU13P在6G通感一体化的技术应用浅析
算法·fpga开发·硬件架构·硬件工程·信号处理·射频工程·基带工程
博览鸿蒙8 小时前
宸极教育 | FPGA直播课程重磅上线!
fpga开发
FPGA_无线通信1 天前
AD9361 IQ接口框架搭建
fpga开发
chinxue20081 天前
VSCODE使用vivado
ide·vscode·fpga开发·编辑器