原创 (转)跨时钟域数据采集总结

2010-7-20 21:13 2705 2 2 分类: FPGA/CPLD

作者:左左右右

原文:跨时钟域数据采集总结

  • 一.典型方法


    二.结绳法

     1.结绳法1:利用数据的边沿作时钟(例子中上升沿)。(可以将脉冲无限延长,直到可以采集到数据,然后复位,要考虑产生数据的频率)。

      实例1


    实例2


     2结绳法2:利用数据作为异步复位,置位信号。(适合将不足时钟宽度的脉冲扩展1周期)

     实例1:输入高脉冲(clka域),输出高脉冲(clkb域)


    实例2:输入高脉冲(clka域),输出低脉冲(clkb域)


    实例3:输入低脉冲(clka域),输出低脉冲(clkb域)


    实例4:输入低脉冲(clka域),输出高脉冲(clkb域)


     3结绳法3:输入作为数据输入,同样也是检测高有效后,输出一直为高,异步时钟域可以采集到数据后再复位。
    因为没有将输入作为时钟,或者作为异步set,reset,所以这类方便比较常用。


    参考代码:http://bb2hh.blogbus.com/files/12357833650.v
    仿真:

    4.结绳法3:利用握手协议:(可以将脉冲无限延长,直到可以采集到数据,然后复位,要考虑产生数据的频率)。

     

     

     

        

     

    参考代码:http://bb2hh.blogbus.com/files/12357826152.v

    仿真:


    另外对于为了提高速度和准确度的握手操作中,可以将设置一定的握手模块(n>2(clk1+clk2)/Trd),流水操作

     

    结绳就是将单脉冲延长,以方便采集到数据。

    结绳的方法归结为2类:

    1.利用脉冲的边沿做时钟;

    2.利用脉冲的电平(部分场合要求最小脉冲宽度)做选择器或者异步复位,置位。

     

    另外的关键点就是什么时候结绳结束(采集到了数据就要让对方回到初始状态),

    这里的操作也有2种方法:

    1.利用采集到的脉冲做异步复位,置位。

    2.利用采集到的脉冲再次结绳采集做握手响应信号。

     

    处理的时候应该选择对应的方法。

     


    同时共享一下用到的电子电路图形库(visio的)

    http://bb2hh.blogbus.com/files/12350304650.rar

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条