<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 跨越鴻溝:同步世界中的異步信號

跨越鴻溝:同步世界中的異步信號

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

  現在指針邏輯的設計有多種方法。第一種方法是將讀、寫(xiě)選通進(jìn)行同步,同時(shí)在各個(gè)時(shí)鐘域使用計數器來(lái)跟蹤 中可用的項。計數器反映出可用于讀寫(xiě)的 項目號,計數器也與相應的端口同步。讀計數器跟蹤包含有效數據的項數,而寫(xiě)計數器則跟蹤可以存儲數據的項數。當對指針邏輯進(jìn)行復位時(shí),由于沒(méi)有數據可讀,讀計數器從零起始。寫(xiě)計數器則從 中項的總數開(kāi)始計數,即所有項均可用來(lái)存儲數據。

本文引用地址:http://dyxdggzs.com/article/268638.htm

  讀選通信號累減讀計數器,并與寫(xiě)時(shí)鐘域同步,因為它同時(shí)也累加寫(xiě)計數器。寫(xiě)選通信號則累減寫(xiě)計數器,并與讀時(shí)鐘域同步,因為它同時(shí)也累加讀計數器。

  這種設計需要單時(shí)鐘寬度脈沖以及用于讀、寫(xiě)選通的脈沖同步器,因為當一個(gè)電平信號從一個(gè)時(shí)鐘域跨越到

  另一個(gè)更快的時(shí)鐘域時(shí),在較快時(shí)鐘域中它能在更多的時(shí)鐘周期中保持有效。由于只要讀或寫(xiě)信號是有效的,每個(gè)計數器就會(huì )發(fā)生變化,因此較快的時(shí)鐘域就檢測到更多的讀、寫(xiě),超出較慢時(shí)鐘域實(shí)際發(fā)生的數量。脈沖同步器可以將一個(gè)時(shí)鐘域的時(shí)鐘寬度脈沖轉換為新時(shí)鐘域的時(shí)鐘寬度脈沖,每個(gè)脈沖都表示一次 FIFO 的讀或寫(xiě)。

  這種 FIFO 狀態(tài)技術(shù)對讀、寫(xiě)狀態(tài)都不太有利。當 FIFO 中所有項均充滿(mǎn)時(shí),寫(xiě)端口狀態(tài)指示為滿(mǎn),并在讀選通觸發(fā)后繼續指示 FIFO 滿(mǎn),因為同步過(guò)程會(huì )使選通信號延遲送給寫(xiě)計數器。讀端口為空時(shí)也會(huì )出現這種情況,因為同步過(guò)程會(huì )使寫(xiě)選通信號延遲到達讀計數器。

  這種設計的另一種考慮是及時(shí)檢測全滿(mǎn)/全空狀態(tài)。如果 FIFO 還有一項可用,并且有寫(xiě)選通觸發(fā),則 FIFO 必須立即置為全滿(mǎn)狀態(tài)。這樣才能提前一個(gè)時(shí)鐘給出全滿(mǎn)標志,使 FIFO 有足夠時(shí)間防止下一個(gè)數據寫(xiě)入而產(chǎn)生溢出。對 FIFO 的讀端口也是這樣。這種情況下,如果 FIFO 里只有一個(gè)數,并且有讀選通觸發(fā),則必須置全空狀態(tài),以給讀電路足夠的時(shí)間防止讀空 FIFO。

  這種指針邏輯限制電路在每個(gè)時(shí)鐘周期中訪(fǎng)問(wèn) FIFO,即使在慢速時(shí)鐘域中也是這樣。這一功能的優(yōu)點(diǎn)在于訪(fǎng)問(wèn) FIFO 的電路至少有一個(gè)時(shí)鐘周期來(lái)評估 FIFO 的狀態(tài)。FIFO 可以將所有項都填滿(mǎn)數據,而不會(huì )出現數據被覆蓋或全空無(wú)數據可讀的情況。這種設計的另一個(gè)優(yōu)點(diǎn)是每一端都可以讀其相應的計數器,來(lái)判斷 FIFO 中還有多少項可用。設計者可以將這種 FIFO設計用在進(jìn)行多次數據讀/寫(xiě)的電路中,而不會(huì )造成上溢或下溢的情況。

  這種設計的不足之處是由計數器來(lái)判斷狀態(tài),而不是直接比較讀、寫(xiě)指針。對大型 FIFO 來(lái)說(shuō),這些計數器也很大。而且,由于使用脈沖同步時(shí),來(lái)自較快時(shí)鐘域的讀、寫(xiě)脈沖在較慢時(shí)鐘域的脈沖間至少必須有兩個(gè)時(shí)鐘周期,因此平均數據速率為最低時(shí)鐘頻率的一半。解決這些問(wèn)題的一種方法是采用直接指針比較法。

  在這種 FIFO 設計中,讀、寫(xiě)指針的比較決定了 FIFO 的狀態(tài)。異步設計中的指針比較更富有挑戰性,因為每個(gè)指針位于不同的時(shí)鐘域中,對信號總線(xiàn)的同步要求在同步握手信號期間總線(xiàn)不發(fā)生改變。將這種技術(shù)用于指針同步的 FIFO 設計可能會(huì )很慢。要解決這個(gè)問(wèn)題,FIFO 指針邏輯使用了格雷碼,代替指針使用的二進(jìn)制碼。

  格雷碼在每一次計數增減時(shí)只改變其中的一位(表 3)。你可以在格雷碼總線(xiàn)上使用同步器,因為每一次總線(xiàn)改變時(shí)只有一根信號線(xiàn)有變化,于是就消除了格雷碼總線(xiàn)各位通過(guò)不同同步器時(shí)的競爭情況。這種設計的指針為格雷碼計數器。使用二進(jìn)制指針時(shí)需要將其變換成格雷碼后的同步指針,而使用變換邏輯會(huì )違反對同步信號的限制,即同步的信號在跨越時(shí)鐘域前要來(lái)自觸發(fā)器。

  

