一种单片机实现的嵌入式视频切换器
扫描二维码
随时随地手机看文章
随着多媒体通信技术的迅速发展,会议电视的理论研究和实用系统研制也得到了迅速发展。近年来,我国的会议电视业务也以超出人们想象的速度得到推广应用。视频矩阵切换电路是会议电视系统的关键部件。要求具有以下功能:
·具有与多媒体电脑通讯的功能。可根据实际安装的不同需要,提供可选的通讯接口。
·对主机发送的命令具有分析、判断、处理的功能。
·具有上电、掉电和死机等异常情况下的自恢复能力。
·对系统配置的更新具有保存的功能。当上级控制命令对系统更改成功时,能及时保存所更改的信息。
考虑到该部分电路在系统中的独立性和功能要求,决定选用89C51单片机作为主控CPU实现嵌入式的视频矩阵切换;视频切换电路则根据视频通道的多少,可选用 MAX459、AD8111等不同的视频矩阵切换芯片。
1 硬件构成
硬件电路主要由单片机控制器、矩阵切换电路、通讯接口、I2C总线数据存储器、看门狗电路及其它外围电路组成。框图如图1所示。
1.1 单片机控制器
89C51单片机是ATMEL公司生产的8位单片机,采用CMOS工艺,与Intel的8051单片机在管脚功能上完全兼容。该控制器采用P0口作为矩阵切换数据的输出口;P1口用来对矩阵切换发出/UPDATE、/CE等控制命令;P2口用来设置该控制器在整个会议电视系统中的地址。由硬件来设置控制器的地址可以增强系统的可靠性,方便软件的设计。
1.2 通讯接口部分
通讯接口可以根据实际安装的不同需要,提供RS-232标准和RS-485标准,其波特率可由用户编程设定。这部分电路主要由MAX202E(+5V RS-232接收发送器)、MAX491和光电耦合器件6N137构成。
1.3 复位与看门狗电路
采用MAX813L作为电源监视和看门狗电路。当电源上电、掉电时,该芯片都可提供复位电平,并且当其WDI管脚不能采集到翻转信号时,就会发送200ms的复位脉冲。单片机控制器采用P3.2脚定时向看门狗电路发送电压翻转信号,以示系统正常工作。当由于外部干扰或其他原因导致死机时,看门狗电路会自动发出复位信号。
1.4 I2C总线数据存储器
I2C总线是由Philips公司提出的串行通讯接口规范,使用串行数据线(SDA)和串行时钟线(SCL)来进行主从器件之间的数据传输。I2C总线上的数据传输率可达100Kbit/s,快速方式下可达400Kbit/s。在I2C总线传输中,开始和停止条件定义如下:当SCL为高时,SDA由高变为低为开始条件;当SCL为高时,SDA由低变为高为停止条件(如图2)。SDAH和SCL都是双向传输线,SDA线上的数据在时钟高期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的状态才可以改变(如图3)。输出到SDA线上的每一个字节必须是8位,每次传输的字节不受限制,每个字节必须有一个应答位。
在该控制器中,采用的串行E2PROM芯片是X24C04,SCL和SDA分别接单片机的P3.6和P3.7脚,数据的读写完全由软件控制。
1.5 矩阵切换电路
矩阵切换电路以16×8为基本单元,可根据实际需要扩充为32×8、64×8、128×16等不同规模。控制电路可通过参数的设定控制不同规模的切换电路。所采用的芯片AD8111是一种高速视频切换矩阵,具有260MHz的视频带宽。AD8111可在并行或串行模式下工作,八个输出通道可任选十六路视频输入中的一路。并行模式(本次所用的为并行模式)下,在信号/UPDATE为高,/CE为低的条件下,当CLK为高时控制器发出更新数据,在CLK由高变低时,AD8111通过A0~A2和D0~D4管脚分别将数据送至输出和输入寄存器。其中A0~A2表示选中的输出;D0~D3为所对应的输入;若D4=1,则A0~A2表示的输出为选通状态,否则输出为高阻态。当/UPDATE由高变为低时,选中的输出与输入连通,矩阵的更改完成。
2 软件设计
根据会议电视系统的整体要求,软件主要由主程序和串口中断服务子程序组成。编程时着重考虑了以下几方面:对整个控制器正确地初始化;对上级主控命令正确地分析、判断、处理;对矩阵的正确更新,对数据的及时保存(主程序流程如图4)。
2.1 主机控制命令
主机发出的控制命令有两种。第一种是定长的,包含8个字节(见图5)。C3H是开始字节,5AH表示结束;地址1、地址2表示控制器在整个系统中所处的位置;数据1、数据2包含了对矩阵输入输出更新的具体信息;优先级代表了本次命令的优先级别,00H级别最高;校验字节为前6个字节之和。第二种命令是分组控制命令,长度不定(见图6),C5H 表示第二种控制命令的开始;地址1、地址2同第一类控制命令;数据0是本次分组命令所控制的输出通道;数据1至数据n是本次分组中的输入通道;校验字节为前几个字节之和对FFH取余;55H 表示本次命令的结束。
2.2主程序
控制器在没收到主机发送的控制命令时,会一直运行于主程序之中。主程序主要完成对系统的初始化;定时向看门狗电路发送电压翻转信号;对主机的控制命令发送回传信息。
在初始化时,先从存储器中读取信息,判断读出的数据是否超出了矩阵的输入输出范围。若数据无误,则按此信息(一般是上次关机时控制器的状态)初始化矩阵。若发现某一数据有误,则按预先的约定初始化矩阵。控制器在向主机返回命令之前要判断回响标志,若标志为“1”,则调用回响主机的子程序,否则会跳过这一步,继续向看门狗电路发送电压翻转信号,以示其工作正常。
2.3 串口中断服务子程序
一旦控制器检测到串口有数据到来,就会发出中断请求信号。单片机在执行完当前的指令后,会转向服务子程序(流程如图7)。在子程序内要完成对主控命令的判断、分析、处理,完成对矩阵的更改及信息的保存等任务。中断服务子程序也是软件设计的核心部分与难点之处。在接收完主机发送的命令之后,要处理的事务有:
(1)判断命令是否正确。这包括判断命令是否正确;检查命令是第一类还是第二类。若是第一类命令,要检查其起始、结束字节和校验字节是否正确;输入输出是否在规定的范围之内。若是第二类命令,要保存分组信息,开启记时器。若检查有一点不对,将放弃该命令,恢复现场,退出服务子程序。
(2)在确认命令正确无误后,要检查对应的输出是否被锁定。若锁定标志为“0”,则直接更改矩阵;若输出被某一主控命令锁定,那么就要比较新接收到命令的优先级与锁定的优先级的高低,高于锁定的优先级则可以更改矩阵,否则更改失败。
(3)在更改矩阵之后,要及时地将更新信息写入存储器。并且将回响主机的标志置为“1”。
退出中断服务子程序后,对主机命令的回响有两种情况。若更改成功,则将主控命令按相反的顺序返回主机;若因优先级低而更改失败,则将锁定的高优先级返回主机,防止主机继续发送此控制命令。
2.4 记时器中断子程序
记时器中断子程序是用来实现分组功能的。控制器接收到主机的第二类命令时,记时器开始记时,然后每隔3分钟该组中的输出通道就会轮流接通所选中的输入,直到主机发出取消本次分组的命令。
3 可靠性分析
为了提高整个系统的可靠性,设计时主要采取了以下措施:
· I2C总线连接的E2PROM使得象在突然掉电这样的异常情况下,能保存住现场信息。
·看门狗电路具有自动复位的功能。
·通过光电耦合与主机的通讯,增强了抗干扰能力。
·应答式的数据通讯,再加上校验字节保证了通讯的可靠性。
·软件设计时对控制命令一系列的判断检查,能够确保对矩阵的正确更新,防止误操作。
该控制器设计思路巧妙,充分利用了所选器材的资源,成本低廉。实际应用表明,该控制器工作稳定,容错能力强,具有很高的实用价值。