网站开发公司人员配置,成都建设银行官方网站,如何自己建营销网站,做网站通栏模糊相关阅读
Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 timescale编译指令用于指定指令后模块的时间单位和时间精度。时间单位是时间值的度量单位#xff0c;例如延迟值和仿真时间#xff1b;而仿真精度决定了最小可分…相关阅读
Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 timescale编译指令用于指定指令后模块的时间单位和时间精度。时间单位是时间值的度量单位例如延迟值和仿真时间而仿真精度决定了最小可分辨延迟时间值。 为了在一个或多个文件中使用不同的时间单位下面一些有关时间的结构很有用
1、timescale编译指令用于指定其后模块的时间单位和时间精度。
2、$printtimescale系统任务用于显示一个模块的时间单位和时间精度。
3、$time和$realtime系统函数用于以当前模块的时间单位和时间精度显示仿真时间。
4、$timeformat系统任务用于指定格式字符串中转换说明%t的格式。 timescale编译指令指定了其后模块的时间和延迟值的度量单位和精度直到遇到了另一个 timescale编译指令。如果没有使用timescale编译指令或者使用了resetall编译指令复位则时间单位和时间精度默认是由仿真器决定的。如果一些模块有timescale编译指令而一些没有则会报错简单来说就是要么所有都用默认值否则所有模块都需要使用timescale编译指令如下两种情况所示。
//错误因为bbb模块使用默认值而aaa模块指定了timescale
timescale 1ns/1ns
module aaa();bbb bbb_inst(a);
endmoduleresetall
module bbb(input a);initial #5 $display(bbb);
endmodule//错误因为bbb模块使用默认值而aaa模块指定了timescale编译指令值影响本文件中定义的模块
//文件1
timescale 1ns/1ns
module aaa();bbb bbb_inst(a);
endmodule//文件2
module bbb(input a);initial #5 $display(bbb);
endmodule timescale编译指令的语法如下所示。 time_unit参数指定了时间单位。而time_precision参数指定了时间精度一个层次化设计的所有模块中最小的时间精度决定了仿真的时间精度需要注意的是仿真的时间精度并不一定和各模块的时间精度相同这也就是说一个模块可能显示出比自己仿真精度还小的时间值。同时时间精度还决定了一个延迟值在被使用前会被四舍五入的位数。上面两点在之后都会举例说明。 时间精度不能比时间单位还大也就是说精度最大与时间单位相同这很好理解如果一个时间精度都大于时间单位了那它将成为实际意义上的时间单位。 time_unit参数和time_precision参数由两部分组成一个整数值和一个时间字符串其中整数值可以是110100而字符串可以是smsusns ps和fs。时间字符串和时间单位的对应关系如下表所示。
时间字符串时间单位s秒ms毫秒us微秒ns纳秒ps皮秒fs飞秒 我们首先说明一个延迟值在被使用前会因为时间精度而四舍五入下面给出了一个例子。
timescale 10ns/1ns
module aaa();initial #1.55 a1;
endmodule 由于时间单位是10ns所以1.55代表了15.5ns而时间精度是1ns代表需要四舍五入至最低位是1ns即四舍五入至16ns因此真正的延迟时间值为16ns。 一个模块的时间精度并不一定代表模块可辨别的最小时间值而只是代表该模块可辨别的最小延迟时间值真正决定一个模块可辨别的最小时间值的是仿真的时间精度下面给出了一个例子。
timescale 1ps/1ps
module aaa();reg a;bbb bbb_inst(a);initial #5 a1;
endmoduletimescale 1ns/1ns
module bbb(input a);initial (a) $display($realtime);
endmodule输出
0.005 仿真的时间精度为所有模块中最小的时间精度因此是1ps在5ps时a赋值为1因此触发了bbb模块中的$display($realtime);语句$realtime系统函数的作用是以当前模块的时间单位为单位返回当前仿真时间的实数值即以1ns为单位返回5ps仿真时间所以结果为0.005这小于bbb模块仿真精度1ns。 最后顺带一提仿真时间精度也是仿真能推进的时间精度在上例中无法以500fs为步长推进仿真时间无论你推进了多少次。