本文主要是介绍你的第一个基于Vivado的FPGA开发流程实践——二选一多路器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
你的第一个基于Vivado的FPGA开发流程实践——二选一多路器
1 原理图
2 开发流程
- 首先我们先打开安装好的Vivado软件
- 创建一个文件
- 选择你的开发板
- 创建一个源文件
现在我们就可以根据原理使用Verilog代码实验这个功能了
module mux2( //端口列表a,b,sel,out);//交代端口类型input a;input b;input sel;output out;//赋值assign out = (sel==1)?a:b;endmodule
- 运行综合(Run Synthesis)
- 然后我们可以观察一下综合运行完生成的report
这里可以看出没什么问题,没有报错
- 仿真的意义
首先我们需要用一张图说明仿真测试的原理/意义
现在开始编写仿真代码,我们首先要知道的是
a、b、sel 共有8组取值,分别是
a | b | sel |
---|---|---|
0 | 0 | 0 |
0 | 0 | 1 |
0 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
1 | 1 | 1 |
- 创建仿真文件
- 仿真代码
`timescale 1ns / 1psmodule mux2_tb(//仿真中括号里不用写端口); //定义仿真文件中的变量//输入reg a;reg b;reg sel;//输出wire out;mux2 UUT( //相当于把源文件的变量映射(例化)到仿真文件,mux2是源文件的名字,必须一致.a(a), //源文件的a 对应到 仿真文件 是 a.b(b),.sel(sel),.out(out));initial begin a=0;b=0;sel=0;#200; //延迟200nsa=0;b=0;sel=1;#200; //延迟200nsa=0;b=1;sel=0;#200; //延迟200nsa=0;b=1;sel=1;#200; //延迟200nsa=1;b=0;sel=0;#200; //延迟200nsa=1;b=0;sel=1;#200; //延迟200nsa=1;b=1;sel=0;#200; //延迟200ns a=1;b=1;sel=1;#200; //延迟200nsend
endmodule
- 功能仿真
我们可以根据左边的这些值 判断功能是否能达成
- 布局布线/运行实现(Run Implementation)
- 时序仿真——要在布局布线之后
通过时序仿真我们可以看到 out的变化滞后于信号的变化,这说明out的变化是有一定延迟的,这是合理的
我们还能看到毛刺,原理是(a、b、sel都在变,只要某一次变化中,其中一个的变化优先于另外两个,就会有毛刺)
- 分配管脚
首先open设计
然后分配
选择合适的管脚(要看板子)
然后ctrl+s 保存管脚约束文件
就生成了这样的约束文件
- 创建bit流文件
- 下载文件到板子
首先连接板子到电脑
然后refresh device 再 program device
- 检验
图中展示的为 sel = 1 ,a = 1的情况 (out = a = 1 灯亮)
这篇关于你的第一个基于Vivado的FPGA开发流程实践——二选一多路器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!