一种虚拟液晶显示器的制作方法

文档序号:2652153阅读:555来源:国知局
专利名称:一种虚拟液晶显示器的制作方法
技术领域
本发明属于开发电子产品或进行电子实验时使用的辅助工具,可以在开发或实验过程中代替作为电路板显示输出设备的液晶显示器。
背景技术
随着数字媒体时代的来到,很多多媒体电子产品都使用液晶显示器(后文简写为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管脚名和寄存器名如前表所示)<pre listing-type="program-listing">begin process(nreset,ifclk) begin if nreset='0'then --复位 vdr<="00000000"; vdg<="00000000"; vdb<="00000000"; fdata<="00000000"; vclk_trig<='0'; vline_trig<='0'; vframe_trig<='0';   vclk_s<='0';   vline_s<='0';   vframe_s<='0';   stm<="0000";   slwr_i<='1';</pre><pre listing-type="program-listing">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';   stm<="0001";   slwr_i<='1';   if vframe_trig='1'then --写入帧同步数据   vframe_trig<='0';   vdr<="00000001";   vdg<="00001111";   vdb<="00001111";   elsif vline_trig='1'then --写入行同步数据   vline_trig<='0';   vdr<="00000001";   vdg<="11110000";   vdb<="11110000";   else   if vdr_i/="00000001"then --不混淆  vdr<=vdr_i;   else  vdr&lt;=vdr_i(7 downto 1)&amp;amp;'0';--混淆,低位置0   end if;   if vdg_i/="00000001"then  vdg<=vdg_i;   else  vdg<=vdg_i(7 downto 1)&amp;amp;'0';   end if;</pre><pre listing-type="program-listing">  if vdb_i/="00000001"then   vdb<=vdb_i;  else   vdb<=vdb_i(7 downto 1)&amp;amp;'0';  end if;   end if;   else   if stm="0000"then  slwr_i<='1';   else  if(flagb='1')then   slwr_i<='0';  else --上位计算机接口忙   slwr_i<='1';  end if;  if stm="0001"then   fdata<=vdr;   stm<="0010";  elsif stm="0010"then   fdata<=vdg;   stm<="0011";  elsif stm="0011"then   fdata<=vdb;   stm<="0000";  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;</pre>上述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,可如下进行去抖动<pre listing-type="program-listing">   if vclk=vclk_s then   vclk_f<="0000";   else   if vclk_f="0001"then  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;</pre>如上述代码,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日
发明者朱曼平 申请人:朱曼平
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1