一、简单组合逻辑——多路选择器

1、创建工程文件夹

在项目文件夹创建改工程的文件夹,为该文件夹取名为mux2_1,再该文件夹内创建四个文件夹,如图:

2、绘制模块图和波形图

在‘doc’文件夹内创建visio文件,画出多路选择器的模块图和波形图,如图:(假设高电平时输出in_1,低电平时输出in_2,在上升沿和下降沿绘制虚线为了方便波形的绘制)

3、代码编写

找到文件存放位置,找到'rtl'文件夹,新建一个.v文件(先创建一个文本文档,修改后缀名为.v即可),双击将会用notepad++打开:

module mux2_1(
input wire in_1,//输入信号1
input wire in_2,//输入信号2
input wire sel,//选通信号
output reg out//输出信号
);//有三个输入信号和一个输出信号,always赋值的变量应为reg型
//方法一,采用always组合逻辑
always @(*) begin
    if(sel==1'b1)  out=in_1;
    else out=in_2;
end
endmodule

4、在工程中添加.v文件

在quartus中创建好工程之后,将我们上一步所创建的.v文件添加到工程当中,然后进行编译,检查代码是否有错误,编译成功则该步骤完成

5、仿真

编写仿真文件:

`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

在工程当中添加仿真文件进行仿真,仿真结果如图:

数据打印窗口:

6、管脚绑定

打开工程文件,绑定好之后进行一次全编译

7、上板验证

下载好sof文件之后点击开始运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值