FPGA競爭冒險詳解11頁_第1頁
FPGA競爭冒險詳解11頁_第2頁
FPGA競爭冒險詳解11頁_第3頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、1 引言現(xiàn)場可編程門陣列 (FPGA)在結構上由邏輯功能塊排列為陣列,并由可編程的內(nèi)部連線連接這些功能塊,來實現(xiàn)一定的邏輯功能。 FPGA可以替代其他 PLD或者各種中小規(guī)模數(shù)字邏輯芯片在數(shù)字系統(tǒng)中廣泛應用,也是實現(xiàn)具有不同邏輯功能 ASIC 的有效辦法。 FPGA是進行原型設計最理想的載體,原型機的最初框架和實現(xiàn)通過 PFGA來驗證,可以降低成本、縮短開發(fā)周期。利用 FPGA的可重配置功能,可以在使用過程中,在不改變所設計的設備的硬件電路情況下,改變設備的功能。 但和所有的數(shù)字電路一樣, FPGA電路中也存在毛刺問題。它的出現(xiàn)會影響電路工作的可靠性、穩(wěn)定性,嚴重時會導致整個數(shù)字系統(tǒng)的誤動作和

2、邏輯紊亂。在此詳細論述了解決此問題的多種方法。2 FPGA的功能和結構特點2.1 FPGA 的功能FPGA的功能由邏輯結構的配置數(shù)據(jù)決定,在工作時,這些配置數(shù)據(jù)存放在片內(nèi)的SRAM或者熔絲圖上。使用SRAM的 FPGA器件,在工作前需要從芯片外部加載配置數(shù)據(jù),這些配置數(shù)據(jù)可以存放在片外的EPROM或其他存儲體上,人們可以控制加載過程,在現(xiàn)場修改器件的邏輯功能。圖1實際邏輯電路第 1頁圖2 LUT 的實現(xiàn)方式2.2 FPGA 的結構特點FPGA使用了可編程的查找表(Look Up Table ,LUT)結構, LUT 是可編程的最小邏輯構成單元。大部分FPGA采用基于 SRAM的查找表邏輯形成結

3、構,就是用 SRAM(靜態(tài)隨機存儲器 ) 來構成邏輯函數(shù)發(fā)生器。圖1、2分別是 4輸入 LUT的實際邏輯電路和 LUT 的實現(xiàn)方式。 FLEX10KE系列器件的結構和工作原理在 Altera 的 FPGA器件中具有典型性, 下面以此類器件為例,介紹 PFGA的結構。其內(nèi)部結構如圖 3所示 :圖3FLEX10KE內(nèi)部結構FLEX10KE內(nèi)部結構包含嵌入式陣列塊(EAB,EmbeddedArray Block) 、邏輯陣列塊 (LAB, Logic Array Block)、快速通道 (Fast Track)互連和輸入 / 輸出單元 (I/O Element,IOE)四部分。(1) 嵌入式陣列用來

4、實現(xiàn)各種存儲器及復雜的邏輯功能,如數(shù)字信號處理、微控制器等。嵌入式陣列由一系列嵌入式陣列塊 (EAB)構成。 EAB是在輸入輸出口上具有寄存器的能變形的 RAM塊。(2) 邏輯陣列用來實現(xiàn)普通邏輯功能,如計數(shù)器、加法器、狀態(tài)機等。邏輯陣列由一系列邏輯陣列塊 (LAB) 構成。每個 LAB包含八個 LE 和一些局部互連。 LAB 構成了 FLEX10KE的“粗粒度”結構,有利于EDA軟件進行布局布線,優(yōu)化器件的利用,提高性能。LE 是 FLEX10KE結構中的最小單元,每個 LE 含有一個 4輸入查找表 (LUT) 、一個帶有同步使能的可編程觸發(fā)器第 2頁(ProgrammableRegiste

5、r)、 一個 進位 鏈 (CarryChain) 和 一個 級 連鏈(Cascade) 。每個 LE 都能驅動 LAB局部互連 (LAB Local Interconnect)和快速通道互連 (Fast Track Interconnect)。 LE 的內(nèi)部結構如圖 4所示。圖4邏輯單元 (LE) 內(nèi)部結構(3) 器件內(nèi)部信號的互連和器件引出端之間的信號互連由快速通道(FastTrack)連線提供, FastTrack遍布于整個FLEX10KE器件,是一系列水平和垂直走向的連續(xù)式布線通道。FastTrack 互連是一系列貫通器件行、列的快速連接通道。(4) I/O 引出端由一些 I/O 單元

