一、创建工程
启动 Vivado 后,在左侧面板点击 Create Project(或打开已有工程)。

进入向导界面,输入工程名称并选择存放路径。本例以 D 触发器为例,后续步骤均围绕此展开。

点击 Next 选择项目类型,通常保持默认的 RTL Project 即可。随后会进入添加源文件环节,这里可以先跳过,稍后手动添加 .v 文件也是一样的操作。

最后一步是选择芯片型号。这一步很关键,必须根据你手头开发板的具体 FPGA 型号来选择,选错会导致后续管脚约束无法生效。确认无误后点击 Finish 完成工程创建。

二、创建源文件
工程建立完成后,进入主工作区。在左侧 Project Manager 面板中,右键点击 Add Sources,选择 Add or create design sources。

在弹出的对话框中选择 Verilog 语言,输入文件名(例如 dff.v)。

这里有一个小技巧:如果勾选 Define ports now,系统会自动生成端口定义的代码框架,比自己手写更快捷。默认端口类型为 wire,若需寄存器输出可手动指定为 reg(如 output reg q)。

文件创建成功后,会在左侧 Source 列表中看到它。

三、编写代码
我们以一个基础的 D 触发器为例。在编辑器中输入以下代码,注意语法细节和缩进。
`timescale 1ns / 1ps
module dff (
input wire clk,
input wire d,
output reg q,
output reg q_n
);
always @(posedge clk) begin
q <= d;
q_n <= !d;
end
endmodule
保存文件后,执行综合操作(Run Synthesis)。如果代码有语法错误,工具会提示报错信息。此时不要慌,查看下方的 Messages 窗口,重点关注 Error 级别的提示,修改后再次运行直到通过。

*注:综合时弹出的 CPU 线程数设置可根据电脑配置调整,配置越高可选线程越多,能加快处理速度。
四、仿真验证
代码逻辑正确与否,需要通过仿真来验证。参考'创建源文件'的步骤,这次选择 Add or create simulation sources。
新建一个 Testbench 文件(例如 dff_tb.v),内容如下:
`timescale 1ns / 1ps
module dff_tb();
reg clk_sim;
reg d_sim;
wire q_sim;
wire q_n_sim;
// 时钟信号:每 10ns 翻转一次,周期 20ns
always #10 clk_sim = ~clk_sim;
initial begin
clk_sim = 0;
d_sim = 0;
#20; // 延时 20ns
d_sim = 1;
#40; // 延时 40ns
d_sim = 0;
#100; // 延时 100ns 后停止
$stop;
end
// 实例化被测模块
dff dff_inst (
.clk(clk_sim),
.d(d_sim),
.q(q_sim),
.q_n(q_n_sim)
);
endmodule
保存后,同样需要运行综合(虽然主要是为了检查连接关系)。接着点击 Run Simulation 进入波形调试界面。
- 如果有多个 TB 文件,记得右键选中当前要仿真的那个,设为 Active。
- 仿真时间过长可能导致波形显示不全,可在 Tool Settings -> Simulation 中调整上限。

观察生成的波形图,每当 clk 上升沿到来时,q 端应跟随 d 端的值变化,且 q_n 为反相输出。这证明 D 触发器的逻辑实现无误。

五、配置管脚
仿真通过后,进行物理实现。点击 Run Implementation,等待流程跑完。成功后,之前禁用的仿真选项会解锁(一般用不到)。

实现完成后,点击 Open Implemented Design,然后在菜单栏选择 Window -> I/O Ports。
在这里分配引脚。将代码中的端口映射到开发板上的具体物理引脚,已分配的引脚在 Fixed 栏会自动打勾。I/O Standard 通常设置为 LVCMOS33(具体视板卡而定)。

按 Ctrl+S 保存,命名确认后 OK,系统会生成 XDC 约束文件。你可以在 Source 层级找到该文件的位置。

六、生成 Bitstream 文件并烧录
最后一步是将设计下载到硬件。
- 点击 Generate Bitstream 生成比特流文件。

- 点击 Open Hardware Manager,自动连接硬件。确保开发板已通电且 USB 线连接正常,否则无法识别设备。

- 连接成功后,右侧会显示芯片型号(应与工程创建时选择的一致)。右键点击芯片型号,选择 Program Device,然后点 Program 开始烧录。

至此,一个简单的 FPGA 开发流程就全部走通了。


