打印

帮忙看下此电路

[复制链接]
1980|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxfxwk1986|  楼主 | 2011-3-17 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在看赛林思官网上一个同步模块的代码时,有点看不懂,请问如下的一个process代表什么电路?谢谢
--
--  Synchronize the INCREMENT_BUFFER_COUNT signal to the READ clock and one shot it
--
process (RD_CLK, RESET)
begin
   if RESET='1' then
      INCREMENT_BCOUNT_METASTABLE <= '0';
      INCREMENT <= '0';
   elsif RD_CLK='1' and RD_CLK'event then
      INCREMENT_BCOUNT_METASTABLE <= (INCREMENT_BCOUNT_CAPTURED and (not INCREMENT));
      INCREMENT <= (INCREMENT_BCOUNT_METASTABLE and (not INCREMENT));
   end if;
end process;

相关帖子

沙发
wxfxwk1986|  楼主 | 2011-3-17 17:09 | 只看该作者
这样的电路如何能达到同步的目的的?

使用特权

评论回复
板凳
sxhhhjicbb| | 2011-3-20 15:36 | 只看该作者
INCREMENT_BCOUNT_METASTABLE 的序列是:INCREMENT_BCOUNT_CAPTURED ,INCREMENT_BCOUNT_CAPTURED ,0
INCREMENT:的序列是:0,INCREMENT_BCOUNT_CAPTURED ,0
不明白有什么作用,但这种方法好像很巧妙。比用状态机节约了不少资源。

使用特权

评论回复
地板
sxhhhjicbb| | 2011-3-20 15:39 | 只看该作者
如果INCREMENT_BCOUNT_CAPTURED 为1,好像是个不错的三分频电路呀。好强。明天回公司研究研究。

使用特权

评论回复
5
a3213211353| | 2011-3-23 14:52 | 只看该作者
看得不大明白

使用特权

评论回复
6
ttkz| | 2011-3-28 22:48 | 只看该作者
x = INCREMENT_BCOUNT_CAPTURED
y0 = INCREMENT_BCOUNT_METASTABLE
y1 = INCREMENT

那么
y0 <= x and not y1
y1 <= y0 and not y1
x 是输入
y1是输出
当x连续为L时,输出y1=L
当x出现1~2个周期宽度的H电平时,y1也会输出1个周期宽度的H电平。y1的拉低是自动完成的,与x无关。
总体来说,处理步骤为:
首先,这个同步电路对输入进行2周期延迟。这是同步电路通常的做法。可以减弱亚稳态影响。
然后,输出维持1周期H电平之后自动拉低。有一点巧妙,将亚稳态出现的几率大致降低了1半。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
sxhhhjicbb + 1 分析得真好
7
wxfxwk1986|  楼主 | 2011-3-31 19:48 | 只看该作者
x = INCREMENT_BCOUNT_CAPTURED
y0 = INCREMENT_BCOUNT_METASTABLE
y1 = INCREMENT

那么
y0
ttkz 发表于 2011-3-28 22:48

最后一句怎么理解,求解释,谢谢。

使用特权

评论回复
8
ttkz| | 2011-4-1 22:53 | 只看该作者
呵呵,跟亚稳态原理有关系。我可是被这类问题折磨了大半年的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

250

帖子

1

粉丝