2 投影机系统电路
在投影机设计中,控制电路的作用是对输入的视频和数字图像信号进行处理,以将其转变成适合LCD屏显示的信号。投影系统的电路部分如图3所示。当图像信号由DVI接口传送到DVI解码芯片后,系统可将视频信号分解成24位R、G、B单色信号以及相应的控制信号,再通过FPGA组成的视频信号处理电路进行相关转换,然后经过DVI编码芯片恢复成DVI信号,最后送至液晶屏。
从系统电路的示意图可知。以FPGA为核心(包括DVI解码、编码芯片在内)的信号处理电路是整个设计中最为关键的部分,图4所示是其数据读写和传输示意图。从DVI解码芯片进入FPGA的数据包括8位并行R/G/B信号以及行、场控制信号和时钟信号。事实上,为实现实时视频显示,应该对一帧(笔者使用的LCD屏所支持的最高分辨率为XGA,即1024×768)数据进行处理。可是,如果对整帧数据一起处理,至少需要2 MB以上的外部存贮器来对数据进行缓存,这样既提高了成本,又增加了电路的复杂性。因此,在本设计中,笔者采用了一种新思路,即对输入的视频数据一行一行的进行处理,并且在相邻两行的数据流处理中采用“乒乓操作”,这样既可实现实时显示,又简化了电路。具体操作如下:
① 通过模块调用将FPGA的片内RAM分为“RAM_A”和“RAM_B”;
② 在第一个行周期,将输入的第一行数据流缓存到“RAM_A”:因为一行视频信号有3K字节,为了实现在LCD屏上三基色的分离,在对数据进行存储时,不能按照数据进入FPGA的顺序来存储,而应将红色数据依次存放在第1至第1024个存储单元,绿色数据存放在第1025至第2048个存储单元,蓝色数据则放在第2049至第3072个存储单元,即将原来的象素“打乱”存放;
③ 在第二个行周期,按照步骤②中所描述的方法将第二行的视频信号存入“RAM_B”,同时将“RAM_A”中所存的第一行视频信号依次从I/O口读出,再经DVI编码芯片编码后送至LCD屏,即在读出数据时“按序”读取;
④ 重复步骤②、③,使读、写操作交替在“RAM_A”和“RAM_B”间循环进行,直至一帧数据传输完毕。
此时,LCD屏上显示数据的具体算法如图5所示,即R1,2占据G1,1的位置(即第2个单元),R1,3占据B1,1的位置(即第3个单元),R1,4占据第4个单元,以此类推,直至1024个红色数据在LCD屏上排列完毕,再开始绿色数据,继而是蓝色数据。这样便可达到图2中在一块LCD屏上分别显示R、G、B图像的目的。
本设计中所采用的FPGA是Altera公司Cvclone系列中的EP1C6Q240C8。该FPGA的片内存储器容量为90kbits,完全能够胜任对分辨率为XGA显示模式的视频信号进行行处理。如果要支持更高分辨率的投影模式或对图像进行整帧的处理,只需更换具有更大片内RAM资源的FPGA或是在FPGA的I/O口外接片外存储器。DVI解码和编码芯片分别选用Sil161和Sil164。