是不是所有跨时钟域的信号必须要同步
时间:10-02
整理:3721RD
点击:
我在FPGA上做MII接口,开发板上有PHY芯片,我在FPGA中写程序对发送和接收的数据进行处理。
这个接口中,有一组用于发送的时钟和数据(属于TX_CLK domain),一组用于接收的时钟和数据(属于RX_CLK domain),还有来自PHY 的链路指示信号CRS(半双工时表示链路正在使用,正在TX或者RX)和COL(表示有冲突发生)。
在datasheet中,关于CRS有这么一句话:CRS is asynchronous to RX_CLK, GTX_CLK and TX_CLK.
即CRS和COL是异步信号,和TX_CLK、RX_CLK都无关。
我的设计思路是这样的:有数据要发送之前,我要先通过CRS信号来判断目前是否有数据正在链路中传输,如果该信号无效,我就开始进行TX操作。
问题来了,我在TX_CLK domain中判断CRS信号,是否必须要对CRS进行同步呢?我自己觉得CRS信号是一个持续的电平信号,即使当前时钟沿没有采到,下个时钟沿也会采到。如果用两级D触发器去同步该信号,信号还会被延迟两个时钟周期,这对系统功能是否会有影响呢?我觉得不用同步也可以采到正确的数据,所以有如题的问题。
这个接口中,有一组用于发送的时钟和数据(属于TX_CLK domain),一组用于接收的时钟和数据(属于RX_CLK domain),还有来自PHY 的链路指示信号CRS(半双工时表示链路正在使用,正在TX或者RX)和COL(表示有冲突发生)。
在datasheet中,关于CRS有这么一句话:CRS is asynchronous to RX_CLK, GTX_CLK and TX_CLK.
即CRS和COL是异步信号,和TX_CLK、RX_CLK都无关。
我的设计思路是这样的:有数据要发送之前,我要先通过CRS信号来判断目前是否有数据正在链路中传输,如果该信号无效,我就开始进行TX操作。
问题来了,我在TX_CLK domain中判断CRS信号,是否必须要对CRS进行同步呢?我自己觉得CRS信号是一个持续的电平信号,即使当前时钟沿没有采到,下个时钟沿也会采到。如果用两级D触发器去同步该信号,信号还会被延迟两个时钟周期,这对系统功能是否会有影响呢?我觉得不用同步也可以采到正确的数据,所以有如题的问题。
没人回复,我自己顶一下