6、(IOE) 驅動。 IOE 位于快速通道的行和列的末端,每個 IOE 有一個雙向 I/O 緩沖器和一個既可做輸入寄存器也可做輸出寄存器的觸發(fā)器。3 競爭冒險在組合電路中,當邏輯門有兩個互補輸入信號同時向相反狀態(tài)變化時,輸出端可能產(chǎn)生過渡干擾脈沖的現(xiàn)象,稱為競爭冒險。3.1 FPGA 中產(chǎn)生競爭冒險的原因信號在 FPGA器件內(nèi)部通過連線和邏輯單元時,都有一定的延時。延時的大小與連線的長短和邏輯單元的數(shù)目有關,同時還受器件的制造工藝、工作電壓、溫度等條件的影響。信號的高低電平轉換也需要一定的過渡時間。由于存在這兩方面因素,多路信號的電平值發(fā)生變化時,在信號變化的瞬間,組合邏輯的輸出有先后順序,并不

7、是同時變化, 往往會出現(xiàn)第 3頁一些不正確的尖峰信號,這些尖峰信號稱為“毛刺”。如果一個組合邏輯電路中有“毛刺”出現(xiàn),就說明該電路存在“冒險”。 ( 與分立元件不同,由于 PLD內(nèi)部不存在寄生電容電感,這些毛刺將被完整的保留并向下一級傳遞,因此毛刺現(xiàn)象在 PLD、FPGA 設計中尤為突出 )3.2 FPGA 中競爭冒險的危害圖 5給出了一個邏輯冒險的例子,從圖6的仿真波形可以看出,“A、B、C、D”四個輸入信號經(jīng)過布線延時以后,高低電平變換不是同時發(fā)生的,這導致輸出信號“ OUT”出現(xiàn)了毛刺。而當數(shù)據(jù)完全穩(wěn)定的時候,毛刺信號也就自然消失了??梢愿爬ǖ闹v,只要輸入信號不同時變化,( 經(jīng)過內(nèi)部走線

8、 ) 組合邏輯必將產(chǎn)生毛刺。將它們的輸出直接連接到時鐘輸入端、清零或置位端口的設計方法是錯誤的,這可能會導致嚴重的后果。而現(xiàn)在 FPGA設計中的信號往往是由時鐘控制的,多數(shù)據(jù)輸入的復雜運算系統(tǒng),甚至每個數(shù)據(jù)都由相當多的位數(shù)組成。這時,每一級的毛刺都會對結果有嚴重的影響,如果是多級的設計,那么毛刺累加后甚至會影響整個設計的可靠性和精確性。時鐘端口、清零和置位端口對毛刺信號十分敏感,任何一點毛刺都可能會使系統(tǒng)出錯,因此判斷邏輯電路中是否存在冒險以及如何避免冒險是設計人員必須要考慮的問題。圖 5 一個邏輯冒險的例子圖 6 仿真波形任何組合電路、反饋電路和計數(shù)器都可能是潛在的毛刺信號發(fā)生器。第 4頁毛

9、刺并不是對所有輸入都有危害,如觸發(fā)器的輸入端,只要毛刺不出現(xiàn)在時鐘的上升沿并滿足數(shù)據(jù)的建立保持時間,就不會對系統(tǒng)造成危害。而當毛刺信號成為系統(tǒng)的啟動信號、控制信號、握手信號,觸發(fā)器的清零信號 (CLEAR)、預置信號 (PRESET)、時鐘輸入信號 (CLK) 或鎖存器的輸入信號就會產(chǎn)生邏輯錯誤。任何一點毛刺都可能使系統(tǒng)出錯。3 毛刺的消除3.1利用冗余項消除毛刺函數(shù)式和真值表所描述的是靜態(tài)邏輯,而競爭則是從一種穩(wěn)態(tài)到另一種穩(wěn)態(tài)的過程。 因此競爭是動態(tài)過程, 它發(fā)生在輸入變量變化時。 此時,修改卡諾圖,增加多余項,在卡諾圖的兩圓相切處增加一個圓,可以消除邏輯冒險。但該法對于計數(shù)器型產(chǎn)生的毛刺是

