关键词:视频解码;SAA7113;C8051F040;SMBUS总线
Abstract:The video decoder chip SAA7113 is initialized by the Single Chip Microcomputer C8051F040 which is a new type MCU instead of the standard 51 MCU . The paper introduces the configuration of the various registers in the video decoder and the use of SMBUS which is exclusive in the Single Chip Microcomputer C8051F040.SMBUS is compatible with IIC,C8051F040 uses exclusively interface of SMBUS instead of the analog IIC in the standard 51 MCU. SMBUS only operates its registers to save the hardware resources and to make programming conveniently when it transmits the data.
Key words:video decoder; SAA7113; C8051F040; SMBUS
SAA7113是飞利浦半导体推出的9位视频AD芯片,在很多视频产品如电视卡、MPEG2、MPEG4中都有应用,也可用于可视对讲、可视门铃、可视电话中。SAA7113的主要作用是把输入的模拟视频信号解码成标准的“VPO”数字信号,SAA7113兼容全球各种视频标准,可根据需要将其配置为相应的视频标准, 即初始化,否则SAA7113就不能按要求输出,在我国应用时习惯上将其配置为PAL制式。对SAA7113初始化需要通过IIC总线进行,本文用C8051F040单片机对其进行初始化及其控制。C8051F040单片机是51单片机的一种,但是它不同于普通的51单片机,它具有专用的IIC接口,只需要对特定的SMBUS总线寄存器进行操作,编程方便。
1、SAA7113的基本原理及其寄存器介绍
SAA7113是一种视频解码芯片,它可以同时输入4路CVBS或者2路S视频(Y/C)信号,通过内部寄存器的不同配置可以对输入进行切换,输出为8位的“VPO”数字信号,为标准的ITU656、YUV 4:2:2格式。SAA7113兼容PAL、NTSC、SECAM等多种制式,可自动检测50或60Hz的场频,通过寄存器不同配置在各种制式间切换。
SAA7113的寄存器地址从00H开始,到FFH结束。其中00H、1FH、60H~62H为只读寄存器,不可写;14H、18H~1EH、20H~3FH、63H~FFH为保留地址;只有以下寄存器可读写: 01H~05H(前端输入通道部分),06H~13H、15H~17H(解码部分),40H~60H(常规分离数据部分)[1]。
对各个寄存器的配置值如下[2]:
寄存器地址:
01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH, 0FH,10H,11H,12H,13H,15H,16H,17H,40H,41H~57H,58H,59H,5AH,5BH,5EH
寄存器配置值:
08H,0C0H,33H,00H,00H,0EBH,E0H,0B8H,01H,80H,47H,42H,01H,01H
0FH,00H,0CH,0A7H,00H,00H,00H,00H,02H,FFH~FFH,00H,54H,07H,83H,00H
2、SAA7113与单片机C8051F040接口设计
C8051F040通过SMBUS(System Management Bus)总线(一种与IIC兼容的数据总线)将SAA7113各个寄存器的配置值送入解码芯片SAA7113,单片机C8051F040与SAA7113接口电路设计如图1所示。
图1 SAA7113与C8051F040接口图
单片机C8051F040有标准8051的端口(0、1、2和3),又有4个附加的8位端口(4、5、6和7),因此共有64个通用的I/O口,这些端口的工作情况与标准8051相似,但是有一些改进。每个端口都可以被配置为推挽或者漏级开路输出,另外还引入了数字交叉开关,这是一个大的数字开关网络,允许将内部数字系统资源映射到P0、P1、P2和P3的端口I/O引脚。这一特性允许用户根据自己的特定需要选择通用端口I/O和所需数字资源的组合。
通过配置端口I/O交叉开关寄存器0——XBR0=0x01和端口I/O交叉开关寄存器2——XBR2=0x40,将单片机的P0.0和P0.1引脚分别作为SMBUS总线的SDA(Serial Data)和SCL(Serial Clock)脚。
3、SMBUS总线时序
SMBUS是Intel开发的双向二线总线,其I/O接口只有2条接线:SDA和SCL。SCL传输总线时钟,SDA传输总线数据。C8051F040 SMBUS总线符合SMBUS VL1.1规范且与IIC总线兼容[3]。
SMBUS接口可以被配置为工作在主方式或从方式,其传输模式可分为主机发送、主机接受、从机发送、从机接收4种模式。本系统中单片机作为主机向SAA7113发送数据。在SDA上发送串行数据,在SCL上输出串行时钟。本文只给出单片机作为主机发送示意图如图2所示。
图2 主机发送示意图
对SMBUS串行接口的访问和控制是通过5个特殊功能寄存器来实现的:控制寄存器SMB0CN,时钟速率寄存器SMB0CR,地址寄存器SMB0ADR,数据寄存器SMB0DAT和状态寄存器SMB0STA。通过SMB0STA寄存器可获取发送、接收信息,以控制数据传输过程;通过SMB0DAT接收,发送数据;通过SMB0ADR寄存器配置从机自身的地址。
本系统将SMB0ADR配置为SAA7113的地址0x4a,SMB0CR配置为0x40,SMB0CN的初始值配置为0x40,即:使能SMBUS总线并将总线初始状态设为空闲状态。
4、软件设计
主机在发送之前先查询BUSY(SMB0CN.7)位,若该位为0,则总线空闲,主机可以占用总线,否则表示总线忙,主机可一直查询该状态,直至BUSY=0。主机通过将STA(SMB0CN.1)置1产生起始条件。
起始条件发送后会产生中断,主机在中断中查询SMB0STA的值,如果SMB0STA=0x08,则表明起始位发送成功,此时将STA=0,并将从机地址和写控制位送入SMB0DAT,再将SI(SMB0CN.3)置0,SMB0DAT中的数据按从高位到低位的顺序发送出去。
从机接收到地址,并以自身地址比较,如果相符合,产生ACK信号。主机产生中断,查询SMB0STA的值,若SMB0STA=0x18,表明从机地址和写控制发送成功,并受到应答信号,此时将主机待发送数据装入SMB0DAT,并将SI置0。
从机接收到数据,并产生ACK信号,主机中断,查询SMB0STA的值,若SMB0STA=0x28,则主机上次数据发送成功。若主机没有发送完毕,继续发送;若发送完毕,将STO(SMB0CN.4)置1,结束发送。工作流程图如图3所示,其中aa[k]为主机要发送的数据。
图3 工作流程图
5、仿真结果
通过keil3仿真器进行仿真,并单步执行,随时查看SMBUS各个寄存器中的值,确保数据发送。图4、图5、图6分别为数据起始位发送成功、从地址和写控制位发送成功和数据发送成功的仿真结果图。
6、结论
SAA7113在很多产品中都有应用,本系统通过C8051F040单片机对其进行初始化,不必通过模拟化的IIC总线进行数据传送,节省资源,并在实际试验中的得到了验证。
参考文献
[1]张晓健.视频解码芯片SAA7113的初始化与控制[J].电子设计应用,2003,(8):84-85
[2]SAA7113H Product specification/Data sheet. PHILIPS,1999
[3]童长飞.C8051F系列单片机开发与C语言编程[M].北京:北京航空航天大学出版社,2005
本文关键字:暂无联系方式电工文摘,电工技术 - 电工文摘