在实际应用过程中,如网口IP CORE调试过程中,就会出现不同文件的module在不同的时间单位和精度的情况之下,因此,有必要对这个问题进行深入透彻地了解和分析。下面进行详细分析。

I.                    在顶层文件里instantiates each module,本身不写`timescale命令,但据说对modelsim的默认情况是`timescale 1ps/1ps,现看看波形图和各模块程序:

待测信号

Posedge time

`timescale

延迟时间表达式

b, d, f

5 ns

NONE

NONE

A

5 ns + 1.6 ns

1ns / 100ps

#1.55

C

5 ns + 1.55 ns

1ns / 10ps

#1.55

e

5 ns + 0.16 ns

100ps / 10ps

#1.55

分析:top文件完全没有干涉各模块的时间单位和精度。

程序如下:

// top.v文件,无` timescale

module top(a,b,c,d,e,f

);

output a,c,e;

input  b,d,f;

timescale_t t_1(.A(a),.B(b));

timescale_tt t_2(.C(c),.D(d));

timescale_ttt t_3(.E(e),.F(f));

endmodule

//timescale_t.v文件

`timescale 1ns / 100ps

module timescale_t(

A,B

);

output A;

input  B;

assign #1.55 A =  B;

endmodule

//timescale_tt.v文件

`timescale 1ns / 10ps

module timescale_tt(

C,D

);

output C;

input  D;

assign  #1.55 C = D;

endmodule

//timescale_ttt.v文件

`timescale 100ps / 10ps

module timescale_ttt(

E,F

);

output E;

input  F;

assign #1.55 E = F;

endmodule

II.                 在顶层文件里写上`timescale 1ns/1ps,其他设置和程序不变,看看波形图:

待测信号

Posedge time

`timescale

延迟时间表达式

b, d, f

5 ns

1ns / 1ps

NONE

A

5 ns + 1.660 ns

1ns / 100ps

#1.55

C

5 ns + 1.550 ns

1ns / 10ps

#1.55

E

5 ns + 0.160 ns

100ps / 10ps

#1.55

分析:可见如果顶层写明了`timescale命令,那么它将会影响其模块内部各子模块的精度,而不会对时间单位产生任何影响。但是,如果top.v中的时间精度比某个子模块的大,程序将如何处理呢?答案是,结果和I中的一样!

III.               在顶层文件的各实例化文件前面写上不同的`timescale,其他不变,看看效果:

显示,在一个module内部不可以编写`timescale命令!程序如下:

`timescale 1ns/100ps

module top(a,b,c,d,e,f

);

output a,c,e;

input  b,d,f;

`timescale 1ns / 100ps

timescale_t t_1(.A(a),.B(b));

`timescale 1ns / 10ps

timescale_tt t_2(.C(c),.D(d));

`timescale 100ps / 10ps

timescale_ttt t_3(.E(e),.F(f));

endmodule

对书中和网上疯狂转载的一段话进行修正:

