在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3488|回复: 15

[求助] 关于数据更新时刻的问题

[复制链接]
发表于 2017-7-13 20:58:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 艾克0928 于 2017-7-14 09:51 编辑

各位论坛的大神,      小弟请教一个问题:在verilog中,假设时钟为clk,复位信号为rst,某一控制信号为ctrl,现有寄存器A和B,当如下进程发生时:

always@(posedge clk or negedge rst)
     begin
          if(!rst)
               B <= 0;
          else if(ctrl)
                        B <= A;
       end


       若clk、rst、ctrl和A的时序如下图所示:
绘图1.jpg

那么B的更新发生是发生在上图图中的那个时刻呢?也就是说是红色的正确还是蓝色的正确?
还请群里的人解惑一下,谢谢啦!




发表于 2017-7-13 22:09:26 | 显示全部楼层
可靠一点应该是蓝色
 楼主| 发表于 2017-7-14 09:08:56 | 显示全部楼层
回复 2# 吾要单片机
现在我有点儿凌乱,原因是当我控制信号ctrl采用testbench方式通过延时产生这样的一个波形时,然后用ModelSim仿真出来就是图中红色部分的结果;但是如果我再建一个module用来专门产生控制信号ctrl时,然后再新建一个顶层top将其连接起来,最后新建一个testbench只用来产生时钟,那么仿真出来的结果又是图中蓝色部分。请问哪一种可靠一些?
发表于 2017-7-14 09:26:29 | 显示全部楼层
如果说clk和ctrl理论上在同一时刻上升沿重合,那么红色的就是正确的。但在现实世界中,clk和ctrl如果来自不同源,那么她们上升沿来到的相对时刻是不稳定的,不能得出红色还是蓝色准确的结论,但是在蓝色的起始时间,B肯定是已经变化了的,如果想要获得稳定的b,从蓝色时刻开始是没有问题的。如果这两个信号来自同一个源,就要看他们的走线长度,看谁先到达触发器,如果时钟先到达,就是蓝色正确。
 楼主| 发表于 2017-7-14 09:42:02 | 显示全部楼层
回复 4# darkfay
我现在用两种手段仿真了一下:一是采用ctrl直接在testbench中产生,直接用“#延时”的方式控制ctrl的翻转,然后ModelSim仿真得到的结果是红色曲线;二是采用再新建一个module来生成ctrl,然后再新建一个顶层top将这两个模块整合例化,然后再对顶层top新建一个testbench,testbench中只描述clk和rst的行为,再进行ModelSim仿真,得到的结果却又是红色曲线部分。所以,我凌乱了。。。
发表于 2017-7-14 09:59:14 | 显示全部楼层
貌似我在工程中,红蓝两种情况都遇到过。
私以为2点:
(1)clk能不能第一时间检测到ctr,关键是要看ctr与clk的相位关系到底是否满足建立保持时间。
       如楼上所说,与是否同源,信号的延时的不同都有关系。
(2)实际编程情况中,要根据程序在芯片跑了之后的结果来看,功能仿真因为没考虑延时等情况,
       所以仅供参考。
(3)在编写过程中,最好避免这种在同一时刻变化的情况,保证clk与被判断信号的相位有个180
        度的偏差就自然不存在这个问题了。
 楼主| 发表于 2017-7-14 10:23:33 | 显示全部楼层
回复 6# YYFFLLMMNN
      非常感谢您的意见!      对于第(1)点我能理解;
      但是第(2)点,我做的是AISC设计,在设计没有完成且没有流片前,没有芯片啊,所以您说的要考虑延时的情况是否可以在该工艺库进行后仿来进行?
      至于第(3)点,您的意思是控制信号ctrl最好是做成如下所示的情况吗?
绘图2.jpg
也即控制信号不要在clk的上升沿时变化。
发表于 2017-7-14 13:55:26 | 显示全部楼层
回复 7# 艾克0928
ASIC不是很了解,后仿其实我也不怎么用。后仿能不能排查这个问题,你试一下看看。
我用FPGA设计的时候一般直接用chipscope就可以看到程序实际运行的情况了。
第3点,你画的图就是我说的意思,但并不是所有信号都可以这样随意调整相位的,有时候可以这样做。
 楼主| 发表于 2017-7-14 14:11:26 | 显示全部楼层
回复 8# YYFFLLMMNN
好的,明白了,ASIC的后仿就是带器件实际延时的仿真,应该跟你做FPGA用Chipscope Pro抓取实际仿真波形是一样的(我是做前端的,这个后端别人做,别人没做完后端我也不明后仿啊),只能从前端这个源头去避免吧。然后我懂您的意思了,谢谢!
发表于 2017-7-14 14:15:44 | 显示全部楼层
考虑延时的,是前仿就需要考虑的,你设计的电路实际是什么样的,你要有个概念,不可能等到后仿才去考虑这些路径延时。因为实际电路在传输的时候是肯定有延时的,你不能从代码去推到电路结构,而应该是从电路结构来反推你的代码到底合理不合理,还是那句话,HDL是描述电路的语言,不是创造电路的语言。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 15:31 , Processed in 0.041248 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表