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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 免費的I/O:改進(jìn)FPGA時鐘分配控制

          免費的I/O:改進(jìn)FPGA時鐘分配控制

          作者: 時間:2014-03-08 來源:網(wǎng)絡(luò) 收藏

          同步數(shù)字系統(tǒng)中的時鐘信號(如遠(yuǎn)程通信中使用的)為系統(tǒng)中的數(shù)據(jù)傳送定義了時間基準(zhǔn)。一個時鐘分配網(wǎng)絡(luò)由多個時鐘信號組成,由一個點將所有信號分配給需要時鐘信號的所有組件。因為時鐘信號執(zhí)行關(guān)鍵的系統(tǒng)功能,很顯然應(yīng)給予更多的關(guān)注,不僅在時鐘的特性(即偏移和抖動)方面,還有那些組成時鐘分配網(wǎng)絡(luò)的組件。

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

          FPGA開發(fā)團(tuán)隊不斷面臨過于繁瑣、復(fù)雜的時鐘網(wǎng)絡(luò)的挑戰(zhàn)。各種因素,包括不斷增加的I/O需求、降低成本的要求和減少印刷電路板設(shè)計更改的需要,迫使設(shè)計人員重新審視時鐘網(wǎng)絡(luò)。本文將探討FPGA時鐘分配控制方面的挑戰(zhàn),協(xié)助開發(fā)團(tuán)隊改變他們的設(shè)計方法,并針對正在考慮如何通過縮小其時鐘分配網(wǎng)絡(luò)的規(guī)模來擁有更多的FPGA I/O,或提高時鐘網(wǎng)絡(luò)性能的設(shè)計者們提供實用的建議。

          引發(fā)設(shè)計更改的因素

          1. 電路板面積的限制

          印刷電路板設(shè)計必須考慮到許多限制因素。包括物理尺寸、散熱要求、走線長度、層數(shù)和互連的類型。隨著每一代的設(shè)計都要求更多的功能,因而電路板的限制因素也越來越多。一種解決方案是使用可編程邏輯器件,如FPGA和CPLD,減少元件數(shù)量并降低電路板的復(fù)雜性。然而,采取這種方法的同時還可以進(jìn)一步重新審視一下時鐘分配網(wǎng)絡(luò)。不僅因為時鐘網(wǎng)絡(luò)的各種走線長度,占用了大量的電路板面積,并且還用到大量的振蕩器和時鐘分配IC來產(chǎn)生當(dāng)今設(shè)計中所需的多種頻率。

          2. 時鐘網(wǎng)絡(luò)性能

          時鐘信號及其相關(guān)的分配網(wǎng)絡(luò)對于實現(xiàn)當(dāng)今數(shù)字系統(tǒng)的高性能和高可靠性來說是至關(guān)重要的。提高同步設(shè)計整體性能的關(guān)鍵是要提高時鐘網(wǎng)絡(luò)的頻率。然而,由于一些因素,如時序容限、信號完整性和同步相關(guān)時鐘邊沿,使得時鐘網(wǎng)絡(luò)的復(fù)雜性大大增加。時鐘網(wǎng)絡(luò)使用一系列單功能的組件來設(shè)計,如扇出緩沖器、時鐘發(fā)生器、延遲線、零延遲緩沖器和頻率合成器。任何由于走線長度不同而引起的時序錯誤,都可以通過蛇形線進(jìn)行走線長度匹配或使用緩沖器來解決。使用試錯法選擇串聯(lián)電阻可以緩和任何走線阻抗與輸出驅(qū)動器阻抗不匹配的影響。甚至可以使用專門的轉(zhuǎn)換器來匹配時鐘發(fā)生器和接收器IC之間的信號接口,與多種信號標(biāo)準(zhǔn)連接。然而,傳統(tǒng)上設(shè)計師們采用多種不太理想的解決方案,目的是為了使用盡可能少的走線和元器件,實現(xiàn)小規(guī)模且高性能的時鐘網(wǎng)絡(luò)。

          3. 更高的FPGA I/O利用率

          隨著高復(fù)雜度的系統(tǒng)設(shè)計推動了可編程邏輯的使用,設(shè)計人員需要更多的FPGA I/O來實現(xiàn)更多功能。再加上由于每個系統(tǒng)對FPGA I/O的需求都不同,突然之間每個I/O都變得很珍貴。當(dāng)I/O受限時,簡單的解決方案就必須移植到較大的FPGA上。在這種情況下,“大”可能意味著更多的封裝引腳數(shù)或者更多查找表(LUT)的FPGA。然而,通?!按蟆币惨馕吨骷r格更昂貴。另一種解決方案是檢視I/O到底是如何被消耗的,特別是在時鐘分配網(wǎng)絡(luò)中。一個帶有扇出緩沖器的時鐘發(fā)生器需要使用多達(dá)12個I/O,這聽起來好像不多,但是考慮到在一個應(yīng)用中所需要的不同時鐘頻率的數(shù)量?,F(xiàn)在你可以很清楚地看到時鐘分配網(wǎng)絡(luò)用掉了多少FPGA的I/O……太多了!通過優(yōu)化時鐘網(wǎng)絡(luò),設(shè)計師們可以使用更小的FPGA或者獲得免費的I/O來實現(xiàn)附加功能。

          現(xiàn)代FPGA時鐘分配示例

          高級夾層卡(Advanced MC或AMC)是一個小型的夾層卡,符合PICMG標(biāo)準(zhǔn)定義。它是開發(fā)AdvancedTCA和MicroTCA系統(tǒng)時,設(shè)計師選擇的夾層卡。

          評估時鐘源選擇的方法之一是使用一塊評估板,如LatticeECP3 AMC評估板。此板允許為5個時鐘網(wǎng)絡(luò)中的每一個提供多個時鐘源選擇,如圖1所示。

          圖1 AMC時鐘網(wǎng)絡(luò)

          圖1中,F(xiàn)PGA的SERDES/PCS核可以使用幾種可選的連接。PCS quad可用于多種、雙工SERDES通道,連接到各種千兆以太網(wǎng)接口或AMC背板。

          PCSA——來自板上122.88、125或156.25 MHz的時鐘源。但是,如果使用了122.88 MHz,這將禁止PCSA上任何非CPRI接口。PCSA也可以接收來自AMC背板的時鐘。

          PCSB和PCSC——來自板上125或156.25 MHz器件的時鐘源。它們還可以從AMC背板接收時鐘。該時鐘允許不同的速率或相同的速率時鐘分別提供給PCSB和PCSC參考時鐘。

          PCSD——來自板上122.88、125或156.25 MHz器件的時鐘源。它們還可以從AMC背板接收時鐘信號。

          背板——連接AMC edge-finger (TCLKB)的遠(yuǎn)程通信時鐘。這個時鐘可以在不使用時禁用。

          來自AMC的時鐘:這個時鐘能夠為所有4個quad提供PCS參考時鐘的驅(qū)動參考時鐘源。

          輸入AMC的時鐘:這個時鐘能夠驅(qū)動AMC模塊到背板,并且可以是任意PCS quad的同一個參考時鐘源。

          如圖2所示,AMC時鐘網(wǎng)絡(luò)最初通過多個時鐘發(fā)生器控制,1?4個扇出緩沖器和一個2:1多路開關(guān)。該方案需要38個I/O來進(jìn)行時鐘分配控制,還需要占用大量電路板面積。

          圖2 傳統(tǒng)AMC時鐘網(wǎng)絡(luò)機(jī)制

          利用一個可編程的時鐘管理器件,可以大大地優(yōu)化網(wǎng)絡(luò)(如圖3所示)。該方案僅需要18個I/O來進(jìn)行時鐘分配控制,節(jié)省了20個I/O可用于其他功能。此外,使用這種設(shè)計節(jié)省了超過3平方英寸的電路板面積。

          這些方案通過使用兩個可編程時鐘管理器件來控制(見圖4)。有幾個板上振蕩器可以合成和/或扇出作為幾個時鐘的輸入。所有的時鐘變量都可以通過對時鐘管理器件的編程來進(jìn)行管理。

          圖3 優(yōu)化的AMC時鐘網(wǎng)絡(luò)設(shè)計


          上一頁 1 2 下一頁

          關(guān)鍵詞: 時鐘分配零延遲緩沖器 I/O需求

          評論


          相關(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); })();