專利名稱:一種異步先入先出方法、系統(tǒng)及發(fā)送裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及異步先入先出技術(shù),尤其涉及一種異步先入先出方法、系統(tǒng)及發(fā)送裝置。
背景技術(shù):
異步先入先出,指的是暫存器的數(shù)據(jù)寫入邏輯和數(shù)據(jù)讀出邏輯工作在不同的時(shí)鐘域。讀指針指向下一個(gè)被讀取的地址,寫指針指向下一個(gè)被寫入的地址,讀指針和寫指針不斷增加,當(dāng)指針到達(dá)暫存器末地址后,又重新回到起始地址,循環(huán)使用暫存器。
為了防止從空的暫存器中讀取數(shù)據(jù),可將寫指針傳遞到讀指針工作的時(shí)鐘域,在讀指針工作的時(shí)鐘域內(nèi),根據(jù)當(dāng)前寫指針?biāo)幍奈恢煤妥x指針?biāo)幍奈恢?,判斷是否有?shù)據(jù)可讀;同樣為了防止向滿的暫存器中寫入數(shù)據(jù),可將讀指針傳遞到寫指針工作的時(shí)鐘域,在寫指針工作的時(shí)鐘域內(nèi),根據(jù)當(dāng)前讀指針?biāo)幍奈恢煤蛯懼羔標(biāo)幍奈恢茫袛嗍欠窨梢韵驎捍嫫髦袑懭霐?shù)據(jù)。即讀指針和寫指針分別被傳遞到對方的時(shí)鐘域,在每個(gè)時(shí)鐘域內(nèi),根據(jù)讀指針與寫指針之間的關(guān)系確定暫存器的空滿狀態(tài),從而保證不會從空的暫存器中讀取數(shù)據(jù),也不會向滿的暫存器中寫入數(shù)據(jù)。
參見圖1,圖1為現(xiàn)有技術(shù)中異步先入先出的系統(tǒng)結(jié)構(gòu)圖。如圖1所示,時(shí)鐘域2(讀指針工作的時(shí)鐘域)的讀指針傳遞到時(shí)鐘域1(寫指針工作的時(shí)鐘域)中,與時(shí)鐘域1的寫指針在時(shí)鐘域1的計(jì)數(shù)邏輯中進(jìn)行比較,根據(jù)讀指針與寫指針的關(guān)系確定當(dāng)前可寫入字節(jié)的個(gè)數(shù);同樣,時(shí)鐘域1的寫指針也傳遞到時(shí)鐘域2中,與時(shí)鐘域2的讀指針在時(shí)鐘域2的計(jì)數(shù)邏輯中進(jìn)行比較,根據(jù)讀指針與寫指針的關(guān)系確定當(dāng)前可讀取字節(jié)的個(gè)數(shù)。
其中,為了準(zhǔn)確的傳遞讀/寫指針,可將二進(jìn)制讀/寫指針轉(zhuǎn)換為格雷碼的形式進(jìn)行傳遞,并在傳遞后再轉(zhuǎn)換回二進(jìn)制形式,如圖1所示的格雷碼轉(zhuǎn)換模塊和二進(jìn)制轉(zhuǎn)換模塊分別完成格雷碼轉(zhuǎn)換和二進(jìn)制轉(zhuǎn)換的功能。因?yàn)椴捎酶窭状a傳輸時(shí),指針加1時(shí),格雷碼只有一個(gè)數(shù)據(jù)位改變,經(jīng)過數(shù)據(jù)同步處理后,在目的時(shí)鐘域得到的格雷碼指針只會是加一前或加一后的值,無論哪一種結(jié)果,都不會產(chǎn)生錯(cuò)誤的讀/寫操作。但這種電路中,每次只能讀/寫一個(gè)字節(jié),因?yàn)槿绻看巫x/寫多個(gè)字節(jié),即指針累加大于1的數(shù)時(shí),則相應(yīng)的格雷碼也會有多個(gè)數(shù)據(jù)位改變,此時(shí)傳輸?shù)侥康挠虻母窭状a便有可能發(fā)生錯(cuò)誤,從而可能引起讀寫操作錯(cuò)誤。如假設(shè)指針由1000變?yōu)?010,則相應(yīng)的格雷碼會由1100變?yōu)?111,有兩個(gè)數(shù)據(jù)位發(fā)生了變化,則格雷碼進(jìn)行傳遞時(shí),由于各個(gè)數(shù)據(jù)位會有延遲及不穩(wěn)定等情況,傳遞到目的時(shí)鐘域的格雷碼有可能是1110、1101以及1111,如果傳遞的是1101和1111,因?yàn)?101和1111小于等于1111,因此不會發(fā)生讀寫操作錯(cuò)誤;如果傳遞的是1110,因?yàn)?110大于1111,對應(yīng)的二進(jìn)制指針為1011,則可能會發(fā)生讀指針到寫指針未寫入數(shù)據(jù)的1011處去讀數(shù)據(jù),或者寫指針到讀指針未讀走數(shù)據(jù)的1011處去寫數(shù)據(jù)。
實(shí)際應(yīng)用中,為了提高數(shù)據(jù)讀寫的速度,每次讀/寫一個(gè)字節(jié)的數(shù)據(jù)通常是不夠的。如對于向暫存器中讀寫數(shù)據(jù)的數(shù)據(jù)總線來說,由于現(xiàn)有技術(shù)中的數(shù)據(jù)總線寬度通常為大于一個(gè)字節(jié)的寬度,如一般為4個(gè)字節(jié)的寬度,即32比特,則每次總線操作實(shí)際上可以讀寫最多4個(gè)字節(jié)的數(shù)據(jù),應(yīng)用現(xiàn)有技術(shù)中的異步先入先出電路,每次只能讀寫一個(gè)字節(jié)的數(shù)據(jù),從而限制了總線使用的靈活性和效率,降低了數(shù)據(jù)讀寫的速度。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明一方面提供一種異步先入先出方法,另一方面提供一種異步先入先出系統(tǒng)及發(fā)送裝置,能夠支持多字節(jié)數(shù)據(jù)同時(shí)讀寫,提高數(shù)據(jù)讀寫的速度。
本發(fā)明所提供的異步先入先出方法,包括在源時(shí)鐘域內(nèi),根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域;在目的時(shí)鐘域內(nèi),將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針,根據(jù)所轉(zhuǎn)換的二進(jìn)制讀/寫指針執(zhí)行寫/讀操作。
其中,所述根據(jù)轉(zhuǎn)換的格雷碼確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼為將轉(zhuǎn)換的格雷碼與上次的待傳送格雷碼進(jìn)行比較,當(dāng)二者只有一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼;和/或,當(dāng)二者不只一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,其中,變換的數(shù)據(jù)位能夠使當(dāng)前待傳送格雷碼小于且最接近轉(zhuǎn)換的格雷碼;和/或,當(dāng)二者數(shù)據(jù)位都相同時(shí),將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼。
其中,所述待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼為將待傳遞二進(jìn)制讀/寫指針直接進(jìn)行格雷碼轉(zhuǎn)換得到的格雷碼;所述將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針為將所接收的格雷碼直接進(jìn)行二進(jìn)制轉(zhuǎn)換得到二進(jìn)制讀/寫指針;或者,所述待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼為將待傳遞二進(jìn)制讀/寫指針分為高位和低位兩部分,然后分別對高位和低位進(jìn)行格雷碼轉(zhuǎn)換,并將轉(zhuǎn)換后的高位和低位組合在一起得到的格雷碼;所述將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針為將所接收的格雷碼分為高位和低位兩部分,然后分別對高位和低位進(jìn)行二進(jìn)制轉(zhuǎn)換,將轉(zhuǎn)換后的高位和低位組合在一起,得到二進(jìn)制讀/寫指針。
本發(fā)明所提供的異步先入先出系統(tǒng),包括源時(shí)鐘域和目的時(shí)鐘域,其中,
所述源時(shí)鐘域,用于根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域;所述目的時(shí)鐘域,用于接收來自源時(shí)鐘域的格雷碼,并將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針,根據(jù)所轉(zhuǎn)換的二進(jìn)制讀/寫指針執(zhí)行寫/讀操作。
其中,所述源時(shí)鐘域包括格雷碼轉(zhuǎn)換模塊和決策控制模塊,其中,格雷碼轉(zhuǎn)換模塊,用于將待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換為格雷碼,并將所轉(zhuǎn)換的格雷碼輸出給決策控制模塊;決策控制模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,根據(jù)所接收的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域。
其中,所述決策控制模塊包括比較控制子模塊和格雷碼傳送送子模塊,其中,比較控制子模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,將所接收的格雷碼與上次輸出給格雷碼傳送子模塊進(jìn)行傳送的待傳送格雷碼進(jìn)行比較,當(dāng)二者只有一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者不只一個(gè)數(shù)據(jù)位不同時(shí),則將上次待傳送格雷碼不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,并使變換該數(shù)據(jù)位得到的當(dāng)前待傳送格雷碼小于且最接近所接收的格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者數(shù)據(jù)位都相同時(shí),將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;格雷碼傳送子模塊,用于接收來自比較控制子模塊的當(dāng)前待傳送格雷碼,將所接收的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域。
其中,所述格雷碼轉(zhuǎn)換模塊進(jìn)一步用于將待傳遞的二進(jìn)制讀/寫指針分為高位和低位兩部分,然后分別對高位和低位執(zhí)行轉(zhuǎn)換格雷碼的操作,并將轉(zhuǎn)換后的高位格雷碼和低位格雷碼進(jìn)行組合后,執(zhí)行所述輸出給決策控制模塊的操作;
所述目的時(shí)鐘域進(jìn)一步用于將所接收的格雷碼分為高位和低位兩部分,然后分別對高位和低位執(zhí)行所述二進(jìn)制轉(zhuǎn)換的操作,并將轉(zhuǎn)換后的高位和低位進(jìn)行組合,得到所述二進(jìn)制讀/寫指針。
本發(fā)明所提供的異步先入先出發(fā)送裝置,包括格雷碼轉(zhuǎn)換模塊和決策控制模塊,其中,格雷碼轉(zhuǎn)換模塊,用于將待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換為格雷碼,并將所轉(zhuǎn)換的格雷碼輸出給決策控制模塊;決策控制模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,根據(jù)所接收的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼發(fā)送出去。
其中,所述決策控制模塊包括比較控制子模塊和格雷碼傳送子模塊,其中,比較控制子模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,將所接收的格雷碼與上次輸出給格雷碼傳送子模塊進(jìn)行傳送的待傳送格雷碼進(jìn)行比較,當(dāng)二者只有一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者不只一個(gè)數(shù)據(jù)位不同時(shí),則將上次待傳送格雷碼不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,并使變換該數(shù)據(jù)位得到的當(dāng)前待傳送格雷碼小于且最接近所接收的格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者數(shù)據(jù)位都相同時(shí),將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;格雷碼傳送子模塊,用于接收來自比較控制子模塊的當(dāng)前待傳送格雷碼,將所接收的當(dāng)前待傳送格雷碼發(fā)送出去。
從上述方案可以看出,本發(fā)明通過在格雷碼轉(zhuǎn)換之后增加了確定當(dāng)前待傳送格雷碼的操作,即在源時(shí)鐘域內(nèi),根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域。使得在多數(shù)據(jù)同時(shí)讀寫時(shí),當(dāng)前傳遞的格雷碼最多只有一個(gè)數(shù)據(jù)位發(fā)生變化,從而保證所傳輸?shù)刂返恼_性,達(dá)到支持多字節(jié)數(shù)據(jù)同時(shí)讀寫的目的,提高了數(shù)據(jù)讀寫的速度,進(jìn)一步提高了總線利用的靈活性和效率。
其中,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼的方法為將轉(zhuǎn)換的格雷碼與上次的待傳送格雷碼進(jìn)行比較,如果二者只有一個(gè)數(shù)據(jù)位不同,則將上次待傳送的格雷碼變換該不同數(shù)據(jù)位后進(jìn)行傳遞;和/或如果二者不只一個(gè)數(shù)據(jù)位不同,則將上次待傳送的格雷碼變換不同數(shù)據(jù)位中的一位,使變換該數(shù)據(jù)位后的格雷碼小于且最接近轉(zhuǎn)換的格雷碼后進(jìn)行傳遞;和/或如果二者相同,則保持當(dāng)前傳送的格雷碼不變。從而使得進(jìn)行傳遞的格雷碼始終小于等于且最接近于待傳遞指針?biāo)D(zhuǎn)換的格雷碼,避免了發(fā)生讀取無效數(shù)據(jù)或?qū)懭霑r(shí)覆蓋有效數(shù)據(jù)的錯(cuò)誤。
圖1為現(xiàn)有技術(shù)中異步先入先出的系統(tǒng)結(jié)構(gòu)圖。
圖2為本發(fā)明實(shí)施例中異步先入先出方法的示例性流程圖。
圖3為本發(fā)明實(shí)施例中異步先入先出系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對本發(fā)明進(jìn)一步詳細(xì)說明。
為了描述方便,本文分別將指針的傳遞方稱為源時(shí)鐘域,將指針的接收方稱為目的時(shí)鐘域,則寫指針工作的時(shí)鐘域和讀指針工作的時(shí)鐘域互為對方的目的時(shí)鐘域,且為本方的源時(shí)鐘域。
本發(fā)明的基本思想是在源時(shí)鐘域內(nèi)的格雷碼轉(zhuǎn)換之后增加確定當(dāng)前待傳送格雷碼的操作,即在源時(shí)鐘域內(nèi),根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域。
其中,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼的關(guān)鍵在于在目的時(shí)鐘域得到的指針值可以不是當(dāng)前實(shí)際的指針值,但是不能超過當(dāng)前實(shí)際的指針值,否則就有可能發(fā)生讀取無效數(shù)據(jù)或?qū)懭霑r(shí)覆蓋有效數(shù)據(jù)的錯(cuò)誤。
參見圖2,圖2為本發(fā)明實(shí)施例中應(yīng)用上述基本思想的異步先入先出方法的示例性流程圖。該流程包括如下步驟步驟201,在源時(shí)鐘域內(nèi),根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域。
本步驟之前,需要將待傳遞的二進(jìn)制讀/寫指針轉(zhuǎn)換為格雷碼,并且轉(zhuǎn)換格雷碼的操作與現(xiàn)有技術(shù)中相同,只是轉(zhuǎn)換為格雷碼后并不立即傳送到目的時(shí)鐘域,而是根據(jù)所轉(zhuǎn)換的格雷碼確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼。
其中,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼的方法可以為將所轉(zhuǎn)換的格雷碼與上次待傳送格雷碼進(jìn)行比較,如果二者只有一個(gè)數(shù)據(jù)位不同,則將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,即將轉(zhuǎn)換的格雷碼直接作為當(dāng)前待傳送的格雷碼;和/或如果二者不只一個(gè)數(shù)據(jù)位不同,則將上次待傳送格雷碼不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,其中,變換的數(shù)據(jù)位能夠使得到的當(dāng)前待傳送格雷碼小于且最接近所轉(zhuǎn)換的格雷碼;和/或如果二者數(shù)據(jù)位都相同,則將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼。從而使得進(jìn)行傳遞的格雷碼始終小于等于且最接近于待傳遞指針?biāo)D(zhuǎn)換的格雷碼。
其中,若二者只有一個(gè)數(shù)據(jù)位不同時(shí),或二者數(shù)據(jù)位都相同時(shí),也可按照現(xiàn)有技術(shù)進(jìn)行傳遞。
并且,上述比較過程可以在每個(gè)時(shí)鐘周期內(nèi)都進(jìn)行一次。
以大小為4比特的寫指針為例,當(dāng)每次只寫入1個(gè)字節(jié)時(shí),其中隨著指針的改變,相應(yīng)轉(zhuǎn)換的格雷碼與待傳送格雷碼的關(guān)系如表一所示
表一表一中,因?yàn)槊看沃粚懭胍粋€(gè)字節(jié),所以第n個(gè)時(shí)鐘周期內(nèi)轉(zhuǎn)換的格雷碼與上次待傳送的格雷碼,即第n-1個(gè)時(shí)鐘周期內(nèi)確定的待傳送格雷碼相比,只有一個(gè)數(shù)據(jù)位不同,則此時(shí)可將上次待傳送的格雷碼直接變換該不同數(shù)據(jù)位即可得到當(dāng)前待傳送格雷碼,即第n個(gè)時(shí)鐘周期內(nèi)確定的待傳送格雷碼,且當(dāng)前待傳送格雷碼與待傳遞寫指針轉(zhuǎn)換的格雷碼相同。并且,從表一中可見,在只寫入一個(gè)字節(jié)的情況下,每個(gè)時(shí)鐘周期內(nèi)所確定的待傳送格雷碼與待傳送指針?biāo)D(zhuǎn)換的格雷碼相同??梢姡谶@種情況下,本實(shí)施例的實(shí)現(xiàn)效果與現(xiàn)有技術(shù)中相同。其中,n為大于0的自然數(shù)。
上述表一中,以每個(gè)時(shí)鐘周期內(nèi)都有字節(jié)寫入為例進(jìn)行的描述,實(shí)際應(yīng)用中,可能某個(gè)時(shí)鐘周期內(nèi)沒有字節(jié)寫入,則上述表一中沒有字節(jié)寫入的時(shí)鐘周期內(nèi)仍可以將所轉(zhuǎn)換的格雷碼與上次待傳送格雷碼進(jìn)行比較,只是此時(shí)二者相同,故當(dāng)前待傳送格雷碼為上次待傳送格雷碼,即兩個(gè)時(shí)鐘周期內(nèi)傳送的格雷碼保持不變,此時(shí),實(shí)現(xiàn)效果也與現(xiàn)有技術(shù)中相同。
可見,當(dāng)讀/寫一個(gè)字節(jié)時(shí),本實(shí)施例的實(shí)現(xiàn)方案能夠與現(xiàn)有技術(shù)相兼容。
仍以大小為4比特的寫指針為例,當(dāng)每次寫入的字節(jié)數(shù)不固定時(shí),其中隨著指針的改變,相應(yīng)轉(zhuǎn)換的格雷碼與待傳送格雷碼的關(guān)系如表二所示
表二表二中,每個(gè)時(shí)鐘周期寫入的字節(jié)數(shù)不固定,有時(shí)一次寫入一個(gè)字節(jié),有時(shí)多于一個(gè)字節(jié),有時(shí)則沒有寫入字節(jié),但無論哪種情況,每個(gè)時(shí)鐘周期內(nèi)確定的當(dāng)前待傳送格雷碼都小于等于待傳送指針轉(zhuǎn)換的格雷碼,并且所確定的當(dāng)前待傳送格雷碼都是盡可能的接近待傳送指針轉(zhuǎn)換的格雷碼,即到達(dá)目的時(shí)鐘域的寫指針值總是小于等于且盡可能的接近實(shí)際的寫指針值。
以表二中的第7個(gè)時(shí)鐘周期為例,該時(shí)鐘周期內(nèi)寫入了4個(gè)字節(jié),此時(shí)寫指針由0111變?yōu)?011,相應(yīng)轉(zhuǎn)換的格雷碼為1110,而上次待傳送格雷碼,即第6個(gè)時(shí)鐘周期內(nèi)確定的待傳送格雷碼為0100,其中,1110和0100有兩個(gè)數(shù)據(jù)位不同,則將0100變換一個(gè)數(shù)據(jù)位時(shí),可得到0110,或1100,由于1100小于且更接近于1110,因此將0100變換一個(gè)數(shù)據(jù)位得到1100,作為第7個(gè)時(shí)鐘周期內(nèi)的待傳送格雷碼,同理其它情況也一樣。
當(dāng)某個(gè)時(shí)鐘周期內(nèi)寫入0個(gè)字節(jié)時(shí),該時(shí)鐘周期內(nèi)轉(zhuǎn)換的格雷碼不變,但仍要比較轉(zhuǎn)換的格雷碼與上次待傳送格雷碼是否相同,以第3個(gè)時(shí)鐘周期為例,其中,轉(zhuǎn)換的格雷碼仍為第2個(gè)時(shí)鐘周期內(nèi)轉(zhuǎn)換的格雷碼,即0010,而上次待傳送格雷碼,即第二個(gè)時(shí)鐘周期內(nèi)確定的待傳送格雷碼為0011,其中0010與0011相差一個(gè)數(shù)據(jù)位,則可直接將0011變換該數(shù)據(jù)位得到0010作為本時(shí)鐘周期內(nèi)的待傳送格雷碼,對于第4個(gè)時(shí)鐘周期來說,因?yàn)檗D(zhuǎn)換的格雷碼和上次待傳送格雷碼均為0010,因此兩個(gè)時(shí)鐘周期內(nèi)傳送的格雷碼保持不變,將上次待傳送格雷碼作為本時(shí)鐘周期內(nèi)的當(dāng)前待傳送格雷碼。
步驟202,在目的時(shí)鐘域內(nèi),將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針,并將所轉(zhuǎn)換的讀/寫指針與自身時(shí)鐘域內(nèi)的寫/讀指針進(jìn)行比較,確定暫存器的空滿狀態(tài),根據(jù)暫存器的空滿狀態(tài),執(zhí)行寫/讀操作。
本步驟中的操作和現(xiàn)有技術(shù)相同,即目的時(shí)鐘域接收到來自源時(shí)鐘域的格雷碼后,將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針,以二進(jìn)制寫指針為例,則如表一和表二中的傳送寫指針。然后將所轉(zhuǎn)換的讀/寫指針與自身時(shí)鐘域內(nèi)的寫/讀指針進(jìn)行比較,確定暫存器的空滿狀態(tài),根據(jù)暫存器的空滿狀態(tài),執(zhí)行寫/讀操作。
參見圖3,圖3為基于圖2所示方法流程的異步先入先出系統(tǒng)結(jié)構(gòu)圖。如圖3所示,該系統(tǒng)在圖1所示現(xiàn)有技術(shù)中的異步先入先出系統(tǒng)的基礎(chǔ)上添加了決策控制模塊。
其中,時(shí)鐘域1和時(shí)鐘域2互為對方的目的時(shí)鐘域,且為本方的源時(shí)鐘域。源時(shí)鐘域,用于根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域;目的時(shí)鐘域,用于接收來自源時(shí)鐘域的格雷碼,并將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針,并將所轉(zhuǎn)換的讀/寫指針與自身時(shí)鐘域內(nèi)的寫/讀指針進(jìn)行比較,確定暫存器的空滿狀態(tài),根據(jù)暫存器的空滿狀態(tài),執(zhí)行寫/讀操作。
其中,源時(shí)鐘域內(nèi)的決策控制模塊用于接收本時(shí)鐘域內(nèi)的格雷碼轉(zhuǎn)換模塊輸出的格雷碼,根據(jù)所接收的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳送給目的時(shí)鐘域。
具體實(shí)現(xiàn)時(shí),對于讀操作來說,時(shí)鐘域1中的寫指針控制模塊將二進(jìn)制寫指針輸出給格雷碼轉(zhuǎn)換模塊,格雷碼轉(zhuǎn)換模塊將所接收的二進(jìn)制寫指針轉(zhuǎn)換為格雷碼輸出給決策控制模塊,決策控制模塊根據(jù)所接收的格雷碼確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼經(jīng)過同步后傳送給時(shí)鐘域2的二進(jìn)制轉(zhuǎn)換模塊。
時(shí)鐘域2的二進(jìn)制轉(zhuǎn)換模塊將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制寫指針,輸出給本時(shí)鐘域內(nèi)的計(jì)數(shù)邏輯,此時(shí)本時(shí)鐘域內(nèi)的讀指針控制模塊也已經(jīng)將二進(jìn)制讀指針輸出給該計(jì)數(shù)邏輯,計(jì)數(shù)邏輯根據(jù)所接收的寫指針和讀指針的位置關(guān)系,確定暫存器的空滿狀態(tài),即確定此時(shí)可讀取的字節(jié)個(gè)數(shù),根據(jù)可讀取的字節(jié)個(gè)數(shù),執(zhí)行讀操作。
同樣,對于寫操作來說,時(shí)鐘域2中的讀指針控制模塊將二進(jìn)制讀指針輸出給格雷碼轉(zhuǎn)換模塊,格雷碼轉(zhuǎn)換模塊將所接收的二進(jìn)制讀指針轉(zhuǎn)換為格雷碼輸出給決策控制模塊,決策控制模塊根據(jù)所接收的格雷碼確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼經(jīng)過同步后傳送給時(shí)鐘域1的二進(jìn)制轉(zhuǎn)換模塊。
時(shí)鐘域1的二進(jìn)制轉(zhuǎn)換模塊將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀指針,輸出給本時(shí)鐘域內(nèi)的計(jì)數(shù)邏輯,此時(shí)本時(shí)鐘域內(nèi)的寫指針控制模塊也已經(jīng)將二進(jìn)制寫指針輸出給該計(jì)數(shù)邏輯,計(jì)數(shù)邏輯根據(jù)所接收的讀指針和寫指針的位置關(guān)系,確定暫存器的空滿狀態(tài),即確定此時(shí)可寫入的字節(jié)個(gè)數(shù),根據(jù)可寫入的字節(jié)個(gè)數(shù),執(zhí)行寫操作。
其中,決策控制模塊根據(jù)所接收的格雷碼確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼時(shí)的具體實(shí)現(xiàn)可以與圖2所示流程的步驟201中的介紹。即決策控制模塊將所接收的格雷碼與上次待傳送格雷碼進(jìn)行比較,如果二者只有一個(gè)數(shù)據(jù)位不同,則將上次待傳送的格雷碼變換該不同數(shù)據(jù)位后,得到當(dāng)前待傳送格雷碼;和/或如果二者不只一個(gè)數(shù)據(jù)位不同,則將上次待傳送格雷碼變換不同數(shù)據(jù)位中的一位,得到當(dāng)前待傳送格雷碼,并使變換該數(shù)據(jù)位后的格雷碼小于且最接近所接收的格雷碼;如果二者相同,則將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼。從而使得進(jìn)行傳遞的格雷碼始終小于等于且最接近于所接收的格雷碼。
具體實(shí)現(xiàn)時(shí),決策控制模塊可具體包括比較控制子模塊和格雷碼傳送子模塊。
其中,比較控制子模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,將所接收的格雷碼與上次輸出給格雷碼傳送子模塊進(jìn)行傳送的待傳送格雷碼進(jìn)行比較,當(dāng)二者只有一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者不只一個(gè)數(shù)據(jù)位不同時(shí),則將上次待傳送格雷碼不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,并使變換該數(shù)據(jù)位得到的當(dāng)前待傳送格雷碼小于且最接近所接收的格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者數(shù)據(jù)位都相同時(shí),將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;格雷碼傳送子模塊,用于接收來自比較控制子模塊的當(dāng)前待傳送格雷碼,將所接收的當(dāng)前待傳送格雷碼傳送給目的時(shí)鐘域的二進(jìn)制轉(zhuǎn)換模塊。
其中,圖2所示實(shí)施例的方法與圖3所示實(shí)施例的系統(tǒng)均為在現(xiàn)有技術(shù)的基礎(chǔ)上增加根據(jù)轉(zhuǎn)換的格雷碼確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的待傳送格雷碼的操作,實(shí)現(xiàn)簡單,并且所作修改較少,為本發(fā)明中的較佳實(shí)施例。
此外,具體實(shí)現(xiàn)時(shí),在源時(shí)鐘域內(nèi),待傳遞的二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,還可以是將待傳遞的二進(jìn)制讀/寫指針分為高位和低位兩部分,然后分別對高位和低位進(jìn)行格雷碼轉(zhuǎn)換,并將轉(zhuǎn)換后的高位和低位組合在一起得到的格雷碼;且在目的時(shí)鐘域內(nèi),將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針還可以為將所接收的格雷碼分為高位和低位兩部分,然后分別對高位和低位進(jìn)行二進(jìn)制轉(zhuǎn)換,將轉(zhuǎn)換后的高位和低位組合在一起,得到二進(jìn)制讀/寫指針。
如將讀/寫指針的低兩位作為字節(jié)偏移地址,將其它高位作為字地址,因?yàn)橐粋€(gè)字為32比特,即4個(gè)字節(jié),所以可用指針的低兩位表示每個(gè)字的字節(jié)偏移地址,而用其它高位表示每個(gè)字的起始地址,如此將讀/寫指針分為高位和低位兩部分,對于大小為4比特的指針來說,高兩位為高位,對于大小為5比特的指針來說,高三位為高位。然后分別對所分的高位和低位進(jìn)行格雷碼轉(zhuǎn)換,之后根據(jù)轉(zhuǎn)換后的格雷碼確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的待傳送格雷碼,其中,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的待傳送格雷碼的方法同圖2及圖3所示實(shí)施例的描述。
當(dāng)然,對于圖3所示的系統(tǒng)中,格雷碼轉(zhuǎn)換模塊進(jìn)一步用于將所接收的二進(jìn)制讀/寫指針分為高位和低位兩部分,然后分別對高位和低位執(zhí)行轉(zhuǎn)換格雷碼的操作,并將轉(zhuǎn)換后的高位格雷碼和低位格雷碼進(jìn)行組合后,執(zhí)行所述輸出給決策控制模塊的操作;二進(jìn)制轉(zhuǎn)換模塊進(jìn)一步用于將所接收的格雷碼分為高位和低位兩部分,然后分別對高位和低位執(zhí)行二進(jìn)制轉(zhuǎn)換的操作,并將轉(zhuǎn)換后的高位和低位進(jìn)行組合,得到所述二進(jìn)制讀/寫指針。
仍以大小為4比特的寫指針為例,當(dāng)每次只寫入1個(gè)字節(jié)時(shí),其中隨著指針的改變,相應(yīng)轉(zhuǎn)換的格雷碼與待傳送格雷碼的關(guān)系如表三所示
表三表三中,轉(zhuǎn)換的格雷碼與待傳送的格雷碼都是分別按照高位和低位進(jìn)行操作的。但根據(jù)轉(zhuǎn)換的格雷碼確定待傳送格雷碼的原則和方法與圖2所示流程的步驟201中的描述相同。
當(dāng)每次只寫入2個(gè)字節(jié)時(shí),其中隨著指針的改變,相應(yīng)轉(zhuǎn)換的格雷碼與待傳送格雷碼的關(guān)系如表四所示
表四同理,表四中轉(zhuǎn)換的格雷碼與待傳送的格雷碼也都是分別按照高位和低位進(jìn)行操作的。其中根據(jù)轉(zhuǎn)換的格雷碼確定待傳送格雷碼的原則和方法也與圖2所示流程的步驟201中的描述相同。
上述圖3所示系統(tǒng)中的時(shí)鐘域1或時(shí)鐘域2的構(gòu)成可以單獨(dú)作為發(fā)送裝置使用,即該發(fā)送裝置至少包括格雷碼轉(zhuǎn)換模塊和決策控制模塊。
其中,格雷碼轉(zhuǎn)換模塊,用于將待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換為格雷碼,并將所轉(zhuǎn)換的格雷碼輸出給決策控制模塊。
決策控制模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,根據(jù)所接收的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼發(fā)送出去。
其中,決策控制模塊同樣可具體包括比較控制子模塊和格雷碼傳送子模塊。
其中,比較控制子模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,將所接收的格雷碼與上次輸出給格雷碼傳送子模塊進(jìn)行傳送的待傳送格雷碼進(jìn)行比較,當(dāng)二者只有一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者不只一個(gè)數(shù)據(jù)位不同時(shí),則將上次待傳送格雷碼不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,并使變換該數(shù)據(jù)位得到的當(dāng)前待傳送格雷碼小于且最接近所接收的格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者數(shù)據(jù)位都相同時(shí),將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出。
格雷碼傳送子模塊,用于接收來自比較控制子模塊的當(dāng)前待傳送格雷碼,將所接收的當(dāng)前待傳送格雷碼發(fā)送出去。
以上所述的具體實(shí)施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種異步先入先出方法,其特征在于,該方法包括在源時(shí)鐘域內(nèi),根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域;在目的時(shí)鐘域內(nèi),將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針,根據(jù)所轉(zhuǎn)換的二進(jìn)制讀/寫指針執(zhí)行寫/讀操作。
2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)轉(zhuǎn)換的格雷碼確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼為將轉(zhuǎn)換的格雷碼與上次的待傳送格雷碼進(jìn)行比較,當(dāng)二者只有一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼;和/或,當(dāng)二者不只一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,其中,變換的數(shù)據(jù)位能夠使當(dāng)前待傳送格雷碼小于且最接近轉(zhuǎn)換的格雷碼;和/或,當(dāng)二者數(shù)據(jù)位都相同時(shí),將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼為將待傳遞二進(jìn)制讀/寫指針直接進(jìn)行格雷碼轉(zhuǎn)換得到的格雷碼;則,所述將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針為將所接收的格雷碼直接進(jìn)行二進(jìn)制轉(zhuǎn)換得到二進(jìn)制讀/寫指針;或者,所述待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼為將待傳遞二進(jìn)制讀/寫指針分為高位和低位兩部分,然后分別對高位和低位進(jìn)行格雷碼轉(zhuǎn)換,并將轉(zhuǎn)換后的高位和低位組合在一起得到的格雷碼;則,所述將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針為將所接收的格雷碼分為高位和低位兩部分,然后分別對高位和低位進(jìn)行二進(jìn)制轉(zhuǎn)換,將轉(zhuǎn)換后的高位和低位組合在一起,得到二進(jìn)制讀/寫指針。
4.一種異步先入先出系統(tǒng),包括源時(shí)鐘域和目的時(shí)鐘域,其特征在于,所述源時(shí)鐘域,用于根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域;所述目的時(shí)鐘域,用于接收來自源時(shí)鐘域的格雷碼,并將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針,根據(jù)所轉(zhuǎn)換的二進(jìn)制讀/寫指針執(zhí)行寫/讀操作。
5.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述源時(shí)鐘域包括格雷碼轉(zhuǎn)換模塊和決策控制模塊,其中,格雷碼轉(zhuǎn)換模塊,用于將待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換為格雷碼,并將所轉(zhuǎn)換的格雷碼輸出給決策控制模塊;決策控制模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,根據(jù)所接收的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述決策控制模塊包括比較控制子模塊和格雷碼傳送子模塊,其中,比較控制子模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,將所接收的格雷碼與上次輸出給格雷碼傳送子模塊進(jìn)行傳送的待傳送格雷碼進(jìn)行比較,當(dāng)二者只有一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者不只一個(gè)數(shù)據(jù)位不同時(shí),則將上次待傳送格雷碼不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,并使變換該數(shù)據(jù)位得到的當(dāng)前待傳送格雷碼小于且最接近所接收的格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者數(shù)據(jù)位都相同時(shí),將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;格雷碼傳送子模塊,用于接收來自比較控制子模塊的當(dāng)前待傳送格雷碼,將所接收的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域。
7.如權(quán)利要求4至6中任一項(xiàng)所述的系統(tǒng),其特征在于,所述格雷碼轉(zhuǎn)換模塊進(jìn)一步用于將待傳遞的二進(jìn)制讀/寫指針分為高位和低位兩部分,然后分別對高位和低位執(zhí)行所述轉(zhuǎn)換格雷碼的操作,并將轉(zhuǎn)換后的高位格雷碼和低位格雷碼進(jìn)行組合后,執(zhí)行所述輸出給決策控制模塊的操作;所述目的時(shí)鐘域進(jìn)一步用于將所接收的格雷碼分為高位和低位兩部分,然后分別對高位和低位執(zhí)行所述二進(jìn)制轉(zhuǎn)換的操作,并將轉(zhuǎn)換后的高位和低位進(jìn)行組合,得到所述二進(jìn)制讀/寫指針。
8.一種異步先入先出發(fā)送裝置,其特征在于,該裝置包括格雷碼轉(zhuǎn)換模塊和決策控制模塊,其中,格雷碼轉(zhuǎn)換模塊,用于將待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換為格雷碼,并將所轉(zhuǎn)換的格雷碼輸出給決策控制模塊;決策控制模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,根據(jù)所接收的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼發(fā)送出去。
9.如權(quán)利要求8所述的裝置,其特征在于,所述決策控制模塊包括比較控制子模塊和格雷碼傳送子模塊,其中,比較控制子模塊,用于接收來自格雷碼轉(zhuǎn)換模塊的格雷碼,將所接收的格雷碼與上次輸出給格雷碼傳送子模塊進(jìn)行傳送的待傳送格雷碼進(jìn)行比較,當(dāng)二者只有一個(gè)數(shù)據(jù)位不同時(shí),將上次待傳送格雷碼的該不同數(shù)據(jù)位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者不只一個(gè)數(shù)據(jù)位不同時(shí),則將上次待傳送格雷碼不同數(shù)據(jù)位中的一位進(jìn)行變換,得到當(dāng)前待傳送格雷碼,并使變換該數(shù)據(jù)位得到的當(dāng)前待傳送格雷碼小于且最接近所接收的格雷碼,向格雷碼傳送子模塊輸出;和/或,當(dāng)二者數(shù)據(jù)位都相同時(shí),將上次待傳送格雷碼作為當(dāng)前待傳送格雷碼,向格雷碼傳送子模塊輸出;格雷碼傳送子模塊,用于接收來自比較控制子模塊的當(dāng)前待傳送格雷碼,將所接收的當(dāng)前待傳送格雷碼發(fā)送出去。
全文摘要
本發(fā)明公開了一種異步先入先出方法,包括在源時(shí)鐘域內(nèi),根據(jù)待傳遞二進(jìn)制讀/寫指針轉(zhuǎn)換的格雷碼,確定最多只有一個(gè)數(shù)據(jù)位發(fā)生變換的當(dāng)前待傳送格雷碼,將所確定的當(dāng)前待傳送格雷碼傳遞到目的時(shí)鐘域;在目的時(shí)鐘域內(nèi),將所接收的格雷碼轉(zhuǎn)換為二進(jìn)制讀/寫指針,根據(jù)所轉(zhuǎn)換的二進(jìn)制讀/寫指針執(zhí)行寫/讀操作。此外,本發(fā)明還公開了一種異步先入先出系統(tǒng)及發(fā)送裝置。能夠提高數(shù)據(jù)傳輸?shù)男剩黾訑?shù)據(jù)總線利用的靈活性和效率。
文檔編號G06F13/16GK1963796SQ200610162319
公開日2007年5月16日 申請日期2006年12月11日 優(yōu)先權(quán)日2006年12月11日
發(fā)明者李磊 申請人:北京中星微電子有限公司