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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2331|回复: 4

[求助] verilog代码 信号同步问题

[复制链接]
发表于 2011-12-20 22:00:32 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 longjilb 于 2011-12-21 21:54 编辑

用verilog写的代码,大致如下。
输入一个两位二进制信号a[1:0](串行输入00,01,10,11),对应产生四个不同频率的时钟(具体频率未知),在一定时间内(比方说1ms),在各个时钟触发下计数,产生四个数b0,b1,b2,b3,通过比较|b0-b1|,|b0-b2|,|b0-b3|,|b1-b2|......得出两个时钟频率相差最大输入信号值(比方说|b0-b2|最大),则输出分别为00,10)。
问题是:由于在输入信号a[1:0]到输出四个不同频率时钟的模块中,电路存在延时,使得以后在四个时钟触发产生的数再比较得出输出时,信号不能同步,怎么处理啊?
发表于 2011-12-20 22:12:06 | 显示全部楼层
有两种比较简单的方法:
1. 用握手的方式,在传输的数据上加以个有效信号,通过检查有效信号后  在读取数据,数据不会发生亚稳态。  但数据处理效率比较低。
2.  用做好的异步fifo缓存一下,然后读取就同步了
3. 也可以用异步fifo的设计实现,通过调节指针值差,实现。保证数据读取正确。
具体要根据你你设计  来选择合适的方法!
发表于 2011-12-21 09:10:36 | 显示全部楼层
功耗要求不高的话,用高频时钟同步下
发表于 2011-12-21 11:28:18 | 显示全部楼层
一般来说,这种情况只需要将a[1:0]分别同步到四个时钟域,再进行运算。
这里的前提是a[1:0]属于电平敏感的,不会每个时钟周期都发生变化
发表于 2011-12-21 12:59:08 | 显示全部楼层
求学的路过,加油呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-11 15:45 , Processed in 0.034766 second(s), 7 queries , Gzip On, MemCached On.

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