FPGA競(jìng)爭(zhēng)冒險(xiǎn)詳解11頁_第1頁
FPGA競(jìng)爭(zhēng)冒險(xiǎn)詳解11頁_第2頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

4、單元 (I/O Element,IOE) 四部分。(1)嵌入式陣列用來實(shí)現(xiàn)各種存儲(chǔ)器及復(fù)雜的邏輯功能,如數(shù)字信號(hào)處理、微控制器等。嵌入式陣列由一系列嵌入式陣列塊(EAB)構(gòu)成。EAB 是在輸入輸出口上具有寄存器的能變形的RAM 塊。(2)邏輯陣列用來實(shí)現(xiàn)普通邏輯功能,如計(jì)數(shù)器、加法器、狀態(tài)機(jī)等。邏輯陣列由一系列邏輯陣列塊(LAB)構(gòu)成。每個(gè) LAB 包含八個(gè) LE 和一些局部 互連。LAB 構(gòu)成了 FLEX10KE 的“粗粒度”結(jié)構(gòu),有利于EDA 軟件進(jìn)行布局布線,優(yōu)化器件的利用,提高性能。LE 是 FLEX10KE 吉構(gòu)中的最小單元,每個(gè) LE 含有一個(gè) 4 輸入查找表 (LUT) 、一個(gè)帶

5、有同步使能的可編程觸發(fā)器(Programmable Register) 、 一 個(gè) 進(jìn) 位 鏈 (Carry Chain) 和 一 個(gè) 級(jí) 連 鏈第3頁(Cascade)。每個(gè) LE 都能驅(qū)動(dòng) LAB 局部互連(LAB Local Interconnect)和快速通道互連(Fast Track Interconnect)。LE 的內(nèi)部結(jié)構(gòu)如圖 4 所示。圖 4邏輯單元 (LE) 內(nèi)部結(jié)構(gòu)(3) 器件內(nèi)部信號(hào)的互連和器件引出端之間的信號(hào)互連由快速通道(FastTrack)連線提供,F(xiàn)astTrack 遍布于整個(gè) FLEX10KE 器件,是一系列 水平和垂直走向的連續(xù)式布線通道。 FastTrac

6、k 互連是一系列貫通器件行、 列的快速連接通道。I/O 引出端由一些 I/O 單元(IOE)驅(qū)動(dòng)。IOE 位于快速通道的行和列的 末端,每個(gè) IOE 有一個(gè)雙向 I/O 緩沖器和一個(gè)既可做輸入寄存器也可做輸 出寄存器的觸發(fā)器。3 競(jìng)爭(zhēng)冒險(xiǎn) 在組合電路中,當(dāng)邏輯門有兩個(gè)互補(bǔ)輸入信號(hào)同時(shí)向相反狀態(tài)變化時(shí),輸出端可能產(chǎn)生過渡干擾脈沖的現(xiàn)象,稱為競(jìng)爭(zhēng)冒險(xiǎn)。3.1 FPGA 中產(chǎn)生競(jìng)爭(zhēng)冒險(xiǎn)的原因信號(hào)在 FPGA 器件內(nèi)部通過連線和邏輯單元時(shí),都有一定的延時(shí)。延時(shí)的大小與連線的長(zhǎng)短和邏輯單元的數(shù)目有關(guān),同時(shí)還受器件的制造工 藝、工作電壓、溫度等條件的影響。信號(hào)的高低電平轉(zhuǎn)換也需要一定的過 渡時(shí)間。由于存在

7、這兩方面因素,多路信號(hào)的電平值發(fā)生變化時(shí),在信號(hào) 變化的瞬間,組合邏輯的輸出有先后順序,并不是同時(shí)變化 , 往往會(huì)出現(xiàn)一些不正確的尖峰信號(hào),這些尖峰信號(hào)稱為“毛刺”。如果一個(gè)組合邏輯 電路中有第4頁“毛刺”出現(xiàn),就說明該電路存在“冒險(xiǎn)”。 ( 與分立元件不同,由于 PLD 內(nèi)部不存在寄生電容電感,這些毛刺將被完整的保留并向下一級(jí) 傳遞,因此毛刺現(xiàn)象在 PLD FPGA 設(shè)計(jì)中尤為突出)3.2 FPGA 中競(jìng)爭(zhēng)冒險(xiǎn)的危害圖 5 給出了一個(gè)邏輯冒險(xiǎn)的例子,從圖 6 的仿真波形可以看出, “ A、B、C、D 四個(gè)輸入信號(hào)經(jīng)過布線延時(shí)以后,高低電平變換不是同時(shí)發(fā)生 的,這導(dǎo)致輸出信號(hào)“ OUT 出現(xiàn)了

