学习笔记2023/10/24------vivado一个工程文件的创建到烧录到板子上去的完整流程
vivado开发流程
1、创建一个工程文件
1、打开vivado
2、Quick Start -> create Project->create a New Vivado Project->next
3、Project Name ->name和location自己设置->勾选Create projext subdirectory->next
4、没有源文件选RTL Project(自己写verilog代码),有源代码选Post-synthesis Project,一般选第一个就完事了(且这下面子选项两个都不勾选)
5、Add Sources->有文件可以选择"+",把有的文件加进来,没有文件就直接next->add Constraints ->next ->Default Part ->search里面选择你的FPGA芯片的型号
一般搜索出来,里面的芯片会有多个版本,一般-1是速度最慢的,-3是速度最快的,-2L是低压版本
6、next->finish
2、熟悉界面
出来的界面:
两个蓝色条条里面,首先是第一个蓝色条条里面
PROJECT MANAGER:工程管理器
设置:Settings
添加源文件:Add Sources
(第一个选项:添加约束(不用管),第二个:添加设计源文件(一般都选这个),第三个:(添加仿真文件)
Next->Create File->命名File name ->ok -> finish->ok->Yes
创建设计文件成功
双击里面的Design Sources里面的文件
我是自己设置了vivado编写代码用vscode,主要可以使用copilot,可以省时省力而且还有高亮,当然,vivado自带编辑器(这一步可选)
把里面清空,我们自己从头写
实现一个二选一多路器:
!
代码写完保存,回到vivado的PROJECT MANAGER模块里面,开始对代码进行分析和综合,选择SYNTHESIS里面的Run Synthesis(或者选Flow里面的Run Synthesis或者直接点击)
这里面的绿色的三角形,RUN,RUN里面选择Run Synthesis
这里面的Number of Jobs表示用几个核来处理,我电脑是16核,所以用八个,越多越好越快,然后勾选Don't show this dialog again
然后等待:
右上角这个Running状态变成Complete
选择View Reports来看看报告,一般没有报错就可以进行下一步操作
开始仿真,仿真需要添加一个仿真文件:
Add Sources -> Add or create simulation sources->next->create File->file name 改成你design文件名_tb(test bench)->ok->finish->OK->Yes
这样在Sources->Simulation Sources里面就有了mux2_tb文件->
同理:打开mux2_tb文件开始写代码,把里面本身产生的代码全删了,自己来写
结合这个图片来看下面代码
`timescale 1ns/1ns
//定义时间刻度, 第一个1ns是时间步进,第二个是精度
module mux2_tb();//测试文件不需要在这个括号里面写端口
/*
把模块放到工作台来测试:例化
*/
reg s_a, s_b, s_sel;//reg是寄存器,用来存储信号
wire s_out;//wire是导线,用来连接信号,输出直接连接到示波器里面
//mux2_0是例化名称
//例化就是把模块的端口与测试信号连接起来
mux2 mux2_0(
.a(s_a), //表示把a端口连接到s_a信号上
.b(s_b),
.sel(s_sel),
.out(s_out)
);
initial begin
s_a = 0; //这些就是信号的高电平,低电平啥的,输入到a端口进行测试
s_b = 0; //这些就是信号的高电平,低电平啥的,输入到b端口进行测试
s_sel = 0; //这些就是信号的高电平,低电平啥的,输入到sel端口进行测试
#200;// #表示延时200ns
s_a = 1;
s_b = 0;
s_sel = 0;
#200;// #表示延时200ns
s_a = 0;
s_b = 1;
s_sel = 0;
#200;// #表示延时200ns
s_a = 1;
s_b =1;
s_sel = 0;
#200;// #表示延时200ns
s_a =0 ;
s_b = 0;
s_sel = 1;
#200;// #表示延时200ns
s_a = 1;
s_b = 0;
s_sel = 1;
#200;// #表示延时200ns
s_a = 0;
s_b = 1;
s_sel = 1;
#200;// #表示延时200ns
s_a = 1;
s_b = 1;
s_sel = 1;
#200;// #表示延时200ns
$stop; //自动将你仿真停下来
end
endmodule
写完代码,然后进行仿真,即SIMULATION->RUN simulation->Run behavioral simulation
运行之后点击这个波形的zoom Fit 就能看到上面波形了,但是一般只显示1000ns的仿真结果,如果想要仿真全部就得按RUN all,(快捷键F3)
仿真结束后退出仿真:
叉掉这个,那么这个仿真就结束了(不叉掉这个仿真,直接编写其他文件仿真会报错,因为被这个仿真占用了)
开始综合布线:IMPLEMENTATION->view reports->然后开始时序仿真->SIMULATION->run Simulation->run post-Implementation Timing Simulation
波形也出来了,然后接着run all一下
这张图里面,本来二选一多路器,只要sel变化out就变化,但是out延迟了大概10ns才发生变化
做完这一步然后开始板级调试->IMPLEMENTATION->Open Implemented Design
然后,在在上排的File右边的Layout->IO planning来分配IO
按一下Group by interface and bus->下面有四个端口->IO std一般要看你开发板的IO开发板标准(一般是选LVCMOS33)->Package Pin(分配管脚)(一般是你开发板上的拨码开关)(看用户手册)-> Control s保存->ok->一般工程File name 就和你设计文件名称一致
constrains里面有了个mux2.xdc文件
这一步做完后就可以去创建bitstream了。PROGRAM AND DEBUG->generate Bitstream(下载到FPGA芯片里面去的程序
点击求和符号->Runing synth_design等待->这一步完成了后连接开发板和电脑,并对开发板进行供电->PROGRAM AND DEBUG->Open Hardware Manager->auto connect
然后这一步如果都没问题->PROGRAM AND DEBUG->Program Device->Program然后就开始下载了