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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8191|回复: 33

[求助] 检测信号(非clk)上跳沿的问题,高手帮帮小弟吧!

[复制链接]
发表于 2010-11-6 13:40:36 | 显示全部楼层 |阅读模式

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

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

x
大家都知道,检测clk的上跳沿很简单,就是posedge,但是检测其他信号的话不能这么写。
在这里,我检测的信号是Hsync,Hsync是input信号,我是这样写的:

always @ (posedge clk or negedge rst)begin
  if (rst) begin
     Hsync_reg1<=0;
end
  else begin
      Hsync_reg1<=Hsync;
  end
end
assign H_cout_s =Hsync&(~Hsync_reg1);

如果检测到H_cout_s为1,那么就说明Hsync有个上跳沿。

但是使用modelsim仿真,Hsync_reg1,Hsync两个信号居然同时跳转,也就是说这两个信号是一样的,我觉得Hsync_reg1要比Hsync晚一个时钟才对,请高手指教。

网上一些检测上跳沿的程序用了2个寄存器,我觉得这样是多余的。
发表于 2010-11-6 15:18:51 | 显示全部楼层
灌水 啊啊
发表于 2010-11-6 15:51:06 | 显示全部楼层
复位信号的级性?
发表于 2010-11-6 16:41:05 | 显示全部楼层
代码写的有问题,
always @ (posedge clk or negedge rst)begin
这里用的是异步复位,低电平有效,
  if (rst) begin
     Hsync_reg1<=0;
end
但是这里却是高电平有效。

应该是:
always @ (posedge clk or negedge rst)begin
  if (!rst) begin
     Hsync_reg1<=0;
end
else
  ....
end
 楼主| 发表于 2010-11-6 17:07:14 | 显示全部楼层
回复 4# lwwlww


    和复位信号没有什么关系吧,我试了一下,还是一样的~~~哎,我只是想知道:
      我明明在clk下面把Hsync给了Hsync_reg1,Hsync_reg1应该比Hsync晚一个时钟才对???
      而我仿真的结果是他们的波形完全一样。


还是谢谢您的回复!!!
发表于 2010-11-6 20:13:52 | 显示全部楼层
回复 5# zpc987


    这个延迟还是对着Clk看吧,是不是没有放大,给人错觉是没有延迟
发表于 2010-11-6 20:46:53 | 显示全部楼层
可以帮你的仿真代码和波形截图贴出来看看,应该会延迟一个周期的啊
发表于 2010-11-6 21:07:22 | 显示全部楼层
你用的是功能仿真吧?而且Hsync信号的上跳沿刚好和时钟的上跳沿差不多?你可以将Hsync信号的上跳沿放到离时钟上跳沿远一点的位置试一试!
发表于 2010-11-8 09:18:58 | 显示全部楼层
有可能是这种情况:你做的应该是前仿,正好Hsync在clk上升沿到来的时候起来了,所以看起来Hsync和Hsync_reg是一致的。
你把Hsync的上升沿放在别的地方,比如说clk的下降沿附近,就能看出来了
发表于 2010-11-8 16:17:45 | 显示全部楼层




   对啊,很有可能是前仿时候,如果你的信号时testbench给出的,有可能信号比clk早一个delta跳变,所以clk上跳时候信号已经变了,结果reg之后结果只比输入信号晚2个delta,这个反映在波形图里就是同时变化。解决方法:输入信号不要在时钟沿变化。或者testbench中信号经过clk同步之后输入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-7 13:43 , Processed in 0.033578 second(s), 9 queries , Gzip On, Redis On.

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