3、创建第一个Vivado工程:新建工程向导、选择器件、添加源文件、综合与实现

好,咱们正式开始动手了。

前面聊了那么多理论,现在终于到了「真刀真枪」干活的环节。创建第一个Vivado工程,其实没那么玄乎。说白了,就是告诉工具:你要用什么芯片、代码放哪儿、然后让它帮你跑一遍流程。

我个人习惯,每次新项目都会先建一个干净的工程目录。别小看这一步,我在项目中见过太多人把工程文件乱放,最后找东西找到崩溃。

3.1 新建工程向导

打开Vivado,你会看到欢迎界面。点击 Create New Project,向导就启动了。

嗯,这里要注意几个关键步骤:

  1. Project name:命名要有意义。别用「test1」「project_final」这种。我建议用「项目名_版本号」,比如 uart_controller_v1。
  2. Project location:路径不要有中文,不要有空格。这是血的教训。我曾经有个同事,路径里带了个空格,综合报错查了两天。
  3. Create project subdirectory:勾上。Vivado会自动帮你建好文件夹结构,省心。
小技巧:我习惯在工程目录下手动建一个 src 文件夹放源码,constrs 放约束文件,ip 放IP核。这样即使Vivado项目文件坏了,源码还在。

3.2 选择器件

这一步很多人随便选,觉得「反正后面能改」。其实不然。

器件选错了,引脚约束、资源评估全都会乱套。我遇到过有人用Artix-7的工程,结果板子上是Kintex-7,综合出来一堆时序违例。

选择器件时,重点关注这几个参数:

参数 说明 我的建议
Family 芯片系列(如Artix-7、Kintex-7) 根据板子型号选,别猜
Package 封装类型(如FBG484) 看板子上的丝印,或者查原理图
Speed Grade 速度等级(如-1、-2、-3) 数字越大越快,但功耗也高

如果你用的是开发板,Vivado里有个 Boards 选项卡,可以直接选板卡型号。比如Nexys A7、ZedBoard这些,选完器件自动配好。省事。

注意:选完器件后,Vivado会显示该器件的资源概览。看一眼LUT、FF、BRAM的数量,心里有个底。别等到布局布线了才发现资源不够。

3.3 添加源文件

源文件分三种:设计文件(.v/.vhd)、约束文件(.xdc)、IP核文件(.xci)。

添加方式有两种:

  • Add Files:直接选择已有的文件
  • Create File:新建一个空白文件

我个人习惯先建好文件再添加。比如先写一个 top.v,里面放个简单的LED闪烁代码:

module top (
    input  clk,
    input  rst_n,
    output reg led
);

reg [23:0] cnt;

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        cnt <= 24'd0;
    else
        cnt <= cnt + 1'b1;
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        led <= 1'b0;
    else if (cnt == 24'd5000000)
        led <= ~led;
end

endmodule

这段代码很简单,就是让LED以大约0.5秒的频率闪烁。你想想看,如果连这个都跑不通,那后面复杂的逻辑就更别说了。

核心要点:源文件添加后,Vivado会自动分析文件间的依赖关系。如果报错说找不到模块,八成是文件没加全,或者模块名拼错了。

3.4 综合与实现

文件加完了,接下来就是跑流程。Vivado的流程分三步:

  1. Synthesis(综合):把RTL代码转成网表
  2. Implementation(实现):把网表映射到具体器件上
  3. Bitstream Generation(生成比特流):生成下载文件

在Flow Navigator面板里,依次点击:

  • Run Synthesis — 等几分钟
  • Run Implementation — 再等几分钟
  • Generate Bitstream — 最后一步

嗯,这里要提醒你:第一次跑综合,大概率会报一些warning。别慌。看看是不是有未连接的引脚、或者时钟没约束。我刚开始学的时候,看到红色就紧张,后来发现很多warning其实不影响功能。

但有一个warning你必须重视:Timing constraints not defined。这说明你没加时序约束。虽然综合能过,但上板后可能跑不稳。

避坑指南:我曾经有一次综合通过、实现也通过,但下载到板子上LED就是不闪。查了半天,发现是复位信号没接对。所以,跑完流程后,一定要看 Messages 窗口,别只看进度条变绿就以为万事大吉。

下面这张图,是我总结的Vivado工程搭建核心流程,你可以对照着看:

Vivado工程搭建核心流程 1. 新建工程 命名、选路径、设目录 2. 选择器件 系列、封装、速度等级 3. 添加源文件 RTL代码、约束、IP 4. 综合 RTL → 网表 5. 实现 布局布线、映射 6. 生成比特流 ⚠ 常见问题 • 路径不能有中文 • 器件型号要核对 • 时序约束不能省

跑完这三步,如果没报错,恭喜你,第一个Vivado工程就建好了。你可以把生成的 .bit 文件下载到板子上,看看LED是不是在闪。

如果没闪,别急。检查一下:时钟引脚对不对?复位电平对不对?LED引脚约束有没有写?这些都是新手最容易踩的坑。

总结一句话:建工程不难,难的是每一步都做对。多跑几次,自然就熟了。

可可精品资料库