<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ì)中的多時(shí)鐘設(shè)計(jì)策略

          大型FPGA設(shè)計(jì)中的多時(shí)鐘設(shè)計(jì)策略

          作者: 時(shí)間:2012-03-07 來(lái)源:網(wǎng)絡(luò) 收藏

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

          作為一種可能的解決方案,我們推薦使用一個(gè)最快的時(shí)鐘來(lái)對(duì)16個(gè)E1時(shí)鐘采樣。16個(gè)輸入時(shí)鐘都接近2.048MHz,并且還有一個(gè)34.368MHz的系統(tǒng)時(shí)鐘。這樣,我們可以用34.368MHz時(shí)鐘來(lái)對(duì)16個(gè)E1時(shí)鐘分別進(jìn)行采樣,并將結(jié)果存儲(chǔ)在一個(gè)16位存儲(chǔ)器中(每個(gè)E1時(shí)鐘一個(gè)位)。然后,我們可以使用一個(gè)算法來(lái)檢測(cè)在E1時(shí)鐘上由低至高的轉(zhuǎn)換,為每一個(gè)E1數(shù)據(jù)信號(hào)產(chǎn)生一個(gè)使能信號(hào),并在下一個(gè)周期(34.368MHz)中存儲(chǔ)數(shù)據(jù)。

          要成功實(shí)現(xiàn)這種方案,還必需了解時(shí)鐘-數(shù)據(jù)關(guān)系以避免在數(shù)據(jù)變化時(shí)對(duì)數(shù)據(jù)采樣,參見(jiàn)圖6。請(qǐng)注意在時(shí)鐘采樣電路的第一級(jí)中使用了兩個(gè)觸發(fā)器以確保在亞穩(wěn)態(tài)下正常工作。另外需要注意的是,數(shù)據(jù)和時(shí)鐘必須具有相同時(shí)鐘周期數(shù)的延遲。

          我們已經(jīng)成功地將多路復(fù)用器的時(shí)鐘減少到一個(gè)時(shí)鐘,同樣的方法可否用在解復(fù)用器呢?E3解復(fù)用器必須采用一個(gè)外部輸入時(shí)鐘,這是因?yàn)轵?qū)動(dòng)E3輸入數(shù)據(jù)的同一個(gè)片外器件利用到該時(shí)鐘。由于E3解復(fù)用器知道在什么時(shí)候發(fā)送數(shù)據(jù)到E2解復(fù)用器,并能對(duì)每個(gè)E2解復(fù)用器產(chǎn)生使能信號(hào),而四個(gè)E2解復(fù)用器能工作在與E3多路復(fù)用器相同的主時(shí)鐘下。同樣,E2多路復(fù)用器能夠?yàn)槊總€(gè)E1流產(chǎn)生使能信號(hào)。

          如果我們假設(shè)線路接口芯片能夠接受有間隙的時(shí)鐘(gapped clock),一旦確定發(fā)出E1使能信號(hào),我們只需要發(fā)送一個(gè)時(shí)鐘脈沖至線路接口。然而,只需要簡(jiǎn)單地發(fā)送使能信號(hào)本身至接口芯片而不必產(chǎn)生一個(gè)新的時(shí)鐘。因?yàn)樗椭两涌诘臄?shù)據(jù)將在使能信號(hào)的下降沿產(chǎn)生改變(參見(jiàn)圖5),我們需要確認(rèn)接口在時(shí)鐘的上升沿進(jìn)行采樣。因?yàn)槭鼓苄盘?hào)僅在線路接口芯片上而不是在內(nèi)用作一個(gè)時(shí)鐘,就沒(méi)有必要在一個(gè)低抖動(dòng)源中進(jìn)行布線。注意這是在知道將再也不會(huì)用主時(shí)鐘的連續(xù)脈沖送數(shù)據(jù)到相同的從屬器件中時(shí)才這樣做。

          1MHz SPI時(shí)鐘并不能簡(jiǎn)單去掉,但我們現(xiàn)在通過(guò)使用使能信號(hào)和時(shí)鐘過(guò)采樣技術(shù),將原先40個(gè)時(shí)鐘減少到3個(gè),這樣我們就有了更大的器件選擇范圍。圖6:多路復(fù)用器中的時(shí)鐘過(guò)采樣。

          異步時(shí)鐘

          在用異步時(shí)鐘產(chǎn)生任何邏輯前應(yīng)該盡量先考慮采用其它替代方法,用異步時(shí)鐘的組合邏輯是產(chǎn)生亞穩(wěn)態(tài)問(wèn)題的主要原因。同樣,當(dāng)違反觸發(fā)器的設(shè)置和保持時(shí)間約束時(shí),在一個(gè)短時(shí)間內(nèi)輸出將具有不確定性,并且將最終設(shè)定在“1”或“0”上,確切的狀態(tài)不可預(yù)知。

          幸運(yùn)的是對(duì)于亞穩(wěn)態(tài)性問(wèn)題已經(jīng)有一些解決方案。圖6說(shuō)明了這一方案,這是一種雙寄存器方法:進(jìn)入第一級(jí)觸發(fā)器的數(shù)據(jù)與時(shí)鐘異步,所以第一級(jí)觸發(fā)器幾乎肯定是亞穩(wěn)態(tài);然而,只要亞穩(wěn)態(tài)的長(zhǎng)度小于時(shí)鐘的周期,第二級(jí)觸發(fā)器就不會(huì)進(jìn)入亞穩(wěn)態(tài)。但是,供應(yīng)商很少提供亞穩(wěn)態(tài)時(shí)間,盡管該時(shí)間一般小于觸發(fā)器的設(shè)置和保持時(shí)間之和。

          如果時(shí)鐘不是太快而且能滿足時(shí)序約束的話,像圖6所示的電路將可能不會(huì)產(chǎn)生亞穩(wěn)態(tài)。只要所有輸出到觸發(fā)器的通路由相同時(shí)鐘驅(qū)動(dòng),即使第一級(jí)觸發(fā)器的輸出可用,通常還是需要用像圖6中電路來(lái)將亞穩(wěn)態(tài)隔離到一條短線。采用這種方法后,將不太可能出現(xiàn)由于電路的改變而無(wú)意地在無(wú)時(shí)鐘驅(qū)動(dòng)的邏輯中用到該亞穩(wěn)太線。

          如果讀數(shù)據(jù)的是一個(gè)計(jì)數(shù)器,像從一個(gè)異步FIFO讀或?qū)懙刂罚銘?yīng)該考慮下列情況:一個(gè)傳統(tǒng)的3位計(jì)數(shù)器在狀態(tài)之間有一個(gè)、兩個(gè)或三個(gè)位的變化,例如讀數(shù)發(fā)生在計(jì)數(shù)器從“011”到“100”變化的瞬間,則所有三個(gè)位的值將不確定,讀的值會(huì)是八種可能狀態(tài)中的任一種。如果計(jì)數(shù)器是使用格雷碼,如表所示,則每次僅有一位發(fā)生狀態(tài)改變,如果讀數(shù)發(fā)生在計(jì)數(shù)器變化的瞬間,則只有一個(gè)位會(huì)有問(wèn)題,所以在讀操作中只有兩種可能結(jié)果,而且這兩種可能結(jié)果是計(jì)數(shù)器正好在讀以前的值和正好在讀以后的值時(shí)。因?yàn)樽x正好發(fā)生在計(jì)數(shù)器產(chǎn)生變化的瞬間,你不可能確切地說(shuō)哪個(gè)值是正確的,即兩者都應(yīng)該認(rèn)為是有效的。

          另一個(gè)避免異步時(shí)鐘問(wèn)題的方法是忽略較慢的時(shí)鐘,并用較快的時(shí)鐘來(lái)采樣。這需要數(shù)據(jù)有特殊的成幀特性(例如,具有一個(gè)前導(dǎo)碼)來(lái)定義數(shù)據(jù)邊界。這是一個(gè)常用的方法,在差不多每一個(gè)具有UART形式的嵌入式系統(tǒng)都有應(yīng)用。該方法是:采用一個(gè)非常快的時(shí)鐘,比如數(shù)據(jù)符號(hào)率的16倍,在連續(xù)發(fā)現(xiàn)15個(gè)起始字符后開始采樣,則下一個(gè)16(左右)位相當(dāng)于送的第一個(gè)位,再下一個(gè)16(左右)位對(duì)應(yīng)下一個(gè)位,并以次類推。

          電度表相關(guān)文章:電度表原理



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

          關(guān)鍵詞: FPGA 大型 策略 多時(shí)鐘

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