摘 要:本文不用于以往的用標準51單片機對芯片進行初始化配置,而是采用一種新型單片機C8051F040對解碼芯片SAA7113進行初始化,并給出解碼芯片各個寄存器的配置值及其C8051F040專用SMBUS總線的使用方法。SMBUS總線與IIC總線兼容,C8051F040具有專用的SMBUS總線接口,不需要用單片機引腳模擬IIC總線,傳輸數據時只需要對其寄存器進行操作,這就大大節省了硬件資源,編程方便。
關鍵詞:視頻解碼;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所示。
[align=center]

圖1 SAA7113與C8051F040接口圖[/align]
單片機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所示。
[align=center]

圖2 主機發送示意圖[/align]
對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]為主機要發送的數據。
[align=center]

圖3 工作流程圖[/align]
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