專利名稱:自我調(diào)節(jié)視頻fifo的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的涉及計算機(jī)系統(tǒng),更具體地說,本發(fā)明涉及圖形計算機(jī)系統(tǒng)。
個人計算機(jī)和工作站計算機(jī)等在諸如陰極射線管(CRT)和監(jiān)視器等輸出顯示器上生成圖形和視頻。近來,這些計算機(jī)系統(tǒng)的輸出顯示器已經(jīng)變得更加先進(jìn)、更加靈活。計算機(jī)產(chǎn)業(yè)中有一種趨勢,那就是在顯示器上生成更復(fù)雜的圖形、更豐富的色彩以及富于變化的分辨率。因此,圖形計算機(jī)系統(tǒng)的設(shè)計者們已經(jīng)不得不設(shè)計相關(guān)的計算機(jī)圖形硬件來滿足這些設(shè)計需求。
圖1表示了支持圖形顯示的現(xiàn)代計算機(jī)系統(tǒng)中常見的計算機(jī)圖形硬件的一部分。如圖1所示,現(xiàn)有技術(shù)的計算機(jī)系統(tǒng)101帶有存儲器控制器103,能從顯示存儲器(未予示出)接收顯示數(shù)據(jù)113。被存儲器控制器103接收的顯示數(shù)據(jù)113然后被傳輸?shù)较冗M(jìn)先出存儲器(FIFO)105。在顯示數(shù)據(jù)113項被寫入FIFO 105之后,就可以開始一個FIFO讀周期,將FIFO 105中存儲的顯示數(shù)據(jù)113的數(shù)據(jù)項從FIFO105順序讀出,傳輸?shù)捷敵鲲@示器115。如圖1中所示,顯示數(shù)據(jù)113項從顯示存儲器到輸出顯示器115的傳輸,是由輸出顯示控制器107控制的。輸出顯示控制器107向存儲器控制器103生成一個FIFO寫信號109。FIFO寫信號109是輸出顯示控制器107的一個請求,它使存儲器控制器103從顯示存儲器提取顯示數(shù)據(jù)113,隨后將顯示數(shù)據(jù)113裝入FIFO105。如圖1所示,存儲器控制器103以系統(tǒng)時鐘117定時。圖1還顯示,顯示數(shù)據(jù)113是根據(jù)由輸出顯示控制器107生成的一系列FIFO讀信號111被輸出到輸出顯示器115的。FIFO讀信號111是輸出顯示控制器107的一個請求,它使顯示數(shù)據(jù)113的一個數(shù)據(jù)項在視頻時鐘119的控制下從FIFO105傳輸?shù)捷敵鲲@示器115。
人們知道,現(xiàn)有技術(shù)的計算機(jī)系統(tǒng)101中,系統(tǒng)時鐘117與視頻時鐘119一般具有不同的時鐘頻率。更重要的是,顯示數(shù)據(jù)113寫入FIFO105的速度,不同于與該顯示數(shù)據(jù)113隨后被輸出顯示器115讀出或日使用的速度。結(jié)果,計算機(jī)系統(tǒng)設(shè)計者們要面臨FIFO105變滿這個潛在問題。當(dāng)FIFO105變滿時,新的顯示數(shù)據(jù)113項的寫入可能會覆蓋掉現(xiàn)存的顯示數(shù)據(jù)113項,而在此之前,輸出顯示器115卻來不及讀出在FIFO105中的被覆蓋的顯示數(shù)據(jù)113項。這個情況通常被稱為上溢。出現(xiàn)這種情況的一個后果是,有些顯示數(shù)據(jù)113項可能會丟失,或者不能正確地寫到輸出顯示器115。
諸如現(xiàn)有技術(shù)的計算機(jī)系統(tǒng)101的計算機(jī)系統(tǒng),它們的一個要求是,顯示數(shù)據(jù)113必須被連續(xù)不斷地傳輸?shù)捷敵鲲@示器115。因此FIFO絕不能變空。由于向存儲器控制器103發(fā)出一個FIFO寫信號109的時間,與相關(guān)的顯示數(shù)據(jù)113項在FIFO105中準(zhǔn)備好被讀出的時間,兩者之間存在某種時間差,因此FIFO寫信號109必須在一個FIFO讀周期被完成之前提前一些時間發(fā)出,以保證FIFO105不會變空。
我們也注意到,如果現(xiàn)有技術(shù)計算機(jī)系統(tǒng)101的輸出顯示控制器107不等待足夠的時間,讓存儲器控制器103將新的顯示數(shù)據(jù)113項寫入FIFO105,就會發(fā)生下溢情況。就是說,如果輸出顯示控制器107在FIFO105內(nèi)容為空時過早向FIFO105發(fā)出一個FIFO讀信號111,就會發(fā)生一個下溢情況,導(dǎo)致將錯誤的顯示數(shù)據(jù)113寫到輸出顯示器115。這種情況自然也是不能接受的??傊?,F(xiàn)IFO105絕不能變滿,也絕不能變空。
人們知道,在FIFO讀周期期間向存儲器控制器103發(fā)出要求開始重新裝載FIFO105的FIFO寫信號109,其最佳的時間提前量是多少,這是設(shè)計者門極其難以預(yù)測的。如上所述,如果為了避免發(fā)生下溢情況而將FIFO105設(shè)計得過分大,電路設(shè)計者就能使輸出顯示控制器107在FIFO讀周期中很早地發(fā)出這種要求重新裝載FIFO105的FIFO寫信號109。如果FIFO寫信號109在FIFO讀周期中太遲才被發(fā)出,F(xiàn)IFO就可能會在新的顯示數(shù)據(jù)113項被寫入FIFO105之前變空,導(dǎo)致發(fā)生不希望發(fā)生的下溢情況。
預(yù)測輸出顯示控制器107發(fā)出FIFO寫信號109的最佳時間這個問題,在系統(tǒng)時鐘和/或視頻時鐘為未知的情況中更加糟糕。人們注意到,計算機(jī)系統(tǒng)設(shè)計者們經(jīng)常不能預(yù)先確定系統(tǒng)時鐘117和視頻時鐘119的時鐘頻率。此外,在計算機(jī)上運行的軟件要確定系統(tǒng)時鐘17和視頻時鐘119的頻率也有困難。其結(jié)果是,顯示數(shù)據(jù)113項被寫入FIFO105和從FIFO105中讀出的速度是未知數(shù)。因此,為了應(yīng)付最壞的情況,圖形計算機(jī)系統(tǒng)設(shè)計者們不得不使用非常大的FIFO105,用這種方法來避免上溢和下溢情況,所犧牲的襯底面積(substrate area)和代價令人難以接受。
計算機(jī)設(shè)計者們解決上述問題所采用的另一種現(xiàn)有技術(shù)解決方法是,采用能存儲許多數(shù)據(jù)項的大容量FIFO105來容納大量的顯示數(shù)據(jù)113。理論上講,如果FIFO105無限地大,上溢情況就絕不會發(fā)生。此外,輸出顯示控制器107也就能在輸出顯示器115消耗完FIFO105中所有現(xiàn)存的有效顯示數(shù)據(jù)113項之前的恰當(dāng)時間發(fā)出FIFO寫信號109。下溢情況也因此而不會發(fā)生。這種現(xiàn)有技術(shù)解決方法這樣就解決了與現(xiàn)有技術(shù)的計算機(jī)系統(tǒng)101關(guān)聯(lián)的上溢和下溢問題的。這種現(xiàn)有技術(shù)的設(shè)計的一個明顯后果是,F(xiàn)IFO105必須被設(shè)計得不必要地大。
因此,需要有一種盡可能少地發(fā)生上溢和下溢情況的、從存儲器向輸出顯示器傳輸顯示數(shù)據(jù)的FIFO。此外,這種FIFO不應(yīng)過分龐大,不應(yīng)毫無必要地犧牲寶貴的襯底面積和費用。此外,這種FIFO還應(yīng)當(dāng)能適合并適應(yīng)未知的系統(tǒng)時鐘頻率與視頻時鐘頻率的組合。這種FIFO會有效地降低上溢和下溢情況的發(fā)生,可廣泛地用于各種現(xiàn)代的圖形計算機(jī)系統(tǒng)。
本文描述用從/向FIFO讀、寫顯示數(shù)據(jù)的方法和裝置。在一個實施例中,一個被設(shè)置為接收和提供顯示數(shù)據(jù)的存儲器控制器連接著FIFO。一個被設(shè)置為向存儲器控制器生成FIFO寫信號的輸出顯示控制器這樣連接著FIFO,使得存儲器控制器能根據(jù)該FIFO寫信號將一部分顯示數(shù)據(jù)寫到FIFO。然后,根據(jù)輸出顯示控制器生成的FIFO讀信號,F(xiàn)IFO中該部分顯示數(shù)據(jù)的顯示數(shù)據(jù)項被從FIFO中順序讀出。將一個可編程寄存器設(shè)置成存儲與FIFO中某顯示數(shù)據(jù)項對應(yīng)的一個值。當(dāng)該特定顯示數(shù)據(jù)項被從FIFO讀出時,輸出顯示控制器向存儲器控制器生成另一個FIFO寫信號,要求將另一部分顯示數(shù)據(jù)裝入FIFO。本發(fā)明的另外特點和優(yōu)點,顯見于以下的詳細(xì)說明、附圖及權(quán)利要求中。本發(fā)明的其它特點和優(yōu)點,顯見于各附圖及以下的詳細(xì)說明。
本發(fā)明是通過舉例來說明的,但并不局限于附圖。
圖1表示一個含有現(xiàn)有技術(shù)FIFO的現(xiàn)有技術(shù)計算機(jī)系統(tǒng)的局部。
圖2表示在一個計算機(jī)系統(tǒng)中實施的本發(fā)明的框圖。
圖3表示本發(fā)明的FIFO與當(dāng)前的計數(shù)寄存器及顯示數(shù)據(jù)項寄存器的關(guān)系。
圖4是表示根據(jù)本發(fā)明表示各特定事件發(fā)生的時序圖。
圖5是表示根據(jù)本發(fā)明的一個示范性過程的流程圖。
本文描述從/向FIFO讀、寫顯示數(shù)據(jù)的方法和裝置。為了使讀者透徹地理解本發(fā)明,以下說明中列舉了大量的具體細(xì)節(jié),例如時鐘頻率、存儲器大小、數(shù)據(jù)使用的速度等等。然而,本領(lǐng)域的一般熟練人員顯然知道,本發(fā)明的實施未必需要采用這些具體細(xì)節(jié)。為了避免不必要地妨礙對本發(fā)明的說明,在其它情況下,沒有對已知的材料或方法詳加說明。
本發(fā)明提出一種在使用容量合理的視頻FIFO情況下解決視頻FIFO上溢和下溢問題的新穎方法。本發(fā)明采用一種自我調(diào)節(jié)的視頻FIFO,它能協(xié)調(diào)FIFO讀信號與FIFO寫信號的時間關(guān)系,最大限度地降低了經(jīng)過初始化階段以后,F(xiàn)IFO上溢和/或下溢情況發(fā)生的可能性。
圖2表示在一個計算機(jī)系統(tǒng)201中實施的本發(fā)明的框圖。如圖2所示,計算機(jī)系統(tǒng)201是一個含有與系統(tǒng)存儲器223和總線225相連的中央處理單元(CPU)221的通用計算機(jī)。圖形子系統(tǒng)243與總線225相連。本發(fā)明一個實施例中的總線225是PCI總線。應(yīng)當(dāng)注意,CPU221與圖形子系統(tǒng)243之間的通訊也可以采用其它類型的總線。
在圖2所示的實施例中,圖形子系統(tǒng)243是通過總線接227與總線225相連的。控制電路220連接總線接227并控制著存儲器控制器203。存儲顯示數(shù)據(jù)213的本地存儲器231與存儲器控制器203相連。顯示數(shù)據(jù)213是最終要被傳輸?shù)捷敵鲲@示器215的顯示數(shù)據(jù)。應(yīng)當(dāng)明白,顯示數(shù)據(jù)213可以包含許多代表視頻數(shù)據(jù)或圖形數(shù)據(jù)的顯示數(shù)據(jù)項。存儲器控制器203連接視頻FIFO 205。存儲器控制器203和視頻FIFO205與輸出顯示控制器207相連。如圖2所示,存儲器控制器203從輸出控制器207接收FIFO寫信號205,FIFO205從輸出控制器207接收FIFO讀信號211。FIFO205的一個輸出端連接視頻輸出電路233,后者連接到輸出顯示器215。如圖2所示,存儲器控制器203用系統(tǒng)時鐘217定時,而視頻輸出電路用視頻時鐘219定時。
輸出顯示控制器207包括計數(shù)寄存器235和顯示數(shù)據(jù)項寄存器237。此外,輸出顯示控制器207連接成接收FIFO205發(fā)出的下溢信號239和上溢信號241。當(dāng)FIFO205中發(fā)生下溢情況時,輸出顯示控制器207就通過下溢信號239得到通知。當(dāng)FIFO205中發(fā)生上溢情況時,輸出顯示控制器207就通過上溢信號241得到通知。
在本發(fā)明的一個實施例中,除本地存儲器231之外,圖形子系統(tǒng)243的所有部件都在同一個基片上。在該實施例中,控制電路229包括一個精簡指令集計算機(jī)(RISC)處理器以及支持電路,諸如指令高速緩沖存儲器和VGA兼容電路。
本發(fā)明考慮了這樣一個事實,即諸如CRT和監(jiān)視器等輸出顯示器具有不同的輸出模式。例如,不同的輸出顯示器有不同的輸出分辨率。不同的顯示分辨率影響視頻消費速度或日從FIFO205的視頻輸出速度。就是說,視頻時鐘219的頻率可能要依賴輸出顯示器215具有的特定分辨率。此外,許多計算機(jī)系統(tǒng)都有可變的輸出分辨率,使得輸出顯示器215的輸出分辨率隨時可以改變,由此隨時改變著視頻時鐘219的頻率。例如,在一個實施例中,當(dāng)輸出顯示器215的分辨率被設(shè)置為640×480×16時,視頻時鐘的頻率可能是31MHz。另一種情況下,當(dāng)輸出顯示器215的分辨率被設(shè)置為1,024×768×16時,視頻時鐘219的頻率可能是78MHz。所以說,從FIFO205讀出視頻數(shù)據(jù)或日顯示數(shù)據(jù)的速度,受輸出分辨率的影響。
此外,上面說過,存儲器控制器203向FIFO205寫入視頻數(shù)據(jù)或日顯示數(shù)據(jù)的速度,與系統(tǒng)時鐘217有關(guān)。我們知道,計算機(jī)系統(tǒng)設(shè)計人員經(jīng)常事先不知道系統(tǒng)時鐘217的頻率是多少。其原因是圖形子系統(tǒng)243可以被安裝在系統(tǒng)時鐘217的時鐘頻率各異的各種不同計算機(jī)系統(tǒng)201中。此外,本發(fā)明圖形子系統(tǒng)243的一個實施例可以按不同的頻率操作,由此導(dǎo)致系統(tǒng)時鐘217具有各種不同的時鐘頻率配置。
系統(tǒng)時鐘217和視頻時鐘219頻率的未知組合的總體效果是,計算機(jī)系統(tǒng)設(shè)計者要想精確地協(xié)調(diào)FIFO寫信號209和FIFO讀信號211的發(fā)出以避免FIFO205中發(fā)生上溢情況和下溢情況,即使不是不可能,也極端困難。本發(fā)明通過采用顯示數(shù)據(jù)項寄存器提供了一種解決這種問題的方法。
以下說明本發(fā)明用顯示數(shù)據(jù)項寄存器237和FIFO205進(jìn)行的操作。如圖3所示,F(xiàn)IFO305是一個有0~N-1的N個項的存儲器。FIFO305中的每個項被設(shè)置為存儲DATA(O)~DATA(N-1)中的一個顯示數(shù)據(jù)項。在本發(fā)明的一個實施例中,F(xiàn)IFO305是一個16項×8字節(jié)的存儲器,信息容量是1,024個二進(jìn)制位。在該實施例中,一次讀取并輸出到視頻輸出電路223的信息量是32位。因此,假設(shè)FIFO 305中裝滿了顯示數(shù)據(jù)項,一個FIFO讀周期就需要32(1024÷32)個FIFO讀信號才能讀完FIFO305中的全部數(shù)據(jù)。因此,由于FIFO305中有32個項,該實施例中的N=32。如果例如每次訪問FIFO305能讀取64位數(shù)據(jù),F(xiàn)IFO305則含有16(1024÷64)個項,于是該實施例中的N則等于16。
現(xiàn)在回過來參見圖2,假設(shè)顯示數(shù)據(jù)213已經(jīng)被寫入本地存儲器231。然后,輸出顯示控制器207向存儲器控制器203發(fā)出一個要求加載FIFO205的FIFO寫信號209。作為響應(yīng),存儲器控制器203提取一部分顯示數(shù)據(jù)或者說1,024位的顯示數(shù)據(jù)213,將該數(shù)據(jù)裝入FIFO205。假設(shè)FIFO205是一個16項×8字節(jié)的FIFO、每個時鐘讀取32位數(shù)據(jù),則FIFO205能如圖3的FIFO305所示的那樣容納32個項。存儲器控制器203按照系統(tǒng)時鐘217控制的速度,將DATA(O)~DATA(N-1)寫入FIFO205。然后,輸出顯示控制器207開始將FIFO205中的顯示數(shù)據(jù)213項,經(jīng)視頻輸出電路233順序地傳輸?shù)捷敵鲲@示器215。為此,輸出顯示控制器207要向FIFO205發(fā)出一系列FIFO讀信號211?,F(xiàn)在回到圖3,DATA(0)中的顯示數(shù)據(jù)213項第一個被從FIFO305讀出,井經(jīng)視頻輸出電路233輸出到輸出顯示器215。然后,輸出顯示控制器207向FIFO205發(fā)出下一個FIFO讀信號211,DATA(1)于是被從FIFO305讀出,并經(jīng)視頻輸出電路233輸出到輸出顯示器215。如圖3所示,顯示數(shù)據(jù)項寄存器337含有一個指向FIFO305中某項的值。在圖3的例子中,顯示數(shù)據(jù)項寄存器337指向FIFO305中的第M個項DATA(M)。當(dāng)根據(jù)FIFO讀信號211將DATA(M)從FIFO305讀出時,輸出顯示控制器207向存儲器控制器203發(fā)出另一個FIFO寫信號209,要求開始將要向輸出顯示器215傳輸?shù)南乱徊糠诛@示數(shù)據(jù)213裝入FIFO305。
本發(fā)明中,顯示數(shù)據(jù)項寄存器337是一個可編程寄存器,被編程為包含指向FIFO305中的某個顯示數(shù)據(jù)213項的值。當(dāng)該特定顯示數(shù)據(jù)213項被從FIFO305讀取時,下一個FIFO寫信號209被發(fā)往存儲器控制器203。對編程進(jìn)顯示數(shù)據(jù)項寄存器337中的顯示數(shù)據(jù)213項的選擇,要使得FIFO305中發(fā)生上溢和下溢情況的可能性最小。就是說,對編程進(jìn)顯示數(shù)據(jù)項寄存器337中的值的選擇,要使得在FIFO讀周期中足夠早地發(fā)出下一個FIFO寫信號209,以避免下溢情況的發(fā)生。此外,對為顯示數(shù)據(jù)項寄存器337所選擇項的選擇,要使得在FIFO讀周期中足夠遲地發(fā)出下一個FIFO寫信號209,以有時間在FIFO305中騰出足夠數(shù)量的存儲位置,避免上溢情況的發(fā)生。
下溢情況指的是,當(dāng)向FIFO305發(fā)出一個FIFO讀信號211時,F(xiàn)IFO305中沒有供向輸出顯示器傳輸?shù)男聰?shù)據(jù)。如果存儲器控制器203在FIFO充滿了尚未被讀取的顯示數(shù)據(jù)213項時向FIFO305寫數(shù)據(jù),則發(fā)生上溢情況。
在本發(fā)明的一個實施例中,計數(shù)寄存器335任何時刻都指向正在被從FIFO305讀取的那個特定的顯示數(shù)據(jù)213項。因此,例如在某FIFO讀周期開始的時候,計數(shù)器335可能等于0,指向FIFO305中的第一個項。在該特定項被讀取之后,計數(shù)器335被遞增到下一個值。因此在本例中,計數(shù)器335應(yīng)等于1。在計數(shù)器335到達(dá)FIFO305中的最后一項以后,計數(shù)器335被翻轉(zhuǎn)回指向FIFO305中的第一項,如圖3所示。
在本發(fā)明的一個實施例中,將計數(shù)寄存器335中的值與顯示數(shù)據(jù)項寄存器337中的值進(jìn)行比較。當(dāng)計數(shù)寄存器335與顯示數(shù)據(jù)項寄存器337相等時,發(fā)出一個FIFO寫信號209。圖3中,數(shù)據(jù)項寄存器337指向FIFO305中的第M個項,計數(shù)寄存器335也指向FIFO305中的第M個項。因此根據(jù)本發(fā)明,此時要向存儲器控制器203發(fā)出一個FIFO寫信號209。
這樣,如果編程進(jìn)顯示數(shù)據(jù)項寄存器337中的值是一個選擇恰當(dāng)?shù)闹担湍茉谙到y(tǒng)時鐘217和視頻時鐘219的時鐘頻率是未知數(shù)的系統(tǒng)中,避免FIFO205中上溢和下溢情況的發(fā)生。本發(fā)明的另一個好處是,F(xiàn)IFO205或305的容量不必為了避免下溢和上溢情況而過分地大,因此就不必犧牲不必要的費用和襯底面積。
本發(fā)明的另一個新穎內(nèi)容,如圖2所示,是使用下溢信號239和上溢信號241。由于使用下溢信號239和上溢信號241,本發(fā)明具有能夠進(jìn)行自我調(diào)節(jié)的能力。這種自我調(diào)節(jié)功能,能夠?qū)幊踢M(jìn)顯示數(shù)據(jù)項寄存器337中的特定值動態(tài)更新,以隨時能適應(yīng)系統(tǒng)時鐘217和視頻時鐘219的時鐘頻率的任意特定組合。這樣,對于時鐘頻率的任意特定組合,動態(tài)地調(diào)整顯示數(shù)據(jù)項寄存器337中的值,以保證用編程進(jìn)顯示數(shù)據(jù)項寄存器337中的是一個理想值,最大限度地減少FIFO205中上溢和下溢情況的發(fā)生。
下面敘述本發(fā)明的自我調(diào)節(jié)特性。接著以上的例子,假設(shè)在顯示數(shù)據(jù)項寄存器337中的值現(xiàn)在還不是最佳值。例如系統(tǒng)啟動、系統(tǒng)復(fù)位等情況時可能就處于這種狀態(tài)。假設(shè)現(xiàn)在顯示數(shù)據(jù)213項已經(jīng)被寫入圖3的FIFO305,并且下一個FIFO讀信號已經(jīng)發(fā)出。當(dāng)計數(shù)器355的值等于顯示數(shù)據(jù)項寄存器337中的值時,向圖2的存儲器控制器203發(fā)出一個FIFO寫信號209。
現(xiàn)在假設(shè),當(dāng)存儲器控制器203開始將本地存儲器231的下一部分顯示數(shù)據(jù)213裝入FIFO305時,發(fā)生上溢情況。就是說,存儲器控制器203試圖在FIFO205已“滿”的情況下將數(shù)據(jù)“推入”FIFO205。作為響應(yīng),F(xiàn)IFO205生成一個上溢信號241,該信號被輸出顯示控制器207接收。根據(jù)所接收的上溢信號241,顯示數(shù)據(jù)項寄存器337中的值遞增1,如圖3所示。于是,下一個FIFO寫信號209將在FIFO讀周期的“更晚些時間”被發(fā)出。就是說,如果顯示數(shù)據(jù)項寄存器337上一次指在DATA(M),那么顯示數(shù)據(jù)項寄存器337在根據(jù)上溢信號241遞增之后,將指在DATA(M+1)。結(jié)果,在下一個FIFO讀周期中,在下一個FIFO寫信號209被發(fā)往存儲器控制器203之前,將會有更多的FIFO305中的數(shù)據(jù)單元被讀取并釋放。
顯示數(shù)據(jù)項寄存器337每當(dāng)接收到一個FIFO205發(fā)出的上溢信號時就遞增一次。最后,顯示數(shù)據(jù)項寄存器337將被最優(yōu)化,使得在下一個FIFO寫信號209發(fā)出之前,有更多的FIFO305存儲單元能被讀取并釋放,以避免FIFO205中發(fā)生上溢情況。
與此類似,假設(shè)在FIFO讀周期中發(fā)出FIFO寫信號的時間過遲,在存儲器控制器203還沒有機(jī)會向FIFO305寫入任何顯示數(shù)據(jù)之前,就可能有個FIFO讀信號211被發(fā)往FIFO305。這種情況發(fā)生的可能原因是,向存儲器控制器203發(fā)出FIFO寫信號209的時間與顯示數(shù)據(jù)213項實際被寫入FIFO305的時間之間,存在時間差。其結(jié)果會是,F(xiàn)IFO205中發(fā)生下溢情況,F(xiàn)IFO205向輸出顯示控制器207發(fā)出下溢信號239。
根據(jù)所接收的下溢信號239,顯示數(shù)據(jù)項寄存器337中的值因此遞減。于是,如果顯示數(shù)據(jù)項寄存器337原來指在DATA(M),如圖3所示,那么在FIFO205發(fā)生下溢情況后,顯示數(shù)據(jù)項寄存器337將指在DATA(M-1)。這會導(dǎo)致在隨后的FIFO讀周期中下一個FIFO寫信號209被更早地發(fā)出。顯示數(shù)據(jù)項寄存器337每當(dāng)出現(xiàn)一個下溢信號239時就遞減一次,直至最后,顯示數(shù)據(jù)項寄存器337被調(diào)整到適當(dāng)?shù)闹怠?br>
注意在本發(fā)明中,在顯示數(shù)據(jù)項寄存器337的值被最優(yōu)化之前會多次發(fā)生上溢和下溢情況。然而,在本發(fā)明的一個實施例中,顯示數(shù)據(jù)項寄存器337的值被最優(yōu)化的速度很快,以致計算機(jī)系統(tǒng)201的用戶不能識別出在輸出顯示器215上產(chǎn)生的錯誤。換言之,本發(fā)明調(diào)整的速度很快,以致用戶察覺不到屏幕上的錯誤。由此可知,系統(tǒng)啟動或系統(tǒng)復(fù)位時顯示數(shù)據(jù)項寄存器337的初始值是多少無關(guān)緊要,因為本發(fā)明的調(diào)整時間相當(dāng)短。在本發(fā)明的一個實施例中,系統(tǒng)復(fù)位時顯示數(shù)據(jù)項寄存器337的初始值被設(shè)定為0。
圖4中的時序線401表示本發(fā)明中一些事件發(fā)生的時序線(timeline)。時序線401上的時間自左至右推移。t0時,顯示數(shù)據(jù)213被寫入圖形子系統(tǒng)243的本地存儲器231。
t1時,輸出顯示控制器207向存儲器控制器203發(fā)出一個FIFO寫信號209,要求提取以前寫入本地存儲器231中的一部分顯示數(shù)據(jù)213。存儲器控制器203按照由系統(tǒng)時鐘217控制的速度從本地存儲器231獲得該部分顯示數(shù)據(jù)。所獲得該部分顯示數(shù)據(jù)的顯示數(shù)據(jù)213項然后被寫入FIFO205。
t2時,讀取FIFO205中與t1時的FIFO寫信號209關(guān)聯(lián)的第一個顯示數(shù)據(jù)213項。
t3時,讀取FIFO205中顯示數(shù)據(jù)項寄存器337所指的特定顯示數(shù)據(jù)213項。相應(yīng)地,下一個FIFO寫信號209被發(fā)往存儲器控制器203。存儲器控制器203從本地存儲器231獲得下一部分顯示數(shù)據(jù)213,并將該顯示數(shù)據(jù)寫入FIFO205中現(xiàn)在已被釋放的單元。
t4時,讀取FIFO205中與t3時的FIFO寫信號209關(guān)聯(lián)的第一個顯示數(shù)據(jù)213項。
與上述情況類似,在t5時刻,讀取FIFO205中顯示數(shù)據(jù)項寄存器337所指的特定顯示數(shù)據(jù)213項,由此導(dǎo)致下一個FIFO寫信號209被發(fā)往存儲器控制器203。
最后在t6時刻,讀取FIFO 205中與t5時的FIFO寫信號209關(guān)聯(lián)的第一個顯示數(shù)據(jù)項。
時序線401的過程連續(xù)進(jìn)行,直到在TN時所有顯示數(shù)據(jù)213都被輸出到輸出顯示器215。
如圖4所示,t2與t4之間的時間表示一個FIFO讀周期所需的時間量。與此類似,t4與t6之間的時間量表示另一個FIFO讀周期所需的時間。此外,t3和t5代表各FIFO讀周期中發(fā)出FIFO寫信號209的時刻。根據(jù)本發(fā)明,t3和t5被選擇在能避免FIFO205中發(fā)生上溢和下溢情況的最佳時間發(fā)生。
為了適應(yīng)系統(tǒng)時鐘217和視頻時鐘的頻率的可能變化,本發(fā)明的自我調(diào)節(jié)特性有選擇地將t3和t5偏移到各個FIFO讀周期中的最佳時刻,使FIFO205中發(fā)生上溢和下溢情況的可能性最小。就是說,如果FIFO205中發(fā)生下溢情況,就將t3和t5左移,即在它們各自的FIFO讀周期中提前一些;相反,如果FIFO205中發(fā)生上溢情況,就將t3和t5右移,即在它們各自的FIFO讀周期中推后一些。本發(fā)明就是這樣左移和/或右移時間t3和t5,直到設(shè)定一個最佳時間。
圖5表示了本發(fā)明的一個實施例的處理步驟的流程圖501。假設(shè)本地存儲器中存有顯示數(shù)據(jù),本發(fā)明連續(xù)不斷地從本地存儲器讀取顯示數(shù)據(jù)并將顯示數(shù)據(jù)傳輸?shù)捷敵鲲@示器。方框513表示生成一個FIFO讀信號。然后如方框515所示,從FIFO讀取一個顯示數(shù)據(jù)項。該顯示數(shù)據(jù)項然后被從FIFO輸出。然后判斷,在屏幕上畫該條掃描行時是否發(fā)生了下溢情況。本領(lǐng)域中眾所周知,輸出顯示器上有許多掃描行。在本實施例中,顯示數(shù)據(jù)項寄存器只有在掃描行到達(dá)末端時才遞增或遞減。因此如方框519所示,如果未發(fā)生下溢情況,過程前進(jìn)到方框535;另一方面,如果在掃描行期間發(fā)生了下溢情況,并且如方框521所示到達(dá)了掃描行的末端,則如方框523所示,使顯示數(shù)據(jù)項寄存器遞減。
下一步如方框535所示,判斷在該特定掃描行期間是否發(fā)生了上溢情況。如果發(fā)生了,并且如方框537所示到達(dá)了掃描行的末端,則如方框539所示,使顯示數(shù)據(jù)項寄存器遞增。
然后,過程返回到方框513,生成另一個讀信號。如圖所示,該過程循環(huán)往復(fù),連續(xù)不斷地將本地存儲器的顯示數(shù)據(jù)向輸出顯示器215傳輸。
本文至此說明了一種自適應(yīng)的自我調(diào)節(jié)視頻FIFO。本文描述的視頻FIFO的特點是用一個可編程寄存器來最佳地調(diào)整FIFO寫信號的發(fā)出時機(jī)與FIFO讀周期的關(guān)系。采用本發(fā)明,能使初始化階段后發(fā)生無益的FIFO上溢和下溢情況的可能性最小化。采用本發(fā)明,就不必采用毫無必要的大容量視頻FIFO來減少這種上溢和下溢情況的發(fā)生。此外,本發(fā)明對系統(tǒng)時鐘與視頻時鐘的組合情況未知或可變組合的計算機(jī)系統(tǒng)具有自適應(yīng)性。因此本發(fā)明提供了一種費用較低的靈活的圖形計算機(jī)系統(tǒng)。
本文在以上的詳細(xì)說明中,描述了一種從/向FIFO讀、寫顯示數(shù)據(jù)的裝置和方法。本發(fā)明的裝置和方法是通過結(jié)合它們具體的典型實施例而描述的。不過很顯然,在不偏離本發(fā)明的實質(zhì)和范圍的前提下,可以對它們作出各種修改。因此本說明及其附圖應(yīng)視為是說明性的而不是限制性的。
權(quán)利要求
1.一種從/向FIFO讀、寫顯示數(shù)據(jù)的裝置,該裝置包括一個與FIFO相連的存儲器控制器,存儲器控制器被配置成根據(jù)FIFO寫信號向FIFO寫入一部分顯示數(shù)據(jù);一個與FIFO及存儲器控制器相連的輸出顯示控制器,輸出顯示控制器被配置成根據(jù)正從FIFO中讀取的顯示數(shù)據(jù)項,向存儲器控制器生成FIFO寫信號;一個可編程存儲器電路,它被配置成存儲一個指示要從FIFO中讀取的顯示數(shù)據(jù)項的顯示數(shù)據(jù)項值。
2.權(quán)利要求1描述的裝置,其中,F(xiàn)IFO被配置成當(dāng)發(fā)生下溢情況時生成一個下溢信號,其中FIFO進(jìn)一步被配置成當(dāng)發(fā)生上溢情況時生成一個上溢信號;輸出顯示控制器連接成接收下溢信號和上溢信號。
3.權(quán)利要求2描述的裝置,其中,顯示數(shù)據(jù)項值根據(jù)上溢信號而遞增。
4.權(quán)利要求2描述的裝置,其中,顯示數(shù)據(jù)項值根據(jù)下溢信號而遞減。
5.權(quán)利要求1描述的裝置,進(jìn)一步包括一個計數(shù)器電路,它被配置成指示與FIFO中當(dāng)前正被讀取的顯示數(shù)據(jù)項對應(yīng)的當(dāng)前顯示數(shù)據(jù)項值。
6.權(quán)利要求5描述的裝置,其中,輸出顯示控制器進(jìn)一步根據(jù)當(dāng)前顯示數(shù)據(jù)項值生成FIFO寫信號。
7.權(quán)利要求1描述的裝置,其中,可編程存儲器電路是一個第一寄存器。
8.權(quán)利要求5描述的裝置,其中,計數(shù)器電路是一個第二寄存器。
9.權(quán)利要求1描述的裝置,其中,存儲器控制器在第一時鐘信號控制下向FIFO裝入部分?jǐn)?shù)據(jù),顯示數(shù)據(jù)在第二時鐘信號控制下被輸出FIFO。
10.權(quán)利要求9描述的裝置,其中,第一時鐘信號與第二時鐘信號有可變的時鐘頻率。
11.權(quán)利要求10描述的裝置,其中,第一時鐘信號是系統(tǒng)時鐘信號,第二時鐘信號是視頻時鐘信號。
12.權(quán)利要求1描述的裝置,進(jìn)一步包括一個與存儲器控制器相連的存儲器,存儲器控制器由該存儲器提供顯示數(shù)據(jù)。
13.權(quán)利要求1描述的裝置,進(jìn)一步包括一個輸出顯示器,其中,顯示數(shù)據(jù)是根據(jù)FIFO讀信號被從FIFO輸出到輸出顯示器的。
14.一種從/向先進(jìn)先出存儲器(FIFO)讀、寫顯示數(shù)據(jù)的方法,該方法包括以下步驟在一個可編程存儲器電路中,存儲一個指示要從FIFO中讀取的顯示數(shù)據(jù)項的顯示數(shù)據(jù)項值;根據(jù)來自一個輸出顯示控制器的FIFO寫信號,用一個存儲器控制器向FIFO寫入一部分顯示數(shù)據(jù);根據(jù)來自輸出顯示控制器的FIFO讀信號,順序讀取FIFO中多個顯示數(shù)據(jù)項的每個顯示數(shù)據(jù)項;根據(jù)正從FIFO中讀取的顯示數(shù)據(jù)項,生成FIFO寫信號。
15.權(quán)利要求14描述的方法,進(jìn)一步包括的步驟是,在初始穩(wěn)定階段過后,調(diào)整顯示數(shù)據(jù)項值,以降低FIFO中發(fā)生上溢情況和下溢情況的概率。
16.權(quán)利要求15描述的方法,其中,調(diào)整步驟所包括以下步驟根據(jù)FIFO中發(fā)生的上溢情況利用FIFO生成一個上溢信號;根據(jù)上溢信號遞增顯示數(shù)據(jù)項值;根據(jù)FIFO中發(fā)生的下溢情況利用FIFO生成一個下溢信號;根據(jù)下溢信號遞減顯示數(shù)據(jù)項值。
17.權(quán)利要求16描述的方法,其中,遞增步驟是在某掃描行末端的顯示數(shù)據(jù)項從FIFO讀出之后執(zhí)行的。
18.權(quán)利要求16描述的方法,其中,遞減步驟是在某掃描行末端的顯示數(shù)據(jù)項從FIFO讀出之后執(zhí)行的。
19.權(quán)利要求14描述的方法,其中,存儲器控制器在一個第一時鐘信號控制下接收部分?jǐn)?shù)據(jù),顯示數(shù)據(jù)在一個第二時鐘信號控制下被順序讀出FIFO。
20.權(quán)利要求17描述的方法,其中,第一時鐘信號與第二時鐘信號有可變的時鐘頻率。
21.權(quán)利要求20描述的方法,其中,第一時鐘信號是一個系統(tǒng)時鐘信號,第二時鐘信號是一個視頻時鐘信號。
22.權(quán)利要求14描述的方法,其中,存儲器控制器從一個存儲器接收該部分顯示數(shù)據(jù)。
23.權(quán)利要求14描述的方法,其中,從FIFO順序讀出的顯示數(shù)據(jù)被輸出到一個輸出顯示器。
24.權(quán)利要求14描述的方法,其中,可編程存儲器電路是一個第一寄存器。
25.一個計算機(jī)系統(tǒng),包括一個中央處理單元(CPU);一個與CPU相連的系統(tǒng)存儲器;一個與CPU相連的總線;一個與總線相連、在一個輸出顯示器上生成并顯示顯示數(shù)據(jù)的圖形子系統(tǒng),該圖形子系統(tǒng)包括在一個本地存儲器中儲存的顯示數(shù)據(jù);一個先進(jìn)先出存儲器(FIFO);一個與本地存儲器及FIFO相連的存儲器控制器,存儲器控制器被配置成根據(jù)一個FIFO寫信號向FIFO寫入一部分顯示數(shù)據(jù);一個與FIFO及存儲器控制器相連的輸出顯示控制器,輸出顯示控制器被配置成根據(jù)正從FIFO中讀取的顯示數(shù)據(jù)項,生成FIFO寫信號;一個連接成根據(jù)一個FIFO讀信號從FIFO接收顯示數(shù)據(jù)的視頻輸出電路,視頻輸出電路向輸出顯示器輸出顯示數(shù)據(jù);一個可編程存儲器電路,它被配置成存儲一個指示要從FIFO中讀取的顯示數(shù)據(jù)項的顯示數(shù)據(jù)項值。
26.權(quán)利要求25描述的計算機(jī)系統(tǒng),其中,當(dāng)FIFO中發(fā)生下溢情況時,F(xiàn)IFO生成一個下溢信號;當(dāng)FIFO中發(fā)生上溢情況時,F(xiàn)IFO生成一個上溢信號。
27.權(quán)利要求26描述的計算機(jī)系統(tǒng),其中,要讀出的顯示數(shù)據(jù)項值根據(jù)上溢信號而遞增,以指示要從FIFO順序讀出的下一個顯示數(shù)據(jù)項。
28.權(quán)利要求26描述的計算機(jī)系統(tǒng),其中,要讀出的顯示數(shù)據(jù)項值根據(jù)下溢信號而遞減,以指示要從FIFO順序讀出的上一個顯示數(shù)據(jù)項。
29.權(quán)利要求25描述的計算機(jī)系統(tǒng),其中,可編程存儲器電路是輸出顯示控制器中的一個寄存器。
30.權(quán)利要求25描述的計算機(jī)系統(tǒng),存儲器控制器在第一時鐘信號控制下向FIFO寫入該部分顯示數(shù)據(jù),顯示數(shù)據(jù)在第二時鐘信號控制下被從FIFO中順序讀出。
31.權(quán)利要求30描述的計算機(jī)系統(tǒng),其中,第一時鐘信號與第二時鐘信號具有可變的時鐘頻率。
32.權(quán)利要求31描述的計算機(jī)系統(tǒng),其中,第一時鐘信號是系統(tǒng)時鐘信號,第二時鐘信號是視頻時鐘信號。
全文摘要
本文介紹從/向FIFO(205)讀、寫顯示數(shù)據(jù)(213)的方法和裝置。存儲器控制器(203)從存儲器提取顯示數(shù)據(jù)并將該顯示數(shù)據(jù)寫到FIFO。輸出顯示控制器(207)生成由FIFO接收的FIFO讀信號(211),根據(jù)該FIFO讀信號,顯示數(shù)據(jù)項被從FIFO中順序讀出,傳輸?shù)捷敵鲲@示器。可編程存儲器電路(237)存儲一個指向FIFO中某特定顯示數(shù)據(jù)項的指針值。選擇該指針值以使FIFO中發(fā)生上溢(241)和下溢情況的可能性最小化。本裝置具有動態(tài)地適應(yīng)有不同的系統(tǒng)時鐘(217)與視頻時鐘(219)頻率的不同的計算機(jī)系統(tǒng)配置。
文檔編號G09G5/00GK1218569SQ97194630
公開日1999年6月2日 申請日期1997年3月3日 優(yōu)先權(quán)日1996年3月15日
發(fā)明者S·克里斯納慕爾蒂, J·R·佩特爾森, P·A·舒帕克 申請人:微米技術(shù)有限公司