8、毛刺。而當(dāng)數(shù)據(jù)完全穩(wěn)定的時(shí)候,毛 刺信號(hào)也就自然消失了。可以概括的講,只要輸入信號(hào)不同時(shí)變化,( 經(jīng)過內(nèi)部走線 )組合邏輯必將產(chǎn)生毛刺。將它們的輸出直接連接到時(shí)鐘輸入 端、清零或置位端口的設(shè)計(jì)方法是錯(cuò)誤的,這可能會(huì)導(dǎo)致嚴(yán)重的后果。而 現(xiàn)在 FPGA 設(shè)計(jì)中的信號(hào)往往是由時(shí)鐘控制的,多數(shù)據(jù)輸入的復(fù)雜運(yùn)算系 統(tǒng),甚至每個(gè)數(shù)據(jù)都由相當(dāng)多的位數(shù)組成。這時(shí),每一級(jí)的毛刺都會(huì)對(duì)結(jié) 果有嚴(yán)重的影響,如果是多級(jí)的設(shè)計(jì),那么毛刺累加后甚至?xí)绊懻麄€(gè)設(shè) 計(jì)的可靠性和精確性。時(shí)鐘端口、清零和置位端口對(duì)毛刺信號(hào)十分敏感,任何一點(diǎn)毛刺都可能會(huì)使系統(tǒng)出錯(cuò),因此判斷邏輯電路中是否存在冒險(xiǎn)以 及如何避免冒險(xiǎn)是設(shè)計(jì)人員必須要考

9、慮的問題。圖 5 一個(gè)邏輯冒險(xiǎn)的例子圖 6 仿真波形任何組合電路、反饋電路和計(jì)數(shù)器都可能是潛在的毛刺信號(hào)發(fā)生器。毛刺并不是對(duì)所有輸入都有危害,如觸發(fā)器的D輸入端,只要毛刺不出現(xiàn) 在時(shí)鐘第5頁的上升沿并滿足數(shù)據(jù)的建立保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害。而 當(dāng)毛刺信號(hào)成為系統(tǒng)的啟動(dòng)信號(hào)、控制信號(hào)、握手信號(hào),觸發(fā)器的清零信 號(hào)(CLEAR)、預(yù)置信號(hào)(PRESET、時(shí)鐘輸入信號(hào)(CLK)或鎖存器的輸入信號(hào) 就會(huì)產(chǎn)生邏輯錯(cuò)誤。任何一點(diǎn)毛刺都可能使系統(tǒng)出錯(cuò)。毛刺的消除利用冗余項(xiàng)消除毛刺函數(shù)式和真值表所描述的是靜態(tài)邏輯,而競(jìng)爭(zhēng)則是從一種穩(wěn)態(tài)到另 一種穩(wěn)態(tài)的過程。 因此競(jìng)爭(zhēng)是動(dòng)態(tài)過程, 它發(fā)生在輸入變量變化時(shí)。

10、 此時(shí), 修改卡諾圖,增加多余項(xiàng),在卡諾圖的兩圓相切處增加一個(gè)圓,可以消除 邏輯冒險(xiǎn)。但該法對(duì)于計(jì)數(shù)器型產(chǎn)生的毛刺是無法消除的。 采用格雷碼我們可以通過改變?cè)O(shè)計(jì),破壞毛刺產(chǎn)生的條件,來減少毛刺的發(fā)生。 例如,在數(shù)字電路設(shè)計(jì)中,常常采用格雷碼計(jì)數(shù)器取代普通的二進(jìn)制計(jì)數(shù) 器,這是因?yàn)楦窭状a計(jì)數(shù)器的輸出每次只有一位跳變,消除了競(jìng)爭(zhēng)冒險(xiǎn)的 發(fā)生條件,避免了毛刺的產(chǎn)生。采樣法由于冒險(xiǎn)出現(xiàn)在變量發(fā)生變化的時(shí)刻,如果待信號(hào)穩(wěn)定之后加入取 樣脈沖,那么就只有在取樣脈沖作用期間輸出的信號(hào)才能有效。這樣可以 避免產(chǎn)生的毛刺影響輸出波形。般說來,冒險(xiǎn)出現(xiàn)在信號(hào)發(fā)生電平轉(zhuǎn)換的時(shí)刻,也就是說在輸出第6頁信號(hào)的建立時(shí)間內(nèi)

