FPGA快速入门(1) 开发环境 vivado使用

  1. 1. 前提
  2. 2. 0. 安装
  3. 3. 1. 创建工程
  4. 4. 2.添加verilog设计文件
  5. 5. 3. 添加verilog仿真文件
  6. 6. 4. 编写代码
    1. 6.1. 4.1 调节字体大小
    2. 6.2. 4.2 写个简单的代码
  7. 7. 5. 仿真
    1. 7.1. 5.1 编写仿真代码
    2. 7.2. 5.2 行为仿真

前提

版本:2017.4
适合有编程基础的,我也是边学边记录
参考文章:https://www.paincker.com/vivado-basic-usage-1
该文章中省略了几处细节,我在按该文章操作时踩到了坑,所以我打算在这个文章的基础上进行改造
不过严格来说,这应该算一篇转载博客,感谢大佬的文章让我快速入门了FPGA

0. 安装

略(
网上好多博客都有写怎么安装,这里就不写了(

1. 创建工程

  • 点击 file--new project
  • 输入工程名称,选择工程路径
  • 确保选中“Create Project Subdirectory”框,点击next
  • 选择RTL Project
  • 勾选Do not specify sources at this time,这样可以暂时不用选择源文件
  • 可以随便选一个,后面有需要的时候再改
  • 点击finish创建工程

2.添加verilog设计文件

  • sources窗口右键,点击Add Sources
  • 点击Add or create design sources
  • 点击create file,输入文件名
  • 可以一次性创建多个文件,点finish结束,会弹出module窗口,先点击ok,一会再编写
    如果有弹窗,点击yes即可
  • 创建完成

3. 添加verilog仿真文件

  • sources窗口右键,点击Add Sources
    点击Add or create simulation sources
  • 创建文件,注意不要与前面设计文件的名字一样

4. 编写代码

4.1 调节字体大小

现在这个字体是不是太小了呢?
让我们来调节一下吧!

  • 点击顶部Tools - Settings
  • 然后点击图片中红框位置,可以在右侧看到字体类型和字体大小
  • 选择一个你喜欢的字体类型和字体大小吧!
    我选择的是我以前弄得,把中文微软雅黑和英文Jet Brains Mono混合在一起的字体
    字体推荐选择consolas
    下方的框可以预览设置后的字体

4.2 写个简单的代码

打开test,写个简单的非门

1
2
3
4
5
6
7
8
module test(
input in,
output out
);

assign out = ~in;

endmodule

5. 仿真

想要知道代码是否写的有问题,就需要进行仿真

原文中提到

行为仿真时,输入信号可以使用Testbench编写。

如果直接修改test模块,在其中添加Testbench代码,再进行仿真,是一种不太正确的做法。因为test模块是设计文件,后面可能会直接烧写进板子。进行仿真时添加了Testbench代码,之后再烧写进板子又得删掉Testbench代码,这样容易出现错误,而且操作起来也比较麻烦。尤其是接口数量多,内部比较复杂的模块。

所以我们将Testbench代码全部写到仿真文件simu中,并在simu文件中调用test模块,从而进行仿真。

5.1 编写仿真代码

在simu模块中写入以下代码

1
2
3
4
5
6
7
8
9
10
module simu(
);
// testbench 时钟信号
reg clk = 0;
always #10 clk <= ~clk;
// 输出信号
wire out;
// 调用test模块
test mytest(clk, out);
endmodule

代码说明:

  • reg clk = 0声明了一个reg信号,并赋初值为0。
  • always #10 clk <= ~clk为testbench代码,让clk每隔10ns翻转一次,产生周期为20ns的时钟信号。
  • wire out声明了一个wire信号,用于连接到test模块的输出。
  • test mytest(clk, out)调用了前面写好的test模块,其中mytest是模块名称
    • 这里的clk和out分别连接了mytest模块内部的in和out信号。
    • 这种写法类似于面向对象的编程语言中,对象的实例化,test为类名,而mytest为对象名称。
    • 同样,Verilog中调用模块时,可以实例化多个test对象。

5.2 行为仿真

  • 右键simu,点击set as top,将其作为仿真的入口。类似main函数

  • 按图中红框点击

  • 点击运行按钮,等一段时间后,可以在右侧看到波形(不点击也可以,仿真时间较短,波形较短,根据需求来),按住ctrl,滚轮向下,可以横向缩放波形

  • 右击信号,可以将其添加进右侧波形窗口内