格雷碼與二進(jìn)制碼比較

 

  表 3

  格雷碼計數器是一個(gè)二進(jìn)制累加器,在累加器前、后各帶有一個(gè)轉換器,分別用于格雷碼轉換為二進(jìn)制碼,和二進(jìn)制碼轉換為格雷碼(圖 8)。格雷碼與二進(jìn)制碼的轉換是一個(gè)異或運算,所以只需比一個(gè)二進(jìn)制計數器多幾個(gè)邏輯電平。在格雷碼轉換成二進(jìn)制碼時(shí),使用:BN=GN;BN-1=BN+GN-1;BN-2=BN-1+GN-2 . B1=B2+G1;B0=B1+G0。而將二進(jìn)制碼轉換成格雷碼時(shí),使用:GN=BN;GN-1=BN+BN-1;GN-2=BN-1+BN-2 . G1=B2+B1;G0=B1+B0。在設計中可以采用同樣的技術(shù)來(lái)比較格雷碼指針的值,即在各個(gè)指針與二進(jìn)制比較邏輯之間增加轉換器。

  

格雷碼計數器是一個(gè)二進(jìn)制累加器

 

  圖8,格雷碼計數器是一個(gè)二進(jìn)制累加器,在累加器前、后各帶有一個(gè)轉換器。

  用這種指針邏輯的 FIFO 很快,每個(gè)時(shí)鐘周期中電路都可以讀寫(xiě) FIFO。但是,在每個(gè)周期都訪(fǎng)問(wèn) FIFO 意味著(zhù) FIFO 狀態(tài)要包括“將滿(mǎn)”和“將空”兩種指示,這樣讀寫(xiě) FIFO 的電路才能有停止時(shí)間。“將滿(mǎn)”表示只能再寫(xiě)入一項,“將空”則表示只有一項可讀。這種情況描述了一個(gè)要求最少的可能狀態(tài)信號的設計,以及一個(gè)需要更多指示的設計,如果在固定的最小尺寸情況下用猝發(fā)方式訪(fǎng)問(wèn) FIFO 的電路的話(huà)。

  這種 FIFO 狀態(tài)技術(shù)會(huì )給讀、寫(xiě)帶來(lái)不良狀態(tài)。當 FIFO 滿(mǎn)時(shí),寫(xiě)端口的狀態(tài)指示已滿(mǎn),而在電路從 FIFO 中讀出一項后,該狀態(tài)仍為滿(mǎn),因為同步機制使讀指針相對寫(xiě)入一側的比較邏輯有個(gè)延遲。同樣,在讀出一側的空狀態(tài)指示也有這個(gè)問(wèn)題,因為同步機制使寫(xiě)指針相對讀出一側的比較邏輯有延遲。

  如果你在設計跨不同時(shí)鐘域電路時(shí),使用一些技術(shù)來(lái)降低通信失敗的風(fēng)險,則處理跨時(shí)鐘域的信號就不再是艱巨的任務(wù)。同步機制可以防止接收跨時(shí)鐘域信號的觸發(fā)器出現亞穩態(tài),從而避免導致不可預知的電路行為。對于在多個(gè)時(shí)鐘周期內一直保持有效的信號來(lái)說(shuō),電平同步器的效果很好。對于要轉換成新時(shí)鐘域脈沖的較慢時(shí)鐘域電平信號,要采用邊沿檢測同步器。最后,對跨時(shí)鐘

  域的脈沖信號應使用脈沖同步器。還要記住,當一個(gè)信號總線(xiàn)跨越時(shí)鐘域時(shí),整個(gè)總線(xiàn)要在同一個(gè)時(shí)鐘周期內到達新的時(shí)鐘域。不要分別同步每一個(gè)信號,而要采用一個(gè)保持寄存器和握手方式。握手用來(lái)表示寄存器中的信號何時(shí)有效,何時(shí)可以采樣。對數據總線(xiàn)來(lái)說(shuō),握手和一個(gè)保持寄存器很有用,但每次向新時(shí)鐘域傳送的數據字不超過(guò)一個(gè)。

模擬信號相關(guān)文章:什么是模擬信號


電路相關(guān)文章:電路分析基礎


脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理

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

關(guān)鍵詞: FPGA 異步信號 FIFO

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>