邏輯設計方法學 7 跨時鐘域

2021-08-11 02:54:05 字數 4182 閱讀 4901

如果多個時鐘都起源於同一時鐘,並且它們的香味和頻率關係是已知的,那麼這些時鐘可以看成是跨同步時鐘域的時鐘。按照相位和頻率的關係,可以將這些時鐘分成以下型別:

假定兩個時鐘之間的相位和時鐘抖動相同,並假定他們之間的路徑已經按同樣的時鐘延遲和偏移引數進行了平衡。除此之外,還假設這兩個時鐘起始處的相位差為零,並且觸發器的「時鐘到q端」的延時也為0.

這種情況下,兩個時鐘其實屬於完全相同的時鐘,並且這兩個時鐘雖然在概念上(不考慮各種偏移)是不同的時鐘,但是在實際的工作中,沒有偏移是不存在的,延時完全相同也是很難達到的。所以實際上我們可以認為這兩個時鐘屬於完全相同的時鐘。那麼,訊號在跨越這兩個時鐘的時候就不屬於跨時鐘域。也就不需要在此進行詳細分析了。

這些時鐘有相同的時鐘週期,但是相位差恆定。最常見的例子是對乙個時鐘訊號取反使用。同樣,如果乙個時鐘相對於其上級時鐘發生了相位移動,以下的分析中假設時鐘的移動為t/4.如圖1所示,時鐘clk1和clk2的頻率相同,但在圖1中clk1相對於clk2相位前移了3t/4個單位時間。

圖 1 頻率相同相位不同的時鐘

一般會在sta中建立這種情況以保證滿足時序要求。如果組合邏輯有更多的延時,通過在發射邊沿和捕獲邊沿加入偏移(例如,使時序有相同頻率和不同相位),會有助於滿足時序的要求。

針對圖1的情況,如果在clk1和clk2跨時鐘域的時候有組合邏輯帶來更多的延時,可以將clk1的訊號多延時乙個clk1時鐘節拍,以保證在clk2的時候能夠滿足建立時間,因為clk1和clk2具有相同的頻率,所以當clk2中的訊號滿足建立時間要求,因為它本身滿足clk1的保持時間,所以在clk2中也同樣會滿足保持時間。

這類時鐘具有不同的頻率,而且相位差也是可變的。可以將這類時鐘分成兩個子類,第一子類中各時鐘週期之間是整數倍的關係,第二子類中各時鐘週期是非整數倍(有理數倍)的關係。不論是哪一子類,各時鐘有效沿的相位差都是可變的。下面將詳細介紹這兩種情況。

在這種情況下,乙個時鐘的頻率是另乙個時鐘的整數倍,並且他們有效邊沿的相位差是可變的(這個是一定的)。這兩個時鐘的有效邊沿之間可能的最小相位差始終等於其中較快的那個時鐘的時鐘週期(請注意這個條件,我們可以認為是起始時間相同,起始位置相同)。

在圖2中,時鐘clk1的頻率是時鐘clk2的三倍,假定t是時鐘clk1的時鐘週期,時鐘clk2可以用來捕獲資料的時間可能是t、2t、3t。這取決於資料在時鐘clk1的那個邊沿發出。因此,任意路徑的最差延遲都應在時鐘邊沿相位差為t時滿足建立時間要求。最差保持時間檢查應當在時鐘邊沿相位差為0時進行。

圖 2 整數倍頻率關係

在以上所有情況下,都有較快時鐘的乙個完整的週期用來傳輸資料,以使其能正確地捕捉,所以它通常都可以保證滿足建立時間和保持時間的要求。因此,就不存在亞穩態或資料不一致的問題,也就不必使用同步器了。這是因為訊號在clk1的時候肯定能滿足建立時間和保持時間,當訊號從clk1到clk2的時候,無論建立時間還是保持時間在最壞的情況下,都不會影響clk1的時鐘穩定性,所以,在clk2情況下,也不會發生建立保持時間違例。

既然在這裡資料由較快時鐘發出,並由較慢時鐘捕獲,那麼會帶來什麼問題呢?通過圖2可以清楚地看出來,如果訊號在clk1下每個時鐘節拍都改變一次,那麼clk2在取樣資料的時候就有可能會丟失一部分資料。為了避免資料的丟失,源時鐘下的訊號應該至少保持乙個目的時鐘的週期,以保證訊號能被目的時鐘取樣。實現方法可以使用乙個簡單的狀態機來實現,這個相對比較簡單,在此不再討論。

同樣地,如果clk2的時鐘頻率是clk1頻率的三倍,這種情況下,因為這兩個時鐘屬於同一pll或者dcm出來的時鐘,所以與上面的分析方法一樣,也不需要同步器,因為不會發生建立時間和保持時間違例。那麼這樣的時鐘關係在訊號傳輸的過程中會有什麼問題呢?我們需要十分關注clk2會多取樣資料,同樣可以使用狀態機來實現。

這種情況指乙個時鐘的頻率是另乙個時鐘的非整數倍而且他們有效邊沿的相位差是可變的。這與3.1節中所提到的情況不同,因為頻率的非整數倍關係,就可以導致在傳輸的過程中,兩個時鐘之間在某乙個時間階段有最小的相位差,這個相位差很有可能會導致亞穩態的產生。至於亞穩態是否一定會發生呢,這取決於兩個時鐘實際的關係,以及晶元的設計工藝。下面詳細介紹三種不同的情況。

