天天看點

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

部落客福利:100G+電子設計學習資源包!

​​http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect​​ --------------------------------------------------------------------------------------------------------------------------

賽靈思在其FPGA中提供了豐富的時鐘資源,大多數設計人員在他們的FPGA設計中或多或少都會用到。不過對FPGA設計新手來說,什麼時候用DCM、PLL、PMCD和MMCM四大類型中的哪一種,讓他們頗為困惑。本文為您解惑......

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

這四大類中的每一種都針對特定的應用。例如,數字時鐘管理器(DCM)适用于實作延遲鎖相環(DLL)、數字頻率綜合器、數字移相器或數字頻譜擴充器。 DCM還是鏡像、發送或再緩沖時鐘信号的理想選擇。另一種時鐘資源相位比對時鐘分頻器(PMCD)可用于實作相位比對配置設定時鐘或相位比對延遲時鐘。

​​

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

​​

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

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

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

數字時鐘管理器

顧名思義,數字時鐘管理器(DCM)是一種用于管理時鐘架構并有助于時鐘信号成形和操控的子產品。DCM内含一個延遲鎖相環(DLL),可根據輸入時鐘信号,去除DCM輸出時鐘信号的歪斜,進而避免時鐘配置設定延遲。

  

DLL 内含一個延遲元件和控制邏輯鍊路。延遲元件的輸出是輸入時鐘延遲所得。延遲時間取決于延遲元件在延遲鍊路中的位置。這種延遲展現為針對原始時鐘的相位改變或相移,這就是所謂的“數字相移”。圖1所示的即為Virtex-4器件中的典型DCM子產品。根據Virtex-4FPGA使用者指南(UG070,2.6 版本)的介紹,Virtex-4中有三種不同的DCM原語。

  ​​

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

​​

  

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

  

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

  

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

  

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

  

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

  

時鐘可以連接配接到FPGA上的一系列邏輯塊上。為確定時鐘信号在遠離時鐘源的寄存器上有合适的上升和下降時間(進而将輸入輸出時延控制在允許的範圍内),需要在時鐘驅動器和負載之間插入時鐘緩沖器。DCM可用作時鐘輸入引腳和邏輯塊之間的時鐘緩沖器。

  

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

相位比對時鐘分頻器

設計人員可使用相位比對時鐘分頻器(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的輸入。

  

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

  ​​

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

​​

混合模式時鐘管理器

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

  

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

  

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

  

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

  ​​

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

​​

  ​​

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

​​

鎖相環

設計人員使用鎖相環(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。

  

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

  ​​

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

​​

設計移植

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