FPGA設計需注意的方方面面

2021-04-15 20:42:53 字數 3894 閱讀 8949

不管你是一名邏輯設計師、硬體工程師或系統工程師,甚或擁有所有這些頭銜,只要你在任何一種高速和多協議的複雜系統中使用了fpga

,你就很可能需要努力解決好器件配置、電源管理、ip整合、訊號完整性

和其他的一些關鍵設計問題。不過,你不必獨自面對這些挑戰,因為在當前業內領先的fpga公司裡工作的應用工程師每天都會面對這些問題,而且他們已經提出了一些將令你的設計工作變得更輕鬆的設計指導原則和解決方案。

i/o訊號分配

可提供最多的多功能引腳、i/o標準、端接方案和差分對的fpga在訊號分配方面也具有最複雜的設計指導原則。儘管altera的fpga器件沒有設計指導原則(因為它實現起來比較容易),但賽靈思的fpga設計指導原則卻很複雜。但不管是哪一種情況,在為i/o引腳分配訊號時,都有一些需要牢記的共同步驟:

1. 使用乙個電子資料表列出所有計畫的訊號分配,以及它們的重要屬性,例如i/o標準、電壓、需要的端接方法和相關的時鐘。

2. 檢查製造商的塊/區域相容性準則。

3. 考慮使用第二個電子資料表制訂fpga的布局,以確定哪些管腳是通用的、哪些是專用的、哪些支援差分訊號對和全域性及區域性時鐘、哪些需要參考電壓。

4. 利用以上兩個電子資料表的資訊和區域相容性準則,先分配受限制程度最大的訊號到引腳上,最後分配受限制最小的。例如,你可能需要先分配序列匯流排和時鐘訊號,因為它們通常只分配到一些特定引腳。

5. 按照受限制程度重新分配訊號匯流排。在這個階段,可能需要仔細權衡同時開關輸出(sso)和不相容i/o標準等設計問題,尤其是當你具有很多個高速輸出或使用了好幾個不同的i/o標準時。如果你的設計需要區域性/區域時鐘,你將可能需要使用高速匯流排附近的管腳,最好提前記住這個要求,以免最後無法為其安排最合適的引腳。如果某個特定塊所選擇的i/o標準需要參考電壓訊號,記住先不要分配這些引腳。差分訊號的分配始終要先於單端訊號。如果某個fpga提供了片內端接,那麼它也可能適用於其他相容性規則。

6. 在合適的地方分配剩餘的訊號。

在這個階段,考慮寫乙個只包含埠分配的hdl檔案。然後通過使用**商提供的工具或使用乙個文字編輯器手動建立乙個限制檔案,為i/o標準和sso等增加必要的支援資訊。準備好這些基本檔案後,你可以執行布局佈線工具來確認是否忽視了一些準則或者做了乙個錯誤的分配。

你諮詢一位布局專家的時間越晚,你就越有可能需要去處理一些複雜的問題和設計反覆,而這些可能可以通過一些前期分析加以避免。一旦你實現了滿意的訊號分配,你就要用限制檔案鎖定它們。

圖:(a) 未採用fusion架構的典型系統板結構;(b) 採用fusion架構的典型系統板結構。

訊號完整性

大多數先進fpga能夠處理速度為數百兆赫茲的並行匯流排和具有工作在千兆赫茲範圍的序列介面。以這麼快的速度工作時,你需要了解訊號完整性的原理,因為高頻訊號的處理會給我們精確簡單的數字世界帶來一連串模擬設計問題。

安排一些時間閱讀fpga**商提供的文獻。即使你對某個器件或者**商的資訊已經爛熟於心,也有必要參考其他**商提供的文件,因為不同公司的文件往往有不同的見解。你將會發現在很多問題上不同的**商擁有不同的觀點,如什麼會產生高速訊號、切換訊號之間可以存在多少時延而仍然可以認為它們是同時的等等。fpga**商的工具通常可以很好地執行一些基本的訊號完整性分析,因此你必須完全了解你所獲得的工具包的所有潛能。

此外,目前市場上有幾百種關於訊號完整性和降噪的書。如果你是個新手或者需要乙個進修課程,你可以考慮閱讀douglas brooks編寫的「訊號完整性問題和pcb設計」。如果需要進行更深入的**,可以閱讀howard johnson編寫的「高速數字設計」。

fpga可能會由於太多的高速sso而對系統中的訊號(或其它fpga訊號)帶來嚴重破壞,因為這會導致稱為同時切換雜訊(ssn)的雜訊。ssn也叫做地**或vcc**,對於單端標準,ssn是在輸出由低到高時提供瞬態電流和由高到低時吸收瞬態電流的過程中,由多個輸出驅動器同時切換和導致器件電壓與系統電壓之間的變化而引起的。

在高到低的轉換引起地**時,由低到高轉換也會導致vcc下降。由於電容通常安放在vcc和接地層之間,因此ssn典型地存在於這兩個地方。由低到高轉變時地**也有可能出現。

於是,sso變成了干擾訊號,它會產生可能耦合到鄰近訊號的雜訊。對於某個區域而言太多sso可能會導致電源的擾動。由於以下2個原因,sso已經變成乙個必須認真對待的問題:1. 切換時間大幅下降;2. 過孔尺寸和走線寬度的減小加上更大的板厚度已經推高了板極電感,這將大幅增加出現地**的可能性。更大的負載電容也可能導致ssn,雖然程度上會輕一點。當有效vcc低於期望值,從而導致i/o快取的轉換速度低於期望速度時,ssn也可能導致時序問題變得突出起來。

