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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: meijingguoyu

[求助] 关于FF的CK和RN的setup问题?

[复制链接]
 楼主| 发表于 2010-9-21 13:12:04 | 显示全部楼层
本帖最后由 meijingguoyu 于 2010-9-21 13:15 编辑

9# fly_haopp


我的问题就出现在: always @(posedge clk2 or negedge RN)  这里

因为这里的RN是另外一个clk1产生的同步信号,但是clk1和clk2是异步时钟,所以后仿的时候RN和clk2会报setup timing的问题。所以我认识是不是去掉negedge RN,只用clk2来实现RN到clk2的同步,即 always @(posedge clk2 )  

我看你的代码是让RN通过延迟3个clk2来实现同步的,那我让clk1输出的RN只延迟一个clk2能否完成同步啊?
用3个的话,是不是100%能实现同步,不会有任何亚稳态啊。
请你指点~,谢谢啦
发表于 2010-9-23 10:15:55 | 显示全部楼层
仿真报错是什么意思?
加SDF的后仿吗?
报的什么错?有violation吗?
如果有就是有问题啊
 楼主| 发表于 2010-9-23 13:50:18 | 显示全部楼层
回复 12# fly_haopp


    是后仿。就是PR之后的用modelsim的仿真时报错了,不是violation
发表于 2010-9-23 18:53:05 | 显示全部楼层
回复 8# meijingguoyu

always @ (posedge clk1 or por)      // 产生reset信号
---------这个写法只能仿真,不能综合
if (por)
   rst1 <= 1'b1;
else (延迟一段时间)  
------ 延迟一段时间这个怎么综合呀?
   rst1 <= 1'b0;
....
always @ (posedge clk2)    // 让rst1延迟一个clk2
  rst2 <= rst1;
------- 时钟域间信号同步的话,至少要两级FF

always @ (posedge clk2 or posedge rst2)  // 要用到的CK和RN
......

感觉你的复位信号产生逻辑很奇怪

复位信号产生逻辑生成rst1后,将rst1同步到clk2时钟域的方法:
always @(posedge clk2 or posedge rst1)
     if(rst1)    {rst2, rff1} <= 2'b1;
     else        {rst2, rff1} <= {rff1, 1'b0};

具体可以看看附件的文章,专门讲复位的

Asynchronous & Synchronous Reset Design Techniques .pdf

197.79 KB, 下载次数: 15 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2010-9-30 17:23:07 | 显示全部楼层
回复 14# linglingfa


    感谢你的指点,我试试先
 楼主| 发表于 2010-9-30 17:35:58 | 显示全部楼层




    always @ (posedge clk1 or por)      // 产生reset信号
---------这个写法只能仿真,不能综合
---------对不起,是我写错了,应该是always @ (posedge clk1 or posedge por)
if (por)
   rst1 <= 1'b1;
else (延迟一段时间)  
------ 延迟一段时间这个怎么综合呀?
-------这里我只是把意思写出来了,代码应该是这样的: else (rst_counter == 8'FF)  // 我这里的目的是想防止rst抖动
   rst1 <= 1'b0;
....
always @ (posedge clk2)    // 让rst1延迟一个clk2
  rst2 <= rst1;
------- 时钟域间信号同步的话,至少要两级FF
-------这个理解了,谢谢指点,那么最好几级啊?
always @ (posedge clk2 or posedge rst2)  // 要用到的CK和RN
......


感觉你的复位信号产生逻辑很奇怪
复位信号产生逻辑生成rst1后,将rst1同步到clk2时钟域的方法:
always @(posedge clk2 or posedge rst1)
     if(rst1)    {rst2, rff1} <= 2'b1;
     else        {rst2, rff1} <= {rff1, 1'b0};
具体可以看看附件的文章,专门讲复位的
// 谢谢你的回复,我不太理解你的复位信号,我先看看附件,谢谢啦~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-29 21:37 , Processed in 0.018016 second(s), 8 queries , Gzip On, MemCached On.

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