<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 采用中檔FPGA設(shè)計(jì)面向PCI Express系統(tǒng)的解決方案

          采用中檔FPGA設(shè)計(jì)面向PCI Express系統(tǒng)的解決方案

          作者: 時(shí)間:2010-01-04 來(lái)源:網(wǎng)絡(luò) 收藏
          基于ISA(工業(yè)標(biāo)準(zhǔn)架構(gòu))總線的首個(gè)擴(kuò)展卡最初在1978年問(wèn)世,由于要求提升整體性能,MCA(微通道架構(gòu))等總線或是擴(kuò)展的ISA總線隨后也相繼出現(xiàn)。鑒于數(shù)據(jù)通道寬度(主要是8或16位)和總線架構(gòu)的速度問(wèn)題,許多標(biāo)準(zhǔn)都限制了帶寬。此外,萬(wàn)一錯(cuò)誤配置了總線,很難確定差錯(cuò)在哪里,因此調(diào)試這個(gè)時(shí)就會(huì)遇到各種問(wèn)題。根據(jù)這些舊的總線標(biāo)準(zhǔn)的經(jīng)驗(yàn),新的標(biāo)準(zhǔn)(外設(shè)部件互連)最終得以確定。本文將探討標(biāo)準(zhǔn)的局限性,以及下一代 是如何以節(jié)約成本的方式得以實(shí)現(xiàn)的。

          為了克服舊標(biāo)準(zhǔn)的上述局限,1992年人們建立了PCI。其目的是構(gòu)建一個(gè)更高帶寬的標(biāo)準(zhǔn),有即插即用功能和更穩(wěn)健的協(xié)議。PCI協(xié)議支持差錯(cuò)校驗(yàn),通過(guò)與計(jì)算機(jī)的BIOS(基本輸入輸出系統(tǒng))通信實(shí)現(xiàn)即插即用功能,并通過(guò)標(biāo)準(zhǔn)的控制/狀態(tài)軟件接口就地址范圍或PCI插卡功能等信息進(jìn)行交換。如果出現(xiàn)地址范圍重疊等差錯(cuò),計(jì)算機(jī)本身可以提供一些反饋。一個(gè)基本的32位33MHz的PCI系統(tǒng),可支持的傳輸速率高達(dá)132MBps。但是,這個(gè)架構(gòu)也有一些限制因素。總線是單向的(發(fā)起方和被請(qǐng)求的目標(biāo)設(shè)備不能在同一時(shí)間進(jìn)行通信),且?guī)讉€(gè)卡要共享一條總線。如果一張卡正在傳輸數(shù)據(jù),所有其他的可訪問(wèn)總線的部件必須等待。此外,在系統(tǒng)中無(wú)法處理PCI帶寬的低性能卡將進(jìn)行“重試”請(qǐng)求,以確保有更多時(shí)間來(lái)處理數(shù)據(jù)。這就大大降低了整個(gè)系統(tǒng)的帶寬。PCI的另一個(gè)限制是各種應(yīng)用對(duì)所需求帶寬不斷增加,特別是在視頻、通信和總線領(lǐng)域。圖1列出的一些應(yīng)用,已經(jīng)接近或超過(guò)了理論上的PCI帶寬132MBps。

          本文引用地址:http://www.ex-cimer.com/article/191824.htm

          圖1:各種應(yīng)用的帶寬需求對(duì)比理論上PCI提供的132MBps。
          圖1:各種應(yīng)用的帶寬需求對(duì)比理論上PCI提供的132MBps。

          PCI還有其他一些缺點(diǎn),如限制只能有5個(gè)部件訪問(wèn)總線。由于PCI總線特殊的無(wú)端接總線的反射,電路板的設(shè)計(jì)也更加困難。數(shù)據(jù)路徑寬度為32或64位的并行線也對(duì)時(shí)序有苛刻的要求。

          根據(jù)以往經(jīng)驗(yàn),PCI-SIG(PCI特別興趣小組)與行業(yè)內(nèi)的領(lǐng)先公司合作,定義了PCI的下一代標(biāo)準(zhǔn)。新標(biāo)準(zhǔn)最初被稱為3G IO(第三代輸入輸出),后來(lái)改名為大家熟悉的PCI 。PCI 的首個(gè)規(guī)范于2002年4月公布,其解決了原有PCI標(biāo)準(zhǔn)的所有限制因素。為了克服無(wú)端接的大量并行總線并增加帶寬,PCI Express轉(zhuǎn)變?yōu)檫\(yùn)行速率2.5Gbps的串行鏈路,提供兩個(gè)方向同時(shí)進(jìn)行的2Gbps的原始數(shù)據(jù)率。為了滿足更高的帶寬要求,規(guī)范允許使用幾個(gè)并行的“通道”。因此對(duì)于目前計(jì)算機(jī)的低帶寬應(yīng)用,有很多x1和x4通道;對(duì)于有高帶寬的要求,例如顯卡,則有x16的插槽。

          由于PCI Express規(guī)范使用基于層的協(xié)議,類似于OSI的層次模型,它很容易改變物理層和保留上層協(xié)議。這種做法已被最近發(fā)布的PCI Express 2.0規(guī)范所采納,使得鏈路速度高達(dá)5Gbps。然而,大多數(shù)新的設(shè)計(jì)開(kāi)始仍然是基于PCI Express 1.1版本的2.5Gbps。

          一個(gè)PCI Express系統(tǒng)可以用幾個(gè)部件組成。所有的系統(tǒng)都需要有一個(gè)根聯(lián)合體(Root Complex)對(duì)整個(gè)系統(tǒng)進(jìn)行管理。交換設(shè)備(Switch)是用來(lái)將幾個(gè)卡連接到另一個(gè)PCI Express鏈路,“端設(shè)備”則代表了用戶應(yīng)用。橋接是端設(shè)備的特殊形式,可以將舊的PCI應(yīng)用連接至PCI Express總線。主要用于端設(shè)備或橋接應(yīng)用。

          在PCI Express應(yīng)用中起著重要的作用,主要有三種設(shè)計(jì)方法:

          *PCI-Express至PCI橋和

          *外部的PCI-Express PHY和FPGA

          *PCI-Express的PHY集成在FPGA之中

          第一種使用PCI-Express至PCI橋的方法,優(yōu)點(diǎn)是可以重用舊的PCI設(shè)計(jì),但由于額外的橋接單元,成本很高。在橋和FPGA之間,這個(gè)應(yīng)用仍然被PCI的缺點(diǎn)所限制,在成本方面處于不利地位。

          圖2A和2B
          圖2A和2B

          當(dāng)僅需純粹的PCI Express接口,而不需要其它邏輯時(shí),外部的PCI Express PHY和FPGA(圖2A)相結(jié)合可能極具吸引力。利用被稱為PIPE的并行接口,PCI Express PHY可以連接到FPGA。雖然PIPE接口被認(rèn)為是一個(gè)標(biāo)準(zhǔn),但不同廠商在實(shí)現(xiàn)方面有著細(xì)微的差別,因此物理層芯片就不容易互換。此外,工業(yè)級(jí)的外部PCI Express PHY芯片也不太容易買到,要不就是價(jià)格昂貴。此外,許多應(yīng)用程序使用領(lǐng)先的器件,可用的領(lǐng)先的PCI Express PHY芯片也是很有限的。

          因此,如果只有一個(gè)PCI Express接口鏈路,而且在FPGA中只要少量的額外邏輯(除了溫度范圍的限制,以及可用的領(lǐng)先器件),這種做法頗有意義。對(duì)于所有其他應(yīng)用,最好是考慮一個(gè)整合的解決方案,如圖2B所示。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: Express FPGA PCI 系統(tǒng)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();