有幾個方法可以減小ssn。有些器件只需通過限制i/o標準的選擇就可簡化這個問題,但不是所有器件都能這麼做。一些**商建議將高速匯流排輸出分布到整個裸片上,如果ssn是你唯一關注的問題,那麼這絕對是乙個很好的建議。不過,如果按照這個建議去做,有2個基本問題將會冒出來。

首先,這可能會帶來下游布通性問題,因為將訊號散布到整個裸片上經常會引起更多的走線交叉。而這就導致需要更多的訊號佈線層。其次,大多數設計在散布訊號前也要求進行仔細研究,因為當乙個匯流排散布到特定的塊或區外時會引起塊/區間的相容性問題。因此,如果你能在考慮布通性的同時,小心地將乙個較小的匯流排分布到乙個或兩個塊/區域內,那麼系統將會工作得很好。

如果你被乙個具有相鄰高速切換輸出的設計所困擾,有好幾種技術能幫助你解決潛在的ssn問題。首先對你的設計進行合適的布局和去耦合。對於去耦合,使用距離盡可能近的電源和地平面對,中間用乙個**t電容隔開。使用**t電容進行去耦合也有助於減小電感,而電感是產生系統雜訊的乙個主要因素。

如果你仍然覺得需要使用去耦電容(為了減小ssn),應該使得這些電容的位置盡可能靠近高速輸出引腳。altera的一項研究發現,如果這些電容到引腳的距離大於1英吋,在使用適當的**t電容去退耦時,這些電容變得效率極低。其他減小ssn或者其可能產生影響的建議包括:避免將敏感訊號(復位、時鐘和使能等)位於sso附近;可能時,使用較小偏移的輸出和使用最低電感的過孔;通過在合適位置插入延時使得輸出訊號交替出現。即使已經完成了pcb的生產,這個建議仍然可以應用。

參考將被連線到fpga上的器件的相關資料。對於每個器件,確定最大輸入低電壓門限(單位毫伏)。這是fpga驅動該器件需要的最大電壓,所以該裝置仍然可以檢測到乙個有效邏輯低狀態(最大vil值)。同樣,還要確定器件可以容忍且能繼續工作的最大輸入負脈衝訊號(單位毫伏)。

在某些情況下,最大容許的地**可能不是或者不僅是以上給出的值。而是要通過獲得最大輸入低電壓門限的最小值、最大輸入負脈衝訊號、或者所有器件的最大地**來確定最大的系統地**。

然後,根據具有相似負載特點的網路連線的數目和種類對類似的fpga匯流排進行分組。接著研究每個部分、區域或者塊的電源和接地引腳數目,還有對於所使用的每個i/o標準,每個電源和接地管腳對所允許的sso數目。這些數目可以用於計算每個組的總電容負載和每個輸出驅動的電容,以確定可以容忍的sso最大值。

你也應該諮詢**商以確定基於每個塊和每一對塊你是否超過了推薦的sso數目,前提是**商已經研究了這些問題。同時,因為有多個因素會導致ssn,所以最好建立乙個具有內建抗雜訊效能的魯棒系統。否則,就使用針對每個引腳限制i/o標準的器件,這樣就可以減少可能的ssn問題。

差分訊號

在fpga設計中,你可能會發現對差分訊號的處理存在最多的爭議。類似於ssn,最好從**商、書籍和使用者群獲得盡可能多的資訊。同時,在確定某個方案前諮詢你的布局部門以了解他們推薦的建議和資訊。

主要爭論開始於差分訊號對是否應該採用寬邊耦合還是邊緣耦合,以及每對之間到底應該存在多少耦合。答案通常是「根據具體情況確定」,所以需要進行具體研究。

如果你不能確定對於乙個單端訊號為什麼需要選擇差分i/o標準,答案很簡單。使用差分訊號,你幾乎可以完全控制訊號的迴路。因為這是訊號對的一部分,而且理論上在任何乙個接地(或者電源)平面上不應該出現來自訊號對的電流。

這裡假設走線對具有相等長度,布設在相鄰區域且間距不變,走線阻抗恆定且匹配。此外,利用單端訊號,你很難控制訊號回程,而且測試乙個訊號的返回也可能徒勞無益。

差分訊號的主要缺點是他們需要兩根走線彼此臨近。當在乙個pcb上分配幾百個差分訊號時這可能是個難點。但這是佈線工程師的問題,不是嗎?

系統開發的方方面面

1 程式設計著眼的地方,應當是整個系統.這個系統是什麼系統?哪個行業?是否能反應了這個行業當前及今後的業務.基於系統分析之上,應當採用什麼軟體架構.之後著手的地方,才是具體的軟體編碼,去實現業務邏輯.乙個程式設計師的成長過程,由最初的具體的編碼.累積了對軟體架構的理解進而進軍軟體架構,希望設計出乙個...

窺透Fortran的方方面面

fortran權威指南 fortran 是英文formula translator 的縮寫,譯為 公式翻譯器 是世界上最早出現的高階計算機程式語言之一,廣泛應用於科學和工程計算領域。fortran 語言以其特有的功能在數值 科學和工程計算領域發揮著重要作用。多年來的應用表明 fortran 本身具有...

機器視覺滲透生活方方面面

機器視覺也就是計算機識別影象的能力。過去三十年裡,計算機視覺技術一直沒有突破性的進展,像人臉識別這種不算困難的任務,竟然一直攻克不了。然而最近幾年,人工智慧領域的深度學習技術,終於讓計算機在影象識別領域,開始媲美並逐漸趕超人類。很多公司已經將這些技術轉化為了產品,輔助或替代我們完成各種各樣的工作。這...