请教一个双沿通信的问题
时间:10-02
整理:3721RD
点击:
RGMII接口是双时钟沿,即是在时钟上升沿和下降沿的数据总线上(rxd,txd,分别是4bit)含义是不同的,目前我设计中遇到的问题分别为TX通道和RX通道如何实现?
RX通道:
方案一: 我设想的输入时钟是rx_clk以及rx_clk180
分别使用rx_clk以及rx_clk180的上升沿采样rxd信号,记作({rxd_neg_sample,rxd_pos_sample}),然后统一使用rx_clk的上升沿再将({rxd_neg_sample,rxd_pos_sample})锁存输出,这样得到RX通道对端上升沿和下降沿的总共8bit数据。
方案二: 我设想的输入时钟是rx_clk
分别使用rx_clk上升沿和下降沿,记作({rxd_neg_sample,rxd_pos_sample}),然后统一使用rx_clk的上升沿再将({rxd_neg_sample,rxd_pos_sample})锁存输出,这样得到RX通道对端上升沿和下降沿的总共8bit数据。
TX通道:我设想的输入时钟是tx_clk2x,将输入的tx_clk2x时钟域上8bit数据,使用tx_clk2x上升沿选择4bit打出,这样等效为使用tx_clk的上升沿和下降沿打出数据。
以上是我的设计想法,不知道是否有问题?
看到xilinx的手册上,TX通道上没有tx_clk2x,而是使用tx_clk90(90度相移),不知是如何实现的?
有谁有相关的论文或者资料可以共享一下吗?谢谢
RX通道:
方案一: 我设想的输入时钟是rx_clk以及rx_clk180
分别使用rx_clk以及rx_clk180的上升沿采样rxd信号,记作({rxd_neg_sample,rxd_pos_sample}),然后统一使用rx_clk的上升沿再将({rxd_neg_sample,rxd_pos_sample})锁存输出,这样得到RX通道对端上升沿和下降沿的总共8bit数据。
方案二: 我设想的输入时钟是rx_clk
分别使用rx_clk上升沿和下降沿,记作({rxd_neg_sample,rxd_pos_sample}),然后统一使用rx_clk的上升沿再将({rxd_neg_sample,rxd_pos_sample})锁存输出,这样得到RX通道对端上升沿和下降沿的总共8bit数据。
TX通道:我设想的输入时钟是tx_clk2x,将输入的tx_clk2x时钟域上8bit数据,使用tx_clk2x上升沿选择4bit打出,这样等效为使用tx_clk的上升沿和下降沿打出数据。
以上是我的设计想法,不知道是否有问题?
看到xilinx的手册上,TX通道上没有tx_clk2x,而是使用tx_clk90(90度相移),不知是如何实现的?
有谁有相关的论文或者资料可以共享一下吗?谢谢
个人想法,不权威,讨论一下。
方案一和方案二等效,方案一需要一个DCM做180度相移,有点多余,故倾向于方案二。RX clock应该是严格等占空比的。
TX的通道上,clk2x理论上很完美,但是考虑端口和走线延迟,上升沿和下降沿到与数据的稳定期的建立和保持时间无法保证, 故延迟90度,以便能保证数据的建立保持时间可靠。使用tx_clk_90的逻辑跟你考虑RX的方式相同,就是上升沿和下降沿分别送数据出去,然后用tx_clk_90的高低电平控制二选一选通器就可以了,不必一定要使用二倍频钟。
这个问题要顶的,研究以太网mac的吗?
