文章目录
- 前言
- 一、多路选择器
- 二、绘制模块框图及波形图
- 三、Verilog HDL代码及测试代码
- 四、创建工程
- 五、仿真
- 六、上板验证
- 1、分配引脚
- 2、烧录
- 七、效果演示
- 八、总结
前言
- 软件:Quartus Prime Standard 18.0
- 仿真软件:modelsim 10.5
- 代码编写软件:VSCode
- 波形绘制工具:Visio 2013
- 硬件:小脚丫 Altera MAX10
期望效果:
我们希望通过一个按键对输入LED的信号进行选择,在当我们摁下key3时,即当key3为低信号时,LED选择Key2为LED的信号,反之则取key1的信号进行参考。
一、多路选择器
多路选择器是数据选择器的别称,在多路数据传输中,能够根据需要将其中任一路选择出来的电路,叫做数据选择器,也称多路选择器或多路开关。是一种简单的组合逻辑电路。
- 组合逻辑:
组合逻辑实际是VerilogHDL设计中的一个重要组成部分。从电路本质上讲,组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数,与其他时刻的输入状态无关,无存储电路,也没有反馈电路。
二、绘制模块框图及波形图
在工程开始时,新建一个项目文件,里面新建四个文件夹,分别为:
prj(工程文件)、rtl(.v文件)、sim(仿真测试文件)、doc(波形绘制文件)
-
添加形状
-
模块框图
-
波形图
在sel为0时,Out输出信号是in_2波形、反之为in_1波形。
三、Verilog HDL代码及测试代码
在rtl文件夹里创建一个mus2_1.v的文件,定义的模块名需要与文件名一致。此时双击打开VSCode进行代码编写。
module mus2_1(
input wire in_1,
input wire in_2,
input wire sel,//选通信号
output reg out
);
always @(*)//组合逻辑进行阻塞赋值
if(sel == 1'b1)
out=in_1;
else
out =in_2;
endmodule
在sim文件夹里新建测试文件tb_mus2_1.v
`timescale 1ns/1ns //时间尺度
module tb_mus2_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;
mus2_1 mus2_1_inst ( //实例化模块
.in_1(in_1),
.in_2(in_2),
.sel(sel),//选通信号
.out(out)
);
endmodule
四、创建工程
- 打开quartus,new一个工程
-
点击next
-
选择工程路径,选择到前面我们创建的prj文件夹下。填写工程名,这里尽量选择与我们的.v文件一致的名字—mus2_1。
-
这里我们不选择模板,直接next。
-
文件我们后面再添加,先next。
- 对板子进行选型,这里我使用的是Altera max10,如果你用的是别的板子需要到英特尔的官网下载对应quartus版本的器件库,即使同样是max 10,如果quartus的版本不一样,器件库也不一样。需要注意。
- 选择仿真软件及语言
- 检查配置是否正确,然后点击finish完成工程创建。
- 添加源文件和测试文件
-
双击
-
选择文件进行添加
-
将测试文件添加到仿真中
在上图的1下,选择测试文件,在2处填写测试文件名。
五、仿真
点击下方自动打开仿真软件
- 仿真波形图
解释:在标线所处位置sel为1时,输出电平应为in_1的信号为0,此时out也为0。仿真成功!如何进行仿真的具体步骤这里不进行介绍。
六、上板验证
1、分配引脚
根据厂商提供的引脚分配图进行分配
-
设置引脚
-
依次填写对应的引脚
这里key1控制in_1信号,key2控制in_2信号,key3作为选通信号。初始时,三个按键均未摁下,key3为高电平,输出信号为key1,此时摁下key1时,key1处低电平灯亮。反之,摁下key3,选通信号选择的是key2信号,此时摁下key2,灯亮。总结,就是摁下key1灯亮,或者摁下key2+key3灯亮。
2、烧录
- 选择USB
这里如果没有检测到USB-Blaster,有两种情况一是你的数据线不支持数据的传输、二是你驱动没有更新,搜一下进行更新即可识别。
- 点击添加文件,在prj文件夹下寻找outputfiles文件夹下的sof文件
- 点击start开始烧录在,右边是进度条
七、效果演示
keyofLED
八、总结
这是第一次实物操作fpga板子,感觉很棒,总体来说这次的操作还是比较简单,但是通过自己画模块框图及波形图,对后面的仿真及代码的理解具有很强的理解性上的帮助!通过这次实验,应该算是入坑了吧,哈哈!