天天看點

【 FPGA 】時鐘簡介

時鐘,時序邏輯的心跳

在時序邏輯中,正是時鐘信号将各個存儲單元中的資料一級一級地推動下去,如果時鐘信号突然停止,那麼整個時序邏輯也将陷入癱瘓,是以,時鐘就好像時序邏輯的心跳一樣,那麼重要卻又平常的存在着。

幾乎所有的FPGA設計都是時序邏輯,就意味着幾乎所有的FPGA設計都離不開時鐘,時鐘之于時序邏輯,好比空氣之于衆生。是以,要確定FPGA設計成功,就先要確定時鐘信号成功。

如果要評判FPGA實作某一功能的可行性,那麼第一步, 看時鐘,判斷該功能對時鐘信号的要求是否超越了FPGA的能力範圍;如果讓你着手開始一個FPGA設計,第一步,還是先看時鐘,選擇合适的時鐘作為整個項目的支撐。

時鐘信号的基本特征

時鐘信号是具有固定周期的方波。 周期是指一個時鐘邊沿到下一個同類時鐘邊沿之間的時間間隔,最常用的方式是一個上升沿到下一個上升沿之間的時間間隔。 時鐘的頻率等于時鐘周期的倒數。  

【 FPGA 】時鐘簡介

圖1. 數字波形作為時鐘信号的參考,時鐘信号具有固定周期,在資料傳輸過程中用固定的時間間隔來同步數字信号發射器和接收器。

時鐘信号的占空比是波形處于高電平占周期的時間比。 圖2展示了兩個具有不同占空比的波形的差別 您可以發現占空比為30%的波形處于的時間少于占空比為50%的波形。

【 FPGA 】時鐘簡介

                                                                     圖2.信号的占空比是指波形處于的時間百分比。

時鐘信号用于在資料傳輸過程中同步數字信号發射器和接收器。 比如,發射器可以在時鐘信号的每個上升沿發送一個資料位,接收器可使用相同的時鐘讀取資料。 在這種情況下,裝置的确定邊沿是上升沿(從低電平到高電平)。 對于其他裝置則可能是下降沿(從高電平到低電平)。 時鐘的确定邊沿又稱為有效時鐘邊沿。 數字信号發射器在每個有效時鐘邊沿觸發新的資料發送,而接收器則在每個有效時鐘邊沿上進行采樣。 後來的裝置開始同時使用時鐘的上升驗和下降沿;這種裝置被稱為雙倍資料速率傳輸(DDR)裝置。 事實上,資料傳輸對于有效邊沿有短暫的時延;這種延時稱為時鐘到輸出時間。

當接收器依據采集時鐘接收資料時,我們需要注意兩個定時參數,以確定接收資料的可靠性。 建立時間(ts)是指資料連續處于有效邏輯電平且接收器準備好接收輸入信号所需的時間。 保持時間(tH)是指接收器采樣後,資料發生變化前需要保持在原有狀态的時間。 建立時間和保持時間在接收器的時鐘有效邊沿附近形成了一個穩定的視窗,以便接收器能夠可靠地采集資料。 圖3給出了一個上升沿時鐘信号的建立時間和保持時間。 通常,數字信号會在上升軌迹的中間切換電壓;是以時間基準标志通常放置在信号邊沿的正中央。

【 FPGA 】時鐘簡介

圖3.建立時間和保持時間在接收器的時鐘有效邊沿附近形成了一個穩定的視窗,以便接收器能夠可靠地采集資料。

如何區分時鐘和資料?

時鐘信号的本質,是在于其是否為時序邏輯提供“心跳”機制,而不在于其具體的表現形式。

也就是說,如果僅僅觀察信号的數字波形,是無法分辨一個信号到底是時鐘信号還是資料信号的。要想做出準确分辨,必須去檢視該信号在數字電路中的連接配接關系,舉個例子,如果一個信号連接配接到一個寄存器的時鐘端,那麼它就是一個時鐘信号;如果該信号連接配接到一個寄存器的資料輸入端,那麼它就是一個資料信号;如果一個信号連接配接到一個寄存器的時鐘端的同時又連接配接到另一個就餐器的資料輸入端,那麼它就具有了時鐘信号和資料信号的雙重身份。

時鐘信号的分類

1 按來源分

按來源分,時鐘信号可分為内部時鐘和外部時鐘,而内部時鐘又可以分為再生時鐘、門控時鐘、行波時鐘:

(1)外部時鐘

