从系统电路的示意图可知。以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”间循环进行,直至一帧数据传输完毕。
从系统电路的示意图可知。以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”间循环进行,直至一帧数据传输完毕。