大家好,又到了每日學習的時候了。今天我們來聊一聊異步電路中的時鐘同步處理方法。
既然說到了時鐘的同步處理,那么什么是時鐘的同步處理?那首先我們就來了解一下。
時鐘是數字電路中所有信號的參考,沒有時鐘或者時鐘信號處理不得當,都會影響系統的性能甚至功能,所以在一般情況下,我們在同一個設計中使用同一個時鐘源,當系統中有多個時鐘時,需要根據不同情況選擇不同的處理方法,將所有的時鐘進行同步處理,下面分幾種情況介紹時鐘的同步處理方法。
******************************************************************************************************************************************************
一、當有多個時鐘在同一個數字電路中,且有一個時鐘(假設為SysClk)的速率大于其它時鐘兩倍以上
這種情況最為簡單,我們在接口部分就必須要對其他時鐘進行同步化處理,將其處理為與SysClk同步的時鐘信號。這樣處理的好處是:
1. 便于處理電路內部時序;
2. 時鐘間邊界條件只在接口部分電路進行處理。
一般的時鐘同步化方法如下圖所示。
實質上,時鐘采樣的同步處理方法就是上升沿提取電路,經過上升沿提取輸出信息中,帶有了系統時鐘的信息,所以有利于保障電路的可靠性和可移植性。
******************************************************************************************************************************************************
二、當系統中所有時鐘沒有一個時鐘速率達到其他時鐘頻率的兩倍的情況,也就是系統中多個時鐘速率差不多的情況
這個時候無法滿足采樣定理,所以在接口部分就必須對其他時鐘和數據通過FIFO進行隔離,并將其他時鐘信息轉換為和系統時鐘同步的允許信號。比如在高速的數據采集系統當中,AD的采集時鐘往往比較高,大于系統時鐘的一半以上,這時候采用同步化處理無法滿足時序設計。
******************************************************************************************************************************************************
三、系統中多個時鐘之間存在數據互相采樣
如下圖所示的情況。clk1和clk2來自不同的時鐘源,該電路即可能出現在同一芯片里,也可能出現在不同的芯片里,但是都存在同樣的危險性。由于時鐘源不同,對于寄存器reg2和reg3來說,在同一時刻,極有可能一個認為reg1輸出為“1”,另一個認為是“0”,必然導致電路結果的錯誤。
對于這種電路,我們必須在reg1之后再添加一個觸發器,用clk2的時鐘沿進行采樣,然后用該觸發器的輸出經過組合邏輯輸出到reg2和reg3當中,如下圖所示。
*************************************************************************************************************************
四、多級時鐘或多級時鐘網絡處理
由于時鐘建立-保持時間的限制,FPGA設計中應盡量避免采用多時鐘網絡,或者盡量減少時鐘的個數,所以在FPGA對ASIC芯片進行驗證的時候,我們必須要將時鐘網絡進行簡化,因為FPGA內部時鐘資源不像ASIC一樣具有很強的穿透性和靈活性。下圖為一個含有危險的多級時鐘的例子,多路選擇器的輸入是clk和clk的2分頻,時鐘由SEL引腳控制的多路選擇器輸出,在這兩個時鐘均為邏輯“1”時,當SEL的狀態改變時,存在靜態冒險競爭現象。
所以為了確保電路的正常工作,需要進行修改,修改之后的電路如下圖所示。
今天就聊到這里,各位,繼續加油!
-
異步電路
+關注
關注
2文章
48瀏覽量
11088
發布評論請先 登錄
相關推薦
評論