一、创建工程
-
左边创建(或打开)工程,右侧可以快速打开最近打开过的工程。
-
来到这一步,命名工程并设置工程的存放路径(这里以 D 触发器为例)
-
选择 RTL点击 next。会来到添加文件环节(可以在这里添加.v 等文件,不过后面再添加是一样的)直接点击next。
-
选择芯片型号(根据开发板选,这里随便选的)**,**完成后点 next 会弹出信息概要,finish 完成。
二、创建文件
完成上述步骤会进入当前界面:
-
工程管理器**add sourse 添加(创建)设计文件,**创建文件后选择 Verilog 语言并命名。
-
定义端口(可选),若在这定义后,文件会自动生成端口定义的代码,比自己敲省时间更方便。
(端口没有说明类型即默认 wire 类型,可根据情况定义 reg 类型:"output reg q")
- 设计文件创建完成
三、编写代码
- 代码以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。
Number of Jobs 即 CPU 工作线程数,这个与电脑配置有关,配置越高可选数量越多。
四、仿真验证
- 编译成功后**创建仿真文件并完成代码编写,**参考'步骤二'中设计文件的创建:
(需选择 'add or create simulate sourse' )
test bench代码如下:
`timescale 1ns / 1ps
module dff_tb();
reg clk_sim;
reg d_sim;
wire q_sim;
wire q_n_sim;
always #10 clk_sim = ~clk_sim;
initial begin
clk_sim = 0;
d_sim = 0;
#20;
d_sim = 1;
#40;
d_sim = 0;
#100;
$stop;
end
dff dff(
.clk (clk_sim),
.d (d_sim),
.q (q_sim),
.q_n (q_n_sim)
);
endmodule
-
**保存后编译(Run Synthesis),**再修改报错直到通过。
-
波形仿真点击 Run Simulation。
(注意 1:当有多个 tb 文件时,选中要仿真的 tb 文件 右键设为"active")
(注意 2:vivado 仿真上限时间在 Tool Settings > Simulation 中设置,仿真波形不全看看是否不够)
波形显示,每当 clk 上升沿到来时 q 输出 d 的值,说明代码实现 D 触发器的功能无误。


