首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年11月21日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
AL700在视频切换中的应用
The Application of the QUAD Video Processor AL700 in Video Switch
■ 上海理工大学光电学院 杜娟娟 张凤登



摘 要:本文介绍了AVERLOGIC公司彩色视频分割控制芯片AL700的内部结构和主要性能,给出了 一个以该芯片为切换元件的视频切换器的电路设计。在本设计中,单片机通过对AL700寄存 器的编程达到对视频图像的显示性质和通道切换的控制,电路硬件简单,软件实现容易,可以 应用在监控系统、会议电视、可视电话等需要视频切换的场合。

关键词:视频切换;AL700

AL700是AVERLOGIC公司生产的一款功能强大的彩色视频分割控制芯片,它可以输入四路数字信号,输出二路模拟信号和二路数字信号。它含有103个控制寄存器,可对视频输出、显示等灵活配置。


AL700功能框图及介绍

图1是AL700的功能框图,由图可知AL700含有以下主要功能模块:
⑴解码器接口:AL700含有四个解码器接口,可以同时接收4路8位的ITU-R-601/656的4∶2∶2数据格式。寄存器03h<0>确定系统的制式,寄存器04h控制同步信号、数据格式等,通过对它编程可以支持不同类型的视频解码器。04h<2,1>设置成00,那么输入数据的次序是Cb Y Cr Y,设置为01,输入次序是 Cr Y Cb Y ;设置为10,输入次序是Y Cb Cr Y ,设置为11,输入次序为Cr Y Cr Y Cb。四个解码器由同一组内部寄存器控制,所以应用中最好选用同一种视频解码器。

⑵解码复用控制器:AL700允许四路中的两路共用一个解码器,当寄存器08h<4>设置为1 ,解码复用控制器通臩W_A和SW_B输出控制信号给解码器,使得A路与C路分时使用同一解码器,B路与D路分时使用同一解码器。

图1 AL700功能方框图(略)

⑶编码输出接口:AL700支持模拟输出和数字输出,模拟输出是通过选用内部编码器实现的,输出信号包括CVBS和S-video;数字输出包括8位ITU-R-601/656 4∶2∶2格式和16位ITU-R-601 4∶2∶2格式,数字输出可以外接TV编码器得到模拟信号。寄存器18h<0>为0使用内部TV编码器,为1则外接TV编码器。使用内部编码器,不影响数字输出,但在内部TV编码时Y的采样率在PAL制式下是17.734MHz,在NTSC制式下是14.318MHz,而不是CCIR标准的13.5MHz,将使图像的水平尺寸变得不标准。寄存器04h<6:5>四种不同的设置数字输出的分量Cb Y Cr Y就有不同的输出次序,具体设置格式与输入一样。通过对内部寄存器的编程,AL700支持多种外接TV编码器。

图2 写时序(略)
图3 应用电路(略)
图4 主控程序流程(略)


⑷主机接口:AL700通过该接口与主机通讯,在本应用中我们选用AT89c52作为控制AL700的主机。经由这个接口,主机对AL700的寄存器进行读和写操作。AL700支持I2C总线协议,这一协议规定向总线传送数据时为发送器,从总线接受数据时为接受器,在这个控制过程中,控制传输的器件是主机,而被控制的器件则为从机,时序方面的规定不在此赘述。AL700也支持8位数据的并行传输,引脚SP-SEL为高时是I2C传输模式,为低为并行传输模式。并行传输时序如图2和图3所示。H_WRB是时钟信号,在它的上升沿进行读或写的操作。H_BUS(7:0)是数据总线,H-DENB为高说明传输的是寄存器的地址,低说明传输的是数据,H_RDB高说明主机在进行写操作,低说明在进行读操作。

