Verilog中的timescale
2016-04-20 12:37
197 查看
在Verilog HDL 模型中,所有时延都用单位时间表述。使用`timescale
编译器指令将时间单位与实际时间相关联。该指令用于定义时延的单位和时延精度。
`timescale编译器指令格式为:
- time_unit 单位时间
time_precision 时间精度
time_unit 和time_precision 由值1、10、和100以及单位s、ms、us、ns、ps和fs组成。
编译器指令定义时延以ns为单位,并且时延精度为 0.1 ns(100 ps)。因此,时延值(#5.22)即代表5.22ns,5.22对应5.2 ns, 时延6.17对应6.2 ns。如果用如下的`timescale程序指令代替上例中的编译器指令,
则基础的时间单位为10ns,精度1ns。5.22代表52.2ns,固定到精度上就是52ns。同理,6.17转换为62ns。
在编译过程中,timescale指令影响这一编译器指令后面所有模块中的时延值,直至遇到另一timescale指令或resetall指令。当一个设计中的多个模块带有自身的`timescale编译指令时将发生什么?在这种情况下,模拟器总是定位在所有模块的最小时延精度上,并且所有时延都相应地换算为最小时延精度。
在verilog中是没有默认timescale的。一个没有指定timescale的verilog模块就有可能错误的继承了前面编译模块的无效timescale参数。所以在verilog的LRM中推荐在每个module的前面指定
编译器指令将时间单位与实际时间相关联。该指令用于定义时延的单位和时延精度。
`timescale编译器指令格式为:
timescale time_unit / time_precision
- time_unit 单位时间
time_precision 时间精度
time_unit 和time_precision 由值1、10、和100以及单位s、ms、us、ns、ps和fs组成。
`timescale 1ns/ 100ps module AndFunc (Z, A, B); output Z; input A, B; and # (5.22, 6.17 ) Al (Z, A, B); //规定了上升及下降时延值。 endmodule
编译器指令定义时延以ns为单位,并且时延精度为 0.1 ns(100 ps)。因此,时延值(#5.22)即代表5.22ns,5.22对应5.2 ns, 时延6.17对应6.2 ns。如果用如下的`timescale程序指令代替上例中的编译器指令,
`timescale 10ns/1ns
则基础的时间单位为10ns,精度1ns。5.22代表52.2ns,固定到精度上就是52ns。同理,6.17转换为62ns。
在编译过程中,timescale指令影响这一编译器指令后面所有模块中的时延值,直至遇到另一timescale指令或resetall指令。当一个设计中的多个模块带有自身的`timescale编译指令时将发生什么?在这种情况下,模拟器总是定位在所有模块的最小时延精度上,并且所有时延都相应地换算为最小时延精度。
在verilog中是没有默认timescale的。一个没有指定timescale的verilog模块就有可能错误的继承了前面编译模块的无效timescale参数。所以在verilog的LRM中推荐在每个module的前面指定
timescale,并且相 应的在最后加一个resetall来确保timescale的局部有效。
相关文章推荐
- JZOJ.4301[NOIP2015模拟11.3]备用钥匙 解题报告
- Linux编程中如何避免出现僵尸进程
- java utils
- Mac端博客发布工具推荐
- OnNewIntent的调用时机
- (Java实现) HDOJ 2024 && 2043 Character类方法的使用
- JAVA IO 序列化与设计模式
- hdu2602 Bone Collector--01背包
- 记录
- 玩转Bash脚本:数值计算
- 线程的生命周期以及控制线程
- 【NOIP2015模拟11.3】IOIOI卡片占卜
- 深入理解JVM(五)——HotSpot垃圾收集器详解
- Spark组件之SparkR学习2--使用spark-submit向集群提交R代码文件dataframe.R
- AndroidViewPager的使用(一)
- 深入理解JVM(五)——HotSpot垃圾收集器详解
- 小波分析:二、一维连续小波变换
- error C2011: “LockTypeEnum”: “enum”类型重定义
- hduoj1213(并查集)
- set/multiset_01