CN1285944A - 用于数据平面化的系统和方法 - Google Patents

用于数据平面化的系统和方法 Download PDF

Info

Publication number
CN1285944A
CN1285944A CN98813125A CN98813125A CN1285944A CN 1285944 A CN1285944 A CN 1285944A CN 98813125 A CN98813125 A CN 98813125A CN 98813125 A CN98813125 A CN 98813125A CN 1285944 A CN1285944 A CN 1285944A
Authority
CN
China
Prior art keywords
data
data word
group
input end
bit data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN98813125A
Other languages
English (en)
Other versions
CN1136532C (zh
Inventor
威廉·T·韦瑟福德
W·斯潘塞·沃利第三
周永康
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omnivision Technologies Inc
Original Assignee
AOROLA SYSTEM Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by AOROLA SYSTEM Co filed Critical AOROLA SYSTEM Co
Publication of CN1285944A publication Critical patent/CN1285944A/zh
Application granted granted Critical
Publication of CN1136532C publication Critical patent/CN1136532C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/34Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source
    • G09G3/36Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source using liquid crystals
    • G09G3/3611Control of matrices with row and column drivers
    • G09G3/3648Control of matrices with row and column drivers using an active matrix
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/2007Display of intermediate tones
    • G09G3/2018Display of intermediate tones by time modulation using two or more time intervals

Landscapes

  • Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Communication Control (AREA)
  • Liquid Crystal Display Device Control (AREA)

Abstract

一种用于将n-位显示数据平面化成m-位数据的系统和方法。该系统包括多个输入端、多个输出端、和位深小于m的第一存储组。在一个实施例中,第一存储组是双向移位寄存器,包括用于接收数据移位信号的时钟输入端和用于接收方向控制信号的方向端。在具体的实施例中,双向移位寄存器包括多个触发器和多个多路复用器,两者都排列在由列和行构成的矩阵阵列中。可选地,该系统包括第二存储组,一个数据被移位到一个存储组,而同时另一个数据正在从另一个存储组中移出。

Description

用于数据平面化的系统和方法
                  发明背景
发明领域
一般地说,本发明涉及电子显示驱动器,更具体地说,本发明涉及用于显示数据平面化的改进的系统和方法。
背景技术描述
图1显示了典型液晶显示的单个像素单元100。像素单元100包括液晶层102,包含在透明公用电极104和像素存储电极106之间;存储元件108;和开关晶体管110。存储元件108在节点112上与像素存储电极106相耦接,并且通过开关晶体管110与数据输入线114相耦接。如同公用电极104与公用电压供应端116(例如,地)相耦接一样,存储元件108也与公用电压供应端116相耦接。响应于选择线118上的选择信号,选择线118是与开关晶体管110的控制端相耦接的,存储元件108从数据线114读取数据信号,存储该信号,并将该信号维持(assert)在节点112上,即使在选择信号不再存在后,也是如此。
液晶层102旋转穿过自身的光的偏振方向。旋转的角度依赖于施加在液晶层102两侧的均方根(RMS)电压。利用旋转偏振方向的能力来调节反射光的强度如下。入射光束120由起偏器122变成偏振光。然后,偏振光来穿过液晶层102、由像素电极106反射回去,并再次穿过液晶层102。在这种两次穿过液晶层102过程中,光束的偏振方向旋转了其值取决于正维持在像素存储电极106上的数据信号的角度。然后,光束穿过偏振镜124,这个偏振镜124只让具有特定偏振方向的那一部分光束通过。因此,穿过起偏器124的反射光束的强度取决于在液晶层102中诱发的偏振方向旋转角,这个旋转角又依赖于正维持在像素存储电极106上的数据信号。
存储元件108可以是模拟存储元件(例如,电容性的),或者是数字存储单元(例如,SRAM锁存器)。在数字存储元件的情况下,驱动像素存储电极106的通用方法是通过脉宽调制(PWM)。在PWM中,不同的灰阶层次由多位字(即,二进制数)来表示。多位字被转换成一系列脉冲,其时间平均的均方根(RMS)电压对应于取得所需灰阶值所必要的模拟电压。
例如,在4-位PWM方案中,帧时间(一个灰阶值写入到每个像素中的时间)被划分成15个时间间隔。在每个间隔内,一个信号(高电平,例如,5V,或低电平,例如,0V)维持在像素存储电极106上。因此,有16(0-15)个可能的、不同灰阶值,这取决于在帧时间期间维持在“高”脉冲上的脉冲数。维持0个高脉冲对应于0(RMS0V)的灰阶值,而维持15个高脉冲对应于16(RMS5V)的灰阶值。高度为中间数值的脉冲对应于中间的灰阶层次。
在某一时间间隔内施加的特定信号被称为一个“状态”。例如,在一个时间间隔期间维持的高信号是“开”状态。同样,在一个时间间隔期间维持的低信号被称为“关”状态。
图2显示了与4-位灰阶值(1010)相对应的一列脉冲,在值(1010)中,最高有效位是最靠左的位。将这些脉冲分组成与二进制灰阶值的位相对应。具体地说,第一组B3包括8个间隔(23),并与值(1010)的最高有效位相对应。同样,组B2包括4个间隔(22),对应于次高有效位,组B1包括2个间隔(21),对应于次高有效位,和组B0包括1个间隔(20),对应于最低有效位。这种分组将所需要的脉冲数从15降低到4,二进制灰阶值的每一位对应一个脉冲,每个脉冲的宽度与其相关位的有效位数相对应。因此,对于值(1010)来说,第一脉冲B3(8个间隔宽)是高电平,第二脉冲B2(4个间隔宽)是低电平,第三脉冲B1(2个间隔宽)是高电平,和最后一个脉冲B0(1个间隔宽)是低电平。这列脉冲导致了大约总值(5V)的 2 / 3 (15个间隔中的10个)或大约4.1V的RMS电压。
可以将附加位添加到二进制灰阶值中来提高灰阶的分辨率。例如,如果使用8位,则帧时间被划分成255个间隔,从而提供了256个可能的灰阶值。一般来说,对于(n)位来说,帧时间被划分成(2n-1)个间隔,产生了(2n)个可能的灰阶值。
由于液晶单元易受到由施加在两侧的DC电压引起的离子迁移所致的损坏,上面所述的PWM方案修改成如图3所示的样子。帧时间被分成两半,在前一半期间,PWM数据维持在像素存储电极上,而公用电极则保持低电平。在帧时间的后一半期间,PWM数据的补码维持在像素存储电极上,而公用电极则保持高电平。这将导致净的DC成分为0V,避免了对液晶单元的损坏,而无需改变施加在该单元上的RMS电压,这种技术为本领域的普通技术人员所熟知。
图4显示了电控制的、双折射的液晶单元的响应曲线。垂直轴402表示该单元总亮度(即最大光反射)的百分比,水平轴404表示施加在该单元两侧的RMS电压。如图所示,最小亮度(黑色像素)是在RMS电压为Vtt上达到的。对于某些波长的光来说,小于Vtt的RMS电压导致了不完全黑色的像素,如图4所示。而对于其它波长来说,所有小于Vtt的RMS电压都导致黑色像素。在Vtt与Vsat之间的曲线部分中,百分比亮度随着RMS电压增加而上升,直到到达Vsat上的100%总亮度为止。然而,一旦RMS电压超过Vsat,百分比亮度随着RMS电压增大而下降。
图5显示了关于8-位(256灰阶值)灰阶系统RMS电压与灰阶值之间的关系曲线。关于每个灰阶值(“Gray Value”)的RMS电压是由下列公式给出的,这里,Von是数字“开”的值,通常为Vdd: Vrms = ( 1 / 255 ) ( GrayValue ) ( Von ) 2 (方程1)
灰阶值(x)对应于等于Vtt的RMS电压,回头参阅一下图4,对应于0%亮度。因此,小于值(x)的灰阶值是没有用的,因为对于某些波长的光来说,它们引起更亮的而不是更暗的像素,而对于其它波长来说,这些值产生0%的亮度,因此是多余的。类似地,值(y)对应于等于Vsat的RMS电压,回头参阅一下图4,对应于100%的总亮度。因此,大于值(y)的灰阶值也是没有用的,因为它们引起更暗的而不是更亮的像素。这些无用值所致的结果是并没有获得真正的8-位灰阶的分辨率。
为了避免灰阶失真,所有灰阶值必须限制在液晶响应曲线(图4)Vtt与Vsat之间的有用部分之内。实现这个目标的一种方法是将附加位添加到灰阶码(例如,使用9-位灰阶系统),然后将8-位数值映射到9-位系统与响应曲线的有用部分相对应的值上。然而,一个位的添加使数据界面(interface)的带宽要求增加了100%,因此,是不合乎需要的。所需要的是将所有可用灰阶状态限制在液晶响应曲线的有用部分上的系统和方法。
此外,由于显示数据流通常是一个像素一个像素(每次一个多位灰阶值)地接收的,并且每次一位(对每个像素)地被写入显示器,因此,必须对输出数据重新格式化(平面化)。1993年10月19日授权给Urbanus的美国专利第5,255,100号描述了重新格式化数据的一种方法,此专利包括在这里供参考。Urbanus描述了这样一种系统,借助于这种系统,数据的整个帧存储在随机存储器(RAM)中,然后每次一位地传输到帧存储器。存储器的整个帧必须在RAM可以接收到附加数据之前从RAM输出到帧缓冲器中。因此,Urbanus的系统需要大量的存储器,并且运行缓慢。所需要的是快速、简单和有效使用存储器的平面化显示数据流的系统和方法。
                    发明概述
本发明描述一种新颖的数据平面化器。数据平面化器接收具有第一位数的数据字(n-位数据)和输出具有第二位数的数据字(n-位数据)。该平面化器包括多个接收n-位数据字的数据输入端和多个输出m-位数据字的数据输出端。该平面化器还包括第一存储组(bank),此第一存储组含有与多个数据输入端相耦接的输入端组、与多个数据输出端相耦接的输出端组,和小于重新格式化数据的位宽(m)的位深度。
在一个实施例中,存储组是双向移位寄存器,包括时钟输入端,用于接收数据移位信号;和方向端,用于接收方向控制信号。在一个具体的实施例中,双向移位寄存器包括多个触发器和多个多路复用器,每一个都排列在由行和列构成的矩阵阵列之中。每个触发器都含有与双向移位寄存器的时钟端相耦接的控制端、输入端和输出端。每个多路复用器都含有第一输入端、第二输入端、与双向移位寄存器的方向端相耦接的控制端,和与一个相关触发器的输入端相耦接的输出端。在阵列的第一列中的每个多路复用器都含有与一个相关数据输入端相耦接的第一输入端,和在末行中的每个触发器含有与相关的一个数据输出端相耦接的输出端。另外,其它列的每个多路复用器都含有与处在相邻列中的一个相关触发器的输出端相耦接的第一输入端,和在除了顶行之外其它行中的每个多路复用器都含有与处在相邻行中的一个相关触发器的输出端相耦接的第二输入端。
在一个具体的实施例中,数据平面化器包括第一存储组和第二存储组。在更具体的实施例中,第一和第二存储组的组合容量小于一帧的数据量。
本发明还描述将n-位数据平面化成m-位平面化数据的新颖方法。该方法包括下列步骤:接收第一组(p个)n-位数据字(这里,p<m),将第一组(p个)数据字存储在第一存储组中,并通过将p-位数据字传输到(n个)不同存储位置的每一个的第一部分中,其中p-位数据字包括第一组(p个)n-位数据字的每一个的一位,将第一组(p个)数据字传送到含有(n)个不同存储位置的器件中。该方法还包括下列步骤:接收第二组(p个)n-位数据字,将第二组(p个)数据字存储在第一存储组中,并通过将p-位数据字传送到(n个)不同存储位置的每一个的第二部分中,其中所述p-位数据字包括第二组(p个)n-位数据字的每一个的一位,将第二组(p个)数据字传送到存储器件中。可选的方案是,第二组(p个)n-位数据字存储在第二存储组中,并从第二存储组中传送出来。
在具体的方法中,将一组(p个)数据字存储在存储组中的步骤是通过沿着第一方向、每次(n)位地将(p个)数据字移位到存储组中来进行的,和将该组数据字传送到包括(n个)不同存储位置的器件中的步骤是通过沿着第二方向,每次(p)位地从存储组中移位出(p个)数据字来进行的。
                    附图简述
图1显示典型液晶显示器的单个像素单元;
图2显示4-位脉宽调制数据的一个帧;
图3显示4-位脉宽调制数据的分裂帧;
图4显示关于典型液晶单元亮度与RMS电压的关系曲线;
图5显示灰阶值与RMS电压的关系曲线;
图6显示根据本发明的、包括附加强制打开状态和强制关闭状态的脉宽调制数据的分裂帧;
图7显示通过附加根据本发明的强制开状态和强制关状态进行修改之后,灰阶值与RMS电压的关系曲线;
图8显示根据本发明的显示驱动器;
图9显示通过根据本发明的数据平面化器和帧缓冲器的数据;
图10显示图9所示的数据平面化器的双向移位寄存器;
图11显示图8所示的驱动器的强制状态控制器;
图12显示关于在图8所示的驱动器与uLCD之间传输的数据和某些控制信号的时序图。
                    发明详述
本专利申请与如下待审的美国专利申请有关,这些美国专利申请与本申请一起在同一日期提交并转让给共同受让人,它们的每一个作为整体引用在这里供参考:应用在偏轴投影仪中的偏心透镜组,美国专利号08/970,887,Matthew F.Bone和Donald Griffin Koch;降低显示驱动器电路中峰值电流和带宽要求的系统和方法,美国专利号08/970,665,Raymond Pinkham,W.Spencer Worley,Ⅲ,Edwin Lyle Hudson和John Gray Campbell;利用强制状态提高显示器的灰阶性能的系统和方法,美国专利号08/970,878,W.Spencer Worley,Ⅲ和Raymond Pinkham;和降低显示驱动器电路中带宽和峰值电流要求的内部行定序器,美国专利号08/970,443,Raymond Pinkham,W.Spancer Worley,Ⅲ,Edwin Lyle Hudson,和John Gray Campbell。
本专利申请还与如下待审的美国专利申请有关,此美国专利申请的专利号是08/901,059,标题是“在平板显示器中通过列和行移位取代有缺陷的电路单元,由Raymond Pinkham撰写,1997年7月25日提交,转让给相同受让人,并作为整体引用在这里供参考。
本发明通过将灰阶值限制在液晶响应曲线的有用部分上克服与现有技术相联系的问题,而无需使用附加的数据位。具体地说,本发明描述了将与具体像素相对应的n-位数据字平面化成与一组m个像素相对应的m-位平面化数据字的系统和方法,在如下的描述中,许多具体的细节(例如,灰阶码的位宽和平面化数据的位宽)被提供出来以便提供对本发明的透切理解。但是,本领域的普通技术人员会认识到,避开这些具体的细节,也能实施本发明。在其它方面,省略掉那些众所周知的显示电路和驱动方法的细节,以免不必要地模糊本发明的主要特征。
如图6所示,将附加的强制“开”状态602和附加的强制“关”状态604添加到在帧时间610的前一半608期间的PWM数据606中,生成修改的显示数据流。额外的“开”状态602和“关”状态604对应于帧时间610中的额外时间间隔,它们按照两种不同方法之一来添加。在第一种方法中,缩短PWM数据606的时间间隔以留出空间用于附加的状态,而无需增加帧时间。另一种可选的方法是,可以增加帧时间以留出空间用于新的状态,而无需改变PWM数据的各个时间间隔的长度。
在帧时间的前一半期间,被驱动的液晶单元(未显示出)的公用电极保持在低电平(0V)上。但是,在帧时间610的后一半612内,公用电极则保持在5V上,于是,PWM数据,以及添加的“开”和“关”状态被反向。这种反向对保持施加在被驱动单元上的净DC电压在0V上是必要的,从而避免了该单元的老化。
可以注意到,在图6中,强制打开状态604和强制关闭状态604被相邻地(即,在单块时间间隔内依次地)添加到显示数据606上。这有利地降低了信号必须转换成显示的次数。然而,本领域的普通技术人员将会认识到,强制状态之间可以彼此混合,或者与显示数据相混合,只要所得的RMS电压保持不变即可。
图7显示添加强制状态在灰阶值与RMS电压的关系曲线上反应出来的效果。考虑添加的强制状态,修改的RMS值由下式给出: Vrms = ( ForcedOn + GrayValue ) ( Von ) 2 ( 255 + ForcedOn + ForcedOff ) (方程2)
添加的“开”状态建立起最小的RMS电压底值702,和添加的“关”状态建立起最大的RMS电压顶值704。RMS电压底值702可以通过分别增加或减少附加“开”状态数而上升或下降。类似地,RMS电压顶值704可以通过分别增加或减少附加“关”状态数而下降或上升。选择添加的“开”和“关”状态数使RMS电压底值702等于Vtt,即与0%亮度(图4)相对应的RMS电压,和使RMS电压顶值704等于Vsat,即与100%亮度相对应的RMS电压。
最佳的额外“开”和“关”状态数可以利用如下变量通过数学方法来确定:n=灰阶分辨率的位数;G=灰阶值;Von数字“开”电压;Voff=数字“关”电压;Vtt=液晶最小亮度RMS电压;Vsat=液晶饱和RMS电压;Fon=最佳固定“开”状态数;和Foff=最佳固定“关”状态数。
通常,修改RMS电压(“vrms”)由下式给出: Vrms = ( G + Fon ) ( Von ) 2 ( 2 n - 1 ) + Fon + Foff (方程3)希望:在G=0上,Vrms=Vtt,将这些值代入方程3,得出: Vtt = Fon ( Von ) 2 ( 2 n - 1 ) + Fon + Foff (方程4)同样,希望:在G=2n-1上,Vrms=Vsat,将这值代入方程3,得出: Vtt = Fon ( Von ) 2 ( 2 n - 1 ) + Fon + Foff (方程5)从方程4中解出Foff: Foff = Fon ( Von ) 2 ( Vtt ) 2 - Fon - ( 2 n - 1 ) (方程6)将方程6代入方程5,并解出Fon: Fon = ( 2 n - 1 ) ( Vtt ) 2 ( Vsat ) 2 - ( Vtt ) 2 (方程7)将方程7代入方程6,并解出Foff: Foff = ( 2 n - 1 ) [ ( ( Von ) 2 - ( Vtt ) 2 ) ( ( Vsat ) 2 - ( Vtt ) 2 ) - 1 ] (方程8)
最后,给定n、Vtt、Vsat和Von值,最佳的添加“开”和“关”状态数分别根据方程7和方程8计算出来。
如上所示,通过迭代Fon和Foff直到0的灰度值导致RMS值接近Vtt,和2n-1的灰度值导致RMS值接近Vsat为止,可以经验地确定所需要的强制“开”和强制“关”状态数。在一个具体的系统中,其中,n=8,Vtt=1.5VVsat=3.0V和Vdd=3.3V,迭代过程产生如下结果:
正常PWM状态:    255
固定“开”状态: 86
固定“关”状态: 82
总状态数:       423
状态数增加(%): 66%
请注意,这个数可以不同于计算的最佳强制状态数,仍然可以提供适当的修改LCD数据流。
显然,额外状态的添加所需的开销(66%)明显小于将一个位添加到灰阶码中所需的开销(100%),并大大地小于添加两个附加位所需的开销(200%)。此外,由于强制“开”和“关”状态的电压是已知的,因此,除了接收LCD灰阶数据流之外,还可以将强制状态存在像素存储电极上,从而降低了对系统界面的带宽要求。
图8显示了根据本发明的LCD驱动器800。驱动器800包括输入控制器802、控制选择器804、数据平面化器806、帧缓冲器A808、帧缓冲器B810、锁相环812、和强制状态发生器814。驱动器800通过数据输入总线816接收8-位灰阶显示数据流,并通过输入端818、820和822分别接收水平同步(Hsync)信号、垂直同步信号(Vsync)和像素点时钟信号。在将强制状态插入显示数据流来提高灰阶性能之后,驱动器800通过32-位数据输出总线824将修改的显示数据、以及通过LCD控制总线826将控制信号一起传输到微型LCD828,微型LCD828包括一列类似于图1所示的像素单元那样的液晶像素单元。
输入控制器802利用Hsync信号和Vsync信号来协调从数据输入总线816到数据平面化器806的数据传输和从数据平面化器806、通过32-位数据总线830到帧缓冲器A808和B810的数据传输。响应表示有效数据在数据输入总线816上的Vsync信号和Hsync信号,输入控制器802将信号维持在控制线DIR832和CLK834上,使数据时钟输入(clocked into)到数据平面化器中和从数据平面化器时钟脉冲读出数据,下面将会结合图10作更全面描述。
数据平面化器806通过数据输入总线816以8-位数据字为单位接收灰阶数据,每个8-位(Pm[0-7])与待写入到微型LCD828的特定像素(m)中的灰阶值相对应。数据平面化器806累积对于32个像素的8-位灰阶数据,并将数据重新格式化成32-位数据字,每个32-位字含有该组32个8-位灰阶数据字的每一个的一位。例如,由位P0[0]-P31[0]构成的32-位字包括像素0-31的灰阶值的最低有效位。由于灰阶数据的每位以每次32个象素被写入到微型-LCD828中,因此,这种重新格式化是必要的。下面会结合图9更详细地讨论数据平面化器806完成的数据重新格式化。
帧缓冲器A808和帧缓冲器B810每一个都是32-位宽同步图形随机存取器(SGRAM)。帧缓冲器808和810的每一个都通过32-位数据总线830接收数据,并将数据存储在与特定位有效位数和微型-LCD828的特定像素组相联系的存储位置中。并且,帧缓冲器808和810的每一个具有充分的容量足以存储微型-LCD828中用于每个像素的灰阶数据的8位(即,显示数据的一帧)。例如,由于微型-LCD828具有786,432像素(1024×768),帧缓冲器808和810每一个都存储6,291,456位(一显示屏)的数据,或196,608个32-位字。
从数据总线830到帧缓冲器808和810的数据传输也由与控制选择器804协同的输入控制器802来控制。输入控制器802将帧缓冲器控制信号维持在输入控制总线836上和将帧缓冲器选择信号维持在选择(SEL)线838上。输入控制总线836包括写使能线和指示数据将被写入其中的存储位置的地址线。
控制选择器804包括第一多路复用器840和第二多路复用器842。第一多路复用器840有两组输入端,第一组与输入控制总线836的线路相连接。第二多路复用器842也有两组输入端,第二组与输入控制总线836的线路相连接。第一多路复用器840的输出维持在帧缓冲器A控制总线844上,和第二多路复用器842的输出维持在帧缓冲器B控制总线846上。
第一多路复用器840和第二多路复用器842两者都由输入控制器802维持在选择线838上的SEL信号来控制。响应于维持在选择线838上的第一(例如,高电平)SEL信号,第一多路复用器840将输入控制总线836与帧缓冲器A控制总线844相耦接,从而使输入控制器802将数据从数据总线803装载到帧缓冲器A808。第一SEL信号还使第二多路复用器842将输入控制总线836与帧缓冲器B控制总线846断开,使得在对帧缓冲器A装载的同时,没有数据被装载到帧缓冲器B810中。响应于维持在选择线838上的第二(例如,低电平)SEL信号,第一多路复用器将控制总线836与帧缓冲器A控制总线844断开,并将输入控制总线836与帧缓冲器B控制总线846相耦接,从而使输入控制器802将数据从数据总线830装载到帧缓冲器B810。每次接收到Vsync信号时,输入控制器802就触发SEL信号,使得数据的一显示屏值以交替的顺序被写入每个帧缓冲器808和810中。
强制状态发生器814控制来自帧缓冲器A808和帧缓冲器B810的数据输出,通过数据总线848接收显示数据,有选择地将强制状态插入显示数据流,并通过数据输出总线824将修改的显示数据流输出到微型-LCD828。强制状态发生器814包括强制状态控制器850和多路复用器852。
多路复用器852接收来自数据总线848、来自32-位“强制开”总线854和来自32-位“强制关”总线856的数据。强制开总线854的每条线都保持在与“开”状态相对应的电压(Von)上,强制关总线856的每条线都保持在与“关”状态相对应的电压(Voff)上。在一个实施例中,维持在强制开总线854和强制关总线856上的强制状态数据的来源是系统电压参考端(例如,Vdd和Ground(地))。但是,本领域的普通技术人员应该明白,可以使用其它可替换的强制状态数据的来源,例如寄存器。响应通过2-位控制总线858接收的控制信号,多路复用器852有选择地将数据总线848、强制开总线854或强制关总线856与数据输出总线824相耦接。正如本文所使用的,术语“多路复用器(multiplexer)”理解为包括所有的可选耦接器件,包括,但不限于,共享的总线结构。
强制状态控制器850通过线路860接收Vsync信号,并通过线路862接收来自锁相环812的时钟输入信号。锁相环812在现有技术中是众所周知的,并用于使像素点时钟与内部机器时钟(未示出)保持同步。
强制状态控制器850通过将控制信号维持在输出控制总线864上来控制来自帧缓冲器A808和帧缓冲器B810的数据输出,其中输出控制总线864与第一多路复用器840的第二组输入端相耦接和与第二多路复用器842的第一组输入端相耦接。因此,当第二SEL信号由输入控制器802维持在选择线838上时,第一多路复用器840将输入控制总线836与帧缓冲器A控制总线844断开(decouple)并将输出控制总线864与帧缓冲器A控制总线844相耦接,从而允许强制状态控制器850使帧缓冲器A808将数据维持在数据总线848上。另一方面,当第一SEL信号维持在选择线838上时,第二多路复用器842将输入控制总线836与帧缓冲器B控制总线846断开并将输出控制总线864与帧缓冲器B控制总线846相耦接,从而允许强制状态控制器850使帧缓冲器B810将数据维持在数据总线848上。因此,在对于一帧的像素数据由输入控制器802装载到帧缓冲器A808的同时,对于前一帧的像素数据正在通过强制状态控制器850从帧缓冲器B810中输出,反之亦然。
强制状态发生器814将强制状态(如图6所示)插入显示数据流中,其过程如下,首先,线路860上的Vsync信号表示帧的开始。强制状态控制器850将第一控制信号维持在2-位控制总线858上,使多路复用器852将强制开(force-on)总线854与数据输出总线824相耦接,从而将强制“开”状态维持在数据输出总线824上。然后,强制状态控制器850将控制信号维持在LCD控制总线826上,使强制开状态从数据输出总线824装载到微型-LCD828上。在预定数量的强制开状态装载到微型-LCD828上之后,强制状态控制器850将第二控制信号维持在2-位控制总线858上,使多路复用器852将数据总线848与数据输出总线824相耦接。接着,强制状态控制器850将帧缓冲器控制信号维持在输出控制总线864上,和将LCD控制信号维持在LCD控制总线826上,使数据从帧缓冲器A808或帧缓冲器B810(取决于当前SEL信号)通过多路复用器852传输到微型-LCD828。数据继续从帧缓冲器A808或B810传输出来,直到显示数据的整帧全部传输完为止。然后,强制状态控制器850将第三控制信号维持在2-位数据总线858上,使多路复用器852将强制关总线856与数据输出总线824相耦接,并将LCD控制信号维持在LCD控制总线826上,使预定数量的强制关状态传输到微型-LCD828,从而完成了帧610的前一半608(图6)。
帧610的后一半612(图6)按照上面所述大致相同的方式被写入到微型-LCD828中,除了强制开状态、数据、强制关状态、和公用电极被反向之外。反向是在强制状态控制器850控制之下发生在微型-LCD828之内的,其过程如下。LCD控制总线826包括地址线、用于传输指令(例如读、写、等)的操作码线、数据反向线、公用电极信号线和时钟信号线。在帧610的后一半612的开始,强制状态控制器850将正维持在公用电极信号线上的信号从低电平转换到高电平,并将控制信号维持在反向线上,使微型-LCD828反向所有的输入数据。然后,数据和强制状态在如上所述的强制状态控制器850的控制下从驱动器800中传输出来。
另一种可替换的方法是,强制开状态、数据、和强制关状态的反向可以在驱动器800内实现。例如,图8a显示了控制器800的另一种实施例,包括插在数据总线848与多路复用器852的数据输入端872之间的选择性反向器870,以有选择地反向数据流。反向线874从LCD控制总线826改向到选择性反向器870。响应于反向线874上的第一信号,选择性反向器870将通过数据总线848接收的数据维持在多路复用器852的数据输入端872上。响应于反向线874上的反向信号,选择性反向器870反向通过数据总线848接收的数据,并将反向数据维持在多路复用器852的数据输入端872上。在此实施例中,强制状态控制器850通过控制如上所述的多路复用器852来控制强制开和强制关状态的反向,但只是临时地颠倒总线854和总线856与总线824的耦接。图8b显示了驱动器800的另一个替换实施例,其中选择492反向器870被耦接成接收并有选择地反向包括强制状态的修改数据流。
图9显示流过数据平面化器806并流入帧缓冲器A808的数据的例子。数据平面化器806包括第一双向移位寄存器902和第二双向移位寄存器904,每一个都用作临时存储组。每个寄存器902和904都是16位深(16列)和8位宽(8行)。位深对应于每个寄存器有能力存储的输入数据字的数量,位宽对应于每个输入数据字中的位数,在这个具体实施例中,它是每个像素的位数。
如前所述,数据通过8-位数据输入总线816进入移位寄存器902和904,并在寄存器902和904中得到组织,其过程如下。首先,对于像素0的灰阶数据的8位(P0[0-7])通过数据输入总线816进入寄存器902,并存储在寄存器902最右边的列中。下一个8-位P1[0-7]进入并存储在位P0[0-7]左边的那一列中。按照这种方式,继续装载数据直到位P15[0-7]被装载到寄存器902最左边的列中。然后,按照相同的方式,对于像素P16-P31的8-位灰阶数据被装载到寄存器904中,使位P16[0-7]装载在最右边的列中,和位P31[0-7]装载在最左边的列中。
寄存器902和904如此装载的每一行都包含一个16-位字,包括来自16个连续像素的、具有相同有效位数(Significance)的一位。例如,寄存器904的底行包括来自像素P16-P31的灰阶数据的最低有效位。进一步,寄存器902和904相同号码的行组合在一起形成32-位字,每个字包括来自32个连续像素的、具有相同有效位数的一位。例如,寄存器902和904的顶行包括来自像素P0-P31的灰阶数据的最高有效位。这些32-位字通过数据总线830写入到帧缓冲器A808和B810中,存储在那里以便随后传输到微型-LCD828。
帧缓冲器A808和B810每次能够读取数据总线830的一半数据。另外,含有与方向控制线832相耦接的输入端的反向器907为寄存器902提供反向控制信号。这使得寄存器904正在被装载的同时平面化器806将寄存器902的内容写入帧缓冲器A808或帧缓冲器B810中。例如,正当数据通过数据输入总线816被时钟输入(clockedinto)到寄存器904中时,数据通过数据总线830的前一半906从寄存器902时钟输出(clocked out)。同样地,当数据通过数据输入总线816被时钟输入到寄存器902中时,数据通过数据总线830的后一半908从寄存器904时钟输出。
因此,一帧数据被数据平面化器806重新格式化,并存储在帧缓冲器A808或B810中,其过程如下,帧缓冲器A808和B810中的每个存储位置被划分成前一半910和后一半912。关于像素P0-P15的灰阶值被时钟输入到寄存器902,如上所述。然后,随着下一块对于像素P16-P31的数据被时钟输入到寄存器904,对于像素P0-P15的数据被时钟输入到第一存储块914(每一块包含8个32-位存储位置)的前一半910。接下来,随着用于像素P32-P47的数据被时钟输入到寄存器902,对于像素P16-P31的数据被时钟输入到第一存储块914的后一半912。然后,随着对于像素P48-P63的数据被时钟输入到寄存器904,对于像素P32-P47的数据被时钟输入到第二存储块916的前一半910。这个过程一直继续下去直到最后的像素(P786,416-P786,431)的数据从寄存器904时钟输入到最后存储块918的后一半912。
由于寄存器902和904能够平面化小于32位的像素组的数据,数据平面化器806在数据可以以其平面化的形式输出之前无需接收数据的整个帧。另外,寄存器902和904比现有技术中使用的RAM更小,更便宜。并且,本领域的普通技术人员会认识到,可以使用附加的双向移位寄存器。例如,四个寄存器,其中每一个都是8-位深,可以用来将8位写入每个存储位置的四个不同部分的每一部分中,从而将32-位字写入每个存储位置。
图10更详细地显示第一双向移位寄存器902。第二双向移位寄存器基本上是相同的。寄存器902包括128个以16列(0-15)×8行(0-7)矩阵阵列的形式排列的D-型触发器1002,和也以16列×8行矩阵阵列的形式排列的相关多路复用器1004阵列。为了便于清楚地说明,符号(r,c)表示给定器件的行和列位置。例如,多路复用器1004(6,14)表示处在行6和列14位置上的多路复用器1004。图10中标示的行号和列号分别对应于数据输入总线816的位号和数据总线830的前一半906的位号。
所有触发器1002(r,c)都通过CLK线834接收来自输入控制器802(图8)的时钟信号,所有多路复用器1004(r,c)都通过DIR线832接收来自输入控制器802的控制信号。每个触发器1002(r,c)的输入端(D)与位于同一行同一列上的相关多路复用器1004(r,c)的输出端相耦接。
每个多路复用器1004(r,c)都有第一输入端1006和第二输入端1008,根据维持在DIR线832上的控制信号,有选择地将它们与相关触发器1002(r,c)的输入端(D)相耦接。多路复用器1004(r,15)(列15)的第一输入端1006与数据输入总线816的相关位线相耦接。在其余的列(C<15)中,多路复用器1004(r,c)的第一输入端1006与相关触发器1002(r,c+1)(左邻)的非反向输出(Q)相耦接。多路复用器1004(7,c)(行7)的第二输入端1008没有使用。在其余的行(r<7)中,多路复用器1004(r,c)的第二输入端1008与相关触发器1002(r+1,c)(上邻)的非反向输出端(Q)相耦接。最后,触发器1002(0,c)(行0)的非反向输出端(Q)与数据总线830的后一半906的相应位线相耦接。
双向移位寄存器902工作如下。当输入控制器802将第一信号维持在DIR控制线832上时,所有多路复用器1004(r,c)将它们的第一输入端1006与触发器1002(r,c)的输入端(D)相耦接。然后,当通过CLK线834接收到第一时钟信号时,触发器1002(r,15)将出现在数据输入总线816上的8-位数据字锁存在它们的非反向输出端(Q)上。当接收到下一个时钟信号时,由触发器1002(r,15)存储的第一8-位数据字被移位到触发器1002(r,14)的非反向输出端(Q),触发器1002(r,15)将出现在数据输入总线816上的下一个8-位数据字锁存在它们的非反向输出端(Q)上。一旦接收到每一个后随的时钟信号,就会接收到新的数据,并将前一次接收到的数据往右移动。这个过程一直持续下去直到寄存器902已经装载了16个8-位数据字(触发器的每一列上都有一个)。
输入控制器802通过将第二信号维持在DIR线832上从寄存器902中移出数据。响应于DIR线832上的第二信号,每个多路复用器将自身的第二输入端与其输出端相耦接,从而改变移位方向。在接收到下一个时钟信号之前,触发器1002(0,c)一直将16个存储的8-位字的每一个的位0维持在总线906的位线0-15上。当接收到下一个时钟信号时,存储在每个触发器1002(r,c)的非反向输出端(Q)上的位被锁存到触发器1002(r-1,c)(下邻)的非反向输出端上,从而将16个存储的8-位字的每一个的位1维持在总线906的位线0-15上。随着每个时钟信号被接收到,这个过程一直持续下去,直到所有16个存储字的每一个的8位(0-7)都已经依次维持在总线906上为止。在存储器904被装载之后(装载寄存器904要比卸载寄存器902和904花更长时间,即16个循环比8个循环),输入控制器802将第一信号重新维持在DIR线832上,以便使寄存器902可以被重新装载。
图11更详细地显示强制状态控制器850,包括存储器1102、处理单元1104、预换算器(prescale)1106、和传送状态机1108。存储器1102是程序存储器件,它存储由处理单元1104存取和执行的数据和指令。预换算器1106通过线路862接收点时钟信号、生成更低频率的定时信号(例如,为点时钟频率的1/2),并通过线路1110将定时信号传送到处理单元1104。较低频率的定时信号使处理单元1104能够使用更小规模的部件,例如,更小的计数器。
处理单元1104通过传送请求线1112、传送选择总线1114、强制开关1116和强制关线1118控制传送状态机1108。响应于从处理单元1104接收的信号,传送状态机1108将控制信号维持在LCD控制总线826(图8)、2-位控制总线858和输出控制总线864上,其工作如下。
响应于传送请求线1112上的信号,传送状态机1108将控制信号维持在2-位控制总线858上,使多路复用器852通过数据总线848将数据输出总线824与帧缓冲器A808和B810相耦接。传送选择线1114是一条多位线,用于传输将从帧缓冲器A808或帧缓冲器B810传送出来的存储块地址。传送状态机1108利用该块地址来初始化维持在输出控制总线864上的存储器地址,然后,在将写信号维持在LCD控制总线826上的同时依次递增存储器地址。
响应于处理单元1104将信号维持在强制开线1116上,传送状态机1108将信号维持在2-位控制总线858上,使多路复用器852将强制开总线854与数据输出总线824相耦接。然后,传送状态机1108将写信号维持在LCD控制总线826上,从而使强制开状态传送到微型-LCD 828。类似地,响应于处理单元1104将信号维持在强制关线1118上,传送状态机1108将信号维持在2-位控制总线858上,使数据选择器852将强制关总线856与数据输出总线824相耦接,并将写信号维持在LCD控制总线826上,使强制关状态传送到微型-LCD828。
在一个实施例中,强制状态控制器850是用加州Santa Clara的Altera公司(Alter Coporation,Santa Clara,California)制造的,零件号为EPF10K50 BC356-3的可编程逻辑器件来实现的。在本公开的最后附有有关对这种器件进行编程的verilog程序代码。
图12显示了时序图1200,它详细说明了在一帧时间1201的间隔内,Vsync信号1202、公用微型-LCD电极信号1204、数据反向信号1206、像素数据1208、第一像素值1210、最后像素值1212、施加在第一像素1214上的电压降的幅度和方向、与施加在最后像素1216上的电压降的幅度和方向之间的关系。时序图1200对说明实施驱动器800时必须加以考虑的实际条件是有用的。
回忆一下对图3的讨论,施加在每个液晶单元上的净dc电压必须一直为零,以免离子迁移对该单元的损害。因此,公用信号1204和像素数据1208在帧1201的前一半1218的间隔内是反向的,而在帧1201的后一半1220的间隔内是不反向的。只要施加在每个单元上的净dc电压为零,公用信号1204和数据1206在帧1201的前一半1218或后一半1220的间隔内是否反向是无关紧要的。
由于在单个公用电极信号可以在帧1201的中点1222上非常迅速地得以转换的同时,将LCD数据的第一位写入微型-LCD显示器828中的像素的每一个需要花费一些有限的时间(x),如微型-LCD数据曲线1208的斜边所示,所以,实际上会受到一些限制。因此,希望的是在强制开状态或强制关状态正维持在每个像素上的时候切换公用电极信号。这导致了信号被非常迅速、同时地转换到所有像素上。具体地说,公用电极一切换,所有的强制开状态就变成强制关状态,所有的强制关状态就变成强制开状态。
将数据写入所有像素所需的时间(X)也实现强制状态的写。将第一像素值曲线1210与最后像素值曲线1212相比较,明显看出,在1224上将第一强制开状态写入第一像素与在1226上将第一强制开状态写入最后像素之间存在着时间延迟(X)。一般来说,这个延迟是偏移(offset),因为在在1228点上将数据写入第一像素与在1230上将数据写入最后像素之间存在着时间延迟(X)。但是,必须有适当数量的强制状态来调节这个偏移。尤其是,如果最小强制开时间和最小强制关时间等于2X就足够了,这里,如上所述,X是每次写入每个像素所需要的时间。
某些时序关系对保持显示器的等亮度和保持无偏压(净dc电压=0)条件也是必要的。如下的时序关系是充分的,并涉及在电压降幅度/方向曲线1214和1216中标示的电压降。首先,为了使第一像素无偏压,电压降A和B必须与电压降C大小相等方向相反,而施加电压降A和B的时间间隔之和必须等于施加电压降C的时间间隔。同样地,电压降D和E必须与电压降F大小相等方向相反,而施加电压降D和E的时间间隔之和必须等于施加电压降F的时间间隔。通过定义,像素数据(Pixel Data)与其补偿像素数据(! Pixel Data)大小相等方向相反。接下来,为了保持亮度相等(RMS电压偏移),电压降A和B之和必须与电压降D和E之和大小和方向相同,电压降c必须与电压降F大小和方向相同。最后,帧1201的前一半1218应该与帧1201的后一半1220在时间间隔上彼此相等。本领域的普通技术人员应该明白,数据和强制状态的顺序、帧的分割和公用电极的转换可以发生变化,而不偏离本发明的范围。但是,必须保持基本的无偏压和RMS电压偏移条件。上述的时序图1200只显示了实现这个目的的许多种可能方式的一种。
到此为止,对本发明具体实施例的描述已经完成。许多所描述的特征可以被替换、改变或省去,而不偏离本发明的范围。例如,通过使用对每种颜色来说公开的驱动器和显示器,或时间多路复用用于多于一种颜色的单个驱动器和显示器,本发明可以用于多色系统中。另外,本发明还可以通过使用各种各样的脉冲调制方法而得以应用,这些脉冲调制方法包括,但不限于,脉冲幅度调制、脉冲宽度调制、脉冲位置调制和脉冲代码调制。并且,数据平面化器806还可以包括附加的、更小的双向移位寄存器,能够使数据以甚至更小的步长被重新格式化。
VERILOG CODE
 /fileindata.v
∥target device Altera 10Kx0
∥Copyright 1997 sVISION Inc.
∥Revision history
∥6/10/97 in progress
module format (reset_l,clk,pClk,red,green,blue,hSync,vSync,dEn,
vAddr,vData,ras_l,cas_l,dsf,we_l,sc,dtoe,se_l,overlay,qsf,
redOut,greenOut,blueOut,vSyncOut,valid,uAddr,uData,uWr_l,uRd_l,
memCS_l,ioCS_l,ale,ready);

				
				<dp n="d18"/>
∥模块I/O定义
input          clk;     ∥CPU时钟40MHz
∥来自gmZ1输入
input          reset_l;
input         pClk;    ∥像素时钟
input[7:0]    red;     ∥来自gmZ1的红色数据
input[7:0]    green;   ∥来自gmZ1的绿色数据
input[7:0]    blue;    ∥来自gmZ1的蓝色数据
input         hSync;   ∥来自gmZ1的水平同步
input         vSync;   ∥来自gmZ1的垂直同步
input         dEn;     ∥来自gmZ1的数据使能
∥VRAM信号
output[8:0]   vAddr;   ∥VRAM地址
inout[15:0]   vData;   ∥RAM数据
output        ras_l;   ∥RAS
output[1:0]   cas_l;   ∥CAS(每个存储组一个)
output        dsf;     ∥DSF
output[1:0]   dtoe;    ∥DT/OE
output[1:0]   we_l;    ∥写使能(高和低字节)
output[1:0]   sc;      ∥串行时钟(每个存储组一个)
output[1:0]   se_l;    ∥串行端口输出使能
input[15:0]   overlay; ∥串行数据(用于覆盖平面)
input[1:0]    qsf;     ∥串行端口状态
∥微处理器信号
inout[7∶0]    uData;   ∥uP数据和地址总线
input          uWr_l;   ∥uP写选通
				
				<dp n="d19"/>
input         uRd_l;    ∥uP写选通
input[7:0]    uAddr;    ∥uP地址线[15:8]
input         ioCS_l;   ∥关于IO循环的CS
input         memCS_l;  ∥关于存储器(VRAM)存取的CS
input         ale;      ∥地址锁存选通
output        ready;    ∥关于uP的循环结束
∥像素输出
output[7:0]  redOut;   ∥红色像素输出
output[7:0]  greenOut; ∥绿色像素输出
output[7:0]  blueOut;  ∥蓝色像素输出
output        vSyncOut;
output        valid;
∥寄存器定义
reg[7:0]     redAddr;
reg[7:0]     greenAddr;
reg[7:0]     blueAddr;
wire[7:0]    redLUT;
wire[7:0]    blueLUT;
wire[7:0]    greenLUT;
reg[7:0]     redLUTout;
reg[7:0]     blueLUTout;
reg[7:0]     greenLUTout;
reg[7:0]     redOut;
reg[7:0]     greenOut;
				
				<dp n="d20"/>
reg [7:0]    blueOut;
reg [7:0]    redIn;
reg [7:0]    greenIn;
reg [7:0]    blueIn;
reg [7:0]    redD1;
reg [7:0]    greenD1;
reg [7:0]    blueD1;
reg [7:0]    redD0;
reg [7:0]    greenD0;
reg [7:0]    blueD0;
reg [7:0]    redD01;
reg [7:0]    redD02;
reg [7:0]    redD03;
reg [7:0]    redD04;
reg [7:0]    redD05;
reg [7:0]    redD06;
reg [7:0]    greenD01;
reg [7:0]    greenD02;
reg [7:0]    greenD03;
reg [7:0]    greenD04;
reg [7:0]    greenD05;
reg [7:0]    reenD06;
reg [7:0]    blueD01;
reg [7:0]    blueD02;
reg [7:0]    blueD03;
reg [7:0]    blueD04;
reg [7:0]    blueD05;
reg [7:0]    blueD06;
reg [7:0]    redOverlay;

				
				<dp n="d21"/>
reg [7:0]      greenOverlay;
reg [7:0]      blueOverlay;
reg            vSyncIn;
reg            vSyncInD1;
reg            hSyncIn;
reg            hSyncInD1;
reg            vSyncOut;
reg            vSync1;
reg            hSync1;
reg            dataValid;
reg            qsfD1;
reg            qsfD2;
reg            qsfD3;
reg            sClk;
reg            invert;
reg            useOverlay;
reg            enOverlay;
reg            wrRedLUT;
reg            wrGreenLUT;
reg            wrBlueLUT;
reg [15:0]     overlayIn;
reg [7:0]      olData;
reg            wrOverlay;
reg [7:0]     addrReg;
∥SW
wire[7:0]     uDataIn=uData;
reg [7:0]     uDataOut;
				
				<dp n="d22"/>
reg           weRed;
reg           weGreen;
reg          weBlue;
reg [1:0]    control;
reg [1:0]    wrMode;
reg [4:0]    overlayCtl;
reg [3:0]    outputCtl;
reg [3:0]    memPage;
reg [6:0]    blankLine;
reg [3:0]    outputCntl;
reg [7:0]    testRed;
reg [7:0]    testGreen;
reg [7:0]    testBlue;
reg [7:0]    readReg;
reg [7:0]    readLUT;
reg [7:0]    readOvly;
reg [11:0]   hCount;
reg [10:0]   vCount;
reg           hSyncInt;
reg           vSyncInt;
reg           hValid;
reg           vValid;
reg           hSyncReal;
reg           vSyncReal,validReal;
reg           qsfMask;
∥这些值都寄存在vram模型中 ∥寄存memDone;
∥寄存cycleType;          ∥0是uP存取1是Xfer存取
reg[8:0]xferAddr;
				
				<dp n="d23"/>
reg         readyOut;
wire        endCycle;
reg         wrIOReq,rdIOReq,wrMemReq,rdMemReq;
reg         ioReq,ioReqD1,ioReqD2,ioReqD3,ioReqX1,ioReqX2,ioReqX3;
reg         memReq,memReqX1;
reg         redLUTReq,greenLUTReq,blueLUTReq;
reg         redOvlyReq,greenOvlyReq,blueOvlyReq;
reg         readReqLUT,readReqOvly;
reg [7:0]   redDx;
reg [7:0]   greenDx;
reg [7:0]   blueDx;
reg         colorDone,colorReq;
reg         vSyncMemD1,vSyncMemD2,vSyncMemD3;
reg         sClkL,sClkH,useLowVram,sClkD1,sClkD2,sClkInt;
reg [7:0]  olDataD1;
reg [7:0]  olDataD2;
reg [7:0]  olDataD3;
reg [7:0]  olRedAddr,olGreenAddr,olBlueAddr;
reg         useOverlayD1,useOverlayD2,useOverlayD3;
reg         splitReq,fullReq;
reg         weOverRed,weOverGreen,weOverBlue;
reg [1:0]   sc;
reg         uPcolorReq,uPcbrReq,cbrReqX1,cbrReq,colorReqX1;
reg         blockReq,blockReqX1,uPblockReq;
reg [6:0]  validDelay;
reg         olInv;
reg         valid,blankData;
reg         armStartBlank,waitForLast,armLastBlank,goBlank,endBlank;
reg         freezeD1,freezeD2,freezeOut;
				
				<dp n="d24"/>
outputCtl<=4′b1110;
blankLine<=7′b0;
end∥if
else if(!ioCS_l)begin
∥SW
if(uAddr[2:0]=3′b111)begin
case(addrReg[3:0])
4′h1:control<=#4uData[1:0];
4′h2:memPage<=#4uData[3:0];
4′h3:wrMode<=#4uData[1:0];
4′h4:blankLine<=#4uData[6:0];
4′h5:overlayCtl<=#4uData[4:0];
4′h6:outputCtl<=#4uData[3:0];
4′h7:testRed<=#4uData;
4′h8:testGreen<=#4uData;
4′h9:testBlue<=#4uData;
endcase
end∥if
end∥else
end∥always
∥对于覆盖VRAM和LUT Ready低电平
always@(negedge uRd_l or negedge uWr_l or posedge endCycle)begin
if(endCycle)
readyOut<=1′b1;
else
if(!memCS_l‖(!ioCS_l&amp;&amp;(uAddr[2:0]!= 3′b111)))
readyOut<=1′b0;
end∥always
∥结束循环
				
				<dp n="d25"/>
∥SW
assign endCycle=clrMemReq‖clrIOReq;
∥生成请求
always@(negedge uWr_l or posedge clrIOReq)begin
if(clrIOReq)begin
wrIOReq<=#41′b0;
end∥if
else begin
if(!ioCS_l)
wrIOReq<=(uAddr[2:0]!=3′b111);
end∥else
end∥always
always@(negedge uRd_l or posedge clrIOReq)begin
if(clrIOReq)begin
rdIOReq<=#41′b0;
end∥if
else begin
if(!ioCS_l)
rdIOReq<=(uAddr[2:0]!=3′b000 &amp;&amp; uAddr[2:0]!=
3′b111);
end∥else
end∥always
∥生成VRAM req
always@(posedge clrMemReq or negedge uWr_l)begin
if(clrMemReq)
wrMemReq<=#41′b0;
∥否则加上SW
				
				<dp n="d26"/>
∥线SW
wire          vramRdReq;    ∥流水线请求和uRd_1
wire          vramWrReq;    ∥流水线请求和uWr_1
wire[7:0]    memRdData;     ∥来自vramsm的输出
∥sw
wire [7:0]   overRed;
wire [7:0]   overGreen;
wire [7:0]   overBlue;
∥实代码开始
define CHIP_ID0
∥SW7-22
assign uData=(!uRd_l &amp;&amp; (!ioCS_l‖!memCS_l))?uDataOut:8′bz;
assign ready=(!readyOut)?1′b0:1′bz;

∥
∥uP界面
∥
always@(negedge ale) begin
addrReg[7:0]<=#4uData;
end∥always
always@(posedge uWr_l or negedge reset_l)begin
if (!reset_l)begin
control<=2′b0;
wrMode<=2′b11;
overlayCtl<=5′b0;

				
				<dp n="d27"/>
elseif(!memCS_l)
wrMemReq<=#41′b1;
end∥always
always@(posedge clrMemReq or negedge uRd_l)begin
if(clrMemReq)
rdMemReq<=#41'b0;
∥否则加上SW
else if(!memCS_l)
rdMemReq<=#41'b1;
end∥always
∥uPcolor
always@(posedge clrMemrReq or negedge uWr_l)begin
if(clrMemReq)
uPcolorReq<=#41'b0;
else if(!ioCS_l &amp;&amp; (uAddr[2:0]==3'b111)&amp;&amp;(addReg[3:0]
==4′ha))
uPcolorReq<=#41'b1;
end∥always
∥up CBR
always@(posedge clrMemReq or negedge uWr_l)begin
if(clrMemReq)
uPcbrReq<=#41′b0;
else if(!ioCS_l&amp;&amp;(uAddr[2:0]=3'b111)&amp;&amp;(addrReg[3:0]
=4′hb))
uPcbrReq<=#41'b1;
end∥always
∥up Block Req
always@(posedge clrMemReq or negedge uWr_l)begin
				
				<dp n="d28"/>
if(clrMemReq)
uPblockReq<=#41′b0;
else if(!ioCS_l &amp;&amp;(uAddr[2:0]=3'b111)&amp;&amp;(addrReg[3:0]
==4′hc))
uPblockReq<=#41'b1;
end∥always
∥将名字指定到io寄存器
wire sourceExt=control[0];
∥wire clrVram=control[1];∥control 1 will be unused
wire[2:0]overlaySel=overlayCtl[2:0];
wire testData=overlayCtl[3];
wire invData=overlayCtl[4];
wire freeze=outputCtl[0];
wire enRed=outputCtl[1];
wire enBlue=outputCtl[2];
wire enGreen=outputCtl[3];
∥使freeze与pClk和vSync同步
always@(posedge pClk)begin
freezeD1<=#4freeze;
freezeD2<=#4freezeD1;
end∥always
always@(posedge pClk)begin
if(vSyncReal)
freezeOut<=#4freezeD2;
end∥always
				
				<dp n="d29"/>
∥读数据
always@(addrReg or control or memPage or wrMode or blankLine or
overlayCtl or outputCtl or testRed or testGreen or testBlue or
uPcolorReq or uPcbrReq or uPblockReq)begin
case(addrReg[3:0])
4′h0:readReg<=#4`CHIP_ID;
4'h1:readReg<=#4{6′b0,control};
4'h2:readReg<=#4{4′b0,memPage};
4′h3:readReg<=#4{6′b0,wrMode};
4′b4:readReg<=#4{1′b0,blankLine};
4′h5:readReg<=#4{3′b0,overlayCtl};
4′h6:readReg<=#4{4′b0,outputCtl};
4′h7:readReg<=#4testRed;
4′h8:readReg<=#4testGreen;
4′h9:readReg<=#4testBlue;
∥SW
4′ha:readReg<=#4{7′b0,uPcolorReq};
4′hb:readReg<=#4{7′b0,uPcbrReq};
4′hc:readReg<=#4{7′b0,uPblockReq};
endcase
end∥always
always@(uAddr or readLUT or readOvly or readReg or memCS_l or
memRdData)begin
if(!memCS_l)
uDataOut<=#4memRdData;
else
case(uAddr[2:0])    ∥synopsys parallel_case full_case
3′b000:uDataOut<=#48′b0;
3′b001:uDataOut<=#4readLUT;
3′b010:uDataOut<=#4readLUT;
				
				<dp n="d30"/>
3'b011:uDataOut<=#4readLUT;
3'b100:uDataOut<=#4readOvly;
3'b101:uDataOut<=#4readOvly;
3'b110:uDataOut<=#4readOvly;
3'b111:uDataOut<=#4readReg;
endcase
end∥always
∥使请求与适当的时钟同步
∥VRAM
always@(posedge clk or posedge clrMemReq)begin
if(clrMemReq)begin
memReqX1<=#41′b0;
memReq<=#41′b0;
cbrReqX1<=#41′b0;
cbrReq<=#41′b0;
colorReqX1<=#41′b0;
colorReq<=#41′b0;
blockReq<=#41′b0;
blockReqX1<=#41′b0;
end∥if
else begin
memReqX1<=#4wrMemReq‖rdMemReq;
memReq<=#4memReqX1;
cbrReqX1<=#4uPcbrReq;
cbrReq<=#4cbrReqX1;
colorReqX1<=#4uPcolorReq;
colorReq<=#4colorReqX1;
blockReq<=#4blockReqX1;
blockReqX1<=#4uPblockReq;
				
				<dp n="d31"/>
end∥else
end∥always
∥LUT和OVERLAY
always@(posedge pClk)begin
ioReqX1<=#4wrIOReq‖rdIOReq;
ioReqX2<=#4ioReqX1;
ioReqX3<=#4ioReqX2;
end∥always
∥reqs的上升沿将生成存取选通和清除请求
always@(posedge pClk)begin
ioReq<=#4!ioReqX3 &amp;&amp; ioReqX2;
redLUTReq<=#4ioReq &amp;&amp;(uAddr==3'h1);
greenLUTReq<=#4ioReq &amp;&amp;(uAddr==3′h2);
blueLUTReq<=#4ioReq &amp;&amp;(uAddr==3'h3);
redOvlyReq<=#4ioReq &amp;&amp;(uAddr==3′h4);
greenOvlyReq<=#4ioReq &amp;&amp;(uAddr=3'h5);
blueOvlyReq<=#4ioReq &amp;&amp;(uAddr==3′h6);
ioReqD1<=#4ioReq;    ∥delay strobe to capture read data
ioReqD2<=#4ioReqD1;  ∥delav eqivalent to we strobe
ioReqD3<=#4ioReqD2;  ∥is this one needed
readReqLUT<=#4ioReqD3&amp;&amp;!uAddr[2];
readReqOvly<=#4ioReqD2 &amp;&amp; uAddr[2];
end∥always
wire clrIOReq=!reset_1‖(!uRd_l&amp;&amp;(readReqLUT‖(ioReqD2&amp;&amp;
uAddr[2])))
‖(!uWr_l&amp;&amp;ioReqD2);
wire clrMemReq=!reset_l‖(memDone &amp;&amp;!cycleType);
				
				<dp n="d32"/>
∥内部定时生成
∥这将生成带有58.057Mhz像素时钟的70Hz刷新
∥建立用于加空白行的控制
wire doBlank=blankLine!=7′b0;
∥注意:这可能很沉闷,可以使其简化…
always@(posedge pClk)begin
if(!doBlank)
armStartBlank<=1′b0;
else begin
if(vSyncl)
armStartBlank<=#41'b1;
if(startBlank)
armStartBlank<=#41′b0;
end∥else
end∥always
wire startBlank=armStartBlank &amp;&amp; hSyncl‖waitForLast &amp;&amp; hSyncl;
always@(posedge pClk)begin
if(!vSyncl‖!doBlank)
armLastBlank<=#41'b0;
if(dataValid &amp;&amp; doBlank)
armLastBlank<=#41'b1;
if(startBlank)
arnLastBlank<=#41′b0;
end∥always
				
				<dp n="d33"/>
always@(posedge pClk)begin
if(!armLastBlank)
waitForLast<=#41'b0;
if(armLastBlank &amp;&amp; hSyncl)
waitForLast<=#41'b1;
if(dataValid)
waitForLast<=#41'b0;
end∥always
always@(posedge pClk)begin
if(!doBlank)
goBlank<=#41′b0;
if(startBlank)
goBlank<=#41'bl;
if(endBlank)
goBlank<=#41′b0;
end∥always
∥水平计数器  注意:==比较可能不满足定时
always@(posedge pClk or negedge reset_l)begin
if(!reset_l)
hCount<=#411′b0;
else if(doBlank &amp;&amp;!goBlank)
hCount<=#411′b0;
if(!sourceExt‖goBlank)begin
if(hCount=11′h403)
hCount<=#411'b0;
else hCount<=hCount+1'b1;
end∥else if
end∥always
				
				<dp n="d34"/>
∥垂直计数器
always@(posedge pClk or negedge reset_l)begin
if(!reset_l)
vCount<=10'h000;
else if(doBlank &amp;&amp;!goBlank)
vCount<=10'h000;
if((!sourceExt‖doBlank)&amp; hCount=11'h403)begin
if(vCount<=10′h325)
vCount<=10′h000;
else vCount=vCount+1'b1;
end∥else
end∥always
always@(posedge pClk)
endBlank<=#4vCount[6:0]=blankLine &amp;&amp; hCount=
11′h403;
∥vSync生成
always@(posedge pClk)begin
hSyncInt<=#4hCount==11'h403;
vSyncInt<=#4hSyncInt &amp;&amp; vCotunt==10'h325;
end∥always
∥valid生成
always@(posedge pClk or negedge reset_l)begin
if(!reset_l)
vValid<=1'b0;
else begin
if(hSyncInt &amp;&amp; vCount==11′h002)
				
				<dp n="d35"/>
vValid<=1'b1;
if(hSyncInt &amp;&amp; vCount=11′h301)
vValid<=#41'b0;
end∥else
end∥always
always@(posedge pClk or negedge reset_l)begin
if(!reset_l)
hValid<=#41′b0;
else begin
if(hCount==11′h002)
hValid<=#41'b1;
if(hCount<=11′h401)
hValid<=#41'b0;
end∥else
end∥always
wire validInt=hValid &amp;&amp;(goBlank‖vValid);
∥注意:这是异步的。它非常长并将工作…
wire vSyncMem=(!sourceExt &amp;&amp; vCount==10'h325)‖(sourceExt
&amp;&amp; vSyncIn);
always@(posedge clk)begin
vSyncMemD1<=#4vSyncMem;
vSyncMemD2<=#4vSyncMemD1;
vSyncMemD3<=#4vSyncMemD2;
end∥always
wire vSyncMemRise=!vSyncMemD3 &amp;&amp; vSyncMemD2;
∥将同步改变成1时钟脉冲
				
				<dp n="d36"/>
always@(posedge pClk)begin
vSyncIn<=#4vSync;
vSyncInDI<=#4vSyncIn;
hSyncIn<=#4hSync;
hSyncInD1<=#4hSyncIn;
vSync1<=#4!vSyncIn &amp;&amp; vSyncInD1;
hSync1<=#4hSyncIn &amp;&amp;!hSyncInD1;
vSyncOut<=#4vSyncReal;
end∥always
always@(posedge pClk)begin
if(!sourceExt‖goBlank)begin
hSyncReal<=#4hSyncInt;
vSyncReal<=#4vSyncInt;
validReal<=#4validlnt;
end∥begin
else begin
hSyncReal<=#4hSync1;
vSyncRea1<=#4vSync1;
validReal<=#4dataValid;
end∥else
end∥always
∥流水线有效
always@(posedge pClk)begin
validDelay<=#4{validDelay[5:0],validReal};
valid<=#4validDelay[6] &amp;&amp;!freezeOut;
end∥always
∥寄存器输入RGB数据(利用I/O单元)
				
				<dp n="d37"/>
always@(posedge pClk)begin
redIn<=#4red;
greenIn<=#4green;
blueIn<=#4blue;
dataValid<=#4dEn;
end∥always
∥测试数据寄存器中的复用
always@(posedge pClk)begin
if(!sourceExt‖testData‖blankData)begin
redD0<=#4testRed;
blueD0<=#4testBlue;
greenD0<=#4testGreen;
end∥if
else begin
redD0<=#4redIn;
greenD0<=#4greenIn;
blueD0<=#4lueIn;
end∥else
end∥always
∥加流水线级以与覆盖数据同步
always@(posedge pClk)begin
redD01<=#4redD0;
redD02<=#4redD01;
redD03<=#4redD02;
redD04<=#4redD03;
redD05<=#4redD04;
redD06<=#4redD05;
				
				<dp n="d38"/>
greenD01<=#4greenD0;
greenD02<=#4greenD01;
greenD03<=#4greenD02;
greenD04<=#4greenD03;
greenD05<=#4greenD04;
greenD06<=#4greenD05;
blueD01<=#4blueD0;
blueD02<=#4blueD01;
blueD03<=#4blueD02;
blueD04<=#4blueD03;
blueD05<=#4blueD04;
blueD06<=#4blueD05;
end∥always
∥在无效数据中复用
always@(posedge pClk)begin
if(invert‖olInv)begin
redD1<=#4!redD06;
greenD1<=#4!greenD06;
blueD1<=#4!blueD06;
end∥if
else begin
redD1<=#4redD06;
greenD1<=#4greenD06;
blueD1<=#4blueD06;
end∥else
end∥always
∥在uP地址中复用,以对LUT读/写
always@(posedge pClk)begin
				
				<dp n="d39"/>
if(!redLUTReq)
redAddr<=#4edD1;
else
redAddr<=#4addrReg[7:0];
end∥always
always@(posedge pClk)begin
if(!greenLUTReq)
greenAddr<=#4greenD1;
else
greenAddr<=#4addrReg[7:0];
end∥always
always@(posedge pClk)begin
if(!blueLUTReq)
blueAddr<=#4blueD1;
else
blueAddr<=#4addrReg[7:0];
end∥always
∥为LUT产生写选通
always@(posedge pClk)begin
weRed<=redLUTReq &amp;&amp;!uWr_l;
weGreen<=greenLUTReq &amp;&amp;!uWr_l;
weBlue<=#4blueLUTReq &amp;&amp;!uWr_l;
end∥always
∥查找表的数据,寄存器@
∥LUT
syn_ram_256x8_iror u1(redLUT,uDataIn,weRed,redAddr,pClk,pClk);
				
				<dp n="d40"/>
syn_ram_256x8_iror u2(greenLUT,uDataIn,weGreen,greenAddr,
pClk,pClk);
syn_ram_256x8_iror u3(blueLUT,uDataIn,weBlue,blueAddr,pClk,pClk);
∥寄存器LUT输出(这里通过不复用使速度最大)
always@(posedge pClk)begin
redLUTout<=#4redLUT;
greenLUTout<=#4greenLUT;
blueLUTout<=#4blueLUT;
end∥always
∥在此级取uP的读数据(解码某些载波可能需要)
always@(posedge pClk)begin
if(readReqLUT)begin
if(uAddr[1:0]=2'b01)
readLUT<=#4redLUTout;
if(uAddr[1:0]=2′b10)
readLUT<=#4greenLUTout;
if(uAddr[1:0]=2'b11)
readLUT<=#4blueLUTout;
end∥if
end∥always
∥在覆盖中复用并使用enRed信号
always@(posedge pClk)begin
if(!enRed)
redDx<=#48′b0;
else if(useOverlay)
redDx<=#4redOverlay;
				
				<dp n="d41"/>
else
redDx<=#4redLUTout;
if(!enGreen)
greenDx<=#48′b0;
else if(useOverlay)
greenDx<=#4greenOverlay;
else
greenDx<=#4greenLUTout;
if(!enBlue)
blueDx<=#48′b0;
elseif(useOverlay)
blueDx<=#4blueOverlay;
else
blueDx<=#4blueLUTout;
end∥always
∥最后I0寄存器
always@(posedge pClk)begin
redOut<=#1redDx;
greenOut<=#1greenDx;
blueOut<=#1blueDx;
end∥always
∥覆盖数据路径
∥串行时钟
always@(posedge pClk)begin
if(hSyncReal)begin
sClkL<=#41′b0;
sClkH<=#41′b0;
				
				<dp n="d42"/>
end∥if
else if(validReal)begin
if(useLowVram)
sClkL<=#4!sClkL;
else
sClkH<=#4s!sClkH;
end∥else if
end∥always
always@(posedge pClk)begin
sc<=#4{sClkH,sClkL};
sClkInt<=#4sClkH‖sClkL;
sClkD1<=#4sClkInt;
sClkD2<=#4sClkD1;
end∥always
∥寄存器VRAM串行数据
always@(posedge pClk)begin
if(sClkD1)
overlayIn<=#4overlay;
end∥always
always@(posedge pClk)begin
if(sClkD2)
olData<=#4overlayIn[7:0];
else
olData<=#4overlayIn[15:8];
end∥always
∥覆盖选择
				
				<dp n="d43"/>
always@(posedgepClk)begin
casex(overlaySel)
3'b000:olDataD1<=#48′b00;
3'b001:olDataD1<=#4′{4'b0,olData[3:0]};
3′b010:olDataD1<=#4{olData[7:4],4′b0};
3′b011:begin
if(olData[3:0]!=4'b0)
olDataD1<=#4{4′b0,olData[3:0]};
else
olDataD1<=#4olData;
end∥begin
3'b1xx:olDataD1<=#4olData;
endcase
end∥always
∥产生反向
always@(posedge pClk)
olInv<=#4olDataD1[3:0]=4'hf‖olDataD1[7:4]=
4′hf;
∥加流水线级使数据排队
always@(posedge pClk)begin
olDataD2<=#4olDataD1;
olDataD3<=#4olDataD2;
end∥always
∥覆盖掩蔽(任何1将使用覆盖)
∥但不是表示反向数据的F…
∥流水线将其延迟通过EAB的时间
				
				<dp n="d44"/>
always@(posedge pClk)begin
useOverlay<=#4(olDataD3!=8'b0 &amp;&amp; olDataD3[3:0]!=4′hf &amp;&amp;
olDataD3[7:4]!=4′hf)‖enOverlay;
useOverlayD1<=#4useOverlay;
useOverlayD2<=#4useOverlayD1;
useOverlayD3<=#4useOverlayD2;
end∥always
∥在uP地址中复用,以对LUT读/写
always@(posedge pClk)begin
if(!redOvlyReq)
olRedAddr<=#4olDataD3;
else
olRedAddr<=#4addRreg[7:0];
if(!greenOvlyReq)
olGreenAddr<=#4olDataD3;
else
olGreenAddr<=#4addrReg[7:0];
if(!blueOvlyReq)
olBlueAddr<=#4olDataD3;
else
olBlueAddr<=#4addrReg[7:0];
end∥always
always@(posedge pClk)begin
weOverRed<=redOvlyReq &amp;&amp;!uWr_l;
weOverGreen<=#4greenOvlyReq &amp;&amp;!uWr_l;
weOverBlue<=#4blueOvlyReq &amp;&amp;!uWr_l;
end∥always
∥对覆盖的LUT
				
				<dp n="d45"/>
syn_ram_256x8_iror u4(overRed,uDataIn,weOverRed,olRedAddr,
pClk,pClk);
syn_ram_256x8_iror u5(overGreen,uDataIn,weOverGreen,olGreenAddr,
pClk,pClk);
syn_ram 256x8_iror u6(overBlue,uDataIn,weOverBlue,olBlueAddr,
pClk,pClk);
∥寄存器LUT输出(对速度)
always@(posedge pClk)begin
redOverlay<=#4overRed;
greenOverlay<=#4overGreen;
blueOverlay<=#4overBlue;
end∥always
∥在此级取uP的读数据(对某些载波可能需要)
always@(posedge pClk)begin
if(readReqOvly)begin
if(uAddr[1∶0]==2′b00)
readOvly<=#4overRed;
if(uAddr[1∶0]==2'b01)
readOvly<=#4overGreen;
if(uAddr[1:0]==2'b10)
readOvly<=#4overBlue;
end∥if
end∥always
∥VRAM IF
				
				<dp n="d46"/>
∥同步和边缘检测QSF
wire qsfln=useLowVram &amp;&amp; qsf[0]‖!useLowVram &amp;&amp; qsf[1];
always@(posedge clk)begin
qsfD1<=#4qsfIn;
qsfD2<=#4qsfD1;
qsfD3<=#4qsfD2;
end∥always
wire qsfRise=qsfD2 &amp;&amp;!qsfD3;
wire qsfFall=!qsfD2 &amp;&amp; qsfD3;
∥掩蔽位关第1qsf下降(全读已装载SAM)
always@(posedge clk or negedge reset_l)begin
if(!reser_l)
qsfMask<=#41′b0;
else begin
if(vSyncMemRise)
qsfMask<=#41'b1;    ∥在vSync上设掩蔽位
if(qsfRise &amp;&amp; xferAddr==9'h1FF)
qsfMask<=#41'b1;    ∥当切换VRAM时设置掩蔽位
if(qsfMask &amp;&amp; qsfRise)
qsfMask<=#41′b0;    ∥在qsf的第一上升沿清除掩蔽位
qsf
end∥else
end∥always
∥产生分开读请求
				
				<dp n="d47"/>
always@(posedge clk or posedge clrXferReq)begin
if(clrXferReq)
splitReq<=#41'b0;
else begin
if(qsfRise‖(!qsfMask &amp;&amp; qsffall))
splitReq<=#41'b1;
end∥else
end∥always
wire clrXferReq=!reset_l‖(memDone &amp;&amp; cycleType);
∥跟上当前使用的组
always@(posedge clk or posedge vSyncMem)begin
if(vSyncMem)
useLowVram<=1'b1;
if(qsfFall &amp;&amp; xferAddr==8′hFF)
useLowVram<=1′b0;
end∥always
∥产生全读请求(注意应用相同循环对两个VRAM进行)
always@(posedge clk or posedge clrXferReq)begin
if(clrXferReq)
fullReq<=#41'b0;
if(vSyncMemRise)
fullReq<=#41'b1;
end∥always
∥组合请求
				
				<dp n="d48"/>
assign vram WrReq=memReq &amp;&amp;!uWr_l;
assign vramRdReq=memReq &amp;&amp;!uRd_l;
∥存储序列
vramsm vramsm(clk,reset_l,memPage,wrMode,{uAddr,
addrReg},uData,memRdData,
cbrReq,vramWrReq,vramRdReq,colorReq,splitReq,fullReq,blockReq,
useLowVram,
memDone,cycleType,
vAddr,vData,ras_l,cas_l,dsf,dtoe,we_l[1],we_l[0]);
∥
endmodule

Claims (22)

1.一种用于接收n-位数据字并输出m-位数据字的数据平面化器,所述数据平面化器包括:
多个数据输入端;
多个数据输出端;和
第一存储组,含有与所述多个数据输入端耦接的输入端组,与所述多个数据输出端耦接的输出端组,和小于m的位深。
2.如权利要求1所述的数据平面化器,其中,所述第一存储组包括双向移位寄存器。
3.如权利要求2所述的数据平面化器,其中,所述双向移位寄存器包括:
时钟输入端,用于接收数据移位信号;和
方向端,用于接收方向控制信号。
4.如权利要求3所述的数据平面化器,其中,所述双向移位寄存器还包括:
多个触发器,排列在由行和列构成的矩阵阵列之中,所述触发器的每一个都含有与所述时钟输入端相耦接的控制端、输入端和输出端;和
多个多路复用器,排列在由行和列构成的矩阵阵列之中,所述多路复用器的每一个都含有与所述方向端相耦接的控制端、与所述触发器的相关一个的所述输入端相耦接的输出端、第一输入端和第二输入端。
5.如权利要求4所述的数据平面化器,其中:
所述多路复用器阵列的第一列上的所述多路复用器每一个都含有与所述多个数据输入端的相关一个相耦接的所述第一输入端;
所述多路复用器阵列的其它列上的所述多路复用器每一个都含有与处在相邻列上的所述触发器的相关一个的所述输出端相耦接的所述第一输入端;
所述多路复用器阵列除了顶行之外的行上的所述多路复用器每一个都含有与相邻行的所述触发器的相关一个的输出端相耦接的所述第二输入端;和
所述触发器阵列的底行上的所述触发器每一个都含有与所述多个数据输出端的相关一个相耦接的所述输出端。
6.如权利要求1所述的数据平面化器,还包括第二存储组,含有与所述多个数据输入端相耦接的输入端组,与所述多个数据输出端相耦接的输出端,和小于m的位深。
7.如权利要求6所述的数据平面化器,其中,所述第一存储组和所述第二存储组具有小于一帧数据的组合容量。
8.如权利要求7所述的数据平面化器,其中:
所述第一存储组包括双向移位寄存器,含有用于接收数据移位信号的时钟输入端和用于接收方向控制信号的方向端;和所述第二存储组包括双向移位寄存器,含有用于接收数据移位信号的时钟输入端和用于接收方向控制信号的方向端。
9.如权利要求8所述的数据平面化器,还包括反向器,含有与所述第一双向移位寄存器的所述方向端相耦接的输入端和与所述第二双向移位寄存器的所述方向端耦接的输出端。
10.如权利要求9所述的数据平面化器,其中,所述双向移位寄存器的每一个还包括:
多个触发器,相列在由行和列构成的矩阵阵列之中,所述触发器的每一个都含有与所述时钟输入端相耦接的控制端,输入端、和输出端;和
多个多路复用器,排列在由行和列构成的矩阵阵列之中,所述多路复用器的每一个都含有与所述方向端相耦接的控制端、与所述触发器的相关一个的所述输入端相耦接的输出端、第一输入端、和第二输入端。
11.如权利要求10所述的数据平面化器,其中:
所述多路复用器阵列的第一列上的所述多路复用器每一个都含有与所述多个数据输入端的相关一个相耦接的所述第一输入端;
所述多路复用器阵列的其它列上的所述多路复用器每一个都含有与处在相邻列上的所述触发器的相关一个的所述输出端相耦接的所述第一输入端;
所述多路复用器阵列除了顶行之外的行上的所述多路复用器每一个都含有与相邻行的所述触发器的相关一个的输出端相耦接的所述第二输入端;和
所述触发器阵列的底行上的所述触发器每一个都含有与所述多个数据输出端的相关一个相耦接的所述输出端。
12.一种用于将n-位数据平面化成m-位平面化数据的方法,所述方法包括下列步骤:
接收第一组(p个)n-位数据字,这里p<m;
将所述第一组(p个)数据字存储在第一存储组中;和
通过将p-位数据字传送到(n个)不同存储位置的每一个的第一部分中,其中所述p-数据字包括所述第一组(p个)n-位数据字的每一个的一位,将所述第一组(p个)数据字传送到含有所述(n个)不同存储位置的器件中。
13.如权利要求12所述的方法,还包括下列步骤:
接收第二组(p个)n-位数据字;
将所述第二组(p个)数据字存储在所述第一存储组中;和
通过将p-位数据字传送到所述存储位置的每一个的第二部分中,其中所述p-位数据字包括所述第二组(p个)n-位数据字的每一个的一位,将所述第二组(p个)数据字传送到所述器件中。
14.如权利要求13所述的方法,还包括下列步骤:
接收后随组(p个)n-位数据字;
将所述后随组(p个)数据字存储在所述第一存储组中;和
通过将p-位数据字传送到所述存储位置的每一个的后随部分中,其中所述p-位数据字包括所述后随组(p个)n-位数据字的每一个的一位,将所述后随组(p个)数据字传送到所述器件中,直到所述存储位置的每一个都包含m-位数据字为止。
15.如权利要求12所述的方法,还包括下列步骤:
接收第二组(p个)n-位数据字;
将所述第二组(p个)数据字存储在第二存储组中;和
通过将p-位数据字传送到所述存储位置的每一个的第二部分中,其中所述p-位数据字包括所述第二组(p个)n-位数据字的每一个的一位,将所述第二组(p个)数据字传送到所述器件中。
16.如权利要求15所述的方法,还包括下列步骤:
接收后随组(p个)n-位数据字;
将所述后随组(p个)数据字存储在所述第一和第二存储组之一中;和
通过将p-位数据字传送到所述存储位置的每一个的后随部分中,其中所述p-位数据字包括所述后随组(p个)n-位数据字的每一个的一位,将所述后随组(p个)数据字传送到所述器件中,直到所述存储单元的每一个都包含m-位数据字为止。
17.如权利要求16所述的方法,其中,所述将所述后随组(p个)数据字存储在所述第一和第二存储组之一中的步骤是以在所述第一与所述第二存储组之间交替进行的方式进行的。
18.如权利要求15所述的方法,其中,所述将所述第二组(p个)数据字存储在所述第二存储组中的步骤是在所述传送所述第一组(p个)数据字的步骤进行的同时进行的。
19.如权利要求12所述的方法,其中,所述将所述第一组(p个)数据字存储在第一存储组中的步骤包括沿着第一方向、每次(n个)位地将所述(p个)数据字移位到所述第一存储组的步骤。
20.如权利要求19所述的方法,其中,所述将所述第一组(p个)数据字传送到包括(n个)不同存储位置的器件中的步骤包括沿着第二方向、每次(p个)位地从所述第一存储组中移出所述(p个)数据字的步骤。
21.一种用于将n-位数据平面化成m-位平面化数据的数据平面化器,所述数据平面化器包括:
接收装置,用于接收一组(p个)n-位数据字,这里,p<m;
存储装置,用于存储所述组(p个)数据字;和
传送装置,用于通过将p-位数据字传送到所述存储位置的每一个的第一部分中,其中所述p-位数据字包括所述组(p个n)-位数据字的每一个的一位,将所述组(p个)数据字传送到包括(n个)不同存储位置的器件中。
22.如权利要求21所述的数据平面化器,其中,所述第一存储装置包括:
第一移位装置,用于每次(n)位地将数据移位到所述第一存储装置中;和第二移位装置,用于每次(p)位地将数据从所述第一存储装置中移位出来。
CNB988131250A 1997-11-14 1998-11-13 用于数据平面化的系统和方法 Expired - Lifetime CN1136532C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/970,307 1997-11-14
US08/970,307 US6144356A (en) 1997-11-14 1997-11-14 System and method for data planarization

Publications (2)

Publication Number Publication Date
CN1285944A true CN1285944A (zh) 2001-02-28
CN1136532C CN1136532C (zh) 2004-01-28

Family

ID=25516737

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB988131250A Expired - Lifetime CN1136532C (zh) 1997-11-14 1998-11-13 用于数据平面化的系统和方法

Country Status (8)

Country Link
US (1) US6144356A (zh)
EP (1) EP1031132B1 (zh)
JP (1) JP2002537569A (zh)
CN (1) CN1136532C (zh)
AT (1) ATE502372T1 (zh)
CA (1) CA2309906C (zh)
DE (1) DE69842187D1 (zh)
WO (1) WO1999026225A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103718244A (zh) * 2011-07-25 2014-04-09 英特尔公司 用于媒体处理加速器的采集方法和装置

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6803885B1 (en) 1999-06-21 2004-10-12 Silicon Display Incorporated Method and system for displaying information using a transportable display chip
DE10121855A1 (de) * 2001-05-04 2003-02-13 Atmel Germany Gmbh Verfahren zur Übertragung von Daten
GB0204410D0 (en) * 2002-02-25 2002-04-10 Bae Systems Plc Weighgtless thermocoder
AU2004241602B2 (en) 2003-05-20 2008-05-08 Syndiant, Inc. Digital backplane
JP4732709B2 (ja) * 2004-05-20 2011-07-27 株式会社半導体エネルギー研究所 シフトレジスタ及びそれを用いた電子機器
US20060066645A1 (en) * 2004-09-24 2006-03-30 Ng Sunny Y Method and apparatus for providing a pulse width modulation sequence in a liquid crystal display
US20060190704A1 (en) * 2005-02-24 2006-08-24 International Business Machines Corporation Apparatus for increasing addressability of registers within a processor
US8339428B2 (en) * 2005-06-16 2012-12-25 Omnivision Technologies, Inc. Asynchronous display driving scheme and display
US7884839B2 (en) * 2005-12-05 2011-02-08 Miradia Inc. Method and system for image processing for spatial light modulators
US8223179B2 (en) * 2007-07-27 2012-07-17 Omnivision Technologies, Inc. Display device and driving method based on the number of pixel rows in the display
TW200931380A (en) * 2008-01-14 2009-07-16 Ili Technology Corp Data accessing system and data accessing method
US8228350B2 (en) * 2008-06-06 2012-07-24 Omnivision Technologies, Inc. Data dependent drive scheme and display
US8228349B2 (en) * 2008-06-06 2012-07-24 Omnivision Technologies, Inc. Data dependent drive scheme and display
US9024964B2 (en) * 2008-06-06 2015-05-05 Omnivision Technologies, Inc. System and method for dithering video data
JP2011043766A (ja) * 2009-08-24 2011-03-03 Seiko Epson Corp 変換回路、表示駆動回路、電気光学装置、及び電子機器
US11030942B2 (en) 2017-10-13 2021-06-08 Jasper Display Corporation Backplane adaptable to drive emissive pixel arrays of differing pitches
US10951875B2 (en) 2018-07-03 2021-03-16 Raxium, Inc. Display processing circuitry
US11710445B2 (en) 2019-01-24 2023-07-25 Google Llc Backplane configurations and operations
US11637219B2 (en) 2019-04-12 2023-04-25 Google Llc Monolithic integration of different light emitting structures on a same substrate
US11238782B2 (en) 2019-06-28 2022-02-01 Jasper Display Corp. Backplane for an array of emissive elements
US11626062B2 (en) 2020-02-18 2023-04-11 Google Llc System and method for modulating an array of emissive elements
US11538431B2 (en) 2020-06-29 2022-12-27 Google Llc Larger backplane suitable for high speed applications
GB2598156B (en) * 2020-08-21 2023-05-31 Dualitas Ltd A spatial light modulator
US11978506B2 (en) 2020-12-10 2024-05-07 Agency For Science, Technology And Research Spatial light modulator
TW202303555A (zh) 2021-07-14 2023-01-16 美商谷歌有限責任公司 用於脈寬調變的背板和方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1138564B (de) 1957-11-25 1962-10-25 Burroughs Corp Schieberegister mit Transfluxoren
US5325109A (en) * 1990-12-27 1994-06-28 Calcomp Inc. Method and apparatus for manipulation of pixel data in computer graphics
CA2063744C (en) * 1991-04-01 2002-10-08 Paul M. Urbanus Digital micromirror device architecture and timing for use in a pulse-width modulated display system
US5255100A (en) * 1991-09-06 1993-10-19 Texas Instruments Incorporated Data formatter with orthogonal input/output and spatial reordering
JP3329008B2 (ja) * 1993-06-25 2002-09-30 ソニー株式会社 双方向信号伝送回路網及び双方向信号転送シフトレジスタ
EP0709822A3 (en) * 1994-10-31 1996-07-31 Texas Instruments Inc Improvements in or in connection with a data formatting device and frame memories
EP0827129A3 (en) * 1996-08-30 1999-08-11 Texas Instruments Incorporated Formatting and storing data for display systems using spatial light modulators

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103718244A (zh) * 2011-07-25 2014-04-09 英特尔公司 用于媒体处理加速器的采集方法和装置
CN103718244B (zh) * 2011-07-25 2016-06-01 英特尔公司 用于媒体处理加速器的采集方法和装置

Also Published As

Publication number Publication date
ATE502372T1 (de) 2011-04-15
CA2309906C (en) 2008-05-20
JP2002537569A (ja) 2002-11-05
EP1031132B1 (en) 2011-03-16
WO1999026225A1 (en) 1999-05-27
CN1136532C (zh) 2004-01-28
DE69842187D1 (de) 2011-04-28
US6144356A (en) 2000-11-07
EP1031132A1 (en) 2000-08-30
CA2309906A1 (en) 1999-05-27

Similar Documents

Publication Publication Date Title
CN1136532C (zh) 用于数据平面化的系统和方法
US7495648B2 (en) Liquid crystal display device
CN104903951B (zh) 显示面板以及电子装置
CN101645244B (zh) 液晶显示器件及其驱动方法
EP1736959B1 (en) Apparatus and method for driving image display device
CA2322510C (en) System and method for using compound data words to reduce the data phase difference between adjacent pixel electrodes
CN100406973C (zh) 液晶显示器及其驱动方法
KR101872993B1 (ko) 액정 표시 장치
KR19980021332A (ko) Lcd 패널 구동 회로
US6072452A (en) System and method for using forced states to improve gray scale performance of a display
CN101364386A (zh) 选择性过驱动方法及其装置
KR101147121B1 (ko) 데이터 전송장치 및 전송방법과 이를 이용한 화상표시장치의 구동장치 및 구동방법
CN102682686A (zh) 面板驱动装置和具有该驱动装置的显示装置
KR100607614B1 (ko) 디지털-아날로그 변환기를 포함하는 디스플레이 모듈 구동시스템
US20080186292A1 (en) Timing controller, liquid crystal display device having the same, and method of operating a timing controller
US20050140618A1 (en) Liquid crystal display device
CN202383979U (zh) Led显示系统
CN110751924A (zh) 分屏控制的Micro-LED显示屏
TW201616478A (zh) 省電顯示系統及其方法
JPH02170784A (ja) 液晶パネルを駆動するためのラインメモリ回路
JPH0473928B2 (zh)
TWI382389B (zh) 用於顯示器讀取記憶體資料的電路系統
KR20220112784A (ko) 저-전력 작동 모드를 갖는 표시 화면을 구비하는 장치
CN117413313A (zh) 显示数据处理方法和装置、以及显示装置
JPS6017788A (ja) マトリクス型デイスプレイのデ−タ転送方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: OMNIVISION TECHNOLOGIES, INC.

Free format text: FORMER OWNER: AOROLA SYSTEM CO.

Effective date: 20120831

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120831

Address after: American California

Patentee after: OmniVision Technologies, Inc.

Address before: American California

Patentee before: Aorola System Co.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20040128