如何正確使用FPGA的時鐘資源?

2021-01-08 EDN電子設計技術

把握DCM、PLL、PMCD和MMCM知識是穩健可靠的時鐘設計策略的基礎。efZednc

賽靈思在其FPGA中提供了豐富的時鐘資源,大多數設計人員在他們的FPGA設計中或多或少都會用到。不過對FPGA設計新手來說,什麼時候用DCM、PLL、PMCD和MMCM四大類型中的哪一種,讓他們頗為困惑。賽靈思現有的FPGA中沒有一款同時包含這四種資源(見表1)。efZednc

efZednc

這四大類中的每一種都針對特定的應用。例如,數字時鐘管理器(DCM)適用於實現延遲鎖相環(DLL)、數字頻率綜合器、數字移相器或數字頻譜擴展器。DCM還是鏡像、發送或再緩衝時鐘信號的理想選擇。另一種時鐘資源相位匹配時鐘分頻器(PMCD)可用於實現相位匹配分配時鐘或相位匹配延遲時鐘。efZednc

鎖相環(PLL)和混合模式時鐘管理器(MMCM)處理的工作有許多是相同的,比如頻率綜合、內外部時鐘抖動濾波、時鐘去歪斜等。這兩種資源也可用於鏡像、發送或再緩衝時鐘信號。efZednc

在深思設計實現細節時,把這些通常用法記在心裡,有助於理清時鐘選擇的思路。對於長期產品發展規劃而言,在制定合適的時鐘策略時,應考慮各個器件系列之間的兼容性。下面讓我們深入了解一下這些時鐘資源。efZednc

您可以使用DCM將時鐘源的輸入時鐘信號相乘,生成高頻率時鐘信號。與此類似,可以將來自高頻率時鐘源的輸入時鐘信號相除,生成低頻率時鐘信號。efZednc

數字時鐘管理器

顧名思義,數字時鐘管理器(DCM)是一種用於管理時鐘架構並有助於時鐘信號成形和操控的模塊。DCM內含一個延遲鎖相環(DLL),可根據輸入時鐘信號,去除DCM輸出時鐘信號的歪斜,從而避免時鐘分配延遲。efZednc

DLL 內含一個延遲元件和控制邏輯鏈路。延遲元件的輸出是輸入時鐘延遲所得。延遲時間取決於延遲元件在延遲鏈路中的位置。這種延遲體現為針對原始時鐘的相位改變或相移,這就是所謂的「數字相移」。圖1所示的即為Virtex-4器件中的典型DCM模塊。根據Virtex-4FPGA用戶指南(UG070,2.6 版本)的介紹,Virtex-4中有三種不同的DCM原語。efZednc

efZednc

一般來說,DLL與PLL類似。但與PLL不同的是DLL不含壓控振蕩器(VCO)。PLL會一直存儲相位和頻率信息,而DLL只存儲相位信息。因此,DLL略比PLL穩定。DLL和PLL這兩種類型都可以使用模擬和數位技術設計,或者混合兩種技術設計。但賽靈思器件中的DCM採用全數位化設計。efZednc

由於DCM可以在時鐘路徑上引入延遲,比如您就可使用DCM可以精確地為DRAM生成行和列訪問選通信號的時序。與此類似,數據總線上的各個數據位可以在不同的時間到達。為了正確對數據位採樣,接收端的時鐘信號必須適當地與所有數據位的到達保持同步。如果接收器使用發射時鐘,可能會要求延遲從發送端到接收端的時鐘信號。efZednc

有時設計可能需要一個更高的時鐘頻率來運行FPGA上的邏輯。但是,只有低頻率輸出的時鐘源可以用。此時可以使用DCM將時鐘源的輸入時鐘信號相乘,生成高頻率時鐘信號。與此類似,可以將來自高頻率時鐘源的輸入時鐘信號相除,生成低頻率時鐘信號。這種技術稱為「數字頻率綜合」。efZednc

