对`timescale的深入理解
在实际应用过程中,如网口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的深入理解相关推荐
- 软编码Flv 到Mp4 容器(五) fmp4 ftyp box 和moovmvhd box详解
https://github.com/332065255/flv2fmp4 代码库 软编码Flv 到Mp4 容器(一) 软编码Flv 到Mp4 容器(二) flv tag拆解 软编码Flv 到Mp4 ...
- 关于`timescale命令的作用以及时间精度的理解
1.什么是`timescale命令 `timescale命令绝大部分人都不陌生,多多少少都见过,但仍然存在许多我们需要注意的地方. `timescale命令是用来说明该命令后的模块的时间单位和时间精度 ...
- timescale的理解
其实对于timescale的理解应该是最基础的要求.但是工作了这么多年,由于现在数字电路设计部分一般都要求designer不写timescale,不在design里面加delay.而验证平台又一直用U ...
- Unity 新手入门 如何理解协程 IEnumerator yield
Unity 新手入门 如何理解协程 IEnumerator 本文包含两个部分,前半部分是通俗解释一下Unity中的协程,后半部分讲讲C#的IEnumerator迭代器 协程是什么,能干什么? 为了能通 ...
- 从双层优化视角理解对抗网络GAN
目录 详细目录 1. 入门对抗网络 1.1 公式解读(将数学语言翻译成简体中文) 1.2 图像生成 2. 为何原版GAN训练不稳定 2.1 梯度消失 vanishing gradient 2.2 模式 ...
- verilog之按键消抖的理解
按键在按下时会产生抖动,释放时也会产生抖动,所以在设计键盘扫描程序时必须考虑按键的消抖,我们一般只考虑按下时的抖动,而放弃对释放时抖动的消抖.抖动时间一般为20ms左右.按下的最终结果是低电平. 按键 ...
- Self-Attention Generative Adversarial Networks(SAGAN)理解
介绍 Self-Attention Generative Adversarial Networks(SAGAN)是Han Zhang, Ian Goodfellow等人在去年提出的一种新的GAN结构, ...
- 如何理解D触发器延迟一拍
D触发器在FPGA里用得很多,但我经常无法理解D触发器为什么能对数据延迟一个时钟周期(打一拍).下面从信号处理的角度来谈一下我的理解.如发现理解有误,烦请留言指正. D触发器形如: `timescal ...
- DDS的理解及IP核的使用
目录 DDS基本原理 关于DDS IP核的理解 DDS IP 数字波形合成 程序设计 Matlab分析验证 遇到的问题 参考资料 DDS基本原理 DDS,直接数字频率合成(Direct Digital ...
最新文章
- 管好统计信息,开启SQL优化之门
- 安卓开发小知识 - 3
- 学python需要什么文化基础-中国大学MOOC的APP2020Python编程基础答案
- java文件复制速度_【Java】Java代码拷贝文件的速度
- Python os模块文件操作(二)
- 删除Office系列软件多余激活信息
- 关于计算机犯罪的英语作文,关于信息安全的英语作文范文
- halcon中如何生成椭圆_Halcon拟合系列(2)直线/圆/椭圆/矩形拟合算子
- 全面分析RHCE7(红帽认证工程师)考试题目之 ----Samba文件共享篇
- 深度学习:batch_size和学习率 及如何调整
- [Python设计模式] 第14章 老板来了——观察者模式
- vue+element的表格分页和前端搜索
- origin将柱状图和折线图画一起
- Update Strategy小记
- 分享2020年线上支付接口产品讲解
- java解析与生成json数据的四种方式,比如将json字符串转为json对象或json对象转为json字符串
- open source软件:Nomad介绍(任务编排工具)
- 烟台开发区鸿蒙小饭桌,小学放学时间推迟到下午6点,小饭桌时代要结束了,家长们舒心了...
- ROS机器人程序设计学习笔记(Chapter2)
- [Excel知识技能] Txt文件数据批量导入Excel