“一个设计中的多个模块带有滋生的`timescale指令,模拟器总是定位在所有模块的最小时延精度上。”

这里的所有模块,指的是跟模块和某一个子模块相比较,并采用二者之间最小的精度,对于多个并行的子模块而言,它们是不会相互干扰对方的精度的。

转自:http://hi.baidu.com/lw2406/blog/item/87ed75011f316a316a60fb07.html

对`timescale的深入理解相关推荐

  1. 软编码Flv 到Mp4 容器(五) fmp4 ftyp box 和moovmvhd box详解

    https://github.com/332065255/flv2fmp4 代码库 软编码Flv 到Mp4 容器(一) 软编码Flv 到Mp4 容器(二) flv tag拆解 软编码Flv 到Mp4 ...

  2. 关于`timescale命令的作用以及时间精度的理解

    1.什么是`timescale命令 `timescale命令绝大部分人都不陌生,多多少少都见过,但仍然存在许多我们需要注意的地方. `timescale命令是用来说明该命令后的模块的时间单位和时间精度 ...

  3. timescale的理解

    其实对于timescale的理解应该是最基础的要求.但是工作了这么多年,由于现在数字电路设计部分一般都要求designer不写timescale,不在design里面加delay.而验证平台又一直用U ...

  4. Unity 新手入门 如何理解协程 IEnumerator yield

    Unity 新手入门 如何理解协程 IEnumerator 本文包含两个部分,前半部分是通俗解释一下Unity中的协程,后半部分讲讲C#的IEnumerator迭代器 协程是什么,能干什么? 为了能通 ...

  5. 从双层优化视角理解对抗网络GAN

    目录 详细目录 1. 入门对抗网络 1.1 公式解读(将数学语言翻译成简体中文) 1.2 图像生成 2. 为何原版GAN训练不稳定 2.1 梯度消失 vanishing gradient 2.2 模式 ...

  6. verilog之按键消抖的理解

    按键在按下时会产生抖动,释放时也会产生抖动,所以在设计键盘扫描程序时必须考虑按键的消抖,我们一般只考虑按下时的抖动,而放弃对释放时抖动的消抖.抖动时间一般为20ms左右.按下的最终结果是低电平. 按键 ...

  7. Self-Attention Generative Adversarial Networks(SAGAN)理解

    介绍 Self-Attention Generative Adversarial Networks(SAGAN)是Han Zhang, Ian Goodfellow等人在去年提出的一种新的GAN结构, ...

  8. 如何理解D触发器延迟一拍

    D触发器在FPGA里用得很多,但我经常无法理解D触发器为什么能对数据延迟一个时钟周期(打一拍).下面从信号处理的角度来谈一下我的理解.如发现理解有误,烦请留言指正. D触发器形如: `timescal ...

  9. DDS的理解及IP核的使用

    目录 DDS基本原理 关于DDS IP核的理解 DDS IP 数字波形合成 程序设计 Matlab分析验证 遇到的问题 参考资料 DDS基本原理 DDS,直接数字频率合成(Direct Digital ...

最新文章

  1. 管好统计信息,开启SQL优化之门
  2. 安卓开发小知识 - 3
  3. 学python需要什么文化基础-中国大学MOOC的APP2020Python编程基础答案
  4. java文件复制速度_【Java】Java代码拷贝文件的速度
  5. Python os模块文件操作(二)
  6. 删除Office系列软件多余激活信息
  7. 关于计算机犯罪的英语作文,关于信息安全的英语作文范文
  8. halcon中如何生成椭圆_Halcon拟合系列(2)直线/圆/椭圆/矩形拟合算子
  9. 全面分析RHCE7(红帽认证工程师)考试题目之 ----Samba文件共享篇
  10. 深度学习:batch_size和学习率 及如何调整
  11. [Python设计模式] 第14章 老板来了——观察者模式
  12. vue+element的表格分页和前端搜索
  13. origin将柱状图和折线图画一起
  14. Update Strategy小记
  15. 分享2020年线上支付接口产品讲解
  16. java解析与生成json数据的四种方式,比如将json字符串转为json对象或json对象转为json字符串
  17. open source软件:Nomad介绍(任务编排工具)
  18. 烟台开发区鸿蒙小饭桌,小学放学时间推迟到下午6点,小饭桌时代要结束了,家长们舒心了...
  19. ROS机器人程序设计学习笔记(Chapter2)
  20. [Excel知识技能] Txt文件数据批量导入Excel

热门文章

  1. 为什么要办互联网药品信息服务资格证
  2. Java爬虫,爬取新闻网的标题、时间和图片,并存入MySQL数据库
  3. 冯唐《18岁,给我一个姑娘》书摘
  4. 企业到底需要什么样的企业邮箱?
  5. 如何检测应用帧率-FPS测试
  6. 国内会议论文查重吗?
  7. ruby crawler Anemone
  8. 减小伺服电机共振的方法(以松下伺服为例)
  9. 设计模式之MVC和MVT
  10. 想要做实施,就要学生产!金蝶云星空生产管理(冲刺学习)