两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種異步fifo及其地址轉(zhuǎn)換方法

文檔序號:6464340閱讀:668來源:國知局
專利名稱:一種異步fifo及其地址轉(zhuǎn)換方法
技術(shù)領(lǐng)域
本發(fā)明涉及微電子技術(shù)領(lǐng)域,特別是涉及一種異步FIFO及其地址轉(zhuǎn)換方法。

背景技術(shù)
在通訊處理系統(tǒng)中,經(jīng)常需要進(jìn)行不同時(shí)鐘域之間的數(shù)據(jù)傳輸。如果是多比特?cái)?shù)據(jù)的傳輸,為了保證異步時(shí)鐘域之間傳輸時(shí)的數(shù)據(jù)完整性,一種通用的方法是使用異步FIFO(先進(jìn)先出)。異步FIFO的特征是讀寫端各自的時(shí)鐘域完全異步,圖1為其一般結(jié)構(gòu)。如圖1所示,數(shù)據(jù)在寫時(shí)鐘域中進(jìn)入緩存,在讀時(shí)鐘域中被讀出,為了保證數(shù)據(jù)緩存的同時(shí)寫入和讀出時(shí)數(shù)據(jù)的一致和完整,在寫邏輯和讀邏輯中分別對寫地址和讀地址的相對位置進(jìn)行邏輯比較,從而判斷出緩存的狀態(tài)(例如,空狀態(tài)、滿狀態(tài))。
由于讀寫時(shí)鐘的異步,讀和寫的地址指針需要分別進(jìn)行時(shí)鐘域穿越。讀地址和寫地址的寬度都是多個(gè)比特,所以直接的時(shí)鐘穿越不能解決問題。為此,一種通用的做法是在穿越前(源時(shí)鐘域內(nèi))將二進(jìn)制地址轉(zhuǎn)換成格雷碼(GrayCode),利用格雷碼的特性(相鄰數(shù)字只相差一個(gè)比特)進(jìn)行時(shí)鐘穿越,在穿越后(目標(biāo)時(shí)鐘域)再轉(zhuǎn)換成原來的二進(jìn)制編碼。
圖2為現(xiàn)有異步FIFO中地址轉(zhuǎn)換示意圖。如圖2所示讀邏輯中生成二進(jìn)制的讀地址后,將該二進(jìn)制讀地址轉(zhuǎn)換為格雷碼,然后,將該讀地址格雷碼從讀時(shí)鐘域穿越到寫時(shí)鐘域,在寫邏輯中,將該讀地址格雷碼轉(zhuǎn)換為二進(jìn)制讀地址,并通過對讀地址和寫地址進(jìn)行比較來確定緩存是否為滿;寫地址的穿越類似,不再贅述。
但是,由于格雷編碼的特殊性,一般的格雷編碼要求數(shù)據(jù)總數(shù)是2的整數(shù)次冪(2、4、8、16、32、…)。這樣,使用常規(guī)格雷編碼的異步FIFO的數(shù)據(jù)緩存的地址空間(即異步FIFO的深度)也只能為2的整數(shù)冪,從而限制了FIFO的應(yīng)用。


