如上图所示,实际上对于RGMII的以太网通信接口,TX_CTRL 负责传输TX_EN和TX_ER信号,RX_CTRL负责传输 RX_DV以及RX_ER信号,所以我们需要把RGMII信号转为GMII信号,比如对TX_CTRL,我们需要把TX_EN和TX_ER转换出来,如下代码,其中mac_tx_data_valid信号就是我们转换过来的TX_EN信号,由于TTX_ER我们是直接丢弃数据,所以没有使用。
ODDR #(
.DDR_CLK_EDGE("SAME_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE"
.INIT(1'b0), // Initial value of Q: 1'b0 or 1'b1
.SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
) rgmii_ctl_ddr (
.Q(RGMII_tx_ctrl_obuf), // 1-bit DDR output
.C(RGMII_reference_clk), // 1-bit clock input
.CE(1'b1), // 1-bit clock enable input
.D1(mac_tx_data_valid), // 1-bit data input (positive edge)
.D2(mac_tx_data_valid ^ 1'b0), // 1-bit data input (negative edge)
.R(reset), // 1-bit reset
.S(1'b0) // 1-bit set
);
根据你的描述,你需要联系代码的上下文,查看下你的信号接口,采用是RGMII 还是GMII 或者RMII(百兆)
|