欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

深度不是2的冪的異步fifo存儲器設計的制作方法

文檔序號:6576831閱讀:1248來源:國知局
專利名稱:深度不是2的冪的異步fifo存儲器設計的制作方法
技術領域
本發(fā)明專利屬于集成電路領域,用于解決數據在不同時鐘域之間的快速傳遞問 題。在含有多個時鐘的芯片中,使用異步FIFO可以在兩個不同時鐘系統之間快速地傳輸數 據。在SoC系統芯片中,異步FIFO存儲器已經成為了必不可少的組成部分。在網絡接口、 圖像處理等方面,異步FIFO也得到了廣泛的應用。另外,使用FPGA做數據處理時,也往往 在接口部分使用異步FIFO來存儲、緩沖數據。本設計方法不涉及具體的工藝。
二.
背景技術
當今集成電路設計的主導思想之一就是同步化設計,即對所有時鐘控制器件(如 觸發(fā)器、RAM等)都采用同一個時鐘來控制。但是隨著設計規(guī)模的不斷擴大,更多元件集成 在同一裸片上,使裸片尺寸越來越大,這容易造成時鐘偏差。在集成電路的設計中,一些新 的方法,如整體異步局部同步(GALS)結構正在替代通常的同步方法,它不需要整體采用單 一時鐘因而避免了時鐘的不確定性問題,另外在SoC芯片中也往往包含多個時鐘。但多時 鐘域帶來的一個問題就是,不可避免地要完成數據在不同時鐘域之間的傳遞。如何設計異 步時鐘域之間的接口電路就成了 一個必須考慮的問題。異步FIF0(First In First Out)是解決這個問題一種簡便、快捷的方案。異步 FIFO是一種先進先出的電路,使用在時鐘頻率不同的數據接口部分,用來存儲、緩沖在兩個 異步時鐘之間的數據傳輸?,F在的異步FIFO存儲器一般都是拘泥于格雷碼設計方式,它有 著自身的缺點。由于格雷碼是一種具有反射特性和循環(huán)特性的單步自補碼,它的碼長2η決 定了存儲器的深度一定要是2η-1,即若實際需要深度為9的存儲器,則只能設計出深度為 16的存儲器來替代。由于FIFO先進先出的工作機制,大的FIFO這不僅造成電路面積和功 耗的增加,還使得數據的輸出延遲(latency)增大。
三.

發(fā)明內容
構造出一種具有單步特性和循環(huán)特性的編碼方式來設計異步FIFO存儲器,舍棄 格雷碼的反射和自補特性,這樣新的編碼的碼長就不再要求是2η。利用這種設計思路,就可 以設計出一個任意深度的異步FIFO。同時利用編碼的低n-1位產生地址,避免了這種編碼 和二進制碼的轉換,也簡化了電路結構。
四.