發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種異步FIFO及其地址轉(zhuǎn)換方法,可以對任意偶數(shù)階的二進(jìn)制地址進(jìn)行格雷碼轉(zhuǎn)換,從而使得FIFO的深度可以為任意偶數(shù)。
為解決上述技術(shù)問題,本發(fā)明提供技術(shù)方案如下 一種用于異步FIFO的地址轉(zhuǎn)換方法,將二進(jìn)制地址B[m-1:0]轉(zhuǎn)換為格雷碼G[m-1:0],m為大于1的整數(shù),所述異步FIFO的深度為2N,所述方法包括 計(jì)算B[m-1:0]對應(yīng)的十進(jìn)制數(shù)x; 當(dāng)x<N時(shí),令G[m-1]=0,G[i]=B[i]異或B[i+1],0≤i≤m-2,得到G[m-1:0]; 當(dāng)x≥N時(shí),令y=2N-1-x,計(jì)算y對應(yīng)的二進(jìn)制數(shù)B1[m-1:0],且令G[m-1]=1,G[j]=B1[j]異或B1[j+1],0≤j≤m-2,得到G[m-1:0]。
一種用于異步FIFO的地址轉(zhuǎn)換方法,將格雷碼G[m-1:0]轉(zhuǎn)換為二進(jìn)制地址B[m-1:0],m為大于1的整數(shù),所述異步FIFO的深度為2N,所述方法包括 令B[m-1]=0,B[k]=G[m-1]異或G[m-2]異或…異或G[k],0≤k≤m-2,得到B[m-1:0]; 計(jì)算所述得到的B[m-1:0]對應(yīng)的十進(jìn)制數(shù)z; 當(dāng)G[m-1]=1時(shí),計(jì)算2N-1-z對應(yīng)的二進(jìn)制數(shù),并將計(jì)算得到的二進(jìn)制數(shù)作為B[m-1:0]。
一種異步FIFO,所述異步FIFO的深度為2N,包括二進(jìn)制地址到格雷碼轉(zhuǎn)換模塊和格雷碼到二進(jìn)制地址轉(zhuǎn)換模塊,其中 所述二進(jìn)制地址到格雷碼轉(zhuǎn)換模塊用于,將二進(jìn)制地址B[m-1:0]轉(zhuǎn)換為格雷碼G[m-1:0],m為大于1的整數(shù),具體為 計(jì)算B[m-1:0]對應(yīng)的十進(jìn)制數(shù)x; 當(dāng)x<N時(shí),令G[m-1]=0,G[i]=B[i]異或B[i+1],0≤i≤m-2,得到G[m-1:0]; 當(dāng)x≥N時(shí),令y=2N-1-x,計(jì)算y對應(yīng)的二進(jìn)制數(shù)B1[m-1:0],且令G[m-1]=1,G[j]=B1[j]異或B1[j+1],0≤j≤m-2,得到G[m-1:0]; 所述格雷碼到二進(jìn)制地址轉(zhuǎn)換模塊用于,將格雷碼G[m-1:0]轉(zhuǎn)換為二進(jìn)制地址B[m-1:0],具體為 令B[m-1]=0,B[k]=G[m-1]異或G[m-2]異或…異或G[k],0≤k≤m-2,得到B[m-1:0]; 計(jì)算所述得到的B[m-1:0]對應(yīng)的十進(jìn)制數(shù)z; 當(dāng)G[m-1]=1時(shí),計(jì)算2N-1-z對應(yīng)的二進(jìn)制數(shù),并將計(jì)算得到的二進(jìn)制數(shù)作為B[m-1:0]。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是 可以對任意偶數(shù)階的二進(jìn)制地址進(jìn)行格雷碼轉(zhuǎn)換,而不局限于2的整數(shù)次冪的大??; 使用這種格雷碼轉(zhuǎn)換方法設(shè)計(jì)的異步FIFO,其數(shù)據(jù)緩存的地址空間不受2的整數(shù)冪的限制,使系統(tǒng)設(shè)計(jì)得到優(yōu)化。



圖1為現(xiàn)有異步FIFO的結(jié)構(gòu)示意圖; 圖2為現(xiàn)有異步FIFO中地址轉(zhuǎn)換示意圖; 圖3為本發(fā)明實(shí)施例的二進(jìn)制地址到格雷碼的轉(zhuǎn)換示意圖; 圖4為本發(fā)明實(shí)施例的格雷碼到二進(jìn)制地址的轉(zhuǎn)換示意圖。

