天天看點

【Xilinx】【Spartan6】BUFG網絡上的時鐘信号如何通過普通IO輸出

如需轉載,請将下列字段一起轉載。

新浪海風部落格http://blog.sina.com.cn/dingyunfeng

聲明:以下内容僅指Xilinx Spartan6系列,其他FPGA并不一定适用。

    FPGA的設計中,時鐘系統的設計極其重要,通常時鐘信号會使用BUFG網絡減少傳輸延遲,提高系統性能并增強系統的穩定性。

    在實際使用中,經常會遇到需要将某個BUFG上的時鐘信号通過FPGA的普通IO輸出。如果直接從BUFG上連接配接到OBUF上,在編譯器map的過程中就會出現錯誤,并提示規避錯誤的方法,就是在限制檔案中加上一條限制,讓編譯器忽略時序限制的要求,直接通過普通邏輯資源連接配接。雖然這個限制能規避這個錯誤,但中間的時序将無法評估,是以可能會導緻錯誤的發生。

    Xilinx Spartan6對于這種應用給出的解決方案是通過ODDR2來連接配接,每個IO都有ODDR2資源,這些資源可以連接配接到BUFG網絡上。

    使用舉例:

    ODDR2 #(

      .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"

      .INIT(1'b0),    // Sets initial state of the Q output to 1'b0 or 1'b1

      .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset

    ) ODDR2_inst (

      .Q(需要輸出的時鐘信号連線),   // 1-bit DDR output data

      .C0(BUFG上的時鐘信号),   // 1-bit clock input

      .C1(BUFG上的時鐘信号的180度反相信号),   // 1-bit clock input

      .CE(1'b1), // 1-bit clock enable input

      .D0(1'b1), // 1-bit data input (associated with C0)

      .D1(1'b0), // 1-bit data input (associated with C1)

      .R(1'b0),   // 1-bit reset input

      .S(1'b0)    // 1-bit set input

    );