⑸图像控制器:这个由20 个内部寄存器共同控制的功能块是AL700的核心所在。AL700支持四分屏和满屏显示,编程寄存器19h,输出画面就可以在两者之间切换。图像在屏幕上的显示位置和其他性质都可以编程,比如寄存器17h-1Fh主要是对视频输出数据格式、显示模式、图像有无边界、边界宽度、边界闪烁与否、显示的水平起始位置和垂直起始位置等显示性质的说明,这些说明同时作用于四路图像;08h-0Fh用于视频捕获控制,设置捕获图像的水平和垂直起始位置,水平位置的说明以像素为单位,垂直位置的说明以行为单位。另外,每个通道也有自己的画面属性配置寄存器对该通道边界闪烁使能、边界颜色等进行控制,寄存器10h-16h完成这些功能。

⑹运动检测:运动检测主要用于VCR的四分屏显示中。在四分屏和全屏显示下,AL700还可以对断频进行检测。在中断没有被屏蔽的情况下,如果视频传输出现中断,将通过引脚INTR产生中断,寄存器03h<4>是1则为高电平触发,0则为低电平触发。

⑺层叠控制: AL700内嵌1K-byte的context Ram和4K-byte的Font Ram。支持内部和外部两种OSD(在屏显示),实现在输出上层叠控制菜单、文本或标题等功能。内部OSD有两种工作模式:1-byte模式和2-byte模式,1-byte模式在码流中只对字符编码进行描述,2-byte模式除对字符编码还对字符的其他性质如闪烁、背景色、前景色做了说明,不管是哪种模式都可以有两个独立的显示窗口OSD1和OSD2,两者叠加的时候OSD1居上。通过AL700提供了32个控制寄存器可以对OSD进行灵活编程。

⑻SDRM接口:该芯片支持1M 16或4M 16的同步动态随机存储器。猝发读写模式下,其读写时间为9ns。通过对寄存器80h和81h的编程可以对SDRM各项控制参数进行设置。


视频切换硬件电路的设计实现

本设计选用AT89c52作为AL700的主机控制。现场信号的AD转换及视频数据格式转换由Philips公司的9位视频处理芯片SAA7113A完成,四路输入画面性质、通道切换等控制功能通过对AL700的寄存器编程来完成。图4 为本设计中Al700的硬件电路框图。


软件实现

在对AL700的软件编程上,采用FramklinC51高级语言编写,它可以对硬件进行操作,便于改进和补充,具有很强的可读性、可靠性、结构性,能给用户提供高质量的转换代码。程序从功能上分为4个主要部分:主控程序;初始化子程序;中断服务子程序。主控程序流程图如图5 所示。

主控程序是整个程序的主干,在完成单片机的上电自检、RAM和SFR的初始化之后,主程序主要工作在循环状态,不断查询中断状态标志,发现中断后转去执行相应的操作。中断子程序拥有最高的中断优先级,响应中断之后,首先判断指令要进行的操作,找出相应的控制目标,再对其进行相应的控制操作。就AL700的编程而言,不论是初始化还是切换控制功能的完成,主要是对其寄存器的写和读操作,下面给出并行传输模式下寄存器读写的子程序清单。

void para_setreg(BYTE index, BYTE value) //通过并行口写寄存器
{
H_RDB_P=1; //主机处在写状态
para_setindex(index); //送寄嫫鞯刂?br> para_setvalue(value); //送待写数据
H_BUS=0xFF;
H_DENB_P=1;
}
BYTE para_getreg(BYTE index) //读寄存器
{
BYTE value;
H_RDB_P=0;
para_setindex(index);
value=para_getvalue(); //读出寄存器中的数据
H_BUS=0xFF;
return value;
}
void para_setvalue(BYTE value)
{
H_WRB_P=0;
H_DENB_P=0;
_nop_();
_nop_();
H_BUS=value;
H_WRB_P=1;
}
BYTE para_getvalue(void)
{
H_WRB_P=0;
H_DENB_P=0;
H_BUS=0xFF;
H_WRB_P=1;
return H_BUS;
}
void para_setindex(BYTE index)
{
H_WRB_P=0;
H_DENB_P=1;
_nop_();
_nop_();
H_BUS=index;
H_WRB_P=1;
}

         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com