10、無法消除的。3.2采用格雷碼我們可以通過改變設計,破壞毛刺產(chǎn)生的條件,來減少毛刺的發(fā)生。例如,在數(shù)字電路設計中,常常采用格雷碼計數(shù)器取代普通的二進制計數(shù)器,這是因為格雷碼計數(shù)器的輸出每次只有一位跳變,消除了競爭冒險的發(fā)生條件,避免了毛刺的產(chǎn)生。3.3采樣法由于冒險出現(xiàn)在變量發(fā)生變化的時刻,如果待信號穩(wěn)定之后加入取樣脈沖,那么就只有在取樣脈沖作用期間輸出的信號才能有效。這樣可以避免產(chǎn)生的毛刺影響輸出波形。第 5頁一般說來,冒險出現(xiàn)在信號發(fā)生電平轉換的時刻,也就是說在輸出信號的建立時間內(nèi)會發(fā)生冒險,而在輸出信號的保持時間內(nèi)是不會有毛刺信號出現(xiàn)的。如果在輸出信號的保持時間內(nèi)對其進行“采樣”,就可以消

11、除毛刺信號的影響。有兩種基本的采樣方法: 一種方法是在輸出信號的保持時間內(nèi),用一定寬度的高電平脈沖與輸出信號做邏輯“與”運算,由此獲取輸出信號的電平值。圖 7說明了這種方法,采樣脈沖信號從輸入引腳“ SAMPLE”引入。從圖 8 的仿真波形上可以看出,毛刺信號出現(xiàn)在“ TEST”引腳上,而“OUT”引腳上的毛刺已被消除了。圖7采樣法一圖 8采樣法一仿真波形上述方法的一個缺點是必須人為的保證sample 信號必須在合適的時間中產(chǎn)生,另一種更常見的方法是利用D 觸發(fā)器的 D 輸入端對毛刺信號不敏感的特點,在輸出信號的保持時間內(nèi),用觸發(fā)器讀取組合邏輯的輸出信號,這種方法類似于將異步電路轉化為同步電路

12、。圖9給出了這種方法的示范電路,圖10 是仿真波形。在仿真時,我們也可能會發(fā)現(xiàn)在FPGA器件對外輸出引腳上有輸出毛刺,但由于毛刺很短, 加上 PCB本身的寄生參數(shù) ,大多數(shù)情況下 , 毛刺通過 PCB走線 , 基本可以自然被慮除,不用再外加阻容濾波。圖 9采樣法二第 6頁圖 10采樣法二仿真波形3.4吸收法增加輸出濾波,在輸出端接上小電容可以濾除毛刺,圖11所示。但輸出波形的前后沿將變壞,在對波形要求較嚴格時,應再加整形電路,該方法不宜在中間級使用。圖 11吸收法消除毛刺圖3.5延遲辦法因為毛刺最終是由于延遲造成的,所以可以找出產(chǎn)生延遲的支路。對于相對延遲小的支路,加上毛刺寬度的延遲可以消除毛

13、刺。當需要對某一信號作一段延時時,初學者往往在此信號后串接一些非門或其它門電路,此方法在分離電路中是可行的。但在FPGA中,開發(fā)軟件在綜合設計時會將這些門當作冗余邏輯去掉,達不到延時的效果。用Altera公司的MaxplusII開發(fā) FPGA時,可以通過插入一些LCELL原語或調用延時線模塊來產(chǎn)生一定的延時,但這樣形成的延時在 FPGA芯片中并不穩(wěn)定,會隨溫度等外部環(huán)境的改變而改變,因此并不提倡這樣。在此,可以用高頻時鐘來驅動一移位寄存器,待延時信號作數(shù)據(jù)輸入,按所需延時正確設置移位寄存器的級數(shù), 移位寄存器的輸出即為延時后的信號。 在此以實現(xiàn)雙口 RAM 的讀寫時序中 IDT7132的讀時序

