verilog中连续性赋值中的延时
上次遇到一个问题。写一个testbench需要移动两个时钟之间的相位。后来一想,貌似我们都是这么写clock的
always #(`P/2) clk = ~clk
我的两个时钟都是这么写,只是p不一样,那相位怎么移动呢?
于是就追究起 如何延迟赋值的问题
根据standard-2005.
对于连续赋值延时只有这一种
wire #delay_time b ;
assign a = b ;
1,在第0时刻仿真器读取b的值
2,如果b的值,与a不同,取消上一个event, 新建立event ----- 过delay_time后,将新值赋值给 a
3, 如果b值与a相同,那么维持现状
4,在这delay_time时间内,如果b继续变化。回到2或者3.
用真OO无双大神的话说,就是无code无真相
module delay_test ;
//Continuous assignments check
wire [:] # con_a ;
reg [:] con_b ;
assign con_a = con_b ;
//**********************
initial begin
con_b = ;
#
con_b = 'hff ;
# con_b = 'h12 ;
#
con_b = 'hff ;
# con_b = 'h34 ;
#
con_b = 'hff ;
#
con_b = 'h56 ;
# ;
end
endmodule
测试两个回合

先初始化a=b=ff
第一回合发生在第21ns的时刻, b=12维持了2ns (<delay_time 8ns),在第23ns时刻变成了ff。发现经过20ns(>delay_time 8ns)a的值一直是ff。
第二回合发生在第43ns时刻, b=34维持2ns,再b=ff维持2ns,再b=56(在第47ns)维持2ns。结果在第56ns (56-47=8)a=56
有code有图有真相。
所以对于我的问题可以是
wire #Delay_time clk2
assign clk2 = clk1
这样就把clk1的相位移动了一下,形成了一个新的时钟clk2
其实还可以是用forever。效果是一样的
initial begin
#Delay_time
forever #(`P/2) clk2 = ~clk2 ;
end
欢迎加入: FPGA广东交流群:162664354
FPGA开发者联盟: 485678884
verilog中连续性赋值中的延时的更多相关文章
- 【Java EE 学习 70 下】【数据采集系统第二天】【Action中User注入】【设计调查页面】【Action中模型赋值问题】【编辑调查】
一.Action中User注入问题 Action中可能会经常用到已经登陆的User对象,如果每次都从Session中拿会显得非常繁琐.可以想一种方法,当Action想要获取User对象的时候直接使用, ...
- 【转】Python中的赋值、浅拷贝、深拷贝介绍
这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下 和很多语言一样,Python中 ...
- python中的赋值操作和复制操作
之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4 ...
- python中的赋值操作
参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作“=” ...
- php中对象赋值问题
今天遇到一个问题, 一开始拼接的SQL语句,然后想多次使用时发现会被重置,然后想到给重新赋值一次,但是发现这样赋值会出问题,百思不得其解,最后经过搜索,发现PHP中对象赋值给一个变量之类的赋值的其实是 ...
- (网页)Angular.js 中 copy 赋值与 = 赋值 区别
转自st.gg Angular.js 中 copy 赋值与 = 赋值 区别 为什么用 $scope.user = $scope.master; $scope.master 会跟着 $scope.use ...
- ajax实现给JavaScript中全局变量赋值(转)
原文地址:ajax实现给JavaScript中全局变量赋值 问题简化: <script type="text/javascript"> var a=1 ; functi ...
- C++进阶--处理拷贝赋值运算符中自赋值的情况
//############################################################################ /* * 处理拷贝赋值运算符=中自赋值的情 ...
- Python中的赋值和拷贝
赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c= ...
随机推荐
- 采用proguard困惑android代码
当前是有些工具比方apktool,dextojar等是能够对我们android安装包进行反编译.获得源代码的.为了降低被别人破解,导致源代码泄露,程序被别人盗代替码,等等.我们须要对代码进行混淆.an ...
- oracle 11g常用命令
1.监听启动监听lsnrctl start停止监听 lsnrctl stop 查看监听状态 lsnrctl status 2.启动用oracle用户进入su - oracle运行sqlplus命令,进 ...
- Jquer学习之jQuery(function(){})与(function(){})(jQuery)之间的区别
Jquery是优秀的Javascrīpt框架.我们现在来讨论下在 Jquery 中两个页面载入后执行的函数. $(document).ready(function(){ // 在这里写你的代码... ...
- EasyUI easyui-combobox 重复发送请求
今天在做个EasyUI easyui-combobox 下拉框动态连级的时候发现在选择一个值的时候发送了两次请求,这有点逆天呀~!!反人类~!必须和谐一开始以为是重复绑定了,重新审核了代码 确定没有~ ...
- objective-C学习笔记(一)OBJC简介
如何掌握一门高级编程语言:(这里特指Objective-C) 底层思维: 向下,如何从机器底层的角度来思考程序运行的过程. 关注语言构造.编译转换.内存模型.运行时机制 抽象思维: 向上,当软 ...
- UITextField 光标的位置设置获取
UITextField 光标的位置设置获取 通过给UITextField 加一个拓展 //#import "UITextField+ExtentRange.h" #import & ...
- BZOJ 1565: [NOI2009]植物大战僵尸( 最小割 )
先拓扑排序搞出合法的, 然后就是最大权闭合图模型了.... --------------------------------------------------------------------- ...
- Java 方法调用疑问
同一个类中同一个方法,实例化后,同时调用两次,内存分配如何?
- mysql errno:13
新装的mysql,创建表时报错误 errno:13,网上查了一下是权限问题.解决方式如下: 到mysql的数据目录下:即启动进程中:--datadir=/data/soft/mysql/mysqlda ...
- win7系统下连接使用mac 蓝牙键盘(Apple Wireless Keyborad)
这几天买了一个apple wireless keyborad 玩玩,主要是给孩子买了一个ipad 搭配上wireless keyborad让她玩app足够了,就当一部电脑用吧. 看起来挺精致的,可以了 ...