圖1異步FIFO存儲器的電路框圖,地址生成電路,空/滿控制電路,雙端口存儲單 元,兩級同步器等。圖2是本發(fā)明提出的用于設計深度為9的異步FIFO的編碼。讀/寫指針采用五 位編碼,共有18個狀態(tài),分為上下兩個碼區(qū),分別作為地址奇/偶次循環(huán)編碼。低四位用來 產生地址(最高位為0時低四位直接作為地址,為1時用低四位的反碼作為地址)。圖3所示本發(fā)明方案中提出的生成滿標志的邏輯電路。滿標志是在寫時鐘域中用
3寫指針wptr和同步的讀指針wq2_rptr比較產生的,當二者互為反碼時,FIFO存儲器處于 滿狀態(tài)。其中Wq2_rptr是rptr經兩級同步器同步到寫時鐘域中的寫指針。圖4所示本發(fā)明方案中提出的生成空狀態(tài)的邏輯電路??諛酥臼窃谧x時鐘域中用 讀指針rptr和同步的寫指針rq2_Wptr比較產生的,當二者相同時,FIFO存儲器處于空狀 態(tài)。其中rq2_wptr是wptr經兩級同步器同步到讀時鐘域中的寫指針。圖5所示是異步FIFO的雙端口存儲介質及其附屬電路。
五.
具體實施例方式以下內容具體的說明了本發(fā)明在實際應用中的原理和一種可實施的方案。本發(fā)明 不僅僅限于以下所描述的應用及設計方案,如果對該領域了解并有足夠的電路設計專業(yè)知 識的人,很容易將本專利推廣并應用于其它深度存儲器的設計當中去。實現的具體方法也 許會對編碼的方式有所改變,但基本原理不變。在有的附圖中采用數字標示以幫助描述各 部分的原理及相互之間的關系。發(fā)明的內容主要是利用圖2所提到的編碼方式設計深度不是2η的異步FIFO存儲 器,以及圖3和圖4所示的生成空/滿信號的電路。圖1所示是異步FIFO的整體結構圖。異步FIFO的整個系統可分為兩個完全獨立 的時鐘域——讀時鐘域和寫時鐘域;FIFO的存儲介質為一個雙端口 RAM,可以同時進行讀/ 寫操作。在寫時鐘域部分,由寫地址產生邏輯生成寫控制信號和寫地址;讀時鐘部分由讀地 址邏輯產生讀控制信號和讀地址。在空/滿標志是通過讀/寫指針相互比較產生的。由于FIFO的空/滿信號是由讀/寫指針的比較產生的,而讀/寫指針又不在同一 個時鐘域中,因此在產生空標志時要求寫指針先從寫時鐘域傳遞到讀時鐘域中再和讀指針 比較,產生滿標志要求讀指針先從讀時鐘域傳遞到寫時鐘域中再和寫指針比較。由于亞穩(wěn) 態(tài)的影響,不能將多位數據直接同步到另一時鐘域中,那樣采樣到的可能是一個和原先數 據毫無相關的值。最常見的方法是先將數據轉化成格雷碼再同步。由于格雷碼每次只有一 位翻轉,因此最多只有一位發(fā)生亞穩(wěn)態(tài)。即使翻轉的那一位在采樣時發(fā)生亞穩(wěn)態(tài),采樣的結 果也只可能有兩種一是翻轉前的數據,二是翻轉后的數據。以滿狀態(tài)為例,滿標志的產生 是寫指針追上讀指針的結果,若采樣的結果是第一種情況,即采樣數據是翻轉前的值,寫指 針與之比較如果相等就將滿標志置位,FIFO存儲器表現為滿狀態(tài),實際上此時FIFO存儲器 并未滿,它還有一個字節(jié)的存儲空間。但是這不會引起FIFO存儲器的操作錯誤,在下一個 時鐘周期FIFO存儲器又會正常工作,它只是引起了 FIFO存儲器工作效率的降低,最重要的 一點是它不會引起FIFO存儲器的誤操作。若采樣的結果是第二種情況,則不會出現任何問 題。由此看出,若讀/寫指針采用格雷碼方式,就可以解決指針在讀/寫時鐘域之間的 傳輸問題。缺點是,格雷碼指針只能用于實現大小為2的冪次的FIFO存儲器。如果需要設 計的FIFO存儲器的存儲容量為9個字節(jié),若采用格雷碼指針就必須設計成存儲容量為16 個字節(jié)的FIFO存儲器,有7個字節(jié)的存儲空間是多余的。由于FIFO是先進先出的工作方 式,多出的存儲空間不僅造成設計面積和功耗的增加,還使數據的輸出延遲時間增大了,對 于9/16的設計,數據輸出延遲了 7個時鐘周期。這是采用格雷碼設計的弊端所在。對讀/寫指針采用格雷碼的編碼方式的原因是由于它的單步循環(huán)特性,因此我們可以創(chuàng)造出一種也具有單步循環(huán)性的編碼,而舍棄它的反射和自補特性,其碼長就不再是 2η,這樣就可以設計出任意深度的FIFO 了。圖2是深度為9的FIFO指針編碼,它采用的是5位編碼。碼的總長度是18,分為 上下兩個部分,分別作為地址奇偶次循環(huán)編碼。指針每歷經一次存儲循環(huán),FIFO地址完成兩 次循環(huán)。編碼的相鄰兩個碼組之間只有一位不同,即從上一個狀態(tài)到下一個狀態(tài)的跳轉只 會有一位翻轉,因此它具有單步特性;在204處,狀態(tài)由18跳轉到0狀態(tài),也是只有一位翻 轉,可見這種編碼也具有循環(huán)性。用這種碼作為讀/寫指針狀態(tài)空間,就可以解決FIFO深 度問題。編碼的下半部分是上半部分的反碼,如圖2中的205處的雙向箭頭所示,狀態(tài)10 是狀態(tài)1的反碼。每一部分編碼的最高位是相同的,在203處翻轉。用這種編碼作為讀/ 寫指針的狀態(tài)值來設計異步FIFO,每一次的讀/寫操作都使讀/寫指針從上一個狀態(tài)翻轉 到下一個狀態(tài)。FIFO的地址是利用讀/寫指針的低n-1產生的,當最高位為0時,低n-1直 接作為地址;當最高位為1時,將低n-1先反向再作為地址。如207處所示,MSB = 1,將低 四位4' bllll取反再作為地址,地址為4' b0000。讀/寫指針從狀態(tài)9跳轉到10時,地 址恢復到初始值。值得注意的是,讀/寫地址不是二進制的,它僅僅是一種編碼,已經沒有 數量大小的含義,只是表示不同地址的代號而已。按照這種思路,可以設計出不同深度的FIFO存儲器,解決了采用格雷碼設計深度 是2η的要求。下面代碼是用verilog HDL實現的寫指針和寫地址parameterC_A1 = 5b0_0000
parameterC_A2 = 5b0_0001
parameterC_A3 = 5b0_0011
parameterC_A4 = 5b0_0010
parameterC_A5 = 5b0_0110
parameterC_A6 = 5b0_0111
parameterC_A7 = 5b0_0101
parameterC_A8 = 5b0_1101
parameterC_A9 = 5b0_llll
parameterC_B1 = C_A1 ;
parameterC_B2 = C_A2 ;
parameterC_B3 = C_A3 ;
parameterC_B4 = C_A4 ;
parameterC_B5 = C_A5 ;
parameterC_B6 = C_A6 ;
parameterC_B7 = C_A7 ;
parameterC_B8 = C_A8 ;
parameterC_B9 = C_A9 ;alwaysi (posedge wclk or negedge wrst_n)if ( ! wrst_n) begin
wptr <= C_A1 ;endelse if(wr_en&& full)begincase (wptr)C_A1 :begin wptr <= C_A2 ;endC_A2 :begin wptr <=C_A3 ; end
CA3:beginwptr< =C_A4end
CM:beginwptr< =C_A5end
C_A5:beginwptr< =C_A6end
C_A6:beginwptr< =C_A7end
C_A7:beginwptr< =C_A8end
C_A8:beginwptr< =C_A9end
C_A9:beginwptr< =C_B1end
C_B1:beginwptr< =C_B2end
C_B2:beginwptr< =C_B3end
C_B3:beginwptr< =C_B4end
C_B4:beginwptr< =C_B5end
C_B5:beginwptr< =C_B6end
C_B6:beginwptr< =C_B7end
C_B7:beginwptr< =C_B8end
C_B8:beginwptr< =C_B9end
C_B9:beginwptr< =C_A1end
default :begin wptr < ==C_Al ;endendcaseendalwaysi (wptr)if ( ! wptr [4])waddr = wptr [3:0];elsewaddr = wptr [3:0];讀指針和讀地址的實現與此類似。當讀地址和寫地址相等也就是指向同一個內存位置的時候,FIFO可能處于空或滿 兩種狀態(tài)。因此需要通過一種方法判斷或區(qū)分FIFO是處于空狀態(tài)還是滿狀態(tài),也就是究竟 是寫地址追上了讀地址,還是讀地址趕上了寫地址??梢酝ㄟ^判斷讀/寫指針循環(huán)的次數 來區(qū)分空和滿狀態(tài),循環(huán)次數相同時為空狀態(tài),循環(huán)次數不同時為滿狀態(tài)。圖3是生成滿標志的邏輯電路。滿標志是在寫時鐘域中通過寫指針與同步到寫時 鐘域中的讀指針比較得到的。當讀/寫地址相同而讀/寫指針循環(huán)的次數不同時,說明是 寫地址追上了讀地址,這時FIFO處在滿狀態(tài)。從圖2中的編碼可以看出當讀/寫指針相反 時,它們處在不同的編碼區(qū),讀/寫地址循環(huán)的次數不同,但讀/寫地址是相同的,此時FIFO處在滿狀態(tài)。因此,可用讀/寫指針的相應位異或的與來生成滿信號,其中wq2_rptr是經 過兩級同步器同步到寫時鐘域的讀指針。采用verilog HDL生成滿標志顯得尤為簡單assign full = (wptr == wq2—rptr);圖4是空標志的邏輯電路。空標志是在讀時鐘域中通過讀指針與同步到讀時鐘域 中的寫指針比較得到的。當讀/寫指針相同時,讀和寫的循環(huán)的次數相同且讀/寫地址也 相同。因此,可用讀/寫的相應位異或的或非來生成空信號。其中rq2_eptr是同步到讀時 鐘域的寫指針。采用verilog HDL描述空標志為assign empty = (rptr = = rq2_wptr);空/滿信號的撤銷和實際FIFO的工作情況相比有一定的延遲。例如滿信號是利 用寫指針和同步到寫時鐘域中的讀指針比較產生的,而讀指針同步到寫時鐘域需要一定的 時間,因此同步的讀指針wq2_rptr并不能反映當前讀指針rptr的真實值,這可能導致在 FIFO存儲器已經不再處于滿狀態(tài)時,滿標志卻要在兩個寫時鐘周期之后才能撤銷。這種現 象好比FIFO動態(tài)縮小了一般,但是這沒有多少壞處???滿信號的置位和FIFO存儲器的 實際情況相比沒有延遲。在FIFO存儲器將滿的情況下,由于讀指針不發(fā)生變化,在寫時鐘 域得到的是當前的讀指針值,能夠馬上判斷出FIFO存儲器是否為滿。因此異步FIFO可以 正確地置位滿標志和空標志,但撤銷滿標志和空標志卻是保守的。保守的空/滿狀態(tài)判斷 不會造成FIFO的誤操作。圖5所示的是FIFO的存儲介質、地址譯碼電路和讀寫控制電路。本專利描述的實施方法,已經在65nm工藝和0. 18um CMOS工藝流片并驗證成功, 并且在FPGA上也驗證成功。對本專利的侵權,一般可以對其實施電路的分析來判斷,在無法得到其電路的情 況下,可以對其芯片進行解剖、拍照等反向分析方法來判斷。對于FPGA的侵權,可以通過其 燒制的程序來判斷??赡芮謾嗟臋C構包括各種有廠、無廠的芯片設計公司,研究機構、學校寸。
權利要求
構造單步循環(huán)碼設計深度不是2的冪的異步FIFO存儲器。
2.直接利用讀/寫指針的低位或低位的反碼作為讀/寫地址,無需將指針先轉化成二 進制碼再作為地址。
3.利用讀/寫指針相等生成滿標志,利用讀/寫指針相反生成空標志。
4.使用這種方法在FPGA上生成異步FIFO存儲器,用于存儲、緩沖數據。
全文摘要
深度不是2的冪的異步FIFO存儲器設計屬于集成電路領域,用于解決數據在不同時鐘域之間的快速傳遞問題。異步時鐘域之間的數據傳輸一般采用異步FIFO存儲器來實現。由于異步FIFO一般是采用格雷碼設計方式,這就要求所設計的FIFO深度是必須是2n。在大多數情況下,實際需要的深度不會恰巧是2n,因此這樣的設計要求不僅增大了面積和功耗,而且由于FIFO先進先出的工作方式,多余的存儲深度勢必造成數據輸出延遲增大。本發(fā)明提出了構造一種單步循環(huán)碼實現異步FIFO的設計思路,使它的設計深度不再拘泥于特定值,不僅節(jié)省了芯片面積和功耗,還使數據的延遲(latency)降低了。
文檔編號G06F17/50GK101930350SQ20091011713
公開日2010年12月29日 申請日期2009年6月24日 優(yōu)先權日2009年6月24日
發(fā)明者蘇進, 陳 峰 申請人:合肥力杰半導體科技有限公司;龍迅半導體科技(合肥)有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
兰考县| 浮梁县| 齐河县| 馆陶县| 大悟县| 乐山市| 哈巴河县| 南丹县| 巴南区| 汾西县| 奉化市| 瑞金市| 海宁市| 武清区| 乌海市| 浑源县| 天等县| 会同县| 临邑县| 阿拉善右旗| 澎湖县| 温州市| 天等县| 德惠市| 崇州市| 仁布县| 祁连县| 西贡区| 屯门区| 蕲春县| 旌德县| 文成县| 白山市| 广南县| 老河口市| 和林格尔县| 茶陵县| 叶城县| 宁武县| 大宁县| 兴安县|