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