做FPGA設計時(shí)需注意的一些關(guān)鍵問(wèn)題
不管你是一名邏輯設計師、硬件工程師或系統工程師,甚或擁有所有這些頭銜,只要你在任何一種高速和多協(xié)議的復雜系統中使用了FPGA,你就很可能需要努力解決好器件配置、電源管理、IP集成、信號完整性和其他的一些關(guān)鍵設計問(wèn)題。不過(guò),你不必獨自面對這些挑戰,因為在當前業(yè)內領(lǐng)先的FPGA公司里工作的應用工程師每天都會(huì )面對這些問(wèn)題,而且他們已經(jīng)提出了一些將令你的設計工作變得更輕松的設計指導原則和解決方案。
I/O信號分配
可提供最多的多功能引腳、I/O標準、端接方案和差分對的FPGA在信號分配方面也具有最復雜的設計指導原則。盡管Altera的FPGA器件沒(méi)有設計指導原則(因為它實(shí)現起來(lái)比較容易),但賽靈思的FPGA設計指導原則卻很復雜。但不管是哪一種情況,在為I/O引腳分配信號時(shí),都有一些需要牢記的共同步驟:
1. 使用一個(gè)電子數據表列出所有計劃的信號分配,以及它們的重要屬性,例如I/O標準、電壓、需要的端接方法和相關(guān)的時(shí)鐘。
2. 檢查制造商的塊/區域兼容性準則。
3. 考慮使用第二個(gè)電子數據表制訂FPGA的布局,以確定哪些管腳是通用的、哪些是專(zhuān)用的、哪些支持差分信號對和全局及局部時(shí)鐘、哪些需要參考電壓。
4. 利用以上兩個(gè)電子數據表的信息和區域兼容性準則,先分配受限制程度最大的信號到引腳上,最后分配受限制最小的。例如,你可能需要先分配串行總線(xiàn)和時(shí)鐘信號,因為它們通常只分配到一些特定引腳。
5. 按照受限制程度重新分配信號總線(xiàn)。在這個(gè)階段,可能需要仔細權衡同時(shí)開(kāi)關(guān)輸出(SSO)和不兼容I/O標準等設計問(wèn)題,尤其是當你具有很多個(gè)高速輸出或使用了好幾個(gè)不同的I/O標準時(shí)。如果你的設計需要局部/區域時(shí)鐘,你將可能需要使用高速總線(xiàn)附近的管腳,最好提前記住這個(gè)要求,以免最后無(wú)法為其安排最合適的引腳。如果某個(gè)特定塊所選擇的I/O標準需要參考電壓信號,記住先不要分配這些引腳。差分信號的分配始終要先于單端信號。如果某個(gè)FPGA提供了片內端接,那么它也可能適用于其他兼容性規則。
6. 在合適的地方分配剩余的信號。
在這個(gè)階段,考慮寫(xiě)一個(gè)只包含端口分配的HDL文件。然后通過(guò)使用供應商提供的工具或使用一個(gè)文本編輯器手動(dòng)創(chuàng )建一個(gè)限制文件,為I/O標準和SSO等增加必要的支持信息。準備好這些基本文件后,你可以運行布局布線(xiàn)工具來(lái)確認是否忽視了一些準則或者做了一個(gè)錯誤的分配。
這將使你在設計的初始階段就和布局工程師一起工作,共同規劃PCB的走線(xiàn)、冗余規劃、散熱問(wèn)題和信號完整性。FPGA工具可能可以在這些方面提供幫助,并協(xié)助你解決這些問(wèn)題,因此你必須確保了解你的工具包的功能。
你咨詢(xún)一位布局專(zhuān)家的時(shí)間越晚,你就越有可能需要去處理一些復雜的問(wèn)題和設計反復,而這些可能可以通過(guò)一些前期分析加以避免。一旦你實(shí)現了滿(mǎn)意的信號分配,你就要用限制文件鎖定它們。
{{分頁(yè)}}
信號完整性
大多數先進(jìn)FPGA能夠處理速度為數百兆赫茲的并行總線(xiàn)和具有工作在千兆赫茲范圍的串行接口。以這么快的速度工作時(shí),你需要了解信號完整性的原理,因為高頻信號的處理會(huì )給我們精確簡(jiǎn)單的數字世界帶來(lái)一連串模擬設計問(wèn)題。
安排一些時(shí)間閱讀FPGA供應商提供的文獻。即使你對某個(gè)器件或者供應商的信息已經(jīng)爛熟于心,也有必要參考其他供應商提供的文檔,因為不同公司的文檔往往有不同的見(jiàn)解。你將會(huì )發(fā)現在很多問(wèn)題上不同的供應商擁有不同的觀(guān)點(diǎn),如什么會(huì )產(chǎn)生高速信號、切換信號之間可以存在多少時(shí)延而仍然可以認為它們是同時(shí)的等等。FPGA供應商的工具通??梢院芎玫貓绦幸恍┗镜男盘柾暾苑治?,因此你必須完全了解你所獲得的工具包的所有潛能。
此外,目前市場(chǎng)上有幾百種關(guān)于信號完整性和降噪的書(shū)。如果你是個(gè)新手或者需要一個(gè)進(jìn)修課程,你可以考慮閱讀Douglas Brooks編寫(xiě)的“信號完整性問(wèn)題和PCB設計”。如果需要進(jìn)行更深入的探討,可以閱讀Howard Johnson編寫(xiě)的“高速數字設計”。
FPGA可能會(huì )由于太多的高速SSO而對系統中的信號(或其它FPGA信號)帶來(lái)嚴重破壞,因為這會(huì )導致稱(chēng)為同時(shí)切換噪聲(SSN)的噪聲。SSN也叫做地反彈或VCC反彈,對于單端標準,SSN是在輸出由低到高時(shí)提供瞬態(tài)電流和由高到低時(shí)吸收瞬態(tài)電流的過(guò)程中,由多個(gè)輸出驅動(dòng)器同時(shí)切換和導致器件電壓與系統電壓之間的變化而引起的。
在高到低的轉換引起地反彈時(shí),由低到高轉換也會(huì )導致VCC下降。由于電容通常安放在VCC和接地層之間,因此SSN典型地存在于這兩個(gè)地方。由低到高轉變時(shí)地反彈也有可能出現。
于是,SSO變成了干擾信號,它會(huì )產(chǎn)生可能耦合到鄰近信號的噪聲。對于某個(gè)區域而言太多SSO可能會(huì )導致電源的擾動(dòng)。由于以下2個(gè)原因,SSO已經(jīng)變成一個(gè)必須認真對待的問(wèn)題:1. 切換時(shí)間大幅下降;2. 過(guò)孔尺寸和走線(xiàn)寬度的減小加上更大的板厚度已經(jīng)推高了板極電感,這將大幅增加出現地反彈的可能性。更大的負載電容也可能導致SSN,雖然程度上會(huì )輕一點(diǎn)。當有效VCC低于期望值,從而導致I/O緩存的轉換速度低于期望速度時(shí),SSN也可能導致時(shí)序問(wèn)題變得突出起來(lái)。
有幾個(gè)方法可以減小SSN。有些器件只需通過(guò)限制I/O標準的選擇就可簡(jiǎn)化這個(gè)問(wèn)題,但不是所有器件都能這么做。一些供應商建議將高速總線(xiàn)輸出分布到整個(gè)裸片上,如果SSN是你唯一關(guān)注的問(wèn)題,那么這絕對是一個(gè)很好的建議。不過(guò),如果按照這個(gè)建議去做,有2個(gè)基本問(wèn)題將會(huì )冒出來(lái)。
首先,這可能會(huì )帶來(lái)下游布通性問(wèn)題,因為將信號散布到整個(gè)裸片上經(jīng)常會(huì )引起更多的走線(xiàn)交叉。而這就導致需要更多的信號布線(xiàn)層。其次,大多數設計在散布信號前也要求進(jìn)行仔細研究,因為當一個(gè)總線(xiàn)散布到特定的塊或區外時(shí)會(huì )引起塊/區間的兼容性問(wèn)題。因此,如果你能在考慮布通性的同時(shí),小心地將一個(gè)較小的總線(xiàn)分布到一個(gè)或兩個(gè)塊/區域內,那么系統將會(huì )工作得很好。
如果你被一個(gè)具有相鄰高速切換輸出的設計所困擾,有好幾種技術(shù)能幫助你解決潛在的SSN問(wèn)題。首先對你的設計進(jìn)行合適的布局和去耦合。對于去耦合,使用距離盡可能近的電源和地平面對,中間用一個(gè)SMT電容隔開(kāi)。使用SMT電容進(jìn)行去耦合也有助于減小電感,而電感是產(chǎn)生系統噪聲的一個(gè)主要因素。
如果你仍然覺(jué)得需要使用去耦電容(為了減小SSN),應該使得這些電容的位置盡可能靠近高速輸出引腳。Altera的一項研究發(fā)現,如果這些電容到引腳的距離大于1英寸,在使用適當的SMT電容去退耦時(shí),這些電容變得效率極低。其他減小SSN或者其可能產(chǎn)生影響的建議包括:避免將敏感信號(復位、時(shí)鐘和使能等)位于SSO附近;可能時(shí),使用較小偏移的輸出和使用最低電感的過(guò)孔;通過(guò)在合適位置插入延時(shí)使得輸出信號交替出現。即使已經(jīng)完成了PCB的生產(chǎn),這個(gè)建議仍然可以應用。
參考將被連接到FPGA上的器件的相關(guān)資料。對于每個(gè)器件,確定最大輸入低電壓門(mén)限(單位毫伏)。這是FPGA驅動(dòng)該器件需要的最大電壓,所以該設備仍然可以檢測到一個(gè)有效邏輯低狀態(tài)(最大VIL值)。同樣,還要確定器件可以容忍且能繼續工作的最大輸入負脈沖信號(單位毫伏)。
在某些情況下,最大容許的地反彈可能不是或者不僅是以上給出的值。而是要通過(guò)獲得最大輸入低電壓門(mén)限的最小值、最大輸入負脈沖信號、或者所有器件的最大地反彈來(lái)確定最大的系統地反彈。
然后,根據具有相似負載特點(diǎn)的網(wǎng)絡(luò )連接的數目和種類(lèi)對類(lèi)似的FPGA總線(xiàn)進(jìn)行分組。接著(zhù)研究每個(gè)部分、區域或者塊的電源和接地引腳數目,還有對于所使用的每個(gè)I/O標準,每個(gè)電源和接地管腳對所允許的SSO數目。這些數目可以用于計算每個(gè)組的總電容負載和每個(gè)輸出驅動(dòng)的電容,以確定可以容忍的SSO最大值。
你也應該咨詢(xún)供應商以確定基于每個(gè)塊和每一對塊你是否超過(guò)了推薦的SSO數目,前提是供應商已經(jīng)研究了這些問(wèn)題。同時(shí),因為有多個(gè)因素會(huì )導致SSN,所以最好建立一個(gè)具有內置抗噪聲性能的魯棒系統。否則,就使用針對每個(gè)引腳限制I/O標準的器件,這樣就可以減少可能的SSN問(wèn)題。
{{分頁(yè)}}
差分信號
在FPGA設計中,你可能會(huì )發(fā)現對差分信號的處理存在最多的爭議。類(lèi)似于SSN,最好從供應商、書(shū)籍和用戶(hù)群獲得盡可能多的信息。同時(shí),在確定某個(gè)方案前咨詢(xún)你的布局部門(mén)以了解他們推薦的建議和信息。
主要爭論開(kāi)始于差分信號對是否應該采用寬邊耦合還是邊緣耦合,以及每對之間到底應該存在多少耦合。答案通常是“根據具體情況確定”,所以需要進(jìn)行具體研究。
如果你不能確定對于一個(gè)單端信號為什么需要選擇差分I/O標準,答案很簡(jiǎn)單。使用差分信號,你幾乎可以完全控制信號的回路。因為這是信號對的一部分,而且理論上在任何一個(gè)接地(或者電源)平面上不應該出現來(lái)自信號對的電流。
這里假設走線(xiàn)對具有相等長(cháng)度,布設在相鄰區域且間距不變,走線(xiàn)阻抗恒定且匹配。此外,利用單端信號,你很難控制信號回程,而且測試一個(gè)信號的返回也可能徒勞無(wú)益。
差分信號的主要缺點(diǎn)是他們需要兩根走線(xiàn)彼此臨近。當在一個(gè)PCB上分配幾百個(gè)差分信號時(shí)這可能是個(gè)難點(diǎn)。但這是布線(xiàn)工程師的問(wèn)題,不是嗎?
評論