當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]摘要:使用FIFO同步源自不同時(shí)鐘域的數(shù)據(jù)是在數(shù)字IC設(shè)計(jì)中經(jīng)常使用的方法,設(shè)計(jì)功能正確的FUFO會(huì)遇到很多問(wèn)題,探討了兩種不同的異步FIFO的設(shè)計(jì)思路。兩種思路都能夠?qū)崿F(xiàn)功能正確的PIFO。本文所研究的FIFO,從硬件的

摘要:使用FIFO同步源自不同時(shí)鐘域的數(shù)據(jù)是在數(shù)字IC設(shè)計(jì)中經(jīng)常使用的方法,設(shè)計(jì)功能正確的FUFO會(huì)遇到很多問(wèn)題,探討了兩種不同的異步FIFO的設(shè)計(jì)思路。兩種思路都能夠?qū)崿F(xiàn)功能正確的PIFO。

本文所研究的FIFO,從硬件的觀點(diǎn)來(lái)看,就是一塊數(shù)據(jù)內(nèi)存。它有兩個(gè)端口,一個(gè)用來(lái)寫(xiě)數(shù)據(jù),就是將數(shù)據(jù)存入FIFO;另一個(gè)用來(lái)讀數(shù)據(jù),也就是將數(shù)據(jù)從FIFO當(dāng)中取出。與FIFO操作相關(guān)的有兩個(gè)指針,寫(xiě)指針指向要寫(xiě)的內(nèi)存部分,讀指針指向要讀的內(nèi)存部分。FIFO控制器通過(guò)外部的讀寫(xiě)信號(hào)控制這兩個(gè)指針移動(dòng),并由此產(chǎn)生FIFO空信號(hào)或滿信號(hào)。

對(duì)于異步FIFO而言,數(shù)據(jù)是由某一個(gè)時(shí)鐘域的控制信號(hào)寫(xiě)入FIFO,而由另一個(gè)時(shí)鐘域的控制信號(hào)將數(shù)據(jù)讀出FIFO。也就是說(shuō),讀寫(xiě)指針的變化動(dòng)作是由不同的時(shí)鐘產(chǎn)生的。因此,對(duì)FIFO空或滿的判斷是跨時(shí)鐘域的。如何根據(jù)異步的指針信號(hào)對(duì)FIFO的滿狀態(tài)或空狀態(tài)進(jìn)行正確的判斷是本文研究的重點(diǎn)。此外,設(shè)計(jì)過(guò)程中的一些細(xì)節(jié)問(wèn)題也將在文中涉及到。

1 指針以及滿空信號(hào)的產(chǎn)生

為了更好地說(shuō)明問(wèn)題,先探討一下同步FIFO指針移動(dòng)以及滿空信號(hào)的產(chǎn)生過(guò)程。對(duì)于同步FIFO,讀寫(xiě)指針都指向一個(gè)內(nèi)存的初始位置,每進(jìn)行一次讀寫(xiě)操作,相應(yīng)的指針就遞增一次,指向下一個(gè)內(nèi)存位置。當(dāng)指針移動(dòng)到了內(nèi)存的最后一個(gè)位置時(shí),它又重新跳回初始位置。在FIFO非滿或非空的情況下,這個(gè)過(guò)程將隨著讀寫(xiě)控制信號(hào)的變化一直進(jìn)行下去。如果FIFO處于空的狀態(tài),下一個(gè)讀動(dòng)作將會(huì)導(dǎo)致向下溢出(underflow),一個(gè)無(wú)效的數(shù)據(jù)被讀人;同樣,對(duì)于一個(gè)滿了的FIFO,進(jìn)行寫(xiě)動(dòng)作將會(huì)導(dǎo)致向上溢出(overflow),一個(gè)有用的數(shù)據(jù)被新寫(xiě)入的數(shù)據(jù)覆蓋。這兩種情況都屬于誤動(dòng)作,因此需要設(shè)置滿和空兩個(gè)信號(hào),對(duì)滿信號(hào)置位表示FIFO處于滿狀態(tài),對(duì)滿信號(hào)復(fù)位表示FIFO非滿,還有空間可以寫(xiě)入數(shù)據(jù);對(duì)空信號(hào)置位表示FIFO處于空狀態(tài),對(duì)空信號(hào)復(fù)位表示FIFO非空,還有有效的數(shù)據(jù)可以讀出。

    當(dāng)讀指針和寫(xiě)指針相等也就是指向同一個(gè)內(nèi)存位置的時(shí)候,F(xiàn)IFO可能處于滿或空兩種狀態(tài)。可以通過(guò)不同的方法判斷或區(qū)分FIFO究竟是處于滿狀態(tài)還是空狀態(tài),也就是究竟是寫(xiě)指針從后趕上了讀指針,還是讀指針從后趕上了寫(xiě)指針。本文所應(yīng)用的方法是設(shè)置一個(gè)額外的狀態(tài)位,指針由它的地址位以及狀態(tài)位組成。地址位隨著相應(yīng)的操作遞增,指針由內(nèi)存的最后位置返回到初始位置的時(shí)候狀態(tài)位取反。因此,當(dāng)讀寫(xiě)指針的地址位和狀態(tài)位全部吻合的時(shí)候,讀寫(xiě)指針經(jīng)歷了相同次數(shù)的循環(huán)移動(dòng),也就是說(shuō),F(xiàn)IFO處于空狀態(tài)(圖1(a));如果讀寫(xiě)指針的地址位相同而狀態(tài)位相反,寫(xiě)指針比讀指針多循環(huán)一次,標(biāo)志FIFO處于滿狀態(tài)(圖1(b))。    (2)二進(jìn)制指針可以用于任意大小的FIFO;格雷碼指針只能用于大小為2的冪的FIFO。

 