設計人員使用擴頻時鐘並通過調製時鐘信號來降低時鐘信號的峰值電磁輻射。未經調製的時鐘信號的峰值會產生高電磁輻射。但經調製後,電磁輻射被擴展到一系列時鐘頻率上,從而降低了所有頻點的輻射。一般來說,如果需要滿足一定的最大電磁輻射要求和在FPGA上執行高速處理的時候(比如說通信系統中接收器使用的解串器),就需要使用擴頻時鐘。因此,FPGA中的DCM將乘以輸入擴頻時鐘信號,在內部生成高頻時鐘信號。 DCM的輸出必須準確地跟隨擴頻時鐘,以保持相位和頻率對齊並更新去歪斜和相移。DCM相位和頻率對齊的惡化會降低接收器的歪斜裕量。efZednc

建立時鐘的鏡像需要將時鐘信號送出FPGA器件,然後又將它接收回來。可以使用這種方法為多種器件的板級時鐘信號去歪斜。DCM能夠把時鐘信號從FPGA發送到另一個器件。這是因為FPGA的輸入時鐘信號不能直接路由到輸出引腳,沒有這樣的路由路徑可用。如果僅需要發送時鐘信號,那麼使用DCM將時鐘信號發送到輸出引腳,可以確保信號的保真度。另外也可選擇在時鐘信號發送之前,將DCM輸出連接到ODDR觸發器。當然也可以選擇不使用DCM,僅使用ODDR 來發送時鐘信號。往往時鐘驅動器需要將時鐘信號驅動到設計的多個組件。這會增大時鐘驅動器的負荷,導致出現時鐘歪斜及其它問題。在這種情況下,需要採用時鐘緩衝來平衡負載。efZednc

時鐘可以連接到FPGA上的一系列邏輯塊上。為確保時鐘信號在遠離時鐘源的寄存器上有合適的上升和下降時間(從而將輸入輸出時延控制在允許的範圍內),需要在時鐘驅動器和負載之間插入時鐘緩衝器。DCM可用作時鐘輸入引腳和邏輯塊之間的時鐘緩衝器。efZednc

最後,還可以使用DCM將輸入時鐘信號轉換為差分I/O標準信號。例如,DCM可以將輸入的LVTTL時鐘信號轉換為LVDS時鐘信號發送出去。efZednc

相位匹配時鐘分頻器

設計人員可使用相位匹配時鐘分頻器(PMCD)來生成相位匹配的分頻輸入時鐘信號。這與分頻時鐘的DCM頻率綜合相似。PMCD還能生成設計中相位匹配但有延遲的時鐘信號。在後一種情況下,PCMD能夠在輸入時鐘信號和其它PMCD輸入時鐘信號之間保持邊緣對齊、相位關係和歪斜。與DCM不同的是,在分頻器的值可配置的情況下,賽靈思器件中現有的PMCD生成的時鐘信號僅按2、4和8分頻。這意味著PMCD生成的時鐘信號的頻率是輸入時鐘信號的1/2、1/4和1/8。在如Virtex-4FPGA這樣的賽靈思器件中,PMCD緊鄰 DCM並與其位於同一列上。每一列有兩個PMCD-DCM對。因此DCM的輸出可以驅動PMCD的輸入。efZednc

由於DCM還負責處理去歪斜,因此只要不需要去歪斜時鐘,設計人員就可以使用不帶DCM的PMCD。通過專用引腳,還可以把一列中的兩個PMCD連接起來。圖2是 Virtex-4器件中的PMCD原語。詳細內容請參閱Virtex-4FPGA用戶指南(UG070,2.6版本)。efZednc

efZednc

混合模式時鐘管理器

另一種類型的時鐘資源——混合模式時鐘管理器(MMCM),用於在與給定輸入時鐘有設定的相位和頻率關係的情況下,生成不同的時鐘信號。不過與DCM不同是,MMCM使用PLL來完成這一工作。Virtex-6FPGA中的時鐘管理模塊(CMT)有兩個MMCM,而Virtex-7中的CMT有一個 MMCM和一個PLL。Virtex-6器件中的MMCM沒有擴頻功能,因此輸入時鐘信號上的擴頻不會被濾波,將直接被傳送給MMCM輸出時鐘。但 Virtex-7FPGA的MMCM卻有擴頻功能。efZednc

