笔试题:异步时钟域,快向慢用什么方法?慢向快用什么方法?

异步时钟域,快向慢用什么方法?慢向快用什么方法?

牛人们 都来 讨论吧
我也来说两句 查看全部回复

最新回复

  • putty (2008-9-22 22:58:10)

    快向慢,用握手信号
    慢向快,两级同步
  • one2three (2008-9-22 23:01:26)

    异步FIFO可以
  • guo253 (2008-9-22 23:56:10)

    控制信号:
    慢到快 : 两级D
    快到慢 :1.人为规定控制信号脉冲宽度大于慢时钟周期,此时 两级D
                      2。有种3个D的电路结构。 第一级: D<=Vcc,clk<=ctrl_signal,rst<=not ctrl_signal and out
                                                                        第二级: D<=Q1,clk<=clk_slow
                                                                        第三级: D<=Q2,clk<=clk_slow,out<=Q3
    数据: 握手----速率较慢
           异步fifo或DPRAM

    请老大们补充。。。
  • shaweikang1984 (2008-9-23 08:15:10)

    无定解
  • lasaman (2008-9-23 09:01:41)

    请老大们补充。。。
  • 王巍巍 (2008-9-23 09:49:01)

    4#的前辈  控制信号:
        快到慢 :第一级: D<=Vcc,clk<=ctrl_signal,rst<=not ctrl_signal and out
                                                                        第二级: D<=Q1,clk<=clk_slow
                                                                        第三级: D<=Q2,clk<=clk_slow,out<=Q3
    能否画张图,解释一下,这种方法好像比较新啊,以前没见过。

    还有 数据信号:
         用握手信号解决,能否也画张图,虽然经常听说,但具体是怎么操作的哪?谢谢!!
  • guo253 (2008-9-23 11:59:17)

    快到慢   我觉得描述的已经比较清楚了,就第一级有高有效复位。动手画一画。

    握手我也只是知道有这么一回事,过程:
           发送端将数据放于数据总线上,然后发出发送请求,接受端接到请求后把数据读走(直到读走才发已接受信号),发出已接受信号,然后发送端接受到此信号,接着发下一组。

    但是用的最多的还是异步FIFO.
  • guo253 (2008-9-23 12:00:46)

    第一级: D1<=Vcc,clk<=ctrl_signal,rst<=(not ctrl_signal) and out
    第二级: D2<=Q1,clk<=clk_slow
    第三级: D3<=Q2,clk<=clk_slow,out<=Q3
    out 即所要的信号。
  • neptune1983 (2008-9-25 23:57:52)

    这个RST是同步还是异步的,如果是异步的,就有可能在
    CRTL-SOGNAL 是不是先要拓展到足够宽度
  • xiaogouggg (2008-9-26 12:28:16)

    QUOTE:

    原帖由 guo253 于 2008-9-22 23:56 发表
    控制信号:
    慢到快 : 两级D
    快到慢 :1.人为规定控制信号脉冲宽度大于慢时钟周期,此时 两级D
                      2。有种3个D的电路结构。 第一级: D
    ok

    [ 本帖最后由 xiaogouggg 于 2008-10-8 17:59 编辑 ]
  • neptune1983 (2008-9-26 15:13:17)

    感觉解决方法有很多,但实际上还是要具体问题具体解决
  • hover_edacn (2008-9-26 15:38:23)

    4楼的方案是由问题的,异步reset不能随便乱用。
    真正的解决方法是结绳法:
    在快时钟域的最后一级把pulse变为电平,即每个pulse到来时,该寄存器翻转,也就是把pulse展宽。
    在慢时钟域同步来自快时钟域展宽后的pulse,然后作微分,把pulse的宽度恢复为一个脉冲。
    其实这是半握手协议,对pulse的频率是有限定的。
  • guo253 (2008-9-27 03:26:12)

    结绳法可以实现,它可以实现任意时钟域间的转换,好像效率不太高。
    对于10#,CRTL-SOGNAL 我觉得没必要延迟其宽度,延迟了就显不出这种方法的优点,而用两级FF即可。可以拿极限情况做个假设。
    对于11#,这种方法是适用于快转慢的。
    至于说“异步reset不能随便乱用”,这个我就不太懂了,请解释一下,我是做FPGA的,经常用这个好像。
    这种方法是我从《现代电子技术》期刊上摘出来的,俺也没试过,请大家多多讨论。
  • wangxwei2004 (2008-9-27 09:09:59)

    thanks xie
  • hover_edacn (2008-9-27 09:24:21)

    通常异步reset是不能由内部逻辑产生的,而且你的clk似乎也是控制信号,EDA工具是无法检查timing的,DFT处理起来也很麻烦,任何毛刺都会导致致命故障,而且这种问题往往不是必现的。
    总之,这种方法除非遇到极端情况,否则在工程上是不会使用的,在面试中会被认为不具备处理跨时钟域方面的知识。
  • guo253 (2008-9-29 00:19:38)

    呵呵  说得好
  • cryinrain_cug (2008-9-29 09:38:46)

    学习了!
    各位辛苦了
  • S.Gerrard (2008-10-08 15:55:21)

    看了前面的讨论
    感觉收益非浅啊
  • zhongzhaohua (2008-10-08 16:46:27)

    控制信号:
    慢到快 : 两级D
    快到慢 :1.人为规定控制信号脉冲宽度大于慢时钟周期,此时 两级D
                      2。有种3个D的电路结构。 第一级: D<=Vcc,clk<=ctrl_signal,rst<=not ctrl_signal and out
                                                                        第二级: D<=Q1,clk<=clk_slow
                                                                        第三级: D<=Q2,clk<=clk_slow,out<=Q3
    感觉快到慢 两级D 就解决了 是不是写反了啊
  • arms (2008-10-20 19:26:15)

    这道题好像VIA考过