14、為例, 時序圖如圖 12所示。無論用 CE還是OE來控制讀取,都需要CE或 OE保持一段低電平。令OE保持低電平, CE第 7頁平時為高電平,讀雙口RAM時觸發(fā) CE 變?yōu)榈碗娖?,延遲一小段時間再恢復高電平。本設計產(chǎn)生這段延時的方法是用高頻計數(shù)器產(chǎn)生,具體方法為 :在 FPGA中設計一個計數(shù)器,取系統(tǒng)可用的高頻時鐘( 周期小于所需延時)驅動它計數(shù),計到設定好的終值時產(chǎn)生觸發(fā)脈沖。不同的計數(shù)終值可以產(chǎn)生不同的延時。此方法所產(chǎn)生的延時為高頻時鐘周期的整數(shù)倍,若高頻時鐘周期與所需延時相比很小,則延時較精確,否則只能做一粗略的延時。圖 12雙口 RAM IDT7132讀操作時序圖4 FPGA設計中避免

15、毛刺的其他注意事項4.1電路選用要用寄存器和觸發(fā)器設計電路,盡量不要用鎖存器,因它對輸入信號的毛刺太敏感。如果堅持用鎖存器設計必須保證輸入信號絕對沒有毛刺,且滿足保持時間。4.2譯碼器設計設計譯碼邏輯電路時必須十分小心,因為譯碼器和比較器本身會產(chǎn)生尖峰,容易產(chǎn)生毛刺,把譯碼器或比較器的輸出直接連到時鐘輸入端或異步清除端,會造成嚴重的后果。4.3避免隱含 RS觸發(fā)器應該盡量避免隱含RS觸發(fā)器的出現(xiàn)。一般要控制輸出被直接反饋到輸入端,采用反饋環(huán)路會出現(xiàn)隱含RS 觸發(fā)器,其對輸入尖峰和假信號很第 8頁敏感,輸入端有任何變化都有可能使輸出值立刻改變,此時易造成毛刺的產(chǎn)生,導致時序的嚴重混亂。一旦具有隱

16、含的 RS 觸發(fā)器,加鎖存器消除毛刺是不能解決問題的。此時只有通過全面修改電路來從根本上解決。4.4避免使用多時鐘設計每一個模塊中只用一個時鐘,避免使用多時鐘設計,同時避免使用主時鐘分頻后的二次時鐘作為時序器件的時鐘輸入,因為二次時鐘相對于一次時鐘可能存在過大的時鐘歪斜。對所有模塊的輸入時鐘、輸入信號、輸出信號都用觸發(fā)器或寄存器進行同步處理,即輸出信號直接來自觸發(fā)器或寄存器的輸出端。這樣可以消除尖峰和毛刺信號。不論是控制信號還是地址總線信號、數(shù)據(jù)總線信號,都要采用另外的寄存器,以使內(nèi)部歪斜的數(shù)據(jù)變成同步數(shù)據(jù)。這些表面上看似乎無用的操作可以大大提高電路系統(tǒng)的性能。4.5避免使用延遲線應該盡量避免

17、使用延遲線,因它對工藝過程的變化極為敏感,會大大降低電路的穩(wěn)定性和可靠性,并將為測試帶來麻煩。4.6充分利用資源大部分 FPGA器件都為時鐘、復位、預置等信號提供特殊的全局布線資源,要充分利用這些資源。這樣可以減少電路中的毛刺并且大大提高設計電路的性能 .第 9頁4.7不要期望仿真器替你找到毛刺錯誤注意仿真結果和實際綜合的電路的不一致性。無論是時序電路還是異步邏輯電路,其行為與其仿真器結果都是不完全一樣的。特別是異步邏輯電路,仿真結果將會隱藏競爭冒險和毛刺現(xiàn)象,與實際行為相差較遠。故在 FPGA設計中,對每一個邏輯門、每一行VHDL (Verilof)語言,必須完全理解,不要期望仿真器替你找到錯誤。使用 FPGA開發(fā)數(shù)字電路,可以大大縮短設計時間、減少PCB 面積、提高系統(tǒng)的可靠性。它的這些優(yōu)點使得FPGA技術得到飛速的發(fā)展,已經(jīng)在通信、電子、信號處理、工業(yè)控制等領域被廣泛應用。隨著FPGA容量的增加, SOPC( 可編程芯片上系統(tǒng))SOPC(對信號的處理和整個系統(tǒng)的控制)的應用時代即將到來。SOPC既有嵌入處理器、 I/O 電路和大規(guī)模嵌入存儲器,也有 CPLD FPGA,用戶可以選擇。同時也可以選擇PLD 公司提供的FPGA IP Intellectual Property內(nèi)核。使用IP 核能保證系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論