Virtex-6FPGA中的MMCM要求插入一個校準電路,以便在用戶復位或用戶斷電後確保MMCM正確運行。賽靈思ISE設計套件11.5版本及更高版本能夠在設計的MAP階段自動插入必要的校準電路。若使用賽靈思ISE 的更早版本,則需要使用賽靈思技術支持部提供的設計文件手動插入校準電路。最後需要注意的是,在本移植該設計,以便用ISE11.5版本或更高版本實現時,必須手動移除校準電路,或通過適當設置每個MMCM上的綜合屬性,禁用自動插入功能。詳細介紹請參閱賽靈思答覆記錄AR#33849。efZednc

對7系列器件中的MMCM就不存在這樣的問題,因為這些FPGA只得到ISE13.1版本和更高版本以及新型Vivado設計套件的支持。Virtex-6系列中提供的MMCM間專用走線可便於用戶將全局時鐘資源用於設計的其餘部分。efZednc

圖3顯示了Virtex-6FPGA中的MMCM原語。各個埠的詳細介紹請參閱Virtex-6FPGA時鐘資源用戶指南(UG362,2.1版本)。圖 4顯示了賽靈思7系列FPGA中的MMCM原語,有關詳細介紹請參閱7系列FPGA時鐘資源用戶指南(UG472,1.5版本)。efZednc

efZednc

efZednc

鎖相環

設計人員使用鎖相環(PLL)主要用於頻率綜合。使用一個PLL可以從一個輸入時鐘信號生成多個時鐘信號。結合DCM使用,還可以用作抖動濾波器。Spartan-6、Virtex-5和7系列FPGA中都提供有PLL。Spartan-6和 Virtex-5中均有專門的「DCM到PLL」和「PLL到DCM」走線。Spartan-6和Virtex-5中的PLL輸出是非擴頻的。對這兩種器件而言,如果設計使用多個不同時鐘,都可以用PLL替代DCM。PLL時鐘輸出具有寬範的配置範圍,而DCM的輸出是預定的,不可配置。PLL和DCM的選擇還是取決於設計的要求。不過如果相移是必需的,就應該明確地選擇DCM。efZednc

同時,7系列器件中的PLL所實現的功能沒有 MMCM所實現的多。因此雖然MMCM是建立在PLL架構之上,但7系列器件中也有獨立的PLL。圖5顯示了Virtex-5FPGA中的PLL原語。各個埠的詳細介紹請參閱Virtex-5用戶指南(UG190,5.4版本)。efZednc

efZednc

設計移植

掌握四種主要的時鐘資源之間的差異及其在不同器件系列中的可用性非常重要。同時,在不同的系列中,相似的資源(比如DCM)可能在功能上並不完全相同。例如,Spartan-6FPGA中的DCM支持擴頻時鐘,但Virtex-5和Virtex-5器件中的DCM就不支持。efZednc

在規劃未來設計向更高端系列移植時,除了確保功能,為給定設計選擇正確的時鐘資源也很重要。如表1所示,Virtex-6和7系列中的MMCM能夠與之前系列中的DCM向後兼容。但需要判斷在多大程度上支持向後兼容性,因為所有這些時鐘資源都具有多功能性,提供與時鐘相關的多種不同功能。在制定產品長期發展規劃時,必須對兼容性了如指掌。efZednc

(作者:Sharad Sinha,南洋理工大學)efZednc

efZednc