在第一種情況下,在源時鐘有效沿和目的時鐘有效沿之間有足夠大的相位差,所以不會有亞穩態產生

在第二種情況下,源時鐘和目的時鐘有效沿非常接近,導致產生亞穩態問題。然而,在這裡時鐘頻率倍數關係需要滿足以下條件,即一旦有時鐘邊沿接近出現,下乙個時鐘週期就會留出足夠大的時間冗餘,使得資料的捕獲不會出現違背建立時間或保持時間的要求。(我們認為設計者有辦法避免在這個比較接近的邊沿下,目的時鐘不進行資料取樣,這麼做也是安全的設計)

在第三種情況下,兩個時鐘的時鐘沿在許多連續的週期中都非常接近,這與非同步時鐘的行為很相似,但因為這兩個時鐘的源頭是相似的,所以他們之間的相位差是可以計算出來的,會產生亞穩態

在下面的所有例子中,會使用某些延遲值,假設時鐘邊沿之間的相位冗餘在小於或等於1.5ns時會產生亞穩態。這裡的1.5ns並不只是乙個比喻,在實際設計中與所用技術、觸發器特性等許多因素相關。

例子1

在這種情況下,兩個時鐘的有效沿永遠不會過於接近,從而可以保留足夠的冗餘來滿足電路對建立時間和保持時間的要求。

假設兩個時鐘clk1和clk2分別是對同乙個時鐘clk的3分頻和2分頻。那麼clk1比clk2慢1.5倍。如圖3所示,clk1的週期是15ns,clk2的週期是10ns.這兩個石中劍的最小相位差是2.5ns,這對於滿足建立時間和保持時間已經足夠了。

圖 3 兩個時鐘沿距離較遠可以避免亞穩態

然而,由於該相位差很小,應該避免在跨越兩個時鐘的位置使用任何組合邏輯。對於增加的任何組合邏輯,必須滿足建立和保持時間的要求以避免亞穩態,因此必須使用同步器。同樣,在快時鐘域向慢時鐘域傳遞的時候,有可能發生資料丟失的情況;從慢時鐘域到快時鐘域的傳輸中,會發生多取樣的情況,所以在邏輯設計的時候一定要保證資料取樣的正確性。

例子2

在這種情況下,兩個時鐘的有效沿可能間隔性地非常接近。即每隔一段時間就會出現兩個時鐘的有效沿緊挨著,接下來的一些週期內,兩個時鐘沿會保留足夠的裕量。兩個有效沿非常接近已經使電路有產生亞穩態的風險。在下圖4中,時鐘clk1和clk2的週期分別為10 ns和7 ns.它們之間的最小相位差是0.5 ns,這個遠小於1.5ns,所以會出現亞穩態。

圖 4 間歇性聚集的時鐘沿

例子3

在這種情況下,石中劍的相位差以很小,並能連續存在幾個週期。除了變化的相位差異和週期性的重複現象,其餘都與非同步時鐘很相似。在圖5中,時鐘clk1和clk2的週期分別為10ns和9ns.可以看出兩個時鐘的有效時鐘沿很接近,並持續4個連續的週期。在前兩個週期中可能會違背建立時間(源時鐘在目的時鐘之前),而在後兩個時鐘週期中可能會違背保持時間(目的時鐘在源時鐘之前)。

圖 5 連續聚集的幾個週期的時鐘沿

在這種情況下,將會出現亞穩態問題,因此需要進行同步。除了亞穩態問題,資料從慢時鐘域傳遞到快時鐘域時也可能丟失。為了不丟失資料,資料需要保持穩定至少兩個目的的時鐘週期。這既是用於從快到慢的傳輸,也是用於從慢到快的傳輸。可以通過使用簡單的fsm對原資料產生進行控制完成這一任務,但資料不連貫的問題可能依然會存在。

總結

參考文獻

[1] mohit arora.硬體架構的藝術.機械工業出版社. 57-63

邏輯設計方法學 5 控制時鐘偏移

整個晶元中時鐘訊號到達時間的差異成為時鐘偏移,即clock skew。在時序設計的時候,滿足暫存器的建立時間和保持時間的要求是最基本的設計原則。在相鄰的暫存器之間的資料傳輸延遲,與時鐘偏移應該滿足一定的關係,在本節中,我們來詳細地討論其關係。通過圖1來看相鄰暫存器之間傳輸的時候的資料延遲和時鐘偏移,...

邏輯設計方法學 6 多時鐘設計技術

在進行乙個含多個時鐘的設計時,在 和綜合過程中需要遵循一定的準則,這樣會帶來很大的好處。通用的準則如下 xilinx的開發工具vivado有 project mode 和 non project mode 在 non project mode 中,我們經常使用指令碼進行開發。同樣在 的時候,也會編寫...

邏輯設計方法學 3 門控時鐘

對於每乙個暫存器,都需要有時鐘輸入端,如果在一些對設計功耗要求比較高的地方,保持設計準確後的功耗控制便是頭等大事。為了分析如何減少功耗,首先要來分析功耗主要由哪些部分組成。在絕大多數的設計中,功耗主要由三部分組成 在每個時鐘沿變化的組合邏輯所產生的功耗 由於觸發器驅動這些組合邏輯 由觸發器產生的功耗...