上次遇到一个问题。写一个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中连续性赋值中的延时的更多相关文章

  1. 【Java EE 学习 70 下】【数据采集系统第二天】【Action中User注入】【设计调查页面】【Action中模型赋值问题】【编辑调查】

    一.Action中User注入问题 Action中可能会经常用到已经登陆的User对象,如果每次都从Session中拿会显得非常繁琐.可以想一种方法,当Action想要获取User对象的时候直接使用, ...

  2. 【转】Python中的赋值、浅拷贝、深拷贝介绍

    这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下   和很多语言一样,Python中 ...

  3. python中的赋值操作和复制操作

    之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4 ...

  4. python中的赋值操作

    参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作“=” ...

  5. php中对象赋值问题

    今天遇到一个问题, 一开始拼接的SQL语句,然后想多次使用时发现会被重置,然后想到给重新赋值一次,但是发现这样赋值会出问题,百思不得其解,最后经过搜索,发现PHP中对象赋值给一个变量之类的赋值的其实是 ...

  6. (网页)Angular.js 中 copy 赋值与 = 赋值 区别

    转自st.gg Angular.js 中 copy 赋值与 = 赋值 区别 为什么用 $scope.user = $scope.master; $scope.master 会跟着 $scope.use ...

  7. ajax实现给JavaScript中全局变量赋值(转)

    原文地址:ajax实现给JavaScript中全局变量赋值 问题简化: <script type="text/javascript"> var a=1 ; functi ...

  8. C++进阶--处理拷贝赋值运算符中自赋值的情况

    //############################################################################ /* * 处理拷贝赋值运算符=中自赋值的情 ...

  9. Python中的赋值和拷贝

    赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c= ...

随机推荐

  1. IOS系列——NStimer

    Timer经常使用的一些东西 1. 初始化 timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@select ...

  2. Hdu Binary Tree Traversals

    Problem Description         A binary tree is a finite set of vertices that is either empty or consis ...

  3. 编写可维护的JS 04

    4.变量.函数和运算符 变量 变量声明提前,单var 函数声明 先声明fn再执行 函数声明不应出现在语句块中 函数调用间隔 函数名与左括号间无间隔 立即调用函数 (fuction(){}) 严格模式  ...

  4. Ext.Net 使用总结之GridPanel的删除事件

    1.关于Ext.net中GridPanel的删除事件 首先是GridPanel,如下: <ext:GridPanel ID="GridPanel1" runat=" ...

  5. oracle 导入txt

    没有Oraclehoume的情况下,执行下环境变量文件 sqlldr userid= DM/DM control = /home/oracle/libc/load.ctl load data infi ...

  6. WCF遇到Oracle问题

    解决 选中下图中对网站和项目使用IIS….64位版

  7. 同步队列-Queue模块解析

    Queue模块解决了生产者.消费者问题,在多线程编程中进行线程通信的时候尤其有用,Queue类封装了加锁解锁的过程.         在Queue模块中有三种不同的队列类,区别是不同队列取出数据的顺序 ...

  8. fiddler--手机https

    1.访问fiddler的主讲加端口,比如我的是:http://192.168.1.103:8080 在点击fiddlerroot  certificate 下载安装证书即可

  9. 快速的CDN加速服务

    jQuery Migrate jQuery官网CDN地址jQuery版本迁移辅助插件,用jquery不同版本开发的程序在修改jquery版本出现的兼容问题可以使用jQuery Migrate解决此问题 ...

  10. jQuery Lint: enables you to automatically inject jQuery Lint into the page as it is loaded (great for ad-hoc code validation)

    FireQuery is a Firebug extension for jQuery development jQuery Lint: enables you to automatically in ...