学习笔记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芯片的型号

img

一般搜索出来,里面的芯片会有多个版本,一般-1是速度最慢的,-3是速度最快的,-2L是低压版本

6、next->finish

2、熟悉界面

出来的界面:

img

两个蓝色条条里面,首先是第一个蓝色条条里面

PROJECT MANAGER:工程管理器

设置:Settings

添加源文件:Add Sources

第一个选项:添加约束(不用管),第二个:添加设计源文件(一般都选这个),第三个:(添加仿真文件)

img

Next->Create File->命名File name ->ok -> finish->ok->Yes

img

创建设计文件成功

双击里面的Design Sources里面的文件

img

我是自己设置了vivado编写代码用vscode,主要可以使用copilot,可以省时省力而且还有高亮,当然,vivado自带编辑器(这一步可选)

把里面清空,我们自己从头写

实现一个二选一多路器:

img

!img

代码写完保存,回到vivado的PROJECT MANAGER模块里面,开始对代码进行分析和综合,选择SYNTHESIS里面的Run Synthesis(或者选Flow里面的Run Synthesis或者直接点击)

img

这里面的绿色的三角形,RUN,RUN里面选择Run Synthesis

img

这里面的Number of Jobs表示用几个核来处理,我电脑是16核,所以用八个,越多越好越快,然后勾选Don't show this dialog again

然后等待:img

右上角这个Running状态变成Complete

img

选择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文件->

img

同理:打开mux2_tb文件开始写代码,把里面本身产生的代码全删了,自己来写

结合这个图片来看下面代码

img

`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

img

运行之后点击这个波形的zoom Fit 就能看到上面波形了,但是一般只显示1000ns的仿真结果,如果想要仿真全部就得按RUN all,(快捷键F3)

img

仿真结束后退出仿真:

img

叉掉这个,那么这个仿真就结束了(不叉掉这个仿真,直接编写其他文件仿真会报错,因为被这个仿真占用了)

开始综合布线:IMPLEMENTATION->view reports->然后开始时序仿真->SIMULATION->run Simulation->run post-Implementation Timing Simulation

img

波形也出来了,然后接着run all一下

img

这张图里面,本来二选一多路器,只要sel变化out就变化,但是out延迟了大概10ns才发生变化

做完这一步然后开始板级调试->IMPLEMENTATION->Open Implemented Design

img

然后,在在上排的File右边的Layout->IO planning来分配IO

img

按一下Group by interface and bus->下面有四个端口->IO std一般要看你开发板的IO开发板标准(一般是选LVCMOS33)->Package Pin(分配管脚)(一般是你开发板上的拨码开关)(看用户手册)-> Control s保存->ok->一般工程File name 就和你设计文件名称一致

img

constrains里面有了个mux2.xdc文件

这一步做完后就可以去创建bitstream了。PROGRAM AND DEBUG->generate Bitstream(下载到FPGA芯片里面去的程序

img

点击求和符号->Runing synth_design等待->这一步完成了后连接开发板和电脑,并对开发板进行供电->PROGRAM AND DEBUG->Open Hardware Manager->auto connect

img

然后这一步如果都没问题->PROGRAM AND DEBUG->Program Device->Program然后就开始下载了

所有流程结束

posted @ 2023-10-24 16:31  lycheezhang  阅读(3232)  评论(0)    收藏  举报