Fifo電路的制作方法
【技術領域】
[0001]本發(fā)明涉及集成電路芯片中緩存數(shù)據(jù)領域,特別是涉及一種FIFO (First InFirst Out先進先出)電路。
【背景技術】
[0002]FIFO是一種基于先進先出機制的數(shù)據(jù)緩存器電路,它沒有外部的讀寫地址線,這和其它類別的存儲器如RAM (隨機存儲器),F(xiàn)LASH (閃存)等有著很大的區(qū)別,這也是它使用起來較為簡單容易的一個特點。但是就因為如此,它需要順序的寫入和讀出數(shù)據(jù),由FIFO電路中的讀寫指針自動完成加I操作,并且根據(jù)FIFO電路中的讀寫指針,產生實時的FIFO長度信號。長度信號代表當前FIFO電路中有多少個緩存數(shù)據(jù)的存在。一般FIFO電路作為從機都是被微處理器主機所讀取。傳統(tǒng)的FIFO電路的設計,由于微處理器和FIFO內部自身對于FIFO電路的操作是異步的,微處理器在異步讀取FIFO長度信號的時候,F(xiàn)IFO內部電路可能正在進行FIFO的讀寫操作,故瞬間的FIFO長度信號不穩(wěn)定;微處理器可能會讀取到一個不是預期內的FIFO長度值,并且之后進行了對于FIFO電路的誤讀或者誤寫操作。
【發(fā)明內容】
[0003]本發(fā)明要解決的技術問題是提供一種FIFO電路,能夠避免微處理器在讀取FIFO長度信號的時候,可能讀取到不穩(wěn)定值而對FIFO電路進行誤操作。
[0004]為解決上述技術問題,本發(fā)明的FIFO電路,包括:多個FIFO長度信號延時單元電路,根據(jù)FIFO長度信號的位寬,按從低到高的順序,在每根FIFO長度信號線上設置一 FIFO長度信號延時單元電路,使所述FIFO長度信號從FIFO電路輸出的時候,在各個FIFO長度信號線的延時路徑不一樣。
[0005]采用本發(fā)明的FIFO電路,在每個FIFO長度信號作為FIFO電路的輸出的時候,可以根據(jù)FIFO長度信號的高低位寬的順序,為每個FIFO長度信號的輸出上設置一 FIFO長度信號延時單元電路,使其各個FIFO長度信號作為輸出被其他電路所用的時候,延時路徑不一樣。這樣能夠避免微處理器對于FIFO電路的誤操作,例如往FIFO電路中多寫或者多讀字節(jié)。
[0006]本發(fā)明同樣適用與系統(tǒng)中有主機微處理器和從機FIFO電路交互相似的應用。由于電路應用的時候,從機與主機微處理器交互的時候一些緩存數(shù)據(jù)是放在從機的FIFO電路中,但是從機也有對于FIFO電路的讀寫控制權,這樣從機與主機對于FIFO電路的操作完全是異步的。以往的FIFO電路設計經常會導致微處理器作為主機去讀取從機FIFO電路中的FIFO長度信號時候,讀取到一個會對FIFO電路誤操作的值;經過改進的所述FIFO電路,通過改進FIFO長度信號產生方式,讓主機讀取的時候即使不是穩(wěn)定值,也可以很巧妙的避開主機會對從機FIFO電路進行的誤讀或者誤寫操作這類情況。避免由于誤操作帶來的應用上的錯誤,提高了 FIFO電路的穩(wěn)定性和邏輯正確性。
【附圖說明】
[0007]下面結合附圖與【具體實施方式】對本發(fā)明作進一步詳細的說明:
[0008]圖1是FIFO長度信號經過延時后示意圖(一);
[0009]圖2是FIFO長度信號經過延時后示意圖(二);
[0010]圖3是FIFO長度信號延時單元電路示意圖。
【具體實施方式】
[0011]參見圖3所示,所述FIFO電路,包括:一 FIFO長度信號延時單元電路模塊。該模塊中包括多個FIFO長度信號延時單元電路。
[0012]所述FIFO長度信號延時單元電路模塊有η個輸入信號,分別是:
[0013]1、FIF0電路中的FIFO長度信號的第一位(即最低位)Bit[0];
[0014]2、FIF0電路中的FIFO長度信號的第二位;
[0015]3、FIFO電路中的FIFO長度信號的第三位Bit [2];
[0016]
[0017]N、FIFO電路中的FIFO長度信號的最高位Bit [n-1]
[0018]所述FIFO長度信號延時單元電路模塊有η個輸出信號,分別是:
[0019]N+l、FIFO長度信號經過延時單元電路輸出后的最低位Bit [0];
[0020]N+2、FIFO長度信號經過延時單元電路輸出后的第二位Bit [I];
[0021]N+3、FIFO長度信號經過延時單元電路輸出后的第三位Bit [2];
[0022]...
[0023]2N、FIFO長度信號經過延時單元電路輸出后的最高位Bit [n-1]
[0024]由于每個從機中FIFO電路的緩存深度不同,所以長度信號的位寬也不同,故用N來代表通用的設計,N為正整數(shù)。
[0025]采用FIFO長度信號延時單元電路對于FIFO電路中的FIFO長度信號從低位到高位做不同的延時輸出處理,對于有N比特位寬的FIFO長度信號來說,最低位延時最少輸出,最高位延時最多輸出。
[0026]根據(jù)FIFO電路的特性,把主機微處理器對從機中FIFO電路的誤操作可能性分為兩類:
[0027]第一類情況,從機內部對FIFO電路進行讀數(shù)據(jù)操作,而此時主機微處理器對從機FIFO電路進行寫操作。實際電路應用中,是微處理器往FIFO電路里寫入的緩存數(shù)據(jù)被從機內部讀取以后做進一步處理。微處理器為了避免對于FIFO電路寫入過多的數(shù)據(jù)導致FIFO電路溢出,但是又想盡快的把緩存數(shù)據(jù)寫入FIFO電路給從機讀取,微處理器會不斷查詢從機FIFO電路中FIFO長度信號的值,根據(jù)讀取FIFO長度信號的數(shù)值來決定下一次往從機FIFO電路中一次性發(fā)起寫入多少個數(shù)據(jù)并且不會使得FIFO電路發(fā)生滿溢。值得注意的是,此刻的FIFO電路中的FIFO長度信號對于微處理器來說是在做減法操作的趨勢,因為微處理器在讀取FIFO長度信號數(shù)值的瞬間,從機可能在異步地讀取主機之前寫入FIFO電路的數(shù)據(jù)內容。傳統(tǒng)FIFO電路的設計可能由于不能避免異步電路造成的FIFO長度信號的不穩(wěn)定,而使得主機讀取了未處于穩(wěn)態(tài)的正確的FIFO長度信號的數(shù)值,并且進行了下一次寫AFIFO電路數(shù)據(jù)內容過多,導致FIFO電路的滿溢。根據(jù)改進的方案,允許主機讀到的從機FIFO長度信號的數(shù)值不小于真實的穩(wěn)定后的FIFO長度信號的數(shù)值。因為當主機在寫入的數(shù)據(jù)被從機FIFO電路內部讀取以后,主機想根據(jù)當前從機FIFO長度信號的數(shù)值來繼續(xù)進行對從機寫FIFO操作,而主機微處理器寫FIFO的原則是不讓FIFO電路滿溢。如果此時由于從機FIFO電路中FIFO長度信號的數(shù)值不穩(wěn)定,希望發(fā)生的事情是從機中FIFO長度信號的數(shù)值不小于真實的穩(wěn)定后的FIFO長度