2 二進(jìn)制指針和格雷碼指針的同步

二進(jìn)制指針是由一位狀態(tài)位和若干位二進(jìn)制編碼的地址位組成的(例如由三位地址和一位狀態(tài)位構(gòu)成的指針的變化:0000→0001→0010→0011→0100→0101→0110→0111→1000→1001→1010→1011→1100→1101→1110→1111)。如果在不同的時(shí)鐘域內(nèi)直接同步二進(jìn)制指針,有可能產(chǎn)生問(wèn)題。例如,當(dāng)讀指針從0111向1000變化的時(shí)侯,指針?biāo)械奈欢家兓?,如果?xiě)時(shí)鐘恰好在讀指針的變化時(shí)刻采樣,寫(xiě)者得到的讀指針值有可能是從0000到1111中的任何一個(gè)。所以二進(jìn)制指針不宜被直接同步,但可以通過(guò)一對(duì)握手信號(hào)同步二進(jìn)制指針。

例如,讀指針被讀者存人一個(gè)寄存器時(shí),讀者就發(fā)出一個(gè)就緒信號(hào)。當(dāng)寫(xiě)者看到就緒信號(hào)時(shí),讀取讀指針,發(fā)出一個(gè)收到數(shù)據(jù)的確認(rèn)信號(hào)。當(dāng)讀者看到確認(rèn)信號(hào)時(shí),就收回就緒信號(hào),然后用當(dāng)前的讀指針值刷新寄存器(圖2)。在收到確認(rèn)信號(hào)前,存放讀指針的寄存器內(nèi)容保持不變,確保了被讀取的指針的正確性。

為了能夠在不同的時(shí)鐘域內(nèi)直接同步指針,可以對(duì)指針使用格雷碼的編碼方式,也就是指針每次移動(dòng)只變化一位,這樣就避免了由于指針多位同時(shí)變化而無(wú)法直接同步的問(wèn)題。圖3表示了一個(gè)三位地址的內(nèi)存用于格雷碼編碼的FIFO。n位地址的內(nèi)存需要n+1位的格雷碼。使用最高位(也就是第n-1位)作為狀態(tài)位,從第n—2到第0位作為地址的第n-2位到第0位;對(duì)狀態(tài)位(也就是第n-1位)和第n-2位進(jìn)行位異或運(yùn)算產(chǎn)生地址的第n-2位(也就是地址的最高位)。通過(guò)對(duì)圖3的觀察可以得知,四位格雷碼編碼的指針和三位二進(jìn)制加狀態(tài)位編碼的指針具有同樣的功能:指針產(chǎn)生的地址循環(huán)遍歷8個(gè)內(nèi)存地址,每一次遍歷后狀態(tài)位取反。值得注意的一點(diǎn),是當(dāng)指針從0100變化到1100的時(shí)候,相應(yīng)的地址由100變?yōu)?00,狀態(tài)位和一位地址同時(shí)發(fā)生了變化,所以不能同步由另一個(gè)時(shí)鐘域格雷碼指針產(chǎn)生的狀態(tài)位和地址位,此時(shí)應(yīng)該直接由另一個(gè)時(shí)鐘域同步指針來(lái)完成,由同步后的指針產(chǎn)生相應(yīng)的狀態(tài)位和地址位。

3 保守的滿空判斷

對(duì)于異步FIFO設(shè)計(jì),無(wú)論是采用握手還是直接同步的方法來(lái)獲取對(duì)方時(shí)鐘域的指針,對(duì)滿空信號(hào)的判斷總是“保守”的。

