ODDR is Xilinx HDL Language Template。
ODDR:Output Double Data Rate(DDR) 。
在介紹ODDR之前,我們先簡單了解一下OLOGIC。
OLOGIC塊在FPGA內的位置緊挨著IOB,其作用是FPGA通過IOB發送數據到器件外部的專用同步塊。OLOGIC 資源的類型有OLOGIC2(位於HP I/O banks)和OLOGIC3(位於HR I/O banks)。
OLOGIC2和OLOGIC3不屬於原語,正因為這樣,所以它們不能被直接例化。它包含在布局布線後用戶可例化的一些元素,例如一個輸出觸發器(OFD–output flip-flop)或者一個ODDR(output DDR element)。
OLOGIC主要由兩個block組成,一個用於配置輸出路徑。另外一個用於配置三態控制路徑。這兩個block具有共同的時鐘,但是具有不同的使能信號OCE和TCE。兩者具有由SRVAL屬性精緻的異步和同步set和reset(S/R信號)。
輸出路徑和三態控制路徑可以 以 下列模式之一獨立配置:
1.邊沿觸發的D觸發器
2.DDR模式(ASAME_EDGE 或 OPPOSITE_EDGE)
3.電平敏感鎖存器
4.異步電路/組合邏輯
OLOGIC block中的各種邏輯資源如下:
Output DDR概述(ODDR)
7系列器件在OLOGIC中有專用寄存器來實現輸出DDR寄存器。這個功能在例化ODDR時可見。在使用OLOGIC時,DDR的復用是自動的,不需要手動控制多路復用。這個控制是從時鐘產生的。
ODDR原語是由一個時鐘輸入,下降沿數據由輸入時鐘的本地反轉來計時。反饋到I/O塊的所有的時鐘被完全復用。例如:在ILOGIC和OLOGIC塊之間沒有時鐘共享。ODDR原語支持OPPOSITE_EDGE 模式、SAME_EDGE模式。
SAME_EDGE模式與Virtex-6架構相同,這個模式允許設計者在ODDR時鐘的上升沿向ODDR原語提供數據輸入,從而節省CLB和時鐘資源,並提高性能。此模式使用DDR_CLK_EDGE屬性實現。它也支持三態控制。
1) OPPOSITE_EDGE 模式
在此模式中,時鐘邊沿被用來以兩倍的吞吐量從FPGA邏輯中捕獲數據。這種結構與virtex-6的實現比較相似。兩個輸出都提供給IOB的數據輸入或者三態控制輸入。使用OPPOSITE_EDGE模式的輸出DDR時序圖如下圖所示:
2)SAME_EDGE 模式
在此模式下,數據可以在相同的時鐘邊沿送給IOB。相同的時鐘沿將數據送給IOB可以避免建立時間違規,並允許用戶使用最小的寄存器來執行更高的DDR頻率來進行寄存器的延遲,而不是使用CLB寄存器。下圖顯示了使用SAME_EDGE模式的輸出DDR的時序圖:
時鐘前向
輸出DDR可以發送時鐘的副本到輸出。這對於傳播時鐘和DDR數據之間相同的延時是非常有用的,並且對於多個時鐘生成,每個時鐘負載具有唯一的時鐘驅動器。這是通過將ODDR原語中D1輸入設置為高,D2輸入設置為低來實現的。Xilinx建議使用此方案將FPGA邏輯時鐘轉發到輸出引腳。
輸出DDR原語(ODDR)
ODDR原語結構圖如下。
表2-10列出了ODDR埠信號。
表2-11描述了各種屬性和ODDR原語的默認值。
ODDR在verilog中的接口例化
ODDR #(
.DDR_CLK_EDGE(「OPPOSITE_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」
) ODDR_inst (
.Q(Q), // 1-bit DDR output
.C(C), // 1-bit clock input
.CE(CE), // 1-bit clock enable input
.D1(D1), // 1-bit data input (positive edge)
.D2(D2), // 1-bit data input (negative edge)
.R(R), // 1-bit reset
.S(S) // 1-bit set
);
// End of ODDR_inst instantiation
注意:
1.Set和Reset不能同時置位。
2.ODDR原語的復位需要約12個clock,第一次輸入的數據可能會有問題(親測)。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