一、总体流程
开发工具:
- Vivado2020
- Verilog
- ARTIX-7 FPGA AX7035
这是我做的完整流程,涉及到初级开发的功能;
- 新建工程:(RTL Project)芯片选型;
- 编写程序:源文件,仿真文件,约束文件;
- 时序仿真;
- 约束:IO配置;
- 综合;
- 实现生成二进制文件,下载验证。
这是网上找的的开发流程框图
二、具体流程
2.1 新建工程
现在进入了开发主界面,认识一下IDE的各部分
可以在右上角把自己拖拽好的布局保存下来。
2.2 编写程序
新建源文件:
然后有3个选择,分别对应约束文件,设计文件和仿真文件。此处先选择设计文件,也就是我们写的功能。
新建程序完成,开始写程序
这里忽视Verilog基础知识,可以先梳理整个流程。
然后反过来再看基础语法,推荐一个:传送门
代码:代码的意思先不说
module myLed(clk, rst_n, led);input clk;input rst_n;output led;reg [27:0] cnt; //定义一个计数器计时always @ (posedge clk or negedge rst_n)if(!rst_n)cnt<=0; //复位置0计数器else if(cnt<=27'd50000000) //需要经过50000000个周期才达到1scnt<=cnt+1'd1;elsecnt<=0;assign led=(cnt<=25000000) ? 1'b1:1'b0; //占空比50%
endmodule
这里有一个不好,和MATLAB2018一样,输入中文我的搜狗输入法会卡住,这就很烦人哦
2.3 时序仿真
新建仿真文件:
编写仿真文件:
`timescale 1ns / 1psmodule sim_myLed();reg clk; //输入时钟reg rst_n; //输入复位//reg [27:0] cnt1; //定义一个计数器计时, how to sew this?wire led;myLed later(.clk(clk),.rst_n(rst_n),//.cnt1(cnt),.led(led));initial beginrst_n = 1;clk=1; #100;$finish; //wait for user to click run button simulate, then start simendalways #100 clk = ~clk; // 125M ,as the simulation staeted, it works
endmodule
写完仿真文件后,在sim_myLed上右击,set as Top,然后进行仿真
这里需要说明一下,仿真起来要和编写的仿真文件是相关的。仿真文件的编写,下面分析一下。
reg clk; //输入时钟
reg rst_n; //输入复位
//reg [27:0] cnt1; //定义一个计数器计时, how to sew this?
wire led;
这三个是当前仿真文件下申明的变量,其中输入时reg,输出是wire。
myLed later(.clk(clk),.rst_n(rst_n),//.cnt1(cnt),.led(led));
这个叫做例化。可以理解为一个类的实例化。
其中,myLed是之前的设计文件,later是实例化的名字。
.clk(clk)就是参数,.clk()就是仿真文件里面的变量,括号里面就是myLed里面的。就相当于绑定在一起了。
(类比面向对象中类的实例化)
initial beginrst_n = 1;clk=1; #100;$finish; //wait for user to click run button simulate,then start simend
always #100 clk = ~clk; // 125M ,as the simulation staeted, it works
这里initial
下面这一段是启动仿真软件是执行的部分,也就是仿真的初始化,#100
就是延时100单位时间,$finish
就是等待用户进行下面的仿真。
always
就是从头到尾一直执行的部分,这里一是是100个单位时间进行一次翻转,也就是时钟信号了。
3.4 约束文件
新建约束文件就略过了。
这里需要知道自己的开发板对应的IO口。
我用的开发板是这个:传送门
先点击左侧Schematic
再双击电路图上面的IO Ports
最后再下面选择Package Pin(需要对照原理图的接线)
I/O std 先不要动,还没深入了解
好了之后可以看到约束文件:
觉得熟悉之后直接写约束文件会更高效。
2.5 综合
说一下我遇到的问题,可能大家也会遇到
好长时间综合没反应。
在工程综合的run的目录下运行系统cmd,看看能不能执行目录下面的这个bat文件。
试过论坛的好多方法都没有成功,千万别轻易相信换系统换软件版本的方法,成本太大。
我最后发现是电脑管家拦截了
但是也不绝对,问题现象一样但是原因未必。
2.6 生成二进制文件,下载验证
需要开发板打开电源,安装下载器驱动
实验效果是这样的:
Tip
学习笔记,有问题欢迎指教。