摘 要: 利用FPGA作为主控单元,以数字视频接口DVI为视频接口、TI公司的TFP401和TFP410为视频信号的编解码芯片、ISSI公司的SRAM IS61LV10248-8TI为存储单元完成视频叠加器的设计。通过该系统,从路图像的非黑像素能够覆盖主路图像相同坐标的像素。
关键词: 数字视频叠加;FPGA;最小化传输差分信号
飞机研发过程中,需要对包含目标信息和地图信息的机载视频信号进行调试。但是机载显示终端普遍存在价格昂贵、使用寿命短等缺点,如果使用它不断地调试机载视频信号,则机载显示终端的消耗会增大,研发成本将大幅提高。
本文介绍了一种DVI视频信号叠加器的设计方案,可以对两组相同分辨率和刷新频率的DVI视频信号转化、合成并输出。通过该系统,从路图像的非黑像素能够覆盖主路图像相同坐标的像素,从而完成对机载显示终端的模拟。该方案主要以1024×768@60Hz的视频源为研究对象,可根据实际需要调节,并可支持多种分辨率和刷新频率(640×480@60Hz,800×600@60Hz,1024×768@60Hz)。
由于设计了这种模拟装置,因此不必用机载显示终端调试机载视频信号,从而减少对机载显示终端的消耗。DVI视频信号叠加器的使用,节约了开发成本。
1 DVI接口
数字视频接口(DVI)是一种适应数字显示器飞速发展而产生的显示接口。DVI 标准由 DDWG(Digital Display Working Group)于1999年4月正式推出,该组织包括了Intel、IBM、HP、Silicon Image、NEC等众多芯片及整机的生产厂家,因而 DVI 标准具有广泛的业界支持[1]。DVI的接口主要有两种类型:DVI-Digital(DVI-D),只支持数字式显示器,共 24 个 引 脚;DVI-Integrated(DVI-I),兼容模拟和数字的连接,共29个引脚。计算机显卡一般有DVI-I和VGA两个接口。本设计选用的是 DVI-I 接口,相对于VGA(Video Graphics Array)接口,其优势突出,DVI传输的是数字信号,数字图像信息不需经过数字→模拟→数字繁琐的转换过程,就会直接被传送到显示设备上,大大节省了时间,因此它的速度更快,能有效消除拖影现象。而且VGA模拟信号易受干扰,DVI信号则抗干扰能力强,图像信号没有衰减,色彩更纯净、逼真。
2 VESA标准介绍
VESA(Video Electronics Standards Association)即视频电子标准协会,主要致力于制订并推广显示相关标准。它规定了各种分辨率和刷新频率的显示监视器定时标准(简称VESA标准)。
2.1 VESA标准时序图与参数定义
从图 1可以看出[2],VESA标准包括场同步(VSYNC)、行同步(HSYNC)、像素数据有效(DE)、像素时钟(CLK)、像素数据(Data,一般为24 bit)五组信号。
VESA标准的五组视频信号之间有严格的定时参数,场(行)扫描包括场(行)消隐期和场(行)有效显示期(即Addr Time)。场(行)消隐期又包括同步期(Sync)、后肩(Back Porch)、顶(左)边(Top (Left)Border)、底(右)边(Bottom (Right)Border)、前肩(Front Porch)。图 1以行同步极性和场同步极性都是负极性为例,即同步期为低电平[2]。关于同步极性的规定(如在1 024×768@60Hz的视频格式下),如图2中“Hor Sync Polarity=NEGATIVE”,“Ver Sync Polarity= NEGATIVE”所示。
2.2 VESA参数值举例(1 024×768@60Hz)
VESA同样规定了各种参数在不同分辨率和刷新频率的具体值,例如1 024×768@60Hz的定时参数值如图2所示[2]。结合图 1与图2便可容易地用VHDL语言生成1 024×768@60Hz的时序信号。
3 系统框图
系统总体框图如图 3所示,大致可分为五个部分:DVI接口、DVI解码电路、FPGA主控制器及存储器电路、DVI编码电路。本设计只选取了两路绿色数据输入信号进行处理,故以下的像素数据信号(Data)无特殊说明都是绿色的8位信号。
连接DVI接口的计算机显卡,通过DDC[3,4]接口读取存储在EEPROM中的EDID[3]数据,在通信握手成功后,向DVI接口发出T.M.D.S视频信号。DVI接口传输的T.M.D.S时序码流,经过T.M.D.S解码电路可以被解码为VESA标准的数字视频信号。SRAM1(SRAM3)与SRAM2(SRAM4)构成VESA1(VESA2)链路的一组乒乓RAM,轮流存储VESA1(VESA2)链路的像素数据。FPGA读取已存储的像素数据进行叠加操作并产生VESA标准的视频信号,然后通过VESA3链路发送到T.M.D.S编码电路。T.M.D.S编码电路将VESA3链路的VESA标准的信号编码成T.M.D.S时序码流,最后将其传送到DVI接口,供显示器显示。引入乒乓RAM是由于即使两路VESA视频信号分辨率和刷新频率相同,两者一般也存在非零的相位差,所以需要存储器对它们的像素数据进行存储。
T.M.D.S解码电路的解码芯片采用TFP401,T.M.D.S编码电路的编码芯片采用TFP410。SRAM选用IS61LV-
10248-8TI,其读写周期为8 ns,存储空间为1 M×8 bit,能够满足系统像素时钟最高为65 MHz、最高分辨率为1024×768的要求。
4 工作流程
FPGA内部工作模块如图4所示。下面简要阐述关键信号的数据流向。
场同步极性判断模块的功能是根据输入的VESA1信号判断出场同步极性(VSP),因VESA1和VESA2视频格式相同,只需判断VESA1的场同步极性。VESA1(VESA2)写地址生成模块的功能是利用场同步极性实现写地址和像素位置的合理对应。输出时序、写地址生成模块的功能是利用场同步极性、VESA1写地址生成模块生成的写地址a_write1和VESA1中的场同步信号,实现分辨率的判断,进而结合其他信号完成输出时序的生成和读地址的生成。SRAM控制模块负责根据上述生成的读地址和写地址,写入两路VESA信号的新的像素数据,读出先前存储的两路VESA信号像素数据。被读出的两个像素点将用于输出时序、写地址生成模块的像素叠加操作,产生的像素作为输出像素。
4.1 场同步极性(Ver Sync Polarity)判断
由于DE1=1期间,VSYNC1信号必然处于非同步期,此时的电平与同步期相反。所以,在DE1=1时,若VSYNC1=1,则记为VSP=0(Ver Sync Polarity=NEGATIVE),否则,记为VSP=1(Ver Sync Polarity=POSITIVE)。在实现该模块的编程中,采用VESA1视频信号中的CLK1像素时钟信号上升沿来同步此进程,可以保证产生的信号稳定。
4.2 VESA1和VESA2写地址生成
因为VESA1写地址生成与VESA2写地址生成类似,这里只介绍VESA1的写地址(a_write1)生成。由于系统中SRAM的地址总线为20位(寻址能力1M),所以a_write1为20位。若将输入视频信号的分辨率记为def,则VESA1一帧像素数据所需SRAM空间范围是0~def-1。因此,在场同步期间(VSYNC1=VSP),可令a_write1<=220-1。在非场同步期间,若处于像素数据有效期(DE1=1),则当像素时钟(CLK1)上升沿到来时,对a_write1实行自加一操作(假设已设置T.M.D.S解码器1输出的控制信号及像素数据在CLK1的上升沿前后稳定);若处于像素数据无效期(DE1≠0),则a_write1保持不变。这样,在一帧图像期间,对应从图像左上角开始计数的每个像素数据,便可形成0~def-1的地址范围。
4.3 输出时序、读地址生成
4.3.1 分辨率判断
a_write1(VESA1写地址)的范围是0~def-1,而a_write1完成从def-1到0跳变的触发源正是场同步信号(VSYNC1)从非同步期到同步期的跳变。因此,可定义一信号def_clk,当VSYNC1≠VSP时,def_clk<=0,否则,def_clk<=1。这样,当def_clk上升沿到来时,正是场同步信号从非同步期到同步期的跳变,此时若令20位信号def_1<= a_write1(等于def-1),且令def<=def_1+1,则可得真正的分辨率,。
4.3.2 暂时输出时序控制信号生成
VESA标准的控制信号包括VSYNC、HSYNC、DE。由于已知两路视频信号的分辨率(def),这时将VESA1的像素时钟(CLK1)作为暂时的输出时序像素时钟(CLK33),再结合VESA标准的介绍,便可生成分辨为def的暂时的输出时序控制信号VSYNC33、HSYNC33、DE33。
4.3.3 VESA3读地址生成
由于此地址生成方法与VESA1和VESA2写地址生成方法相同,只是此处生成的地址是SRAM控制器用来读取像素数据而已,故不再赘述。
4.3.4 换场信号生成
当主时序换场时,每一路视频信号的两片SRAM需要交换读写方式,即若换场前读SRAM1、SRAM3,写SRAM2、SRAM4,则换场后读SRAM2、SRAM4,写SRAM1、SRAM3。因此需要一个信号在主时序相邻两场的电平不同,即换场信号,记为v_trans。此信号用来控制图 4中SRAM控制模块的读写方式。
v_trans的生成方式比较简单,只需在VSYNC33的上升沿到来时将v_trans取反即可。
4.3.5 输出时序同步处理和叠加像素生成
由于信号在FPGA生成的电路存在延迟,主时序控制信号和像素时钟信号可能产生不同步现象。因此需要对控制信号进行同步处理,同步期间同时生成像素数据Data3(VESA3像素数据)并输出。VESA3中的像素时钟直接短接CLK33即可。Data11(Data22)是从SRAM中读取的VESA1(VESA2)链路像素数据。
同步过程为CLK33下降沿到来时输出控制信号和像素数据。由于本文将VESA1作为主路、VESA2作为从路,所以要将VESA2信号叠加在VESA1上。叠加算法为:若VESA2第i个像素点(Data22)为黑色(Data22=0),则输出的VESA3第i个像素为VESA1的第i个像素(Data11),即Data3<=Data11;否则,输出的VESA3第i个像素为VESA2的第i个像素,即Data3<=Data22。
4.4 SRAM控制
将SRAM1和SRAM2分为一组,对应VESA1链路;将SRAM3和SRAM4分为一组,对应VESA2链路。SRAM控制模块需要对每一组中的两块SRAM轮流进行读写操作。若v_trans=0,则用VESA3读地址生成模块产生的地址a_read来读取SRAM1、SRAM3,分别得像素数据Data11、Data22,同时用VESA1、VESA2写地址生成模块产生的地址a_write1、a_write2分别将Data1、Data2写入SRAM2、SRAM4;否则,用地址a_read读取SRAM2、SRAM4,分别得像素数据Data11、Data22,同时用地址a_write1和a_write2分别将Data1和Data2写入SRAM1、SRAM3。Data11、Data22被送至输出时序、读地址生成模块进行叠加像素生成。
5 实验结果
对于1 024×768@60Hz的VESA时序,控制信号(vsync,hsync,de)和像素时钟(idck)的仿真结果如图 5所示,其他分辨率的仿真图不再给出。经过测量场同步信号和行同步信号的周期分别为16.7 ms、20.7 ?滋s,与VESA标准[2]一致,其他参数经测量也吻合,不再列举。
由于只对两路视频中的绿色信号进行了叠加,显示色数有些不足。后期研究可向全彩色视频叠加方向努力。但彩色信号叠加与绿色信号叠加在原理上相同,只是意味着要选用引脚数更多的FPGA。
上一篇:应对功耗挑战:晶体管技术方案面临瓶颈
下一篇:在FPGA中实现图像格式转换的参考设计
推荐阅读最新更新时间:2024-05-02 21:32