geff 发表于 2011-9-19 08:25:36

异步信号接收,为什么需要两级缓冲?

我看到一个关于串口通信的例子。里面所有的异步接受端口,都建立了两级缓冲(register)。
我在其他的资料上也看到相关的概念。
模糊的感觉是为防止输入信号处于亚稳态,但还不是很理解。

请高人指点。

norman33 发表于 2011-9-19 08:36:51

有一个原因是因为要有协议栈,得读到完整的一段数据才能处理,所以需要第二级的缓冲区。楼下的继续补充↓↓↓↓

geff 发表于 2011-9-19 08:49:30

回复【1楼】norman33非常菜
-----------------------------------------------------------------------
但串口输入是1 bit, 第二级缓冲的作用是什么呢?

qinxg 发表于 2011-9-19 09:15:13

防止输入信号刚好在时钟边缘跳变, 此时将出现保持时间不足的问题. 2即换成后,异步信号变成了同步信号,才可以和其他的同步逻辑一起处理

lxx_sea_sky 发表于 2011-9-19 09:24:46

是防止亚稳态用的,LZ搜索下“跨越时间的鸿沟”这篇译文吧。

lxx_sea_sky 发表于 2011-9-19 09:31:55

记差名字了,是“跨越鸿沟”。
点击此处下载 ourdev_677608S9D1JW.pdf(文件大小:454K) (原文件名:跨越鸿沟:同步世界中的异步信号.pdf)

geff 发表于 2011-9-19 09:34:09

回复【5楼】lxx_sea_sky
-----------------------------------------------------------------------

谢谢了

zgq800712 发表于 2011-9-19 10:10:59

降低亚稳态发生概率。触发器进入亚稳态的时间可以用MTBF
一级触发器的MTBF 可能是秒分天级,2级触发器的MTBF 就是 几百年,几千年。 那时候,我们恐怕已经是分子原子了。这个芯片也灰飞烟灭了,任何东西多挡不住时间洗涤。



参考下面的资料。
基于FPGA,关于数字电路中的亚稳态现象--毕业论文稿   http://wenku.baidu.com/view/009e7f95dd88d0d233d46a73.html
ASIC中的异步时序设计                              http://wenku.baidu.com/view/65f3b018964bcf84b9d57bbb.html

geff 发表于 2011-9-19 10:58:56

回复【7楼】zgq800712SEED
-----------------------------------------------------------------------

哈哈,说得很真切

jlqsczw_2007 发表于 2011-9-21 08:30:02

这是为了做到异步复位,同步释放。
两级缓存可以留给触发器足够的建立时间,消除亚稳态。

flyingfish001 发表于 2011-9-21 15:46:10

学习了

xuyeyue 发表于 2011-9-25 13:43:59

1.建立时间与保持时间的满足
2.消除毛刺,得到稳定的信号
个人感觉也可以用计数器代替这个二级触发器吧
页: [1]
查看完整版本: 异步信号接收,为什么需要两级缓冲?