问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Verilog-2005标准篇:`timescale编译指令用法

创作时间:
作者:
@小白创作中心

Verilog-2005标准篇:`timescale编译指令用法

引用
CSDN
1.
https://m.blog.csdn.net/FPGA_LOVE/article/details/141403193

timescale**指令指定了其后面module模块的时间单位和时间精度。时间单位是时间值(如仿真时间和延迟值)的测量单位。 要在同一设计中使用不同时间单位的模块,可以使用以下时间刻度结构: -**timescale编译器指令用于指定设计中模块的时间计量单位和时间精度
-$printtimescale系统任务用于显示模块的时间单位和精度
-$time和**$realtime系统函数、$timeformat系统任务和 %t 格式规范,用于指定如何报告时间信息
timescale**编译器指令指定了时间和延迟值的测量单位,以及在读取另一条**timescale编译器指令之前,该指令后续所有模块中延迟的精确度。如果没有指定
timescale**编译器指令,或该指令已被**resetall指令重置,则时间单位和精度取决于仿真器。如果一个系统中某些模块指定了timescale**,而其他模块没有,这将是一个错误。 **timescale指令的语法如下表所示:
其中time_unit 参数指定时间和延迟的测量单位。time_precision 参数指定在仿真中使用延迟值之前的四舍五入方式。即使设计中其他地方的 time_precision 参数更小,所使用的值也会精确到此处指定的时间单位。设计中所有
timescale**编译器指令的最小 time_precision 参数决定仿真时间单位的精度。time_precision 参数的精度至少应与 time_unit 参数的精度相同,不能指定比 time_unit 更长的时间单位。这些参数中的整数指定了数值大小的数量级,有效整数为 1、10 和 100。字符串代表度量单位;有效字符串为 s、ms、us、ns、ps 和 fs。 下表列出了这些字符串指定的测量单位: ![](https://wy-static.wenxiaobai.com/chat-rag-image/10741108779217557507) 例如下面的示例展示了如何使用该指令: **timescale**1 ns / 1 ps
在这里,由于 time_unit 参数为 “1 ns”,因此指令后面模块中的所有时间值都是 1 ns 的倍数。由于 time_precision 参数为 “1 ps ”或纳秒的千分之一,因此延迟值被四舍五入为小数点后三位的实数,或精确到纳秒的千分之一。
请看下面的示例:
timescale**10 us / 100 ns 由于 time_unit 参数为 “10 us”,因此该指令后面的模块中的时间值都是 10 us 的倍数。 由于 time_precision 参数为 “100 ns”,即十分之一微秒,因此延迟被四舍五入到十分之一微秒以内。 下面的示例显示了模块中的**timescale指令:
编译器指令 `timescale 10 ns / 1 ns 指定模块测试的时间单位为 10 ns。因此,模块中的时间值都是 10 ns 的倍数,四舍五入到最接近的 1 ns;因此,参数 d 中存储的值按比例放大到 16 ns 的延迟。换句话说,在仿真时间 16 ns(1.6 × 10 ns)时,值 0 被分配给变量set,而在仿真时间 32 ns 时,值1被分配给变量set。无论采用何种时间尺度,参数 d 都会保留其值。
上述例子的仿真时间确定方法如下:
a) 根据时间精度,参数 d 的值从 1.55 四舍五入到 1.6。
b) 模块的时间单位为 10 ns,精度为 1 ns,因此参数 d 的延迟时间按比例从 1.6 调整为 16。
c)在仿真时间 16 ns时,值0被分配给变量set;在仿真时间 32 ns时,值1被分配给变量set。在赋值时,时间值不四舍五入。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号