BBK 【1樓】
宣傳分:24 發(fā)帖數:83 積分: 427
| (4)延遲辦法 因為毛刺最終是由于延遲造成的,所以可以找出產生延遲的支路。對于相對延遲小的支路,加上毛刺寬度的延遲可以消除毛刺。但有時隨著負載增加,毛刺會繼續(xù)出現,因而這種方法也是有局限性的。而且采用延遲線的方法產生延遲更會由于環(huán)境溫度的變化而使系統變不可靠。 (5)鎖存辦法 當計數器的輸出進行相'與'或相'或'時會產生毛刺。隨著計數器位數的增加,毛刺的數量和毛刺的種類也會越來越復雜。 當FPGA輸出有系統內其它部分的邊沿或電平敏感信號時,應在輸出端寄存那些對險象敏感的組合輸出。對于異步輸入,可通過增加輸入寄存器確保滿足狀態(tài)機所要求的建立和保持時間。對于一般情況下產生的毛刺,可以嘗試用D觸發(fā)器來消除。但用D觸發(fā)器消除時,有時會影響到時序,需要考慮很多問題。所以要仔細地分析毛刺產生的來源和毛刺的性質,采用修改電路或其它辦法來徹底消除。
2.3 FPGA中的延時設計 當需要對電路中的某一信號作一段延時時,可在信號后串接一些'非門'或其它門電路。但在FPGA中,開發(fā)軟件會在綜合設計時將這些門當作冗余邏輯去掉,達不到延時的效果。用ALTERA公司的MAXPLUSII開發(fā)FPGA時,可以通過插入LCELL原語或調用延時線模塊來產生一定的延時。但這樣形成的延時在FPGA芯片中并不穩(wěn)定,會隨溫度等外部環(huán)境的改變而改變,這樣會影響FPGA的性能。因此,可以用高頻時鐘來驅動一移位寄存器,需要延時的信號作為數據輸入,按所需延時正確設置移位寄存器的級數,移位寄存器的輸出即為延時后的信號。此方法產生的延時信號有誤差,誤差大小由高頻時鐘的周期來決定。對于數據信號的延時,在輸出端用數據時鐘對延時后的信號重新采樣,就可以消除誤差。當然,當所需延時較長時,這樣做比較浪費資源。此外,用VHDL語言進行FPGA設計時,不能用after語句來實現延時,因為目前的綜合工具還不能做到如此精確的延時,即程序中的after語句不能被綜合。
2.4FPGA中的同步電路設計 2.4.1 同步電路與異步電路 異步電路主要是組合邏輯電路,用于產生地址譯碼器、FIFO或RAM的讀寫控制信號脈沖,其邏輯輸出與任何時鐘信號都沒有關系,譯碼輸出產生的毛刺通常是可以監(jiān)控的。同步電路是由時序電路(寄存器和各種觸發(fā)器)和組合邏輯電路構成的電路,其所有操作都是在嚴格的時鐘控制下完成的。這些時序電路共享同一個時鐘CLK,而所有的狀態(tài)變化都是在時鐘的上升沿(或下降沿)完成的。比如D觸發(fā)器,當上升延到來時,寄存器把D端的電平傳到Q輸出端。 下面介紹一下建立保持時間的問題。建立時間(tsu)是指在觸發(fā)器的時鐘上升沿到來以前,數據穩(wěn)定不變的時間。如果建立時間不夠,數據將不能在這個時鐘上升沿被打入觸發(fā)器;保持時間(th)是指在觸發(fā)器的時鐘上升沿到來以后,數據穩(wěn)定不變的時間。如果保持時間不夠,數據同樣不能被打入觸發(fā)器。數據穩(wěn)定傳輸必須滿足建立時間和保持時間的要求,否則電路就會出現邏輯錯誤。 例如,從D觸發(fā)器的Q輸出端直接饋給另一觸發(fā)器的D輸入端時,第一個D觸發(fā)器能滿足建立保持時間,但是到第二個D觸發(fā)器的延遲就可能不足以滿足第二個觸發(fā)器對保持時間的要求,此時就會出現邏輯錯誤,當時鐘出現歪斜時錯誤更加嚴重。解決辦法是在第一個觸發(fā)器Q端加一緩沖器,如圖7所示。這樣就能滿足第二個觸發(fā)器的時序要求。另外還可采用一個低驅動強度的源D型觸發(fā)器而不加緩沖來解決,高的相對扇出有助于改進保持時間。 同步數字電路系統在當今是占絕對優(yōu)勢的,工程師常用它設計所有能想象到的數字電路,其頻率可以從直流到幾GHz。同步電路與異步電路相比有以下優(yōu)點: (1)同步電路能在溫度、電壓、過程等參數變化的情況下保持正常的工作,而異步電路的性能通常和環(huán)境溫度、工作電壓以及生產過程有關。 (2)同步電路具有可移植性,易于采用新技術或更先進的技術,而異步電路很難重用和維護。 (3)同步電路能簡化兩個模塊之間的接口,而異步電路需要握手信號或令牌標記才能確保信號的完整性。 (4)用D觸發(fā)器或寄存器設計同步電路,可以消除毛刺和同步內部歪斜的數據。而異步電路就沒有這個優(yōu)點,且很難進行模擬和排錯,也不能得到很好的綜合。 同步電路也有缺點,因為需要時序器件,它與異步電路相比將會消耗更多的邏輯門資源。雖然異步電路速度較快且電源消耗較少,但由于現在的FPGA芯片已做到幾百萬門,故不必太在意這一點。筆者建議盡量避免用異步電路而采用同步電路進行設計。
2.4.2 用流水線技術提高同步電路的速度 同步電路的速度是指同步系統時鐘的速度,同步時鐘愈快,電路處理數據的時間間隔越短,電路在單位時間內處理的數據量就愈大。
Tco是觸發(fā)器的輸入數據被時鐘打入到觸發(fā)器到數據到達觸發(fā)器輸出端的延時時間;Tdelay是組合邏輯的延時;Tsetup是D觸發(fā)器的建立時間。假設數據已被時鐘打入D觸發(fā)器,那么數據到達第一個觸發(fā)器的Q輸出端需要的延時時間是Tco,經過組合邏輯的延時時間為Tdelay,然后到達第二個觸發(fā)器的D端,要希望時鐘能在第二個觸發(fā)器再次被穩(wěn)定地打入觸發(fā)器,則時鐘的延遲必須大于Tco+Tdelay+Tsetup,也就是說最小的時鐘周期Tmin=Tco+Tdelay+Tsetup,即最快的時鐘頻率Fmax=1/Tmin。FPGA開發(fā)軟件也是通過這種方法來計算系統最高運行速度Fmax。因為Tco和Tsetup是由具體的器件工藝決定的,故設計電路時只能改變組合邏輯的延時時間Tdelay,所以說縮短觸發(fā)器間組合邏輯的延時時間是提高同步電路速度的關鍵所在。由于一般同步電路都大于一級鎖存,而要使電路穩(wěn)定工作,時鐘周期必須滿足最大延時要求。故只有縮短最長延時路徑,才能提高電路的工作頻率??梢詫⑤^大的組合邏輯分解為較小的N塊,通過適當的方法平均分配組合邏輯,然后在中間插入觸發(fā)器,并和原觸發(fā)器使用相同的時鐘,就可以避免在兩個觸發(fā)器之間出現過大的延時,消除速度瓶頸,這樣可以提高電路的工作頻率。這就是所謂'流水線'技術的基本設計思想,即原設計速度受限部分用一個時鐘周期實現,采用流水線技術插入觸發(fā)器后,可用N個時鐘周期實現,因此系統的工作速度可以加快,吞吐量加大。注意,流水線設計會在原數據通路上加入延時,另外硬件面積也會稍有增加。
3 FPGA設計應注意的其它問題 (1)所有的狀態(tài)機輸入,包括復位、置位信號,都要用同步信號。所有的狀態(tài)機輸出都要用寄存器寄存輸出。注意在狀態(tài)機設計中不要出現死鎖狀態(tài)。 (2)要用寄存器和觸發(fā)器設計電路,盡量不要用鎖存器,因它對輸入信號的毛刺太敏感。如果堅持用鎖存器設計必須保證輸入信號絕對沒有毛刺,且滿足保持時間。 (3)設計譯碼邏輯電路時必須十分小心,因為譯碼器和比較器本身會產生尖峰,容易產生毛刺,把譯碼器或比較器的輸出直接連到時鐘輸入端或異步清除端,會造成嚴重的后果。 (4)應該盡量避免隱含RS觸發(fā)器的出現。一般要控制輸出被直接反饋到輸入端,采用反饋環(huán)路會出現隱含RS觸發(fā)器,其對輸入尖峰和假信號很敏感,輸入端有任何變化都有可能使輸出值立刻改變,此時易造成毛刺的產生,導致時序的嚴重混亂。一旦具有隱含的RS觸發(fā)器,加鎖存器消除毛刺是不能解決問題的。此時只有通過全面修改電路來從根本上解決。 (5)每一個模塊中只用一個時鐘,避免使用多時鐘設計,同時避免使用主時鐘分頻后的二次時鐘作為時序器件的時鐘輸入,因為二次時鐘相對于一次時鐘可能存在過大的時鐘歪斜。對所有模塊的輸入時鐘、輸入信號、輸出信號都用D觸發(fā)器或寄存器進行同步處理,即輸出信號直接來自觸發(fā)器或寄存器的輸出端。這樣可以消除尖峰和毛刺信號。不論是控制信號還是地址總線信號、數據總線信號,都要采用另外的寄存器,以使內部歪斜的數據變成同步的數據。這些表面上看似乎無用的操作可以大大提高電路系統的性能。 (6)應該盡量避免使用延遲線,因它對工藝過程的變化極為敏感,會大大降低電路的穩(wěn)定性和可靠性,并將為測試帶來麻煩。 (7)大部分FPGA器件都為時鐘、復位、預置等信號提供特殊的全局布線資源,要充分利用這些資源。這樣可以減少電路中的毛刺并且大大提高設計電路的性能。 (8)不要試圖用HDL語言去綜合RAM、ROM或FIFO等存儲模塊。當前的綜合工具主要用于產生邏輯電路,如需要用這些模塊,直接調用或例化相應的宏單元即可。 (9)注意仿真結果和實際綜合的電路的不一致性。無論是時序電路還是異步邏輯電路,其行為與其仿真器結果都是不完全一樣的。特別是異步邏輯電路,仿真結果將會隱藏競爭冒險和毛刺現象,與實際行為相差較遠。故在FPGA設計中,對每一個邏輯門、每一行VHDL(Verilog)語言,必須完全理解,不要期望仿真器替你找到錯誤。一個好的設計工程師要知道怎樣通過修改設計來提高電路性能,而不把責任歸咎于所使用的軟件。
使用FPGA開發(fā)數字電路,可以大大縮短設計時間、減少PCB面積、提高系統的可靠性。它的這些優(yōu)點使得FPGA技術得到飛速的發(fā)展,已經在通信、電子、信號處理、工業(yè)控制等領域被廣泛應用。隨著FPGA容量的增加,SOPC(對信號的處理和整個系統的控制)的應用時代即將到來。SOPC既有嵌入處理器、I/O電路和大規(guī)模嵌入存儲器,也有CPLD/FPGA,用戶可以選擇。同時也可以選擇PLD公司提供的FPGA IP內核。使用IP核能保證系統級芯片的開發(fā)效率、質量,并能大大縮短產品開發(fā)時間。因此,FPGA已成為解決系統級設計的重要選擇方案之一。本文對FPGA設計中的關鍵問題進行了研究,提出了設計中影響系統可靠性的主要問題和解決方案,希望對FPGA設計者有一定的參考作用。 |
評論