11、會(huì)發(fā)生冒險(xiǎn),而在輸出信號(hào)的保持時(shí)間內(nèi)是不會(huì)有毛刺 信號(hào)出現(xiàn)的。 如果在輸出信號(hào)的保持時(shí)間內(nèi)對(duì)其進(jìn)行“采樣”, 就可以消 除毛刺信號(hào)的影響。有兩種基本的采樣方法 : 一種方法是在輸出信號(hào)的保持時(shí)間內(nèi),用一 定寬度的高電平脈沖與輸出信號(hào)做邏輯“與”運(yùn)算,由此獲取輸出信號(hào)的 電平值。圖 7說明了這種方法,采樣脈沖信號(hào)從輸入引腳“ SAMPL”E 引入。 從圖 8 的仿真波形上可以看出,毛刺信號(hào)出現(xiàn)在“ TEST 引腳上,而“OUT 引腳上的毛刺已被消除了。圖 7 采樣法一圖 8 采樣法一仿真波形上述方法的一個(gè)缺點(diǎn)是必須人為的保證 sample 信號(hào)必須在合適的時(shí) 間中產(chǎn)生,另一種更常見的方法是利用D

12、 觸發(fā)器的 D 輸入端對(duì)毛刺信號(hào)不敏感的特點(diǎn),在輸出信號(hào)的保持時(shí)間內(nèi),用觸發(fā)器讀取組合邏輯的輸出信 號(hào),這種方法類似于將異步電路轉(zhuǎn)化為同步電路。圖9 給出了這種方法的示范電路,圖 10 是仿真波形。在仿真時(shí),我們也可能會(huì)發(fā)現(xiàn)在FPGA 器件對(duì)外輸出引腳上有輸出毛刺,但由于毛刺很短,加上 PCB 本身的寄生參數(shù),大多數(shù)情況下,毛刺通過 PCE 走線,基本可以自然被慮除,不用再外加阻容 濾波。圖 9 采樣法二第7頁吸收法增加輸出濾波,在輸出端接上小電容C可以濾除毛刺,圖11 所示。但輸出波形的前后沿將變壞,在對(duì)波形要求較嚴(yán)格時(shí),應(yīng)再加整形電路,該方法不宜在中間級(jí)使用。圖 11 吸收法消除毛刺圖延遲

13、辦法 因?yàn)槊套罱K是由于延遲造成的,所以可以找出產(chǎn)生延遲的支路。對(duì)于相對(duì)延遲小的支路,加上毛刺寬度的延遲可以消除毛刺。當(dāng)需要對(duì)某 一信號(hào)作一段延時(shí)時(shí),初學(xué)者往往在此信號(hào)后串接一些非門或其它門電 路,此方法在分離電路中是可行的。但在FPGA 中,幵發(fā)軟件在綜合設(shè)計(jì)時(shí)會(huì)將這些門當(dāng)作冗余邏輯去掉,達(dá)不到延時(shí)的效果。用 Altera 公司的 Maxplusll幵發(fā) FPGA 寸,可以通過插入一些 LCELL 原語或調(diào)用延時(shí)線模塊 來產(chǎn)生一定的延時(shí),但這樣形成的延時(shí)在FPGA 芯片中并不穩(wěn)定,會(huì)隨溫度等外部環(huán)境的改變而改變,因此并不提倡這樣。在此,可以用高頻時(shí)鐘 來驅(qū)動(dòng)一移位寄存器,待延時(shí)信號(hào)作數(shù)據(jù)輸入

14、,按所需延時(shí)正確設(shè)置移位 寄存器的級(jí)數(shù),移位寄存器的輸出即為延時(shí)后的信號(hào)。 在此以實(shí)現(xiàn)雙口 RAM 的讀寫時(shí)序中 IDT7132的讀時(shí)序?yàn)槔瑫r(shí)序圖如圖 12 所示。無論用 CE 還是 0E 來控制讀取,都需要 CE或 0E 保持一段低電平。令 0E 保持低電平,CE 平時(shí)為高電平,讀雙口 RAM 時(shí)觸發(fā) CE 變?yōu)榈碗娖剑舆t一小段時(shí)間再恢圖 10采樣法二仿真波形第8頁復(fù)高電平。 本設(shè)計(jì)產(chǎn)生這段延時(shí)的方法是用高頻計(jì)數(shù)器產(chǎn)生, 具體方法為 : 在 FPGA中設(shè)計(jì)一個(gè)計(jì)數(shù)器,取系統(tǒng)可用的高頻時(shí)鐘(周期小于所需延時(shí))驅(qū)動(dòng)它計(jì)數(shù),計(jì)到設(shè)定好的終值時(shí)產(chǎn)生觸發(fā)脈沖。不同的計(jì)數(shù)終值可以產(chǎn) 生不同的延時(shí)。此

