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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > FPGA全局復(fù)位及局部復(fù)位設(shè)計(jì)

          FPGA全局復(fù)位及局部復(fù)位設(shè)計(jì)

          作者: 時(shí)間:2012-09-18 來源:網(wǎng)絡(luò) 收藏

          隨著設(shè)計(jì)越來越復(fù)雜,芯片內(nèi)部的時(shí)鐘域也越來越多,使復(fù)位已不能夠適應(yīng)設(shè)計(jì)的需求,更多的設(shè)計(jì)趨向于使用局部的復(fù)位。本節(jié)將會從內(nèi)部復(fù)位“樹”的結(jié)構(gòu)來分析復(fù)位的結(jié)構(gòu)。

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

          我們的復(fù)位線將會是一個(gè)和時(shí)鐘一樣多扇出的網(wǎng)絡(luò),如此多的扇出,時(shí)鐘信號是采用時(shí)鐘網(wǎng)絡(luò)的,那么復(fù)位如何處理?有人提出用時(shí)鐘網(wǎng)絡(luò)來傳遞復(fù)位信號,但是在FPGA設(shè)計(jì)中,這種方法還是有其弊端。一是無法解決復(fù)位結(jié)束可能造成的時(shí)序問題,因?yàn)槿志W(wǎng)絡(luò)的延時(shí)較大,并且不可以直接連到寄存器的復(fù)位端。仍然需要局部走線,這對于時(shí)序要求緊張的場合,較難滿足時(shí)序;二是會占用全局時(shí)鐘資源,多個(gè)復(fù)位信號會占用更多的全局時(shí)鐘資源。

          在這里提出一個(gè)區(qū)域化復(fù)位的方案,如圖1所示。外部的異步復(fù)位信號被二級寄存器同步化之后,復(fù)制不同的復(fù)位寄存器連到不同的模塊來作為復(fù)位控制。如果單個(gè)模塊的復(fù)位扇出太大的話,還可以在模塊內(nèi)部復(fù)制復(fù)位寄存器。強(qiáng)烈建議那些在datapath上不需要復(fù)位的寄存器不要在代碼中復(fù)位,因?yàn)檫@樣會增加復(fù)位信號的扇出,并增加邏輯資源和降低邏輯速度。

          對于那些有多個(gè)時(shí)鐘區(qū)域,需要多個(gè)時(shí)鐘區(qū)域內(nèi)獨(dú)立復(fù)位的設(shè)計(jì)由多個(gè)同步化的寄存器的模塊來完成同步,然后送到各模塊進(jìn)行復(fù)位。

          當(dāng)然,對于選擇同步化的異步復(fù)位的方案,也可以如圖2所示來安排復(fù)位。將復(fù)位信號轉(zhuǎn)換成同步后送到不同的模塊,在各模塊中進(jìn)行同步化處理,各模塊完成自己的本地復(fù)位。

          模塊化復(fù)位

          圖1模塊化復(fù)位

          同步化異步復(fù)位之模塊化復(fù)位

          圖2 同步化異步復(fù)位之模塊化復(fù)位

          綜合本節(jié)說明的復(fù)位路徑設(shè)計(jì),推薦采用局部復(fù)位,即各模塊或多個(gè)模塊采用自己的獨(dú)立復(fù)位信號。



          關(guān)鍵詞: FPGA 全局

          評論


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