作者:Altera公司 Ron Wilson 系統(tǒng)中的互聯(lián)體系結(jié)構(gòu)一直得到了廣泛應(yīng)用。芯片邊界和電路板邊沿等物理約束要求對系統(tǒng)進(jìn)行劃分。而I/O的GPIB或者USB、內(nèi)部互聯(lián)的微處理器總線等標(biāo)準(zhǔn)定義了互聯(lián)方法。除了這些標(biāo)準(zhǔn),連接還常用于異步和點(diǎn)對點(diǎn)應(yīng)用中。 然而今天,子系統(tǒng)之間帶寬的迅速增長,低延時通路在子系統(tǒng)邊界擴(kuò)展的風(fēng)險,以及嚴(yán)格的功耗和成本預(yù)算等因素導(dǎo)致一切變得更加復(fù)雜。在很多設(shè)計中,不可能在系統(tǒng)中布滿CPU總線,或者外設(shè)總線。對于以芯片系統(tǒng)(SoC)實現(xiàn)的子系統(tǒng),一些芯片設(shè)計人員能夠通過這些子系統(tǒng)預(yù)先了解您的系統(tǒng)互聯(lián)體系結(jié)構(gòu)。由于低I/O電壓和極短的上升時間,點(diǎn)對點(diǎn)互聯(lián)遇到了很大的時序、信號完整性和電路板設(shè)計難題。 對于這一越來越復(fù)雜的情形,需要其他的解決方案。高速串行互聯(lián)一直主要用于通信行業(yè),在較長的距離上傳輸數(shù)據(jù)流。采用高級硅片工藝技術(shù),在很多系統(tǒng)中,這些串行鏈路的接口變得非常小,而數(shù)據(jù)速率足夠高,多千兆位串行鏈路替代了并行總線,甚至是異步I/O。 一個很明顯的例子是PCI Express (PCIe)。最初的PCI是非常傳統(tǒng)的并行同步總線。隨著個人計算機(jī)帶寬需求的增長,Intel把這一拓?fù)溥w移到了高速串行鏈路的多個通路上。相似的發(fā)展也出現(xiàn)在大容量存儲器件中,老的AT連接總線變?yōu)楝F(xiàn)在非常熟悉的串行ATA (SATA)。 而這些概念的應(yīng)用已經(jīng)超出了外設(shè)總線。為能夠理解為什么高速串行鏈路可以應(yīng)用于點(diǎn)對點(diǎn)連接甚至是單個電路板邊界上,讓我們了解一些系統(tǒng)劃分問題。 系統(tǒng)劃分 在理想的理論體系結(jié)構(gòu)中,系統(tǒng)劃分完全是基于數(shù)據(jù)和控制流圖的系統(tǒng)過程。您畫出圖,然后,將功能模塊劃分到子系統(tǒng)中,子系統(tǒng)分成更大的組,這樣,減小了帶寬需求,增大了子系統(tǒng)之間鏈路的延時約束。然后,您可以針對這一鏈路的需求,以最短的合適互聯(lián),實現(xiàn)子系統(tǒng)之間的每一連接。 這一方法對于空白電路板非常適用。這實際上與SoC設(shè)計和FPGA使用的早期階段非常相似。但是,當(dāng)今的大部分設(shè)計都從商用芯片開始:專用標(biāo)準(zhǔn)產(chǎn)品(ASSP)或者微控制器單元(MCU)。這些SoC給我們提出了很多劃分要求,如圖1所示。我們選擇的芯片決定了我們的子系統(tǒng)邊界,以及應(yīng)使用那種互聯(lián)技術(shù)。如果您MCU唯一的外部互聯(lián)是AMBA APB外設(shè)總線,或者DDR2存儲器總線,以及一些通用I/O引腳,那么,這就是您的選擇。 圖1.電機(jī)控制電路板上的芯片按照子系統(tǒng)進(jìn)行分組。 即使這樣,劃分仍然是系統(tǒng)設(shè)計中的一個重要步驟。而且,您必須對比SoC設(shè)計人員做出的假設(shè)和系統(tǒng)實際物理邊界、帶寬需求以及延時要求。因此,您需要識別出子系統(tǒng):把需要交換大量數(shù)據(jù)的芯片放到一起,例如,SoC及其DRAM等。可以把它們之間的窄帶、對延時要求不高的芯片放在不同的子系統(tǒng)中,例如,MCU和系統(tǒng)監(jiān)視模數(shù)轉(zhuǎn)換器(ADC)等。通過這種分組方法包括了系統(tǒng)中所有的功能模塊后,可以轉(zhuǎn)向?qū)ψ酉到y(tǒng)之間的鏈路進(jìn)行特征描述。 特征描述 在基于SoC的系統(tǒng)中,對子系統(tǒng)之間的互聯(lián)進(jìn)行特征描述看起來似乎沒有什么意義。SoC的I/O選項很好的定義了接口。但是作為系統(tǒng)設(shè)計人員,您還是需要回答某些重要問題,仍然有一些可能不太明確的選項。 把問題分成帶寬、延時和成本幾類。帶寬是這些問題的基礎(chǔ)。如果您建議的互聯(lián)方案是可行的,那么,您應(yīng)該清楚的知道每一子系統(tǒng)的帶寬需求。一般而言,這實際上是一個意義不大的問題。SoC設(shè)計人員將通路設(shè)計得很長,以保證芯片上的I/O要比預(yù)測的任務(wù)需求多得多。一般有足夠的DRAM帶寬來處理芯片CPU高速緩存生成的所有指令和數(shù)據(jù)流。通常有PCIe等高速總線連接至主系統(tǒng)或者寬帶外設(shè)和加速器等。而且,還有與標(biāo)準(zhǔn)兼容的專用I/O接口。 但是,如果SoC設(shè)計人員沒有預(yù)見到您所做的工作呢?有時候,基于您對系統(tǒng)體系結(jié)構(gòu)的分析,您選擇的SoC完全滿足您的接口要求。在其他情況下,您可能會發(fā)現(xiàn),在某些地方會遇到瓶頸,而有的情況下會遇到未使用的帶寬,或者完全沒有使用的接口。在所有這些情況下,您可能會重新思考這些接口的用途。或者,如果您通過在FPGA中匯集知識產(chǎn)權(quán)(IP)來構(gòu)建SoC,那么,您能夠更靈活的重新安排系統(tǒng)互聯(lián)體系結(jié)構(gòu)。特別是,您應(yīng)該仔細(xì)處理系統(tǒng)中要求最高的數(shù)據(jù)流。將所有的東西都自動轉(zhuǎn)儲到一條共享總線上,即使是快速PCIe總線,也不是好方法。 DRAM總線的其他用途 如果您的SoC有多條DRAM總線,或者您使用一片F(xiàn)PGA,那么這些大量數(shù)據(jù)流的一種選擇是把DRAM接口作為I/O通道使用。在最近的DesignCon大會上一次有趣的研討中,Synopsys首席工程師John Ellis在“推動移動存儲器的應(yīng)用超越智能電話領(lǐng)域”一文中探討了以這類方式來使用新LPDDR3接口的可能性。Ellis解釋說,JEDEC專門為智能電話應(yīng)用SoC及其主存儲器之間的超短距離寬帶連接設(shè)計了LPDDR3,特別是不超過一厘米的距離,針對連接,優(yōu)化了SoC和DRAM封裝的引腳布局。在這一應(yīng)用中,總線能夠以相對較低的功耗承載非常高的數(shù)據(jù)速率,甚至不需要匹配電阻。但是,Ellis指出,這一應(yīng)用并不是使用總線的唯一方法。 Ellis說,在理想的配置中,總線可以工作在1067 MHz。“理想”包括大約1 cm的長度,寫調(diào)平和地址/控制位去偏移、阻抗匹配走線,以及足夠的電源和地引腳等。但是,Ellis的仿真表明,降低頻率,采用較小的遠(yuǎn)端匹配電阻,以及仔細(xì)的進(jìn)行布線后,總線工作長度可以延長到8至10 cm。 因此,有好消息也有不太好的消息。好消息是LPDDR3可以用于各種互聯(lián)任務(wù)中,不僅僅是靠近SoC的DRAM。距離較長時,總線還可以用于子系統(tǒng)之間的鏈路。不太好的消息是,要綜合考慮距離和帶寬,這都取決于電路板的物理設(shè)計。 串行選擇 對于子系統(tǒng)內(nèi)部鏈路,由于帶寬需求增大,并行總線頻率和距離折中的方法帶來了更嚴(yán)重的問題。在某些點(diǎn),需要給出一些解決方法。Altera工程師Kaushik Mittra指出,“隨著帶寬的增大,在某些點(diǎn),您不得不放棄并行總線。長度也是一個因素。如果一條寬總線的運(yùn)行頻率非常高,在大約40英寸時,走線之間的時序偏移占據(jù)了大部分總線周期時間。這根本無法工作。”我們在圖2中描述了這一點(diǎn)。 圖2.在快速并行總線上,比特間偏移會導(dǎo)致無法正常工作 通過使用足夠高的時鐘頻率,非常注意阻抗匹配、走線匹配,以及供電方法,在較短的芯片至芯片連接上,同步并行總線可實現(xiàn)較大的帶寬。如果電路板布板被改變了,在稍長的距離上,相同的設(shè)計就有可能失敗。 而解決方法是高速串行鏈路。采用商用器件,單條通路工作速率可以高達(dá)28 Gbps,因此幾條通路可以承載速率很高的數(shù)據(jù)流,作為高速寬帶并行總線使用。由于每一條通路都是獨(dú)立的,其時鐘藏在數(shù)據(jù)流中,因此,不需要處理偏移問題,極大地簡化了布線問題。而且,正如Altera現(xiàn)場應(yīng)用工程師Susannah Martin所指出的,即使是并行總線能夠工作在相似的環(huán)境下,幾條串行通路的引腳和電路板成本要比同等并行總線低得多。 好在您所需要的高速串行互聯(lián)硬件已經(jīng)由您選擇的SoC提供了。很多ASSP甚至是某些高級MCU都有1 Gbps以太網(wǎng)(GbE)或者10GbE端口,在某些情況下,還有PCIe端口,所有這些都可以用在芯片至芯片應(yīng)用中。即使是低端FPGA現(xiàn)在都有通用多千兆位收發(fā)器,您可以定制這些收發(fā)器以滿足您的鏈路需求。而且,Mittra指出,某些芯片包括了芯片至芯片串行鏈路,符合特殊應(yīng)用環(huán)境的標(biāo)準(zhǔn)要求。一個例子是網(wǎng)絡(luò)環(huán)境下的Interlaken。 延時問題 在串行鏈路上承載子系統(tǒng)之間的寬帶數(shù)據(jù)流有很多優(yōu)勢。Martin指出,除了上面提到的低成本,還能夠大幅度降低功耗。但是也有一個問題。Martin提示說,與直接并行連接相比,消息排隊、串化和傳輸,最終在遠(yuǎn)端解串化和重新構(gòu)建消息這一過程會顯著增加端到端延時。在某些系統(tǒng)中,可能需要重新組織邏輯以解決這一延時問題。 這些問題并不意味著您在彼此異步的子系統(tǒng)之間只能使用串行連接。鏈路的最大端到端延時只要在系統(tǒng)總時序要求范圍內(nèi),您就可以使用串行鏈路來實現(xiàn)子系統(tǒng)之間的傳輸。您的確需要使用某些可靠的方法在遠(yuǎn)端重新同步數(shù)據(jù),但是這一問題與您使用其他的時鐘域交叉方法完全不同。實際上,如果需要,通過仔細(xì)的設(shè)計,您甚至可以使用狀態(tài)機(jī)內(nèi)部的串行鏈路。 這樣,還帶來了另一種可能性。目前為止,我們已經(jīng)討論了采用串行鏈路來替代并行總線。但是,您只要仔細(xì)的理解了時序問題,也可以將一組獨(dú)立的異步I/O引腳匯集成串行鏈路。實際上,某些基于FPGA的邏輯仿真系統(tǒng)使用了這一方法來劃分兩個或者多個內(nèi)部FPGA之間的邏輯云。 另一種解決方案 在以供應(yīng)商設(shè)計的ASSP和MCU為主的環(huán)境下,系統(tǒng)互聯(lián)體系結(jié)構(gòu)的范圍似乎已經(jīng)規(guī)定好了。但實際上,作為一名系統(tǒng)設(shè)計人員,您的確還很大的自由度。您當(dāng)然可以選擇您所設(shè)計好的芯片。一旦您確定使用SoC,您可以重新使用芯片提供的I/O,根據(jù)系統(tǒng)需求來使用它們,而不是限于芯片設(shè)計人員所提供的使用方法。您還可以選擇使用可編程邏輯器件,完全控制互聯(lián)體系結(jié)構(gòu)。 通過這種自由選擇,隨著子系統(tǒng)之間鏈路帶寬的增大,多千兆位串行互聯(lián)將會扮演越來越重要的角色。在很多情況下,SoC已經(jīng)有了收發(fā)器,F(xiàn)PGA當(dāng)然也有。還有可靠的信號完整性、成本和功耗優(yōu)勢。采用一些幾乎封裝好的串行鏈路布板,最終的電路板將多層結(jié)構(gòu)的布板難題變?yōu)橄鄬唵蔚脑O(shè)計。在一些高性能應(yīng)用中,高速串行鏈路I/O已經(jīng)替代了并行總線,未來的應(yīng)用會更加廣泛。 |