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