《FPGA入門教程》看書隨筆——數位電路設計入門
阿新 • • 發佈:2019-01-03
5、競爭與冒險
競爭:當一個邏輯閘的輸入有兩個或兩個以上的變數發生改變時,由於這些變數時經過不同路徑產生的,是它們狀態改變的時刻有先有後,這種時差引起的現象稱為競爭(Race),
競爭的結果將很可能導致冒險(Hazard)發生(例如產生毛刺)。
組合邏輯電路的冒險僅在訊號狀態改變的時刻出現毛刺,這種冒險是過渡性的,它不會是狀態值偏離正常值。但在時序電路中,冒險是本質的,可導致電路輸出值永遠偏離正常值或發生震盪。
避免冒險的最簡單的方法是同一時刻只允許單個輸入變數發生變化,或使用暫存器取樣的辦法。
6、毛刺的產生
訊號在器件中傳輸的時候,所需要的時間是不能精確估計的,當多路訊號同時發生跳變的瞬間,就產生了“競爭冒險”。
這是,往往會出現一些不確定的尖峰訊號,即“毛刺”。
7、毛刺的危害:
毛刺是數位電路設計中的棘手問題,它的出現會影響電路工作的穩定性、可靠性,嚴重 時會導致整個數字系統的誤動作和邏輯紊亂。
8、毛刺的消除
(1)輸出加D觸發器
原理是用一個D觸發器去讀帶毛刺的訊號,利用D觸發器對輸入訊號的毛刺不敏感的特點,去除訊號中的毛刺。
(2)訊號同步法
設計數位電路的時候採用同步電路可以大大減少毛刺。做到真正的“同步”就是去除毛刺訊號的關鍵問題。所以同步的關鍵就是保證在時鐘的跳變沿讀取的資料時穩定的資料胃不是毛刺的資料。以下為兩種具體的訊號同步方法:
1)訊號延時同步法
原理就是在兩級訊號傳遞的過程中加一個延時環節,從而保證在下一 個模組中讀取到的資料是穩定後的資料,即不包含毛刺訊號
2)狀態機控制
由狀態機在特定的時刻分別發出控制特定模組的時鐘訊號或者模組使能訊號,狀態機的迴圈控制就可以使得整個系統協調運作,同時減少毛刺訊號。
(3)格雷碼計數器
格雷碼計數器的輸出每次只有一位跳變
9、同步電路設計 同步電路設計是指所有電路在同一個公共時鐘的上升沿或下降沿的觸發下同步的工作。 同步電路的設計準則: (1)儘可能在設計中使用同一時鐘,時鐘走全域性時鐘網路。走全域性時鐘網路的時鐘是最簡單、最可預測的時鐘,並保證Clocke skew可以小到忽略的地步 (2)避免使用混合時鐘沿取樣資料。 (3)儘量少在模組內部使用計數器分頻所產生的時鐘。計數器分頻時鐘需完成的邏輯 功能完全可由PLL鎖相環或時鐘使能電路替代。計數器分頻時鐘的缺點 是使得系統內時鐘 不可控,併產生較大的Clock skew,還使靜態時序分析變得複雜。
(4)避免使用門控時鐘。因為經組合邏輯產生的門控時鐘極可能產生毛刺,且組合邏輯電路的Jitter和Skew比較大。
(5)當整個電路需要多個時鐘來實現,則可以將整個電路分成若干區域性同步電路(儘可能以同一個時鐘為一個模組),區域性同步電路之間介面當作非同步介面考慮,而且每個時鐘信 號的時鐘偏差(△T)要嚴格控制。
(6)電路的實際最高工作頻率不應大於理論最高工作頻率,留有設計餘量,保證晶片 可靠工作。
(7)電路中所有暫存器、狀態機在系統被reset復位時應處在一個已知的狀態。
10、時鐘的設計討論
時鐘型別包括: 全域性時鐘、內部邏輯時鐘和門控時鐘。
(1)全域性時鐘
全域性時鐘即同步時鐘 ,它通過 FPGA 晶片內的全域性時鐘佈線網路或區域時鐘網路來驅 動。
全域性時鐘的設計方法:
1)由PLL鎖相環來產生全域性時鐘。
2)將FPGA晶片內部邏輯產生的時鐘分配至全域性時鐘佈線邏輯
3)將外部時鐘通過專用的全域性時鐘輸入引腳引入FPGA。
(2)內部邏輯時鐘(嚴格禁用)
內部邏輯時鐘即指由晶片每部的組合邏輯或計數器分頻產生的時鐘。
(3)門控時鐘(避免使用)
門控時鐘最好只在頂層模組中出現,並將其分離到一個在頂層的獨立模組中。
推薦的門控時鐘設計如下,該設計一般不會產生毛刺和亞穩態的問題。
11、亞穩態
在同步電路或非同步電路中,如果觸發器的setup 時間或hold 時間不能得到滿足,就可 能產生亞穩態。此時觸發器輸出端Q在有效時鐘沿之後比較長的一段時間處於不確定的狀 態,在這段時間裡Q端將會產生毛刺並不斷振盪、最終固定在某一電壓值上,此電壓值並 不一定等於原來資料輸入端D 的值。這段時間稱為決斷時間
(resolution time)。經過決斷 時間之後,Q端將穩定到0或 1上,但是究竟是0還是1, 這是隨機的,與輸入沒有必然 的關係。
亞穩態的危害:
(1)導致邏輯誤判
(2)導致亞穩態的傳播(嚴重情況下輸出0~1之間的中間電壓值還會使下一級 產生亞穩態)
12、對跨時域資料的處理
核心就是要保證下級時鐘對上級資料取樣的setup時間或hold時間滿足要求,即儘量避免亞穩態的發生和傳播。但是,只要系統中有非同步元件,亞穩態就無法避免。推薦下面的方法來解決非同步時鐘域資料同步問題:
(1)用觸發器打兩拍
(2)非同步FIFO或DPRAM 因為非同步FIFO或DPRAM使用格雷碼計數器設計讀寫地址的指標,所以它可以很 好地避免亞穩態的發生。 (3)調整時鐘相位(難度大,適用面有限)
9、同步電路設計 同步電路設計是指所有電路在同一個公共時鐘的上升沿或下降沿的觸發下同步的工作。 同步電路的設計準則: (1)儘可能在設計中使用同一時鐘,時鐘走全域性時鐘網路。走全域性時鐘網路的時鐘是最簡單、最可預測的時鐘,並保證Clocke skew可以小到忽略的地步 (2)避免使用混合時鐘沿取樣資料。 (3)儘量少在模組內部使用計數器分頻所產生的時鐘。計數器分頻時鐘需完成的邏輯 功能完全可由PLL鎖相環或時鐘使能電路替代。計數器分頻時鐘的缺點
(2)非同步FIFO或DPRAM 因為非同步FIFO或DPRAM使用格雷碼計數器設計讀寫地址的指標,所以它可以很 好地避免亞穩態的發生。 (3)調整時鐘相位(難度大,適用面有限)