Verilog 仿真流程¶
- 首先明确,
Verilog
是硬件描述语言,描述的是数字电路信号的逻辑连接关系。 - 其次明确,
Verilog
只是描述电路,没有说具体的实现。实现电路时可以用基础门连接、可以用查找表等。 - 仿真是用软件模拟一些信号,测试所设计电路。综合就是把硬件描述语言,转换成实际的电路。
编写Verilog¶
以下面的反相器模块为例:
module Inverter(in, out);
input in;
output out;
assign out = ~in;
endmodule
在Vivado
中,该文件被称作design source
,后缀为.v
。
查看电路图¶
在Vivado
的RTL Analysis
中,点击Schematic
中可以看到该模块的一种电路实现:
可以看到这里就是用一个非门实现了实际的电路。
编写测试文件¶
Verilog
分为可综合的部分和不可综合的部分。我们在编写testbench(测试文件)
的时候会使用一些不可综合的语法。
`timescale 1ns / 1ps
`define PERIOD 10
module Inverter_TB();
reg clk;
wire out;
initial begin
forever
#(`PERIOD/2) clk = ~clk;
end
initial begin
clk = 1'b0;
end
Inverter myInverter(
.in(clk),
.out(out)
);
endmodule
测试文件在Vivado
中被称作simulation source
。
仿真¶
在Vivado
中展开Simulation
菜单,点击Run Simulation
,可以得到模块的输入输出随时钟信号的变化。
可以看到反相器的功能验证正确。