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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于高速串行BCD碼除法的數(shù)字頻率計的設(shè)計

          基于高速串行BCD碼除法的數(shù)字頻率計的設(shè)計

          作者: 時間:2012-07-05 來源:網(wǎng)絡(luò) 收藏

          BCD碼減法運算采用行波進(jìn)位方法,因此必須盡量減小進(jìn)位邏輯上的延遲。ACEX 1K系列的每個LE中都提供了一個專用的進(jìn)位鏈和級聯(lián)鏈,充分利用這些資源可以提高多位串行BCD碼減法的性能。根據(jù)ACEX1K系列周期約束,其延時為:

          Tclk=Tco+B+Tsu-(E-C)

          式中,Tco為clock-output的延時,Tsu為建立時間,兩個時間均可達(dá)到1~2ns;B表示數(shù)據(jù)延時,為0.6ns;E-C)表示時鐘傾斜[4]。因此,總時鐘延時為4.6ns,即工作頻率可以達(dá)到200MHz以上。本文采用100MHz的工作頻率,提高了運算速度。為了減小延時、提高工作效率,在對布局布線進(jìn)行精確控制以后,把BCD碼減法運算做成模塊,在除法運算過程反復(fù)調(diào)用,達(dá)到了模塊復(fù)用效果,大大提高了資源的利用率。

          在整個BCD碼除法運算單元,首先通過輸入數(shù)據(jù)決定信號是否超出測量范圍。

          ·當(dāng)ov1為1時,該信號的頻率大于1Hz;

          ·當(dāng)NSNX,該信號的頻率大于100MHz;

          ·當(dāng)NS=NX,該信號的頻率為1Hz;

          ·當(dāng)NS>NX,該信號頻率在測量范圍內(nèi)。

          根據(jù)輸入的NS和NX計算輸入信號的頻率。



          除法運算通過雙的設(shè)計控制一個BCD碼減法運算。所有狀態(tài)用同一時鐘進(jìn)行控制,實現(xiàn)了系統(tǒng)的同步設(shè)計,消除了異步邏輯中存在的種種險象。各個狀態(tài)之間的關(guān)系如圖5所示。當(dāng)計數(shù)模塊完成計數(shù)時,則將數(shù)輸入除法模塊,開始移位以確定輸入的值;然后發(fā)clrs信號到BCD碼減法運算單元開始運算,循環(huán)相減。當(dāng)循環(huán)結(jié)束時,發(fā)回一個HNS信號,部分余數(shù)開始移位,進(jìn)行下一輪的循環(huán)。最終輸出FOUT,即運算單元結(jié)束。

          本頻率計設(shè)計采用8位的十進(jìn)制計數(shù)器,隨后應(yīng)用實現(xiàn)了高速串行BCD碼除法運算,計算出頻率值。對BCD碼減法模塊的復(fù)用,減小了資源的利用。

          當(dāng)今VLSI的發(fā)展日新月異,的容量和速度成倍地增長,而價格卻逐年下降,這將使得基于設(shè)計的數(shù)字頻率計優(yōu)勢更加明顯。相信這一技術(shù)必將得到更加廣泛的應(yīng)用。


          上一頁 1 2 3 下一頁

          評論


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