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

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > FPGA基礎(chǔ)之時序設計

          FPGA基礎(chǔ)之時序設計

          作者: 時間:2012-02-10 來源:網(wǎng)絡 收藏

          設計一個很重要的設計是,而的實質(zhì)就是滿足每一個觸發(fā)器的建立(Setup)/保持(Hold)時間的要求。

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

          建立時間(Setup Time):是指在觸發(fā)器的時鐘信號上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時間,如果建立時間不夠,數(shù)據(jù)將不能在這個時鐘上升沿被打入觸發(fā)器;

          保持時間(Hold Time):是指在觸發(fā)器的時鐘信號上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時間, 如果保持時間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。

          設計分為同步電路設計和同步電路設計,然而很多異步電路設計都可以轉(zhuǎn)化為同步電路設計,在設計時盡量采用同步電路進行設計。對于同步電路可以轉(zhuǎn)化的邏輯必須轉(zhuǎn)化,不能轉(zhuǎn)化的邏輯,應將異步的部分減到最小,而其前后級仍然應該采用同步設計。

          為了讓同步電路可靠地運行,就要對時鐘偏差進行控制,以使時鐘偏差減小到可用的范圍。影響時鐘偏差的主要有以下幾個因素:
            用于連接時鐘樹的連線
            鐘樹的拓撲結(jié)構(gòu)
            時鐘的驅(qū)動
            時鐘線的負載
            時鐘的上升及下降時間

          在通常的設計中對時鐘偏差的控制主要有以下幾種方法:

          控制時鐘信號盡量走可編程器件的的全局時鐘網(wǎng)絡。在可編程器件中一般都有專門的時鐘驅(qū)動器及全局時鐘網(wǎng)絡,不同種類、型號的可編程器件,它們中的全局時鐘網(wǎng)絡數(shù)量不同,因此要根據(jù)不同的設計需要選擇含有合適數(shù)量全局時鐘網(wǎng)絡的可編程器件。一般來說,走全局時鐘網(wǎng)絡的時鐘信號到各使用端的延時小,時鐘偏差很小,基本可以忽略不計。

          若設計中時鐘信號數(shù)量很多,無法讓所有的信號都走全局時鐘網(wǎng)絡,那么可以通過在設計中加約束的方法,控制不能走全局時鐘網(wǎng)絡的時鐘信號的時鐘偏差。

          異步接口時序裕度要足夠大。局部同步電路之間接口都可以看成是異步接口,比較典型的是設計中的高低頻電路接口、I/O接口,那么接口電路中后一級觸發(fā)器的建立-保持時間要滿足要求,時序裕度要足夠大。

          在系統(tǒng)時鐘大于30MHz時,設計難度有所加大,建議采用流水線等設計方法。采用流水線處理方式可以達到提高時序電路的速度,但使用的器件資源也成倍增加。

          要保證電路設計的理論最高工作頻率大于電路的實際工作頻率。



          關(guān)鍵詞: FPGA 基礎(chǔ) 時序設計

          評論


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