新闻中心

EEPW首页 > 设计应用 > AL700在视频切换中的应用

AL700在视频切换中的应用

——
作者:上海理工大学光电学院 杜娟娟 张凤登 时间:2007-01-26来源:《世界电子元器件》收藏

al700功能框图及介绍

本文引用地址:http://www.eepw.com.cn/article/20586.htm

图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路分时使用同一解码器。

⑶编码输出接口: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编码器。



⑷主机接口: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;
}



关键词:

评论


相关推荐

技术专区

关闭