verilog学习笔记:简单的数据选择器modelsim仿真

如图所示,画出框图,有sel、in_1、in_2三个输出入,sel为选通器、in为信号,sel为高电平时输出in_1,否则输出in_2;

利用if语句实现该过程,代码如下:

module mux2_1
(
    input  wire           [0:0]         in_1                       ,//输入信号1
    input  wire           [0:0]         in_2                       ,//输入信号2
    input  wire           [0:0]         sel                        ,//选通信号
    output reg            [0:0]         out                         //输出信号
);
    //out:输出信号
    always@(sel,in_1,in_2)
        if (sel==1'b1)
        begin
            out=in_1;
        end
        else 
        begin
            out=in_2;
        end
endmodule

 将代码导入quartusII进行编译成功,然后添加仿真代码:

`timescale 1ns/1ns
module tb_mux2_1 ();
    reg                                     in_1                       ;
    reg                                     in_2                       ;
    reg                                     sel                        ;
    wire                                    out                        ;
    initial begin
        in_1<=1'b0;
        in_2<=1'b0;
        sel<=1'b0;
    end
    always #10 in_1<={$random}%2;
    always #10 in_2<={$random}%2;
    always #10 sel<={$random}%2;
    initial begin
        $timeformat(-9,0,"ns",6);
        $monitor("@time %t:in_1=%b in_2=%b sel=%b out=%b",$time,in_1,in_2,sel,out);
    end
    mux2_1 mux2_1_inst
    (
        .in_1                              (in_1                     ),//输入信号1
        .in_2                              (in_2                     ),//输入信号2
        .sel                               (sel                      ),//选通信号
        .out                               (out                      ) //输出信号
    );
endmodule

利用modelsim仿真结果如下:

 文字仿真表达结果:

# run 1 us
# @time    0ns:in_1=0 in_2=0 sel=0 out=0
# @time   10ns:in_1=0 in_2=1 sel=1 out=0
# @time   20ns:in_1=1 in_2=1 sel=1 out=1
# @time   30ns:in_1=1 in_2=0 sel=1 out=1
# @time   60ns:in_1=0 in_2=1 sel=0 out=1
# @time   70ns:in_1=1 in_2=1 sel=0 out=1
# @time   80ns:in_1=1 in_2=0 sel=0 out=0
# @time   90ns:in_1=0 in_2=1 sel=0 out=1
# @time  100ns:in_1=1 in_2=1 sel=1 out=1
# @time  110ns:in_1=1 in_2=0 sel=0 out=0
# @time  120ns:in_1=0 in_2=0 sel=1 out=0
# @time  130ns:in_1=0 in_2=1 sel=1 out=0
# @time  140ns:in_1=1 in_2=1 sel=1 out=1
# @time  150ns:in_1=0 in_2=0 sel=1 out=0
# @time  160ns:in_1=1 in_2=1 sel=0 out=1
# @time  170ns:in_1=0 in_2=0 sel=0 out=0
# @time  180ns:in_1=0 in_2=1 sel=0 out=1
# @time  190ns:in_1=0 in_2=1 sel=1 out=0
# @time  200ns:in_1=0 in_2=0 sel=0 out=0
# @time  210ns:in_1=0 in_2=0 sel=1 out=0
# @time  220ns:in_1=1 in_2=1 sel=1 out=1
# @time  230ns:in_1=1 in_2=0 sel=0 out=0
# @time  240ns:in_1=1 in_2=1 sel=1 out=1
# @time  250ns:in_1=0 in_2=0 sel=1 out=0
# @time  260ns:in_1=1 in_2=0 sel=1 out=1
# @time  280ns:in_1=1 in_2=1 sel=0 out=1
# @time  300ns:in_1=0 in_2=0 sel=0 out=0
# @time  310ns:in_1=1 in_2=1 sel=0 out=1
# @time  320ns:in_1=0 in_2=1 sel=1 out=0
# @time  330ns:in_1=1 in_2=1 sel=1 out=1
# @time  340ns:in_1=0 in_2=1 sel=1 out=0
# @time  350ns:in_1=1 in_2=0 sel=0 out=0
# @time  360ns:in_1=0 in_2=0 sel=0 out=0
# @time  370ns:in_1=0 in_2=0 sel=1 out=0
# @time  380ns:in_1=1 in_2=1 sel=1 out=1
# @time  390ns:in_1=1 in_2=0 sel=1 out=1
# @time  400ns:in_1=1 in_2=0 sel=0 out=0
# @time  410ns:in_1=1 in_2=1 sel=0 out=1
# @time  420ns:in_1=1 in_2=1 sel=1 out=1
# @time  430ns:in_1=1 in_2=0 sel=0 out=0
# @time  440ns:in_1=0 in_2=1 sel=0 out=1
# @time  450ns:in_1=0 in_2=0 sel=1 out=0
# @time  460ns:in_1=1 in_2=0 sel=0 out=0
# @time  480ns:in_1=0 in_2=1 sel=0 out=1
# @time  500ns:in_1=1 in_2=1 sel=1 out=1
# @time  510ns:in_1=1 in_2=1 sel=0 out=1
# @time  520ns:in_1=0 in_2=0 sel=1 out=0
# @time  540ns:in_1=1 in_2=0 sel=0 out=0
# @time  550ns:in_1=0 in_2=1 sel=1 out=0
# @time  560ns:in_1=0 in_2=0 sel=0 out=0
# @time  570ns:in_1=1 in_2=1 sel=0 out=1
# @time  580ns:in_1=0 in_2=0 sel=1 out=0
# @time  600ns:in_1=0 in_2=0 sel=0 out=0
# @time  610ns:in_1=1 in_2=0 sel=1 out=1
# @time  620ns:in_1=1 in_2=0 sel=0 out=0
# @time  630ns:in_1=0 in_2=0 sel=1 out=0
# @time  640ns:in_1=0 in_2=0 sel=0 out=0
# @time  650ns:in_1=0 in_2=1 sel=1 out=0
# @time  660ns:in_1=1 in_2=0 sel=1 out=1
# @time  670ns:in_1=1 in_2=1 sel=0 out=1
# @time  680ns:in_1=0 in_2=1 sel=1 out=0
# @time  690ns:in_1=1 in_2=1 sel=1 out=1
# @time  700ns:in_1=0 in_2=1 sel=1 out=0
# @time  710ns:in_1=0 in_2=0 sel=0 out=0
# @time  720ns:in_1=0 in_2=1 sel=1 out=0
# @time  730ns:in_1=0 in_2=0 sel=1 out=0
# @time  770ns:in_1=1 in_2=1 sel=0 out=1
# @time  780ns:in_1=0 in_2=0 sel=1 out=0
# @time  800ns:in_1=0 in_2=0 sel=0 out=0
# @time  810ns:in_1=0 in_2=1 sel=0 out=1
# @time  820ns:in_1=0 in_2=0 sel=1 out=0
# @time  830ns:in_1=1 in_2=0 sel=1 out=1
# @time  840ns:in_1=1 in_2=1 sel=1 out=1
# @time  850ns:in_1=0 in_2=1 sel=1 out=0
# @time  860ns:in_1=1 in_2=0 sel=0 out=0
# @time  880ns:in_1=1 in_2=1 sel=0 out=1
# @time  890ns:in_1=0 in_2=1 sel=0 out=1
# @time  910ns:in_1=1 in_2=1 sel=0 out=1
# @time  920ns:in_1=1 in_2=0 sel=1 out=1
# @time  930ns:in_1=0 in_2=0 sel=1 out=0
# @time  940ns:in_1=0 in_2=0 sel=0 out=0
# @time  950ns:in_1=1 in_2=1 sel=1 out=1
# @time  960ns:in_1=1 in_2=1 sel=0 out=1
# @time  970ns:in_1=1 in_2=1 sel=1 out=1
# @time  980ns:in_1=0 in_2=0 sel=0 out=0
# Causality operation skipped due to absence of debug database file

分析结果可知仿真成功,结束。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值