Verilog0.2:跑通第一个Vivado工程
作者:互联网
Verilog0.2:跑通第一个Vivado工程
在本文中,你将能学会:
- 学会基本使用Vivado
- 学会一些FPGA开发中的基本概念
- 用VScode代替Vivado写代码
- 接触到管脚约束及其细节
文章目录
基本概念
这里会以验证环境为由,顺便讲讲在FPGA开发中的几个基本概念:
这里以PCB生产中的一些概念来做类比:
-
综合
可以类比为硬件设计中的原理图设计,也就是将用HDL搞出来的设计转换为纯粹的数字逻辑,如数字们,触发器,乘法器等。完成后便会生成网表(netlist),那大家就可以理解成原理图吧,比较特殊的是综合器会帮忙优化硬件逻辑,这个比较重要。
-
实现
可以类比为硬件设计中的PCB设计,因为我们可以知道,同一样的原理图,它可以设计出不同的PCB样子,比如插在面包板上,或者是自己画一块板子。在实现中,有三个小步骤:翻译(translate),映射(Map)以及布局和布线(Place&Route)。他大概的流程是这样的:
-
加入一些特定的功能块(比如chipscope,类比于板载示波器)
-
汇总所有的约束(比如PCB设计中的一些设计原则)
-
根据具体的型号所具有的硬件资源,去进行布线,连接信号(具体布线)
-
-
生成比特流
可以类比为,根据你的PCB去打板,但是这个比喻是不对的,因为FPGA就像是硬件设计中的面包板,大多数的信号都可以任意映射到大多数物理端口上(特殊情况后面再讲),所以这里需要指定好映射关系才能生成比特流。当然了,如果设计中含有高速接口的话,早在实现中就需要将管脚约束导入了。
-
仿真
仿真在就是大家都能理解的仿真,但是在FPGA中有三种仿真:
- 功能仿真(也称前仿):主要验证语法错误,逻辑功能
- 综合后门级功能仿真(也称后仿):综合后用网表去验证功能,主要看综合器有没有抽风
- 时序仿真:在实现(完成布局布线)后,根据结合了器件信息的时序仿真模型进行仿真
下面主要讲一个一位全加器的实现
新建工程
-
打开vivado,点击创建工程
-
输入项目名和项目路径
-
选择项目类型为RTL Project:
-
添加源文件或者新建文件,这里可以直接下一步,后面再加:
-
选择器件,这里型号可以回看第一篇推文:
Vivado开始开发
-
点击增加源(Add Source),建议记住快捷键。可能会和微信截图冲突:
-
增加设计源:
-
新建一个Verilog文件:
-
指定模块名(注意规范):
-
这样就可以在Vivado内看到新建的文件了:
使用Vscode作为Vivado文本编辑器
这里由于Vivado中原生的编辑器难用,而且vivado中有很多需要我们看的信息,或者快速点功能,所以建议使用第三方编辑器代替写代码的流程:
-
点Tool->Settings
-
跟着下面截图来选择:
-
客制化打开命令:
-
此时再双击那文件,这就能用啦!
Vivado使用流程
-
点开刚刚的文件,施展一点魔法:
这里就不放代码了,建议手抄。
综合&实现
- 点击综合,直接起飞,概念见文首。
- 直接开启综合多线程
- 然后他就会默默地跑完了,
这里我们直接点OK进行实现,先完成所有(一般大一点的工程的话,会直接点Cancel进行仿真)
- 实现完成,顺便先试着生成Generate Bitestream:
引入管脚约束,看RTL图和生成Bitstream
- 然后这里我们就会遇到我们的第一个error了:
显然,这里就是在指明,我们没有分配管脚,这也是fpga和普通mcu间最大的不同:fpga中的绝大多数信号脚都可以绑定到绝大多数的物理端口中。
- 还是点击Add Source,不过这次加的是约束文件:
- 新建.xdc约束文件,但是我写到这里的时候忘记了还没给大家介绍约束怎么写,就先新建着:
- 先看看怎么看写出来的电路时怎样的,点击左侧RTL ANALYSIS:
- 就可以完美对应到数电书上面写的,一位全加器对应这两个一位半加器:
- 接下来我们用图形界面来引入管脚约束:点击window->I/O Ports
- 根据板子的原理图,规划管脚!可以看到他有以下的参数可以调:
- Direction:输入IN,输出OUT,和双向INOUT,这个是综合完之后有的
- Package Pin:所需要对应的FPGA物理端口
- I/O Std:IO电平标准,常见的有好几种,这里就不一一介绍了,所需再出文章介绍,这里只要记住1.8,2.5和3.3,按别人的约束来看看就行
- Slew Type:指上升下降沿的快慢,快的化功耗会高一点点
- Pull Type:指默认上升下降沿啥的,这个就不介绍,看大家电路基础了
- 填好之后大概长这样,这里物理端口是乱填的,!!!具体请自行看板子原理图!!!
-
此时重新生成bitstream,同时我们打开刚刚所新建的m_addr.xdc:
可以看到,其实他差不多就是我们所设置的那些东西,但是后面建议用代码方式写,具体原因大家可以试一下混合图形界面和代码两种方式,看看会发生什么问题:
- 这样下来,我们就能看到Bitstream生成成功,可以下板子啦!
-
到这里就大概结束了,如果你想下到板子去的话,还是参考你的板卡教程吧。
因为涉及到硬件板子,这里先不进行介绍了,待后续讲到chipscope的时候再说吧。
结语
如果你已经走到这里了,那恭喜你把开发中最简单,也是最难的一步走完了,下面就让我们一起来学习Verilog吧!
最后,欢迎大家关注我的个人公众号:小何的芯像石头:
在微信中,除了这些教程之外,还会更一些更有科技向的文章,欢迎关注喔.
标签:仿真,这里,原理图,跑通,Verilog0.2,约束,Vivado,管脚 来源: https://blog.csdn.net/weixin_38071135/article/details/114806659