一種虛擬液晶顯示器的製作方法
2023-05-03 01:45:11 1
專利名稱:一種虛擬液晶顯示器的製作方法
技術領域:
本發明屬於開發電子產品或進行電子實驗時使用的輔助工具,可以在開發或實驗過程中代替作為電路板顯示輸出設備的液晶顯示器。
背景技術:
隨著數字媒體時代的來到,很多多媒體電子產品都使用液晶顯示器(後文簡寫為LCD)作為顯示設備,如掌上電腦一般使用解析度為240*320的3.5英寸LCD,可攜式媒體播放器常使用480*272的4.3英寸LCD,智慧型手機則多使用176*220的2.0英寸LCD。
為順應這一數字媒體潮流,很多大學和職業學校都逐漸建立了新型的電子實驗室。實驗設備包括各種開發板,以及與開發板配套的LCD(該LCD與開發板相連,作為開發板的顯示輸出,不同於作為電腦顯示器的LCD)。學生可以在這些設備上進行多媒體設備軟體開發的實驗。
採用真實的LCD作為開發板輸出設備的缺點如下與開發板成本相比,LCD價格不菲;實驗室設備使用方式複雜,LCD較易損壞,給實驗室帶來更多開支;學生只能針對實驗室的LCD的解析度進行實驗,例如實驗室的LCD解析度為240*320,則學生無法進行480*272解析度的寬屏多媒體播放器軟體設計實驗。(注多媒體設備使用的小型LCD與PC顯示器不同,其解析度無法改變)除實驗室外,很多個人也自費購買開發板和配套的LCD來進行實驗,他們也會遇到同樣的問題。
另一方面,很多做多媒體設備的企業在開發過程中也自然要用到LCD。例如某些mp4廠商會推出內部結構相同,但LCD尺寸和解析度不同的多種型號產品。他們在開發的過程中就需要準備多種LCD,並隨時在樣機上更換不同的LCD來進行測試,這樣很麻煩,而且容易損壞樣機或LCD(如靜電)。
發明內容
在進行電子實驗或開發電子產品時,如果使用真實的LCD,具有成本高、易損壞、解析度無法變化、使用不便等缺點。
進行電子實驗或開發電子產品時一般都會使用PC。而PC本身已經具有大屏幕、高解析度的顯示器。本發明提出一種虛擬液晶顯示器,可在PC上虛擬各種解析度的LCD。所需要的僅是一塊低成本的電路板和運行在PC上的軟體,卻提高了可靠性和靈活性。
在後文中,「上位計算機」指PC,「目標電路板」指需要LCD作為顯示器的開發板或電子產品樣機。
如圖1所示,本發明由主電路板和上位計算機軟體組成;主電路板包括LCD接口仿真電路和上位計算機接口電路;主電路板通過上位計算機接口電路與上位計算機連接;LCD接口仿真電路從目標電路板接收LCD數字掃描信號,將其轉換為顯示數據後,通過上位計算機接口電路發給上位計算機軟體;上位計算機運行圖形界面作業系統,上位計算機軟體在上位計算機的顯示器上打開一個窗口,並根據收到的顯示數據,模仿真實LCD的掃描過程,將目標電路板輸出的畫面在該窗口內顯示出來。
首先介紹一下LCD數字掃描接口。
許多LCD都提供了數字掃描接口,本發明要虛擬的就是這類LCD。數字掃描接口包括像素時鐘信號、行同步信號、幀同步信號、顏色信號。一個典型的LCD數字掃描信號如圖2所示。這些信號都是LCD的輸入信號,它們共同控制LCD的顯示行為。需要LCD作為顯示終端的電路板只要正確地向LCD提供了這些信號,即可在LCD上顯示出正確的圖像。
掃描是一個逐幀、幀內逐行、行內逐像素的過程,如圖2所示。以解析度為320*240的LCD為例(水平方向320像素、垂直方向240像素)。設LCD上有一個像素坐標(x,y),LCD左上角的像素坐標為(0,0),右下角為(319,239)。每當像素時鐘到來時,LCD就根據當前的顏色信號繪製一個像素。LCD從(0,0)開始繪製,然後(1,0)、(2、0)…這樣在第0行一直繪製下去(當然繪製到(319,0)之後就不再繪製了因為已超過了屏幕範圍)。當行同步信號到來時,LCD就會從下一行開始繪製,即(0,1)、(1,1)、(2,1)…。當幀同步信號到來時,LCD就會重新從(0,0)開始繪製。這樣一遍一遍地重複,當幀速率大於24fps(幀每秒)時,就達到了動態顯示的效果。
顏色信號分成3組,分別對應紅、綠、藍。每組信號的位數根據實際LCD的色彩數而不同。例如24位真彩LCD紅、綠、藍都是8位;16位真彩LCD紅色信號5位、綠色信號6位、藍色信號5位。
上文中的「時鐘到來」、「同步信號到來」指該信號出現上升沿或下降沿。某些LCD採用下降沿,某些LCD採用上升沿,圖2中的信號採用的是上升沿。
LCD數字掃描信號由目標電路板上的晶片產生。掃描信號的幀速率、顏色數、水平像素數、垂直像素數、上升沿還是下降沿等參數,一般是可以通過對目標電路板上的晶片編程來控制的。
因此,本發明要實現的功能就是,從目標電路板獲接收LCD數字掃描信號,將其轉化為顯示數據,傳送到PC上。然後在PC顯示器上打開一個用於模擬LCD的窗口(例如320*240大小),再以軟體的方式,根據接收到的顯示數據,在該窗口中重現上述掃描過程,從而給用戶一種該窗口就是一個真實LCD的感覺。
由於掃描由軟體完成,因此理論上可以虛擬任意解析度的LCD,而且隨時可以改變解析度。考慮到實際多媒體設備大都使用解析度遠低於PC顯示器的LCD,本發明可以很好地滿足大部分需求。
LCD接口仿真電路實現的功能正是對目標電路板展現為一個帶有數字掃描接口的LCD。目標電路板並不知道它是虛擬LCD,而把它當作一個真實的LCD,並向它提供數字掃描信號。
因此LCD接口仿真電路與目標電路板的接口是一組數位訊號。該組信號包括像素時鐘信號、行同步信號、幀同步信號、顏色信號。顏色信號包括3組信號,分別對應紅、綠、藍顏色分量。
LCD接口仿真電路接收來自目標電路板的數字掃描信號,並將其通過上位計算機接口電路發往上位計算機。上位計算機接口電路主要起到了將數據從主電路板採集到PC上的作用。典型的接口有USB、IEEE1394、PCI、PCI-EXPRESS等。
採用不同的接口能達到的傳輸帶寬不同,例如理論上USB高速傳輸可達60MB/s(字節每秒),USB全速傳輸可達1.5MB/s,IEEE1394可達100MB/s,PCI-EXPRESS*1可達312.5MB/s。本發明需要的帶寬取決於要虛擬多高解析度的LCD以及數字掃描信號的幀速率、色彩數。例如320*240、24位色、24fps的LCD數字掃描信號需要320*240*24/8*24=5.53MB/s的帶寬;而800*600、24位色、24fps則需要34.6MB/s。因此,採用不同的接口,由於帶寬不同,所製成的虛擬LCD的性能是不同的。更快的接口支持更高的解析度、更快的幀速率。而且可以看到,即使採用較慢的接口,也可以通過降低幀速率來達到虛擬高解析度LCD的目的。
上位計算機接口電路可採用專用接口晶片,這些接口晶片一方面向PC提供了相應的接口鏈路,一方面向LCD接口仿真電路提供了數據讀寫接口。該數據讀寫接口一般是標準的FIFO接口,包括數據信號和控制信號,數據信號多為8位或16位,控制信號包括讀寫使能、忙等。
LCD接口仿真電路一般用可編程邏輯器件實現。它一方面連接到LCD數字掃描信號接口,一方面連接到上位計算機接口電路的數據讀寫接口,這兩個接口的數據寬度、讀寫速率、讀寫方式都不同,因此需要一個內部FIFO。
LCD接口仿真電路將一個個像素的數據按先後順序寫入內部FIFO,產生一個字節流。每個像素對應的字節數隨實施方式的不同而變。對於較高性能的實施方式,可以支持24位真彩,從而每像素對應3位元組;對於低成本的實施方式,每像素可僅對應1位元組,從而僅支持256種顏色。注意24位真彩的LCD數字掃描信號也可連接到僅支持256色的虛擬LCD,方法是僅連接紅、綠、藍的高位,而低位被忽略。
當行(幀)同步信號到來時,將行(幀)同步數據寫入內部FIFO。上位計算機軟體必須正確地從字節流裡提取幀同步和行同步信息。例如用0xff(十六進位)、0x0f、0x0f三個連續字節表示行同步數據,如果顏色數據裡出現了0xff(例如24位色中代表綠色的顏色數據為0x00、0xff、0x00),則顯然會與同步數據混淆。一般地,解決混淆問題的方法是再插入一個0xff,得到2個0xff,而上位計算機軟體發現2個連續的0xff後,就會知道這不是同步數據,而是一個0xff顏色數據。
對於本發明來說,另一種解決混淆的辦法是當某顏色數據與同步數據相同時,修改其最低位。這種方法的好處是降低了硬體複雜度、降低了帶寬需求,因為無需插入新字節,僅需修改已有的字節。對於一般的數據通信,修改原始數據顯然是不容許的,但對於顯示數據則不同,例如對於24位色來說,如果紅色數據恰為0xff,將其改為0xfe後,雖然數據變了,但繪製出來後人眼是幾乎無法分辨的(在1600萬種顏色中分辨兩種相鄰的顏色)。
LCD接口仿真電路的工作時鐘異步於像素時鐘,而且應快於像素時鐘的數倍,才可充分採樣。其內部FIFO實際是用寄存器堆實現的,這樣可以一次寫入多個數據。例如對於24位色,當像素時鐘到來時,會在一個工作時鐘內向內部FIFO寫入3個字節。如果上位計算機接口電路的數據讀寫接口是16位的,則在一個工作時鐘內會從內部FIFO讀出2位元組數據,並寫入到上位計算機接口電路裡。
當上位計算機接口帶寬不夠時,上位計算機接口電路會設置忙信號,此時會導致LCD接口仿真電路的內部FIFO只寫不讀,因此馬上會溢出,LCD接口仿真電路丟棄所有溢出時要寫入的數據。
上位計算機軟體的流程圖如圖3所示。
程序的具體實現,與主電路板採用的同步數據和避免混淆方式有關,因此在後文的「具體實施方式
」部分再做描述。
圖1為本發明的整體框圖。
圖2為典型的LCD數字掃描信號圖。
圖3為上位計算機軟體流程圖。
圖4為主電路板的USB實現方式。
圖5為主電路板的PCI和PCI-EXPRESS實現方式。
圖6為主電路板的IEEE1394實現方式。
具體實施例方式
實施方式一高速USB接口主電路板硬體本實施採用高速傳輸的USB接口,支持24位真彩。採用了USB四種傳輸模式中的同步傳輸模式(Isochronous模式),並且採用「高帶寬」模式,即一個微幀(microframe)裡最多可進行3次傳輸,每次可傳輸1024位元組。由於每秒有8000個微幀,因此理論上傳輸帶寬可達到23.4MB/s。
主電路板結構如圖4所示,主要由CY7C68013A、XC9572XL組成。其它附屬電路包括5V到3.3V的LDO穩壓器、用於存儲USB設備信息的EEPROM、阻容元件等,這些電路的設計可由專業人員參考晶片手冊設計完成,此處不再贅述。
選用CY7C68013A作為USB接口晶片(即上位計算機接口電路)。該晶片內部集成了USB收發器、FIFO和高速8051。CY7C68013A提供了多個USB傳輸端點。LCD接口仿真電路生成的字節流通過CY7C68013A的端點2向上位計算機傳輸。
CY7C68013A提供了FIFO接口以對其片內FIFO進行讀寫。寫入片內FIFO的數據將自動打包發往上位計算機。FIFO接口數據輸入可以是8位寬或者16位寬,此處選擇8位寬。
如圖4所示,LCD接口仿真電路用可編程邏輯器件XC9572XL-VQ64實現,其IO接口定義如下
在XC9572XL的內部設置如下寄存器
XC9572XL的內部邏輯用VHDL語言描述如下(其中的IO管腳名和寄存器名如前表所示)begin process(nreset,ifclk) begin if nreset='0'then --復位 ; ; ; ; vclk_trig<='0'; vline_trig<='0'; vframe_trig<='0'; vclk_s<='0'; vline_s<='0'; vframe_s<='0'; ; slwr_i<='1';elsif ifclk'event and ifclk='1'then --系統時鐘到來 vclk_s<=vclk; vline_s<=vline; vframe_s<=vframe; if vclk_s='1'and vclk='0'and vclk_trig='0'then vclk_trig<='1'; end if; if vline_s='1'and vline='0'and vline_trig='0'then vline_trig<='1'; end if; if vframe_s='1'and vframe='0'and vframe_trig='0'then vframe_trig<='1'; end if; if vclk_trig='1'then vclk_trig<='0'; ; slwr_i<='1'; if vframe_trig='1'then --寫入幀同步數據 vframe_trig<='0'; ; ; ; elsif vline_trig='1'then --寫入行同步數據 vline_trig<='0'; ; ; ; else ifthen --不混淆 vdr<=vdr_i; else vdr=vdr_i(7 downto 1)amp;'0';--混淆,低位置0 end if; ifthen vdg<=vdg_i; else vdg<=vdg_i(7 downto 1)amp;'0'; end if; ifthen vdb<=vdb_i; else vdb<=vdb_i(7 downto 1)amp;'0'; end if; end if; else ifthen slwr_i<='1'; else if(flagb='1')then slwr_i<='0'; else --上位計算機接口忙 slwr_i<='1'; end if; ifthen fdata<=vdr; ; elsifthen fdata<=vdg; ; elsifthen fdata<=vdb; ; end if; end if; end if; end if; end process; fdata_o<=fdata; --FIFO數據輸出 slwr<=slwr_i;--FIFO寫使能輸出,低電平有效fifoaddr<="00";--FIFO地址,選擇端點2pktend_o<='1'; --低電平有效,本處使該信號無效end Behavioral;上述VHDL代碼的具體解釋如下。
XC9572XL的系統工作時鐘是ifclk,該時鐘由cy7c68013a輸出。可通過編程選擇為30MHz或48MHz,本實施中採用48MHz。ifclk也是cy7c68013a的FIFO的工作時鐘,當slwr為低電平、ifclk上升沿到來時,fdata_o的數據被寫入到cy7c68013a的FIFO裡。
本實施要求目標電路板輸出的像素時鐘、行同步信號、幀同步信號都是下降沿有效(簡單的修改即可變為上升沿有效)。系統時鐘到來時,vclk_s、vline_s、vframe_s分別鎖存像素時鐘、行同步信號、幀同步信號的電平。以像素時鐘為例,如果vclk_s鎖存的上一時刻的像素時鐘狀態為1,而當前像素時鐘輸入即vclk為0,則說明像素時鐘的下降到來了,這時就將vclk_trig置1,表明「像素時鐘到來」。vline_trig和vframe_trig與次類似。
因此,為了充分採樣vclk、vline、vframe,系統時鐘ifclk必須足夠高,否則會丟掉某些下降沿。一般ifclk大於vclk的6倍即可。本實施中ifclk是48MHz,因此vclk不應大於8MHz。這可以滿足多數小型LCD的要求,如320*240、24位色、24fps對應vclk為320*240*24=1.84MHz。
實際中,輸入信號vclk、vline、vframe可能會有噪聲,因此出現誤觸發,即本來信號沒有到來,卻判斷為信號到來。這可以通過一般的「去抖動」電路來解決。即只有某信號連續幾次採樣都與上次記錄的狀態不同時,才認為該信號已經翻轉。例如對於vclk,可如下進行去抖動 if vclk=vclk_s then ; else ifthen vclk_s<=not vclk_s; vclk_f<=″0000″; if vclk_s='1'and vclk_trig='0'then vclk_trig<='1'; end if; else vclk_f<=vclk_f+1; end if; end if;如上述代碼,vclk_s保持上次記錄的狀態,引入了一個計數器vclk_f(復位時初始化為0)。vclk_f記錄連續出現的與vclk_s不同的輸入,如果連續發現了2個(也可設為更多個),就認為輸入信號真的翻轉了,同時設置信號到來標誌vclk_trig。
對於vline和vframe可做類似處理。
本實施的中的「LCD接口仿真電路的內部FIFO」實際是由vdr、vdg、vdb三個8位寄存器和狀態機stm實現的。每次都是寫入全部3個寄存器。當幀同步信號到來時,將「0x01、0x0f、0x0f」寫入這3個寄存器;當行同步信號到來時,將「0x01、0xf0、0xf0」寫入這3個寄存器;當像素時鐘到來時,將當前的24位顏色輸入寫入這3個寄存器。如果顏色數據中包括0x01,則與同步數據混淆,因此將混淆數據的最低位置0(其效果就是改為0x00)。
如果FIFO中原有的數據還沒被讀出,則直接覆蓋原有數據(3位元組)。
狀態機stm的含義如下表所示
如果FIFO有數據且上位計算機接口不忙,則ifclk到來時,將一個字節寫入上位計算機接口電路(即cy7c68013a的FIFO),寫入哪個字節取決於stm,如上表所示。
主電路板軟體cy7c68013a內置了8051單片機。由於cy7c68013a自動處理了大部分USB通信工作,對於本實施而言,只需要在復位後對單片機寄存器進行配置即可,之後的數據傳輸完全是自動完成的,無需軟體控制。具體配置如下
同時,應該將端點2的端點描述符設置為同步IN端點和3072位元組的最大傳輸尺寸。
完整程序的寫法在cy7c68013a的應用手冊裡已有詳盡說明,此處不再贅述。
上位計算機軟體上位計算機軟體的流程圖如圖3所示。
主電路板作為一種USB設備,在上位計算機上需要相應的設備驅動程序。該驅動程序的實現屬於一般USB設備開發的範疇,與本專利技術無關,因此不再贅述。cy7c68013a的應用手冊給出了驅動程序的參考代碼和設計指南。
繪圖程序的具體實現如下
x=0,y=0;
t0=0;t1=0;t2=0;m=0;
初始化設備;打開窗口;建立圖像緩衝區;如果繼續顯示{訪問設備驅動程序,獲取一塊數據;依次分析該次獲取數據的每一個字節{t0=t1;
t1=t2;
t2=當前分析的字節;如果t0=0x01{//同步信息如果t1=0x0f且t2=0x0f{//幀同步x=0;y=0;
m=0;
將圖像緩衝區裡的圖像複製到窗口內;}否則如果t1=0xf0且t2=0xf0{//行同步x=0;
y=y+1;
m=0;
}}否則{m=m+1;
如果m=3{//湊夠3位元組,相當於收到一個像素如果坐標(x,y)未超出圖像緩衝區的範圍{在圖像緩衝區的(x,y)處繪製紅色為t0、綠色為t1、藍色為t2的像素;}x=x+1;
m=0;
}}}}否則{退出}上述程序中,建立圖像緩衝區的原因是對於多數圖形界面作業系統,如windows或linux,直接在屏幕上繪點的速度較慢,如果每個點都直接繪製到屏幕上去,則一般無法達到實時掃描顯示的效果。因此先在圖像緩衝區內畫點(速度很快),畫滿一幀後再將整幀複製到屏幕上的窗口內(這個速度也較慢,但每秒只需進行幾十次)。
其它實施方式PCI接口、PCI-EXPRESS接口、IEEE1394接口其它實施與實施方式一基本相同,本發明的核心是LCD接口仿真和上位計算機的掃描再現技術,而上位計算機接口主要起到數據通道的作用,即一種通用技術。
如果採用PCI接口,則用PCI9054作為PCI接口電路,用IDT71V2101作為緩衝FIFO,如圖5所示。
如果採用PCI-EXPRESS接口,則用PEX8311作為PCI-EXPRESS接口電路,用IDT71V2101作為緩衝FIFO,如圖5所示。
如果採用IEEE1394接口,則用TSB12LV32(內置FIFO)作為IEEE1394鏈路層控制器,用TSB41AB1作為IEEE1394物理層控制器,如圖6所示。
對於上述三種實施方式,最終都提供給了LCD接口仿真電路FIFO接口。
上位計算機接口電路仍然用可編程邏輯器件實現,其內部邏輯與實施方式一基本相同,所需修改都是針對上位計算機接口電路所採用的晶片的不同要求。
上述實施方式的具體線路連接都可以根據實施方式一中的描述以及相應晶片的文檔和接口的規範完成。
對於上位計算機軟體來說,主要是需要編寫相應的驅動程序,而繪圖程序都與實施方式一相同。驅動程序設計是通用技術,相關專業人員可以實現。
權利要求
1.一種虛擬液晶顯示器,其特徵在於由主電路板和上位計算機軟體組成;主電路板包括LCD接口仿真電路和上位計算機接口電路;主電路板通過上位計算機接口電路與上位計算機連接;LCD接口仿真電路從目標電路板接收LCD數字掃描信號,將其轉換為顯示數據後,通過上位計算機接口電路發給上位計算機軟體;上位計算機運行圖形界面作業系統,上位計算機軟體在上位計算機的顯示器上打開一個窗口,並根據收到的顯示數據,模仿真實LCD的掃描過程,將目標電路板輸出的畫面在該窗口內顯示出來。
2.根據權利要求1所述的虛擬液晶顯示器,其特徵在於LCD接口仿真電路與目標電路板的接口是一組LCD數字掃描信號;該組信號包括像素時鐘信號、行同步信號、幀同步信號、顏色信號;顏色信號包括3組信號,分別對應紅、綠、藍顏色分量。
3.根據權利要求1所述的虛擬液晶顯示器,其特徵在於LCD接口仿真電路有一個內部FIFO;當幀同步信號到來時,LCD接口仿真電路將幀同步數據寫入內部FIFO;當行同步信號到來時,LCD接口仿真電路將行同步數據寫入內部FIFO;當像素時鐘到來時,LCD接口仿真電路根據顏色信號生成顏色數據,並將其寫入內部FIFO;如果顏色數據與幀同步數據或行同步數據混淆,則對顏色數據進行填充或修改,再寫入FIFO,從而消除混淆。
4.根據權利要求1所述的虛擬液晶顯示器,其特徵在於上位計算機接口是USB、IEEE1394、PCI、PCI-EXPRESS之一;上位計算機接口電路用於實現所採用的接口。
5.根據權利要求1所述的虛擬液晶顯示器,其特徵在於LCD接口仿真電路與上位計算機接口電路的接口是一組數位訊號;該組信號包括;數據信號、寫使能信號、忙信號;當忙信號無效時,LCD接口仿真電路從其內部FIFO讀出數據(如果有數據的話),將其寫入到上位計算機接口電路。
6.根據權利要求1所述的虛擬液晶顯示器,其特徵在於上位計算機軟體開闢一個與其打開的窗口相同大小的圖像緩衝區,並維護一個二維坐標(x,y),該坐標表示當前掃描像素的位置;當上位計算機軟體收到一個像素的顏色數據時,就在其圖像緩衝區的(x,y)處繪製該像素(如果(x,y)落在緩衝區外則不繪製),繪製的顏色由該顏色數據決定,並將x增1;當收到行同步數據時,將x置0,將y增1;當收到幀同步數據時,將x置0,將y置0,並將圖像緩衝區內的圖像複製到窗口內。
全文摘要
本發明是一種虛擬液晶顯示器。使用本發明時,僅需要一塊電路板和運行在PC上的軟體,即可在PC上虛擬出採用數字掃描接口的各種解析度的液晶顯示器。本發明可在電子實驗或電子產品開發時代替較昂貴且不便的液晶顯示器,從而降低成本,增加了靈活性。
文檔編號G09G5/02GK101034342SQ200710097420
公開日2007年9月12日 申請日期2007年5月9日 優先權日2007年5月9日
發明者朱曼平 申請人:朱曼平