概述 從FPGA或PLD轉(zhuǎn)換到門陣是經(jīng)濟高效的,有時甚至只需幾百個單元就能實現(xiàn)。這已經(jīng)引起越來越多設(shè)計者提出同樣的問題:這種轉(zhuǎn)換設(shè)計需要什么后續(xù)技術(shù)?事實上轉(zhuǎn)換到門陣面臨著許多電路的時序問題,這在FPGA設(shè)計中是不被注意的。 本文論述了轉(zhuǎn)換時遇到的幾種由于設(shè)計不當所造成的時序問題,提出了避免這些問題的方案。同時對時序變化的部分原因及充分利用門陣列技術(shù)亦在文中進行了討論。 時序上的差異 如果知道原始設(shè)計電路工作中每一步時序上的裕量,Orbit保證無論FPGA是否模擬過,都可以成功完成轉(zhuǎn)換,而使用其ATPG和結(jié)合缺省模擬分級確保了這一點。在轉(zhuǎn)換完成前,由用戶模擬或由Obrit ATPG產(chǎn)生的測試向量,用IC測試儀對FPGA進行測試。如果是用戶提供的測試裝置或測試向量,此時需分析時序情況,驗證系統(tǒng)功能。注意:只有管腿到管腿的測試向量才有助于確認轉(zhuǎn)換的正確性,設(shè)置內(nèi)部節(jié)點的模擬向量在芯片級的驗證模擬時是無用的。 毛刺信號的產(chǎn)生 許多邏輯電路能產(chǎn)生小的,寄生的信號,稱作為毛刺信號。無法預見毛刺信號可通過設(shè)計來傳播并產(chǎn)生不需要的時鐘脈沖。任何組合電路都可能是潛在的毛刺信號的發(fā)生器,當毛刺信號影響后續(xù)電路時,就成為一個較大問題。 圖1用于說明與門的輸出變化與否依賴于線路的延時。假定圖中信號AO總比BO提前5ns到達。 情況1:信號A1的延時為10ns,B1為20ns,那么與門的輸出一直為低電平。 情況2:信號A1的延時為20ns,B1為10ns,那么與門的輸出為5ns的高電平,其余為低電平。 情況3:兩路信號延時都很小(如同在門陣列中一樣),那么與門的輸出一直為低電平。 上述差異的重要性完全依賴于信號的用途。如果電路輸出后續(xù)由觸發(fā)器鎖定,情況2中非期望的毛刺信號可能被忽略;而如果毛刺信號在后續(xù)電路中被看作是有意義的信號,那么情況1和情況3中由于沒有產(chǎn)生毛刺信號,就會致使電路工作不正常。 開啟時鐘 許多設(shè)計中出現(xiàn)的問題都與如何使用時鐘有關(guān)。 圖2用于解釋由邏輯門控制時鐘所誘發(fā)的問題。邏輯門的介入使得時鐘到第二個觸發(fā)器出現(xiàn)了特殊路經(jīng)。要考慮兩條線路的長度:一是CLK_IN到FF2的D輸入端,另一是從CLK_IN到FF2_C端。要驗證兩種情況:1、數(shù)據(jù)的變化在時鐘信號的上升沿之后到達FF2;2、數(shù)據(jù)的變化在時鐘信號的上升沿之前到達FF2。 情況1中,要改變FF2_Q,需要兩個CLK_IN上升沿,而情況2中只需一個CLK_IN的上升沿。當路徑2的延遲太長時,F(xiàn)F2_Q變化將早到一個時鐘周期。這種設(shè)計邏輯特性很大程度上依賴于延遲路徑。 替代的方案是用邏輯門來控制數(shù)據(jù),而不是用時鐘。由于全局時鐘信號用于兩個觸發(fā)器,它們幾乎在同一時間記錄數(shù)據(jù)。實際上,F(xiàn)PGA中新的路徑1幾乎一定長于新路徑2,這將確保電路的行為同情況1。當電路轉(zhuǎn)換到門陣列時,必須仍保持這種相同。 總之,要盡量減少或者不使用邏輯門控制時鐘信號,因為它會在時鐘和數(shù)據(jù)之間產(chǎn)生較多的扭曲。 如果時鐘信號上由邏輯等式產(chǎn)生,那么這種方法就會有一些自身的問題。如果全局時鐘信號線不用于路由派生時鐘,那么時鐘的同步上會有一些重要的差別。如果出于不同的用途分別產(chǎn)生時鐘,情況甚至會變得更糟。 全局時鐘信號的使用 在長串寄存器鏈中,這個問題會在多處出現(xiàn)。此電路的一個替代方法如圖3所示。使用CLK信號,用第二個與門消除了多路時鐘。這樣只產(chǎn)生一個時鐘信號到觸發(fā)器串。圖3中觸發(fā)器串的時鐘信號是系統(tǒng)時鐘通過門延遲得到的,當?shù)竭_觸發(fā)器串的數(shù)據(jù)與觸發(fā)器串的時鐘不同步時,將在兩個路徑間產(chǎn)生競爭。一路是觸發(fā)器串的數(shù)據(jù)輸入路徑,另一路是系統(tǒng)時鐘到達觸發(fā)器串的時鐘輸入端路徑。解決方案是用系統(tǒng)時鐘的下降沿觸發(fā)的單獨觸發(fā)器串記錄數(shù)據(jù)。 狀態(tài)檢測: 如果不考慮電路鐘的延遲,狀態(tài)機的狀態(tài)檢測可能會出錯。如果用組合邏輯來產(chǎn)生復位信號,那么即使是同步電路也會產(chǎn)生問題。 盡量保持狀態(tài)控制邏輯(如計數(shù)器、分頻器等)少于10位。如果超過10位,長計數(shù)器應該有用于監(jiān)視內(nèi)部狀態(tài)的抽頭,或者至少有一預置的功能。這些監(jiān)視用抽頭應能夠很容易地將數(shù)據(jù)傳送到輸出引腳,以便監(jiān)測。 復位問題: 如同時鐘一樣,如果使用組合邏輯或者不詳細考慮時序,復位信號也能產(chǎn)生一系列問題。 圖4示出了一種產(chǎn)生短脈沖的方法:當觸發(fā)器D輸入是高電位時,每個時鐘周期后Q端產(chǎn)生一個短脈沖。復位信號是低電位有效,Q(輸出高電位時不引起復位。當時鐘的上升沿到來時,如果D端是高電位,Q(輸出變低,導致觸發(fā)器復位。然后Q(又被拉回到高電位,從而結(jié)束復位。為避免組合復位信號的問題,可以使用圖5所示得另一觸發(fā)器的輸出來驅(qū)動復位信號。 執(zhí)行問題: 當邏輯等式用于描述一種功能,而編輯器用于產(chǎn)生邏輯關(guān)系時,情況變得更有趣。考慮最近發(fā)現(xiàn)的一個例子: if T,OUT=/A else,OUT=B 如圖6,盡管電路在邏輯上是正確的,但當T變化時會產(chǎn)生毛刺信號。A=0,B=1時出現(xiàn)問題。圖7為簡化電路。信號T僅僅用作模式切換。當系統(tǒng)在工作臺上測試時,毛刺信號絕不會是問題。當隨后使用自動系統(tǒng)測試時,要考慮很多效應以找到系統(tǒng)錯誤的根源。圖7所示的邏輯在門陣列實現(xiàn)時,將可能在不需要的時候產(chǎn)生脈沖。事實上,這個問題是轉(zhuǎn)換到門陣列實現(xiàn)時發(fā)現(xiàn)的,正可以解釋自動的系統(tǒng)測試期間所出現(xiàn)的反常現(xiàn)象。 分割與試驗的方法: 如果FPGA的功能在很大程度上依賴于路徑延遲,那么設(shè)計階段重新選擇路徑將引起一部分電路工作不正常。即使以前電路工作正常并且似乎已經(jīng)最后完成了,情況仍然會如此。不同制造批號的電路模塊可能具有不同的工作特性。工作電壓和工作溫度的變化可能引起時序上的變化。如果設(shè)計中每一步的工作時序只有很少的裕量,甚至沒有,那么上述的效應將引起不同的邏輯行為。 上述問題與使用FPGA或是門陣列無關(guān)。使用好的設(shè)計技術(shù)可以將FPGA中的這些問題減至最少,并且可以使得門陣列的轉(zhuǎn)換變得更為平穩(wěn)。因為仿真模擬通常用于驗證執(zhí)行情況,而較差的設(shè)計在進行門陣列的轉(zhuǎn)換中問題就會暴露出來。采用不同的時序模型庫模擬,一個完美的設(shè)計能夠給出相同的邏輯輸出,而與電壓、溫度和工藝變化無關(guān)。 電壓和溫度效應: 設(shè)計者喜歡電源電壓正好設(shè)置在5伏,并且環(huán)境溫度永遠是25℃。這樣固然好,但絕大多數(shù)的電源電壓是變化的。類似的商用電路的環(huán)境溫度可能是從0"70℃。電壓升高時,電路運行加快。溫度升高時,電路運行變慢。通常,在低溫、高電壓(最快的情況)下出現(xiàn)的小毛刺信號,在高溫、低電壓(最慢的情況)時會消失不見。Orbit半導體公司使用了一種五角工藝驗證技術(shù),它可將PVT(工藝-電壓-溫度)變化包含于時序模型中,而且這些模型已被融合到硅片循環(huán)加工中。 工藝的變化: 具有某種功能的一處電路不能保證相同布局的另一處電路也具有同樣功能,即使在相同的電壓和溫度條件下也是如此。制造過程中工藝的變化都是固有的、不可避免的。 FPGA供應商指出任何元件的延遲都可以從所給最差值的10%變到100%。他們還指出給定電路上跟蹤的延遲是70%。如果路徑A具有最大的延遲,路徑B將介于最大延遲的70%和100%之間。這意味著如果兩條路徑中有一最大是40ns的延遲,當路徑1是40ns時路徑B可能時28ns。類似的,路徑2是40ns時A可能是28ns。則一個信號通過路徑1將比通過路徑2早12ns或晚12ns。即使FPGA沒有重新布線,這些變化仍會發(fā)生。 門陣列具有與FPGA同樣特性的時序變化。主要差別是延遲通常是非常短的,這是因為內(nèi)部連線是用金屬完成的,而不是使用可編程路徑器件。FPGA和門陣列都不能免除由于工藝變化引起的時序問題。 其他的轉(zhuǎn)換差別: FPGA提供了系統(tǒng)工作的很大靈活性,為更好地滿足系統(tǒng)的需要,在FPGA轉(zhuǎn)換成門陣列時,許多增強措施被加到設(shè)計中: 輸入: 1、 TTL或CMOS 2、 施密特觸發(fā)器(增加滯后效應) 3、 晶體或RC振蕩器單元 4、 增加上拉或下拉器件 輸出: 1、 很多不同的驅(qū)動級 2、 漏端開路(集電極開路) 3、 旋轉(zhuǎn)比率控制 門陣列的門海結(jié)構(gòu)實際上就是一個自由晶體管的海洋,添加特殊單元相對容易。甚至,一些生產(chǎn)商允許使用門海中的晶體管來制成模擬器件。 總結(jié) 從FPGA轉(zhuǎn)換到門陣列時遇到的主要問題,常常在轉(zhuǎn)換之前FPGA中就會看到。好的設(shè)計方案將減少FPGA中遇到的問題,并為轉(zhuǎn)換到門陣列的設(shè)計做好準備。 |