具體實(shí)施例方式 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。
首先介紹本發(fā)明實(shí)施例中使用的數(shù)學(xué)符號的含義。B[m-1:0]表示一個(gè)m位的二進(jìn)制數(shù),B[k]為B[m-1:0]的第k位;格雷碼G[m-1:0]的含義類似。
參照圖3,需要將二進(jìn)制地址B[m-1:0]轉(zhuǎn)換為格雷碼G[m-1:0],其中,m為大于1的整數(shù),異步FIFO的深度為2N,N為整數(shù)。轉(zhuǎn)換方法主要包括如下步驟 步驟301計(jì)算B[m-1:0]對應(yīng)的十進(jìn)制數(shù)x; 步驟302判斷x是否小于N,若是執(zhí)行步驟303,否則,執(zhí)行步驟304; 步驟303令G[m-1]=0,G[i]=B[i]異或B[i+1],0≤i≤m-2,得到G[m-1:0],結(jié)束; 步驟304令y=2N-1-x,計(jì)算y對應(yīng)的二進(jìn)制數(shù)B1[m-1:0]; 步驟305令G[m-1]=1,G[j]=B1[j]異或B1[j+1],0≤j≤m-2,得到G[m-1:0],結(jié)束。
參照圖4,需要將將格雷碼G[m-1:0]轉(zhuǎn)換為二進(jìn)制地址B[m-1:0],其中,m為大于1的整數(shù),異步FIFO的深度為2N,N為整數(shù)。轉(zhuǎn)換方法主要包括如下步驟 步驟401令B[m-1]=0,B[k]=G[m-1]異或G[m-2]異或…異或G[k],0≤k≤m-2,得到B[m-1:0]; 步驟402計(jì)算所述得到的B[m-1:0]對應(yīng)的十進(jìn)制數(shù)z; 步驟403判斷G[m-1]是否為1,若是,執(zhí)行步驟404,否則,執(zhí)行步驟405 步驟404計(jì)算2N-1-z對應(yīng)的二進(jìn)制數(shù),并將計(jì)算得到的二進(jìn)制數(shù)作為B[m-1:0]輸出,結(jié)束; 步驟405直接將步驟401中得到的B[m-1:0]作為最終結(jié)果輸出,結(jié)束。
以下為利用上述方法進(jìn)行轉(zhuǎn)換的實(shí)例。
共6個(gè)數(shù),2N=6,N=3,表示6個(gè)數(shù)需要3比特,m=3,使用上述方法轉(zhuǎn)換結(jié)果如下 二進(jìn)制數(shù) 格雷碼 0(000)000 1(001)001 2(010)011 3(011)111 4(100)101 5(101)100 可以看出轉(zhuǎn)換結(jié)果符合格雷碼的定義,每兩個(gè)相鄰數(shù)之間只相差一個(gè)比特,且首尾循環(huán)。
使用上述方法的異步FIFO(可參照圖2),包括二進(jìn)制地址到格雷碼轉(zhuǎn)換模塊和格雷碼到二進(jìn)制地址轉(zhuǎn)換模塊,其中 所述二進(jìn)制地址到格雷碼轉(zhuǎn)換模塊用于,將二進(jìn)制地址B[m-1:0]轉(zhuǎn)換為格雷碼G[m-1:0],m為大于1的整數(shù),具體為 計(jì)算B[m-1:0]對應(yīng)的十進(jìn)制數(shù)x; 當(dāng)x<N時(shí),令G[m-1]=0,G[i]=B[i]異或B[i+1],0≤i≤m-2,得到G[m-1:0]; 當(dāng)x≥N時(shí),令y=2N-1-x,計(jì)算y對應(yīng)的二進(jìn)制數(shù)B1[m-1:0],且令G[m-1]=1,G[j]=B1[j]異或B1[j+1],0≤j≤m-2,得到G[m-1:0]; 所述格雷碼到二進(jìn)制地址轉(zhuǎn)換模塊用于,將格雷碼G[m-1:0]轉(zhuǎn)換為二進(jìn)制地址B[m-1:0],具體為 令B[m-1]=0,B[k]=G[m-1]異或G[m-2]異或…異或G[k],0≤k≤m-2,得到B[m-1:0]; 計(jì)算所述得到的B[m-1:0]對應(yīng)的十進(jìn)制數(shù)z; 當(dāng)G[m-1]=1時(shí),計(jì)算2N-1-z對應(yīng)的二進(jìn)制數(shù),并將計(jì)算得到的二進(jìn)制數(shù)作為B[m-1:0]。
最后應(yīng)當(dāng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種用于異步FIFO的地址轉(zhuǎn)換方法,將二進(jìn)制地址B[m-1:0]轉(zhuǎn)換為格雷碼G[m-1:0],m為大于1的整數(shù),所述異步FIFO的深度為2N,其特征在于,所述方法包括
計(jì)算B[m-1:0]對應(yīng)的十進(jìn)制數(shù)x;
當(dāng)x<N時(shí),令G[m-1]=0,G[i]=B[i]異或B[i+1],0≤i≤m-2,得到G[m-1:0];
當(dāng)x≥N時(shí),令y=2N-1-x,計(jì)算y對應(yīng)的二進(jìn)制數(shù)B1[m-1:0],且令G[m-1]=1,G[j]=B1[j]異或B1[j+1],0≤j≤m-2,得到G[m-1:0]。
2.一種用于異步FIFO的地址轉(zhuǎn)換方法,將格雷碼G[m-1:0]轉(zhuǎn)換為二進(jìn)制地址B[m-1:0],m為大于1的整數(shù),所述異步FIFO的深度為2N,其特征在于,所述方法包括
令B[m-1]=0,B[k]=G[m-1]異或G[m-2]異或...異或G[k],0≤k≤m-2,得到B[m-1:0];
計(jì)算所述得到的B[m-1:0]對應(yīng)的十進(jìn)制數(shù)z;
當(dāng)G[m-1]=1時(shí),計(jì)算2N-1-z對應(yīng)的二進(jìn)制數(shù),并將計(jì)算得到的二進(jìn)制數(shù)作為B[m-1:0]。
3.一種異步FIFO,所述異步FIFO的深度為2N,其特征在于,包括二進(jìn)制地址到格雷碼轉(zhuǎn)換模塊和格雷碼到二進(jìn)制地址轉(zhuǎn)換模塊,其中
所述二進(jìn)制地址到格雷碼轉(zhuǎn)換模塊用于,將二進(jìn)制地址B[m-1:0]轉(zhuǎn)換為格雷碼G[m-1:0],m為大于1的整數(shù),具體為
計(jì)算B[m-1:0]對應(yīng)的十進(jìn)制數(shù)x;
當(dāng)x<N時(shí),令G[m-1]=0,G[i]=B[i]異或B[i+1],0≤i≤m-2,得到G[m-1:0];
當(dāng)x≥N時(shí),令y=2N-1-x,計(jì)算y對應(yīng)的二進(jìn)制數(shù)B 1[m-1:0],且令G[m-1]=1,G[j]=B1[j]異或B1[j+1],0≤j≤m-2,得到G[m-1:0];
所述格雷碼到二進(jìn)制地址轉(zhuǎn)換模塊用于,將格雷碼G[m-1:0]轉(zhuǎn)換為二進(jìn)制地址B[m-1:0],具體為
令B[m-1]=0,B[k]=G[m-1]異或G[m-2]異或...異或G[k],0≤k≤m-2,得到B[m-1:0];
計(jì)算所述得到的B[m-1:0]對應(yīng)的十進(jìn)制數(shù)z;
當(dāng)G[m-1]=1時(shí),計(jì)算2N-1-z對應(yīng)的二進(jìn)制數(shù),并將計(jì)算得到的二進(jìn)制數(shù)作為B[m-1:0]。
全文摘要
本發(fā)明提供一種異步FIFO及其地址轉(zhuǎn)換方法。所述方法包括計(jì)算B[m-10]對應(yīng)的十進(jìn)制數(shù)x;當(dāng)x<N時(shí),令G[m-1]=0,G[i]=B[i]異或B[i+1],0≤i≤m-2,得到G[m-10];當(dāng)x≥N時(shí),令y=2N-1-x,計(jì)算y對應(yīng)的二進(jìn)制數(shù)B1[m-10],且令G[m-1]=1,G[j]=B1[j]異或B1[j+1],0≤j≤m-2,得到G[m-10]。依照本發(fā)明,可以對任意偶數(shù)階的二進(jìn)制地址進(jìn)行格雷碼轉(zhuǎn)換,從而使得FIFO的深度可以為任意偶數(shù)。
文檔編號G06F12/02GK101299204SQ20081011454
公開日2008年11月5日 申請日期2008年6月10日 優(yōu)先權(quán)日2008年6月10日
發(fā)明者濤 周 申請人:北京天碁科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
开鲁县| 特克斯县| 新乡市| 安康市| 黄大仙区| 江城| 和平区| 来安县| 通许县| 南木林县| 博客| 海阳市| 隆化县| 格尔木市| 咸阳市| 绥芬河市| 都江堰市| 九龙坡区| 铜鼓县| 中宁县| 牡丹江市| 额尔古纳市| 桐城市| 茂名市| 青龙| 靖江市| 广河县| 南乐县| 博野县| 浦东新区| 同江市| 安阳市| 福贡县| 海晏县| 贵南县| 新郑市| 新民市| 抚顺市| 顺义区| 安顺市| 南澳县|