如需轉載,請将下列字段一起轉載。
新浪海風部落格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
);