專利名稱:用于計算機硬件實驗的遠程vga顯示的裝置及方法
技術領域:
本發(fā)明涉及計算機教學實驗技術領域,具體涉及一種用于計算機硬件實驗的遠程 VGA顯示的裝置及方法。
背景技術:
遠程統(tǒng)一實驗平臺有個很大的問題在于,實驗者編寫的硬件描敘語言形成了自己的硬件,但是如果有需要VGA輸出的情況,遠程統(tǒng)一實驗平臺沒有辦法接受實驗FPGA輸出的VGA信號。這給遠程調(diào)試帶來了很大的麻煩。在這種情況下,遠程沒有辦法看到自己的 VGA輸出是否正確,或者,在有圖形交互的情況下,比如下棋,輸入密碼等情況,就沒有辦法看到遠程VGA上的情況。
發(fā)明內(nèi)容
(一)要解決的技術問題本發(fā)明要解決的技術問題是如何使得遠程實驗平臺能夠顯示實驗FPGA輸出的 VGA信號。( 二 )技術方案為解決上述技術問題,本發(fā)明提供了一種用于計算機硬件實驗的遠程VGA顯示的裝置,包括依次連接的實驗FPGA、共享SRAM、控制FPGA、服務器和客戶端,其中,所述實驗 FPGA用于獲取進行VGA顯示所需要的信息;所述控制FPGA用于讀取實驗FPGA發(fā)送給所述共享SRAM的數(shù)據(jù);所述共享SRAM用于供所述實驗FPGA和控制FPGA存取數(shù)據(jù)。優(yōu)選地,所述裝置還包括與所述實驗FPGA連接的本地VGA顯示終端,以及與所述客戶端連接的遠程VGA顯示終端。本發(fā)明還提供了一種利用所述的裝置進行遠程VGA顯示的方法,包括以下步驟Sl、實驗FPGA獲取進行VGA顯示所需要的信息;S2、實驗FPGA將所述信息發(fā)送給本地VGA顯示終端,以便顯示相應的圖像;S3、實驗FPGA將所述信息中的一部分發(fā)送給共享SRAM,控制FPGA采集共享SRAM 上的RGB值并對RGB值進行編址;S4、服務器讀取控制FPGA的數(shù)據(jù),即編址后的RGB值,并對該數(shù)據(jù)進行壓縮編碼;S5、客戶端從服務器讀取到壓縮編碼后的數(shù)據(jù),對該數(shù)據(jù)進行解壓縮和解碼;S6、客戶端將解析出來的數(shù)據(jù)發(fā)送到遠程VGA顯示終端上進行顯示。優(yōu)選地,所述進行VGA顯示所需要的信息包括RGB值、行同步信號和場同步信號,優(yōu)選地,步驟S2中,所述信息中的一部分為RGB值。優(yōu)選地,步驟S3中,編址的方式為將RGB值按順序組成一個9位的數(shù)據(jù),然后將該9位的數(shù)據(jù)按位存入所述共享SRAM的一個32位空間中的最后9位。(三)有益效果本發(fā)明將VGA信號中的信息分為兩部分輸出,其中一部分輸出到共享的SRAM中去,然后讓控制FPGA從共享SRAM中讀出數(shù)據(jù),將數(shù)據(jù)傳送到遠程客戶端上,從而使遠程實驗平臺能夠顯示實驗FPGA輸出的VGA信號。
圖1是本發(fā)明的裝置結構圖;圖2是本發(fā)明的方法流程圖;圖3示出了行掃描信號與同步信號的關系;圖4示出了共享SRAM中的數(shù)據(jù)存儲格式;圖5是解析結果圖。
具體實施例方式下面結合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。如圖1所示,本發(fā)明用于計算機硬件實驗的遠程VGA顯示的裝置,包括依次連接的實驗FPGA 1、共享SRAM 2、控制FPGA 3、服務器4和客戶端5,其中,所述實驗FPGA用于獲取進行VGA顯示所需要的信息;所述控制FPGA用于讀取實驗FPGA發(fā)送給所述共享SRAM 的數(shù)據(jù);所述共享SRAM用于供所述實驗FPGA和控制FPGA存取數(shù)據(jù)。如圖2所示,本發(fā)明的方法包括以下步驟Si、實驗FPGA獲取進行VGA顯示所需要的信息(包括RGB值,行同步信號,場同步信號)要實現(xiàn)VGA的遠程顯示,有兩方面的事情,一是獲取VGA顯示所需要的行、場同步信息以及RGB值;二是對獲得的這些數(shù)據(jù)進行處理,然后在本地顯示出圖像。VGA在顯示時會持續(xù)不斷的刷屏,以此來支持動態(tài)圖像的顯示,但是這樣造成的后果是只要不掉電,那么不斷刷屏產(chǎn)生的數(shù)據(jù)幾乎無窮大,就造成了獲取數(shù)據(jù)的難度。每刷新一次,就表示一組新的大量數(shù)據(jù)的產(chǎn)生,如果要完全實現(xiàn)VGA的顯示,就必須不斷地獲取刷新后的數(shù)據(jù),但是網(wǎng)絡的傳輸速率以及客戶端的數(shù)據(jù)處理是有限制的,如果在兩次刷新的間隔時間內(nèi)不能將數(shù)據(jù)全部取走,那么必然會造成實驗數(shù)據(jù)的丟失,這樣就不能實現(xiàn)VGA的顯示。通過CPLD/FPGA或其他器件對RGB信號,行、場同步信號等信號的控制,產(chǎn)生所需要的信號值,按照VGA的工業(yè)標準,將這些信號傳遞給VGA接口,即可在顯示器上顯示出相應的圖像,至于VGA接口內(nèi)部是怎么樣實現(xiàn)的,不用考慮。標準的VGA(640X480,60Hz)接口需要提供以下幾組信號3個RGB模擬信號,行同步信號,場同步信號。我們發(fā)現(xiàn)當VGA顯示所需要的行同步信號上升之后至少0. Mus,下一行的數(shù)據(jù)才可以開始發(fā)送。其中,像素數(shù)據(jù)占用一個周期31. 77us中的25. 17us,在剩余的6. 6us中,像素信息保持為0。 在640 X 480的標準VGA接口中,每行的像素點不是640個,而是800個,其中多余的160個是行消隱區(qū)。如圖3所示,行掃描信號每行有一個負脈沖,對應的就是消隱區(qū)。640 個像素點在25. 17us時間內(nèi)被發(fā)送到顯示器。在發(fā)送完像素信息之后,行同步信號至少經(jīng)過0. 94us后才能變低,然后保持低電平3. 77us。 S2、實驗FPGA將RGB值與行、場同步信號發(fā)送給本地VGA顯示終端,以便顯示相應的圖像
為了測試遠程顯示的結果與本地顯示是否相同,在硬件端,在將數(shù)據(jù)寫入SRAM的同時將數(shù)據(jù)傳給本地VGA顯示終端,使得本地能夠在顯示器上顯示出圖像。要完成VGA的本地顯示是很簡單的,只須將行(hs)、場(vs)同步信息以及R、G、B輸出值綁定到相應的管腳, 即可保證本地的圖像顯示。在本地用顯示器顯示圖像的時候,實驗者按照VGA標準所要求的時序關系(如下表1所示),生成字符坐標點位置,然后針對不同坐標點給出相應的RGB 值,將RGB信號與行、場同步信號傳給VGA接口,就可以顯示出相應的圖像了。在遠程顯示的時候,情況比較復雜,需要考慮的因素眾多,所以不能完全按照本地顯示的情況來做。需要確定獲取哪些數(shù)據(jù),在本地顯示時,需要獲得RGB值,行、場同步信號,在遠程顯示的時候, 要形成圖像,RGB值是不可缺少的,因此RGB值是必須獲取。行、場同步信號的作用是約定有效顯示區(qū)的RGB值發(fā)送給顯示器的時間,也就是將除了行消隱區(qū)外的RGB值傳遞給顯示器, 那么在遠程顯示的時候必須對行、場同步信號進行模擬,以此來消除消隱區(qū)的RGB值,很顯然,這樣做不僅增大了獲取的數(shù)據(jù)量,還造成了客戶端處理的難度。因此需要想辦法在不獲取行、場同步信號的情況下得到有效顯示區(qū)的RGB值。所以只需要確定有效的RGB值就可以了,并把這些值傳送給客戶端就可以了。
水 T+m‘ }' V γ:..(H Ψ:;:liij ii-jIn 4.rL U丨.'丨.、· L·I· -i : I!" ..; -t- -]km.廣fji-J iL-640x48060Hz25.18MHz164S96B1.47KHZ—640表 1S3、實驗FPGA將RGB值發(fā)送給共享SRAM,控制FPGA采集共享SRAM上的RGB值并對RGB值進行編址通過檢查現(xiàn)有的硬件連接軟件發(fā)現(xiàn),能夠傳遞RGB值的函數(shù)就只有兩個讀取寄存器函數(shù)和讀取共享SRAM芯片函數(shù)。但是由于寄存器個數(shù)太少,存儲的數(shù)據(jù)太少,因此唯一能用的就只有讀取共享SRAM芯片,在硬件平臺上有一個共享SRAM,擁有個地址,每個地址32位,即共享SRAM可以存儲2MB的數(shù)據(jù)。因此,初步設想可以在硬件端將有效顯示區(qū)的 RGB值存在SRAM里面,客戶端通過調(diào)用讀取共享SRAM函數(shù)來獲取這些數(shù)據(jù),然后在本地進行處理,并顯示出圖像。因此,本步驟中選擇將RGB值發(fā)送給共享SRAM。在將數(shù)據(jù)寫入共享SRAM時,必須約定好保存格式,當客戶端調(diào)用讀寫共享SRAM函數(shù)獲取到數(shù)據(jù)后,需要按照寫入共享SRAM里面的格式對數(shù)據(jù)進行解析,然后才能獲得真實有效的RGB值,解析之后就可以根據(jù)這些值畫出相應的VGA圖像。將數(shù)據(jù)寫入共享SRAM是本發(fā)明的關鍵。它的成敗直接牽涉到后期客戶端圖像顯示的成功與否??蛻舳诵枰@取的僅僅是有效顯示區(qū)的RGB值,因此寫入共享SRAM的就是這些數(shù)據(jù)。下面將對共享SRAM大小與RGB數(shù)據(jù)大小進行分析。硬件平臺的SRAM總共有個地址,每個地址32位G個字節(jié)),因此,共享SRAM的大小為219 X 4B = 2097152B = 2MB。而對于一個的標準VGA來說,每一個像素點的大小為一個字節(jié)(IB),所以每一幀的大小為640X480B = 307200B = 300KB,但是根據(jù)VGA標準,它會不停的按照幀頻率來刷新圖像,幀頻率是60Hz,也就是說每隔l/60s = 0. 0167s就會刷新一幀,產(chǎn)生300KB的數(shù)據(jù),這也就意味著,刷新第7次的時候,產(chǎn)生的數(shù)據(jù)大小為7X300KB=2100KB = 2. 05MB > 2MB,造成SRAM溢出,所以不能正常顯示VGA圖像,而實際上,由于 VGA是在不停歇的刷頻,所以不管SRAM有多大,都不可能將所有的RGB值保存下來。要傳給VGA接口的R、G、B值都是3位的,總共9位,所以直接對RGB值進行編制時,將R、G、B按順序組成一個9位的數(shù)據(jù),按位存入一個所述共享SRAM地址的32位空間中的最后9位。例如,假設R = 101,G = 110,B = 011,則SRAM中對應地址的存儲如圖4所示。由于客戶端在讀取數(shù)據(jù)時,是讀取一片連續(xù)的地址,而且為了解析數(shù)據(jù)方便,因此約定數(shù)據(jù)必須存放在一個接一個的連續(xù)地址中,不能間斷的存儲。當客戶端讀取數(shù)據(jù)后,可以按照這個約定來解析數(shù)據(jù),最終得到R、G、B的原始值。要往SRAM里寫入數(shù)據(jù),需要實現(xiàn)一個接口,通過這個接口來獲取實驗者的行、場同步信息和R、G、B值,在獲取了 RGB值之后,再實現(xiàn)將數(shù)據(jù)寫入SRAM。SRAM的寫操作控制受多個信號共同控制,本實驗平臺中SRAM的0E、CE直接接地, 直接由WE高與低來控制何時寫入。初始狀態(tài),當時鐘上升沿到來時,將WE拉低,賦給地址總線當前需寫入的地址,并保持一定時間,然后給數(shù)據(jù),并將拉高,將總線控制權交給SRAM, 寫入數(shù)據(jù)。此過程中需要控制好數(shù)據(jù)寫入的時序。數(shù)據(jù)只能保持一個時鐘周期,即當下一個時鐘來臨、狀態(tài)轉換時,數(shù)據(jù)就會丟失。因此數(shù)據(jù)只有在拉高的同時賦給數(shù)據(jù)線才能正常寫入。S4、服務器讀取控制FPGA的數(shù)據(jù)(編址后的RGB值,也即VGA顯示數(shù)據(jù)),對數(shù)據(jù)進行壓縮編碼服務器讀取到控制FPGA發(fā)送來的數(shù)據(jù)以后,對數(shù)據(jù)進行進一步的壓縮編碼以后供客戶端讀取。這里的壓縮編碼可以采用比較通用的現(xiàn)有方式。S5、客戶端從服務器讀取到VGA顯示數(shù)據(jù)以后,對數(shù)據(jù)進行解壓縮,并且進行解碼數(shù)據(jù)的獲取需要調(diào)用讀寫SRAM函數(shù),該函數(shù)會將讀取到的數(shù)據(jù)保存在一個byte 數(shù)組中。只是在讀取數(shù)據(jù)之前需要檢查數(shù)據(jù)總線的狀態(tài),并設置數(shù)據(jù)總線狀態(tài)為可讀狀態(tài)。 在獲取數(shù)據(jù)之后,下一步要做的就是對這個數(shù)組中的數(shù)據(jù)進行解析。由于獲取的數(shù)據(jù)是保存在byte數(shù)組中,一個byte占1個字節(jié),也就是8位,而SRAM中,一個地址的大小是32位, 所以SRAM中一個地址的數(shù)據(jù)對應byte數(shù)組中的4個連續(xù)元素。根據(jù)前面的約定,R、G、B 分別是三位,總共應該是9位。也就是說byte數(shù)組中保存一個SRAM地址數(shù)據(jù)的四個連續(xù)元素中表示低16位的兩個元素才能完整的解析出R、G、B值。實驗發(fā)現(xiàn)byte數(shù)組中連續(xù)四個元素中的前兩個表示的是低16位,例如,設byte數(shù)組為data [length],其中data[k], data[k+1], data[k+2], data[k+3]表示的是一個SRAM地址中的數(shù)據(jù),那么其中data[k]和 data[k+l]的數(shù)據(jù)解析之后就是R、G、B的值,如圖5所示。由從圖4可以看出,R、G、B值可以按照如下方式解析出來R = data [k+1] *27+( (data [k]&0xc0) >> 1)+31,可以看到 R 后面的數(shù)據(jù)是 IlO(G)Oll (B),對應的10進制就是27。而data[k+l]本身是1。因此1*27得到了最高位的值,然后需要加上R的低兩位的值01,那么就需要data[k]的值&去掉低位的,保留高位的,然后右移一位。就得到了 R的低兩位的數(shù)值。然后相加。G = (data[k] << 2)&0xe0+31同樣G的值需要左移兩位然后去掉低位的值。B = (data[k] <<5)&0xe0+31同樣B的值需要左移5位然后去掉低位的值得到。S6、將解析出來的數(shù)據(jù)直接發(fā)送到遠程的VGA顯示終端上進行顯示,本實施例中,顯示結果為數(shù)字3。 以上所述僅是本發(fā)明的實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明技術原理的前提下,還可以做出若干改進和變型,這些改進和變型也應視為本發(fā)明的保護范圍。
權利要求
1.一種用于計算機硬件實驗的遠程VGA顯示的裝置,其特征在于,包括依次連接的實驗FPGA、共享SRAM、控制FPGA、服務器和客戶端,其中,所述實驗FPGA用于獲取進行VGA顯示所需要的信息;所述控制FPGA用于讀取實驗FPGA發(fā)送給所述共享SRAM的數(shù)據(jù);所述共享SRAM用于供所述實驗FPGA和控制FPGA存取數(shù)據(jù)。
2.如權利要求1所述的裝置,其特征在于,所述裝置還包括與所述實驗FPGA連接的本地VGA顯示終端,以及與所述客戶端連接的遠程VGA顯示終端。
3.一種利用權利要求1或2所述的裝置進行遠程VGA顯示的方法,其特征在于,包括以下步驟51、所述實驗FPGA從VGA信號中獲取進行VGA顯示所需要的信息;52、所述實驗FPGA將所述信息發(fā)送給本地VGA顯示終端,以便顯示相應的圖像;53、所述實驗FPGA將所述信息中的一部分發(fā)送給所述共享SRAM,所述控制FPGA采集所述共享SRAM上的RGB值并對RGB值進行編址;54、所述服務器讀取控制FPGA的數(shù)據(jù),即編址后的RGB值,并對該數(shù)據(jù)進行壓縮編碼;55、所述客戶端從所述服務器讀取到壓縮編碼后的數(shù)據(jù),對該數(shù)據(jù)進行解壓縮和解碼;56、所述客戶端將解析出來的數(shù)據(jù)發(fā)送到遠程VGA顯示終端上進行顯示。
4.如權利要求3所述的方法,其特征在于,所述進行VGA顯示所需要的信息包括RGB 值、行同步信號和場同步信號,
5.如權利要求3所述的方法,其特征在于,步驟S2中,所述信息中的一部分為RGB值。
6.如權利要求3所述的方法,其特征在于,步驟S3中,編址的方式為將RGB值按順序組成一個9位的數(shù)據(jù),然后將該9位的數(shù)據(jù)按位存入一個所述共享SRAM地址的32位空間中的最后9位。
全文摘要
本發(fā)明涉及計算機教學實驗技術領域,公開了一種用于計算機硬件實驗的遠程VGA顯示的裝置及方法,該裝置包括依次連接的實驗FPGA、共享SRAM、控制FPGA、服務器和客戶端,其中,所述實驗FPGA用于獲取進行VGA顯示所需要的信息;所述控制FPGA用于讀取實驗FPGA發(fā)送給所述共享SRAM的數(shù)據(jù);所述共享SRAM用于供所述實驗FPGA和控制FPGA存取數(shù)據(jù)。還公開了一種利用上述裝置進行遠程VGA顯示的方法。本發(fā)明將VGA信號中的信息分為兩部分輸出,其中一部分輸出到共享的SRAM中去,然后讓控制FPGA從共享SRAM中讀出數(shù)據(jù),將數(shù)據(jù)傳送到遠程客戶端上,從而使遠程實驗平臺能夠顯示實驗FPGA輸出的VGA信號。
文檔編號G06F3/14GK102306089SQ20111018476
公開日2012年1月4日 申請日期2011年7月4日 優(yōu)先權日2011年7月4日
發(fā)明者全成斌, 李山山, 趙有健, 陳永強, 陳飛 申請人:清華大學