15、方法所產(chǎn)生的延時(shí)為高頻時(shí)鐘周期的整數(shù)倍,若高頻時(shí) 鐘周期與所需延時(shí)相比很小,則延時(shí)較精確,否則只能做一粗略的延時(shí)。圖 12 雙口 RAM IDT7132 讀操作時(shí)序圖FPGA 設(shè)計(jì)中避免毛刺的其他注意事項(xiàng)電路選用要用寄存器和觸發(fā)器設(shè)計(jì)電路,盡量不要用鎖存器,因它對(duì)輸入信 號(hào)的毛刺太敏感。 如果堅(jiān)持用鎖存器設(shè)計(jì)必須保證輸入信號(hào)絕對(duì)沒有毛 刺, 且滿足保持時(shí)間。譯碼器設(shè)計(jì)設(shè)計(jì)譯碼邏輯電路時(shí)必須十分小心,因?yàn)樽g碼器和比較器本身 會(huì)產(chǎn)生尖峰,容易產(chǎn)生毛刺,把譯碼器或比較器的輸出直接連到時(shí)鐘輸入 端或異步清除端,會(huì)造成嚴(yán)重的后果。4.3 避免隱含 RS 觸發(fā)器應(yīng)該盡量避免隱含 RS 觸發(fā)器的出現(xiàn)。 一般

16、要控制輸出被直接反饋到 輸入端,第9頁采用反饋環(huán)路會(huì)出現(xiàn)隱含RS 觸發(fā)器,其對(duì)輸入尖峰和假信號(hào)很敏感,輸入端有任何變化都有可能使輸出值立刻改變,此時(shí)易造成毛刺的 產(chǎn)生,導(dǎo)致時(shí)序的嚴(yán)重混亂。一旦具有隱含的 RS 觸發(fā)器,加鎖存器消除 毛刺是不能解決問題的。此時(shí)只有通過全面修改電路來從根本上解決。4.4 避免使用多時(shí)鐘設(shè)計(jì)每一個(gè)模塊中只用一個(gè)時(shí)鐘,避免使用多時(shí)鐘設(shè)計(jì),同時(shí)避免使用 主時(shí)鐘分頻后的二次時(shí)鐘作為時(shí)序器件的時(shí)鐘輸入,因?yàn)槎螘r(shí)鐘相對(duì)于 一次時(shí)鐘可能存在過大的時(shí)鐘歪斜。對(duì)所有模塊的輸入時(shí)鐘、輸入信號(hào)、 輸出信號(hào)都用D觸發(fā)器或寄存器進(jìn)行同步處理,即輸出信號(hào)直接來自觸發(fā) 器或寄存器的輸出端。這

17、樣可以消除尖峰和毛刺信號(hào)。不論是控制信號(hào)還 是地址總線信號(hào)、數(shù)據(jù)總線信號(hào),都要采用另外的寄存器,以使內(nèi)部歪斜 的數(shù)據(jù)變成同步數(shù)據(jù)。這些表面上看似乎無用的操作可以大大提高電路系 統(tǒng)的性能。避免使用延遲線應(yīng)該盡量避免使用延遲線,因它對(duì)工藝過程的變化極為敏感,會(huì)大 大降低電路的穩(wěn)定性和可靠性,并將為測(cè)試帶來麻煩。充分利用資源第10頁大部分 FPGA 器件都為時(shí)鐘、復(fù)位、預(yù)置等信號(hào)提供特殊的全局布線資源,要充分利用這些資源。這樣可以減少電路中的毛刺并且大大提高設(shè) 計(jì)電路的性能不要期望仿真器替你找到毛刺錯(cuò)誤注意仿真結(jié)果和實(shí)際綜合的電路的不一致性。無論是時(shí)序電路還是 異步邏輯電路,其行為與其仿真器結(jié)果都是

18、不完全一樣的。特別是異步邏 輯電路,仿真結(jié)果將會(huì)隱藏競(jìng)爭(zhēng)冒險(xiǎn)和毛刺現(xiàn)象,與實(shí)際行為相差較遠(yuǎn)。故在 FPGA 設(shè)計(jì)中,對(duì)每一個(gè)邏輯門、每一行 VHDL (Verilof) 語言,必須 完全理解,不要期望仿真器替你找到錯(cuò)誤。使用 FPGA 開發(fā)數(shù)字電路,可以大大縮短設(shè)計(jì)時(shí)間、減少PCB 面積、提高系統(tǒng)的可靠性。它的這些優(yōu)點(diǎn)使得 FPGA 技術(shù)得到飛速的發(fā)展,已經(jīng) 在通信、電子、信號(hào)處理、工業(yè)控制等領(lǐng)域被廣泛應(yīng)用。隨著FPGA 容量的增加,SOPC 可編程芯片上系統(tǒng))SOPC 對(duì)信號(hào)的處理和整個(gè)系統(tǒng)的控制)的應(yīng)用時(shí)代即將到來。SOPC 既有嵌入處理器、I/O 電路和大規(guī)模嵌入存儲(chǔ) 器,也有CPLD/FPGA 用戶可以選擇。同時(shí)也可以選擇PLD 公司提供的FPGA IP Intellectual Property 內(nèi)核。使用 IP

溫馨提示

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

評(píng)論

0/150

提交評(píng)論