第一步:创建工程
启动 Vivado 后,主界面左侧是项目导航区。点击 Create Project(或打开已有工程),右侧会显示最近访问的项目列表。
![截图:Vivado 欢迎界面]
进入向导后,为工程命名并指定存放路径。这里以 D 触发器为例进行演示。
![截图:工程命名与路径设置]
选择 RTL Project 类型,点击 Next。系统会询问是否添加源文件,此时可以先跳过,后续在工程中统一添加即可,直接点击 Next。
![截图:添加源文件选项]
接下来选择目标芯片型号。这一步很关键,必须根据实际开发板上的 FPGA 型号来选择,否则后续约束文件无法匹配。确认信息无误后,点击 Finish 完成创建。
![截图:芯片型号选择]
第二步:创建设计文件
工程建立完成后,进入主工作区。在左侧 Project Manager 面板中,右键点击 Sources,选择 Add Sources。
![截图:添加源文件入口]
选择 Add or create design sources,语言选 Verilog,输入文件名后完成创建。
![截图:新建 Verilog 文件]
创建时可以选择定义端口,这会自动生成部分代码框架,比手动敲更快捷。若未在此定义,默认端口类型为 wire,如需寄存器输出可手动声明 output reg q。
![截图:端口定义界面]
文件创建成功后,会在 Sources 窗口中看到对应的模块结构。
![截图:设计文件创建完成]
第三步:编写代码
我们以 D 触发器为例编写逻辑。将以下代码复制到新建的 .v 文件中:
`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 线程数(Number of Jobs),配置较高的电脑可选更多线程以加速计算。遇到错误时,根据提示信息修改代码直到通过为止。
![截图:综合日志与线程设置]
第四步:仿真验证
综合通过后,需要创建 Testbench 进行功能验证。参考上一步的操作,选择 Add or create simulate sources。
Testbench 代码如下:
`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 u_dff (
.clk (clk_sim),
.d (d_sim),
.q (q_sim),
.q_n (q_n_sim)
);
endmodule
保存后再次运行 Run Simulation。如果有多个 TB 文件,记得右键选中当前要运行的那个,设为 Active。
注意:仿真时长可在 Tool Settings -> Simulation 中调整。如果波形显示不全,检查时间设置是否足够。