外部時鐘是指時鐘信号的來源是在FPGA晶片的外部。通常來說,外部時鐘源對FPGA設計來說是必需的,因為一般FPGA晶片内部沒有能夠産生供内部邏輯使用的時鐘信号的選頻和激勵電路。是以,需要在FPGA晶片的外部使用晶振以及恰當的電阻、電容、電感、三極管等器件,來搭建用于産生時鐘信号的電路,并将其通過FPGA晶片的恰當實體管腳引入到FPGA内部供時序邏輯使用。

(2)内部時鐘

1)再生時鐘

再生時鐘指的是FPGA内部産生的新時鐘,這個時鐘是以一個輸入的時鐘信号作為參考,然後在此基礎上通過調整其頻率和相位而産生出來的新時鐘。

目前來說,FPGA晶片内部能夠産生再生時鐘信号的子產品有DCM、PLL、MMCM等。

2)門控時鐘

門控時鐘,指的是由組合邏輯産生的時鐘,其中,組合邏輯的輸入可以全部是資料信号,也可以包含原始時鐘信号。由于組合邏輯中的基本單元是與或非等門電路,而與門和非門又具有“開關性”,故該類時鐘又稱為門控時鐘。

通常情況下,不建議使用門控時鐘,因為門控時鐘由組合邏輯産生,那麼它本身就潛伏了組合邏輯的最大隐患——競争和險象,是以門控時鐘信号很容易産生毛刺,而寄存器等存儲單元對時鐘信号的邊沿都非常敏感,是以具有毛刺的時鐘會造成時序邏輯的不穩定。

3)行波時鐘

行波時鐘,是指有時序邏輯産生的時鐘。

通常情況下,也不建議在FPGA的内部引入行波時鐘,因為這樣會在FPGA設計中引入新的時鐘域,增加時序分析的難度,并且由于行波時鐘的相位通常會滞後于原始時鐘,是以後續觸發器的保持時間不一定能夠得到滿足。

事實上,采用行波時鐘的目的無非就是為後續時序電路的處理速度進行降頻,而要實作降頻的功能,除了通過降低時鐘信号的頻率外,仍然可以通過控制後續時序電路存儲單元的使能端來實作。

這樣,整個時序邏輯将隻被一個時鐘信号所驅動,變得清晰又易控。

2 按波形分

時鐘信号按波形分,可以分為連續時鐘,間歇時鐘,不規則時鐘。

(1)連續時鐘

連續時鐘是連續的,周期的,一般FPGA内部的時鐘通常來說都是連續時鐘。

(2)間歇時鐘,時鐘波形存在間斷,時有時無。

間歇時鐘常見于FPGA資料輸入或輸出接口,這是因為有些外圍器件的同步接口不包括使能端,是以在沒有需要傳輸的資料時隻能通過關閉時鐘來暫停通信,這樣也可以在一定程度上減少功耗。

(3)不規則時鐘,無規律可循,沒有固定的周期和頻率,也沒固定的占空比,并且還時有時無。

不規則的時鐘也常見于FPGA的資料輸入或輸出接口,與間歇時鐘産生的原因類似,隻不過間歇式時鐘往往針對成包或成幀傳輸資料的接口,是以每次都會輸出一連串規則的波形信号,而不規則時鐘針對的接口資料量往往比較小,也沒有固定的資料結構,是以有一個資料就會傳輸一個資料。

1、同相位時鐘

同相位時鐘可以頻率不同,但是時鐘跳變沿是對齊的。如圖所示,clk0為慢時鐘,clk1為快時鐘,clk0的時鐘沿始終與clk1的時鐘沿對齊,兩個時鐘相位相同。

2、同源時鐘

同源時鐘,通常由一個PLL或者DLL産生,相位不需要相同,隻要求相位固定。

3、同時鐘域時鐘

 同時鐘域的時鐘既是同源時鐘,還要求相位相同并且頻率相同,通常是同一個PLL産生的頻率相同相位相同的時鐘,PLL能夠保證兩個時鐘在不同的情況下(如溫度不同)的偏差在精度範圍内。從波形上看,同時鐘域兩個時鐘頻率一樣,跳變沿完全對稱。但是從波形上看兩個時鐘頻率一樣,跳變沿完全對稱的不一定是同時鐘域時鐘,如兩個PLL輸出的看似相同的時鐘不是同一個時鐘域的,例如在不同的溫度下,就不能保證兩個時鐘的偏差。

參考文獻:

FPGA之道

數字定時: 時鐘信号、抖動、遲滞和眼圖

同相位時鐘