FPGA仿真时间相关内容(vivado)

  • 首先要明确时间单位为s、ms、us、ns、ps、fs,之间转换都是10^3,1ns=1000ps
    FPGA仿真时间标度如下
`timescale 时间单位A/时间精度B
时间单位用来定义模块中仿真时间和延迟时间的基准单位;时间精度用来声明该模块的仿真时间的精确程度,前者大于或者等于后者(A>=B)

例子1-理解时间单位A

如果我们定义时间标度是`timescale 100ps/1ps,如果我们想产生一个周期为200MHZ,占空比50%的脉冲信号的话,可以使用一下语句

`timescale 100ps/1ps
clk=0;
always #25 clk=~clk;

初始的clk是0,我们每25个时间单位进行一次clk的反转(25*100ps=2500ps,即周期200MHZ)

例子2-理解时间精度B

更改一下时间标度为’timescale 100ns/10ns

`timescale 100ns/10ns
#2.54 //延迟250ns
#2.56 //延迟260ns

对于第一个2.54个延迟单位,暂时不看精度的化是2.54*100ns=254ns,但是这里精度是10ns,所以这里的实际延迟应该是250ns;相应的,对于第二个延迟则是260ns

vivado仿真中的时间

打开vivado > simulation右键> simulation settings > simulation中,可以对仿真的总时间进行设置
FPGA仿真时间相关内容(vivado)_第1张图片
这里我们设置运行时间为50ms
仿真程序中我们时间标度设置是

`timescale 100ps/1ps

然后我们要产生一个方波信号,周期是200MHZ,那么我们可以写如下的程序

sys_clk_p=0;
#25 sys_clk_p=~sys_clk_p;

在这里插入图片描述
可以看到sys_clk_p的周期为200MHZ,仿真时间我们设置的是50ms=50_000_000ns,更改一下单位显示看的更加清楚点
FPGA仿真时间相关内容(vivado)_第2张图片

你可能感兴趣的:(FPGA)