相關焦點

  • FPGA quartus ii裡的靜態時序分析
    最大延遲是防止數據來的太慢 ,當時鐘沿已經到來時,數據還沒到,這樣就不能在上升沿被寄存器正確採樣。     4、Data Required Time 數據需求時間-Hold 指數據在時鐘鎖存沿到達後,必須保持一段穩定的時間,使數據被正確採樣。
  • 手把手課堂:Xilinx FPGA設計時序約束指南
    作為賽靈思用戶論壇的定期訪客,我注意到新用戶往往對時序收斂以及如何使用時序約束來達到時序收斂感到困惑。為幫助 FPGA設計新手實現時序收斂,讓我們來深入了解時序約束以及如何利用時序約束實現FPGA 設計的最優結果。
  • 基於SoC+FPGA平臺快速動態加載驅動開發及實現
    OMAP-L138的特點[1]如下:  (1)內部集成RISC MPU,即主頻為375/456MHz的ARM926EJ-S,以及定/浮點兼容的VLIW DSP,即主頻為375/456MHz 的C674x,可滿足系統的非實時、多任務及實時、高強度數據處理的應用需求;  (2)強大豐富的外設資源。
  • 在使用CNN算法的雲數據中心,Altera FPGA實現的加速功能具有優異的...
    Altera計算和存儲業務部總監Michael Strickland說:「FPGA在神經算法上有體系結構方面的優勢,能夠非常高效的進行卷積和匯集,其靈活的數據通路支持大量的OpenCL內核直接互相傳送數據,而不需要使用外部存儲器。Arria 10在體系結構上還有更多的優勢,乘法和加法都支持硬核浮點——這種硬核浮點功能在邏輯數量和時鐘速度上要優於傳統的FPGA產品。」
  • 關於Xilinx FPGA如何獲取FPGA的Device DNA
    FPGA的DNA我們一般的使用場景是用於用戶邏輯加密。 如何獲取FPGA的Device DNA呢,下面我從JTAG和調用源語兩個方法說明,並開放核心代碼供大家參考。REGISTER下可以找到Device DNA,在Impact下如何獲取DNA網上有相應的文章,這裡就不做進一步介紹。
  • 學的FPGA如何轉行做ASIC?9年老工程師的肺腑之言
    pi6ednc第一個,9年的fpga,說起來,給我感覺fpga寫代碼牛逼的人,都是寫著看不懂的代碼。基本上的代碼都是小邏輯做的。大邏輯做的都是沙雕。pi6ednc第二個,知道各類高速接口,做fpga只會玩玩串口,I2C,SPI還有DVI,這種低能兒工資也就是低於幾千塊錢。
  • FPGA系統設計的仿真驗證之: ModelSim的仿真流程
    7.3.2 使用ModelSim進行功能仿真  使用ModelSim對設計的HDL程序進行仿真分為功能仿真和時序仿真兩種。本節將以一個具體的實例講解如何使用ModelSim對HDL工程進行功能仿真。時序仿真的具體內容將在7.4節具體介紹。  這裡我們使用的例子是一個分頻電路的設計。所謂分頻電路是將較高頻率的時鐘分頻,得到較低頻率的時鐘。
  • 9年FPGA工作經驗,轉行了,苦海無涯……
    第一個,9年的fpga,說起來,給我感覺fpga寫代碼牛逼的人,都是寫著看不懂的代碼。 基本上的代碼都是小邏輯做的。大邏輯做的都是沙雕。 第三個,知道時序約束,fpga很傻的元件,你經常發現,他自己不知道哪個是時鐘,要求跑多少。 還有各類並行總線,要求相位抖動控制多少。還有不同時鐘不要去約束。
  • FPGA異步時鐘域怎麼同步,教你幾招!(附10+FPGA經典必讀書籍)
    對於使用上升沿觸發的觸發器來說,建立時間就是在時鐘上升沿到來之前,觸發器數據端數據保持穩定的最小時間。而保持時間是時鐘上升沿到來之後,觸發器數據端數據還應該繼續保持穩定的最小時間。我們把這段時間成為setup-hold時間(如圖1所示)。在這個時間參數內,輸入信號在時鐘的上升沿是不允許發生變化的。如果輸入信號在這段時間內發生了變化,輸出結果將是不可知的,即亞穩態 (Metastability)。
  • 「每周FPGA案例」 斷電重加載時鐘工程
    如果兩組數據的CRC檢驗均失敗,則不重新加載;如果有一組數據CRC檢驗失敗,則加載正確的一組數據;如果兩組數據CRC檢驗均正確,則加載數值較大的一組數據。包括:1、 按數字時鐘方式進行計數2、 設置數字時鐘的值3、 將時鐘數據輸出給外部模塊使用4、 從數據處理模塊得到時鐘數據,並重新加載數碼管顯示模塊實現功能1、 對時鐘數據進行解碼,然後發到數碼管顯示2、 逐一顯示時分秒的值數據處理模塊實現功能
  • LabVIEW FPGA模塊在時鐘電路的運用
    > 如要使用數據流模型執行代碼,LabVIEW將同步FPGA上的邏輯。如兩個寄存器間的傳播延時大於FPGA時鐘速率,FPGA編譯器將返回定時錯誤。該定時錯誤稱為時間限制或周期限制衝突。 註: 給定函數的邏輯延時隨終端變化。連線延時在每次FPGA VI編譯時均發生變化。 LabVIEW FPGA模塊專用於生成可在單周期定時循環外部以至少40 MHz的時鐘速率運行的電路。40 MHz時鐘速率對應的是25 ns的時鐘周期。
  • 【從零開始走進FPGA】 SignalTap II Logic Analyzer
    其實這個說法不是完全正確的。別忘了,還有SignalTap II Logic Analyzer。有了這個嵌入式邏輯分析儀,在調試多通道或單通道數據,進行數據採樣、監控等操作時,給我們帶來了很大的方便,因此,FPGA的學習中,利用JTAG來調試SiganlTap II將會有很大的幫助。
  • FPGA異步時鐘設計中的同步策略
    但是實際的工程中,純粹單時鐘系統設計的情況很少,特別是設計模塊與外圍晶片的通信中,跨時鐘域的情況經常不可避免。如果對跨時鐘域帶來的亞穩態、採樣丟失、潛在邏輯錯誤等等一系列問題處理不當,將導致系統無法運行。本文總結出了幾種同步策略來解決跨時鐘域問題。
  • 「正點原子FPGA連載」第八章Linux基礎外設的使用
    第八章Linux基礎外設的使用通過對Petalinux和XSDK的學習我們了解了如何使用Petalinux定製Linux和如何使用XSDK開發Linux應用。本章我們學習如何通過Linux系統控制領航者開發板上的基礎外設,如LED、EEPROM等。這些外設都可以在終端通過Shell來控制,非常方便。8.1GPIO之LED的使用GPIO驅動程序通過sysfs文件系統提供了用戶空間對GPIO的訪問,因而通過終端控制LED極其方便。
  • 如何使用Arduino和LED矩陣構建簡單的二進位時鐘
    打開APP 如何使用Arduino和LED矩陣構建簡單的二進位時鐘 發表於 2019-07-25 18:51:05 在這個初學者項目中
  • FPGA 101:如何在Zynq SoC上使用中斷
    處理器執行中斷服務例程,其中定義了如何處理中斷;5. 在處理器從協議棧恢復之前,被中斷的線程繼續運行;中斷屬於異步事件,因此可能同時發生多個中斷。為了解決這一問題,處理器會對中斷進行優先級排序,從而首先服務於優先級別最高的中斷掛起。為了正確實現這一中斷結構,需要編寫兩個函數:一是中斷服務例程,用於定義中斷發生時的應對措施;二是用於配置中斷的中斷設置。
  • 一種節能型可升級異步FIFO的FPGA實現
    異步FIFO主要應用於兩種不同時鐘域的數據傳輸,這意味著數據的寫入在一個時鐘域,而數據的讀出卻在另一個時鐘域,兩個時鐘完全異步[1]。現代通信系統中,特別是在移動通信系統中,人們對於節能型的產品提出了更高的要求。
  • 正確理解時鐘器件的抖動性能
    但不同的時鐘器件,對抖動的描述不盡相同,如不帶鎖相環的時鐘驅動器有附加抖動指標要求,而帶鎖相環實現零延時的時鐘驅動器則有周期抖動和周期間抖動指。同時,不同廠家對相關時鐘器件的抖動指標定義條件也不一樣,如在時鐘合成器條件下測試,還是在抖動濾除條件下測試等。
  • 高雲半導體FPGA系列面世 為國產FPGA注入活力
    朝雲™產品系列提供了豐富的片上資源及靈活的操作模式:多達5兆位的存貯器塊能夠提供多種模式、多種深寬度配置及單雙埠的讀寫操作;80個18X18的DSP模塊,可進行高速的加法、減法、乘法及累積算法;498個數字單端輸入輸出,可支持從1.2V到3.3V的輸出電壓,驅動電流可配置,多種廣泛應用的輸入輸出協議如LVTTL、LVCOMS、PCI、HSTL、SSTL、RSDS、LVDS等;8個通用鎖相環工作範圍從
  • FPGA設計開發軟體ISE使用技巧之:創建設計工程
    6.4 創建設計工程本文引用地址:http://www.eepw.com.cn/article/269335.htm  本節將重點講述如何在ISE下創建一個新的工程。要完成一個設計,第一步要做的就是新建一個工程。