(1)滿空信號(hào)的復(fù)位(滿信號(hào)復(fù)位表示FIFO非滿,空信號(hào)復(fù)位表示FIFO非空)和實(shí)際FIFO的情況相比有一定的延遲。例如,空信號(hào)是由讀者用讀指針與同步或握手后得到的寫(xiě)指針進(jìn)行比較產(chǎn)生的。由于同步或握手需要一定的時(shí)間,在這段時(shí)間,寫(xiě)者可能向FIFO寫(xiě)入新的數(shù)據(jù),寫(xiě)指針發(fā)生了變化,此時(shí)FIFO已經(jīng)非空,但此刻空信號(hào)仍然沒(méi)有復(fù)位。對(duì)于寫(xiě)者而言,滿信號(hào)的復(fù)位也會(huì)遇到相同的問(wèn)題。不過(guò),在通常情況下,F(xiàn)IFO只要確保不會(huì)向下溢出或向上溢出,復(fù)位的延遲就不會(huì)導(dǎo)致向下溢出或向上溢出,是可以接受的。

(2)滿空信號(hào)的置位(滿信號(hào)置位表示FIFO滿,空信號(hào)置位表示FIFO空)和FIFO的實(shí)際情況相比沒(méi)有延遲。例如,同樣考慮FIFO為空的情況,讀者使用讀指針和同步或握手后的寫(xiě)指針進(jìn)行比較,由于FIFO為空,寫(xiě)動(dòng)作不會(huì)發(fā)生,相應(yīng)的寫(xiě)指針也保持不變,因此讀者獲得的就是當(dāng)時(shí)的寫(xiě)指針值。這樣就能馬上對(duì)空信號(hào)置位。同樣地,在FIFO滿的情況下,由于讀指針不發(fā)生變化,寫(xiě)者得到的是當(dāng)前的讀指針值,能夠馬上判斷FIFO為滿。

從以上兩點(diǎn)的討論可以得出結(jié)論,F(xiàn)IFO滿空判斷是保守的,寫(xiě)者可能在FIFO還有一定空間時(shí)停止寫(xiě)數(shù)據(jù),但不會(huì)在FIFO已經(jīng)滿了的情況下繼續(xù)寫(xiě)數(shù)據(jù);讀者可能在FIFO還有一些有效的數(shù)據(jù)時(shí)停止讀數(shù)據(jù),但是不會(huì)在FIFO已經(jīng)空的情況下繼續(xù)讀數(shù)據(jù)。保守的滿空判斷能夠滿足FIFO的功能要求。

4 二進(jìn)制指針和格雷碼指針的比較

二進(jìn)制指針和格雷碼指針兩者各有優(yōu)缺點(diǎn):?

(1)由于通過(guò)握手同步,指針可以有多位同時(shí)變化,二進(jìn)制指針每次移動(dòng)可以跳躍過(guò)任意的長(zhǎng)度,這樣給FIFO的某些功能的實(shí)現(xiàn)帶來(lái)了方便(例如,硬件直接控制FIFO從緩存的數(shù)據(jù)流中丟棄一個(gè)出錯(cuò)的包);而格雷碼指針一般只能做遞增或遞減的移動(dòng)。

 

(3) 與直接同步相比,通過(guò)握手同步需要多時(shí)鐘周期,因此二進(jìn)制指針的滿空判斷比格雷碼指針的滿空判斷更“保守”;對(duì)于設(shè)計(jì)一個(gè)容量很大且由內(nèi)存構(gòu)成的FIFO來(lái)說(shuō),由于保守判斷而損失的空間可以忽略;但對(duì)于一個(gè)容量較小的FIFO而言,這種“保守”可能是無(wú)法接受的。例如,一個(gè)由8個(gè)寄存器組成的FIFO,對(duì)于格雷碼編碼的指針,最壞情況下,F(xiàn)IFO被寫(xiě)者判斷為滿時(shí),里面實(shí)際只存有五個(gè)數(shù)據(jù)(使用兩級(jí)同步器,可能需要三個(gè)周期同步,而在這三個(gè)周期內(nèi)都有讀動(dòng)作發(fā)生);而對(duì)與二進(jìn)制編碼的指針,F(xiàn)IFO被判為滿時(shí),F(xiàn)IFO里可能只有三個(gè)數(shù)據(jù)或更少(使用兩級(jí)同步器,最好的情況下,需要五個(gè)周期握手,而在這五個(gè)周期里都有讀動(dòng)作發(fā)生)。

設(shè)計(jì)者在兩種方法的比較選擇上應(yīng)該考慮到以上的幾點(diǎn)。

本文介紹的異步FIFO的設(shè)計(jì)方法的兩種不同盡路都能夠?qū)崿F(xiàn)功能正確的異步FIFO。對(duì)這兩種方法設(shè)計(jì)的FIFO的優(yōu)缺點(diǎn)所做的簡(jiǎn)要分析,對(duì)FIFO的設(shè)計(jì)具有指導(dǎo)意義。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