1 / 31

基于 SPCA718 的 IOP 实现

SUNPLUS TECHNOLOGY FOR EASY LILE. 基于 SPCA718 的 IOP 实现. 数码影音二部 吴中建 2004/04/28 E-MAIL:WUZHJ@SUNPLUS.COM.CN. SUNPLUS TECHNOLOGY FOR EASY LILE. 目录. IOP 的功能 6502常用指令搭配简介 IOP 的内存的分配 IOP、RISC 与 GPIO 的联系 IOP 具体软件的实现 I2C 简介 Q&A. SUNPLUS

dung
Download Presentation

基于 SPCA718 的 IOP 实现

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SUNPLUS TECHNOLOGY FOR EASY LILE 基于SPCA718的IOP实现 数码影音二部 吴中建 2004/04/28 E-MAIL:WUZHJ@SUNPLUS.COM.CN

  2. SUNPLUS TECHNOLOGY FOR EASY LILE 目录 • IOP的功能 • 6502常用指令搭配简介 • IOP的内存的分配 • IOP、RISC与GPIO的联系 • IOP具体软件的实现 • I2C简介 • Q&A

  3. SUNPLUS TECHNOLOGY FOR EASY LILE IOP的功能 • IOP is I/O process。是一个8位的MCU,它用做718的中间处理器。 • 在718中处理一些实时的功能,负责控制周遍的设备,可以响应比较快的动作,减少RISC的负担。 • 通常用于IR的接受,VFD的键扫和送显,GAME手柄的接收,QCODE的接收,I2C通讯 。

  4. SUNPLUS TECHNOLOGY FOR EASY LILE 6502常用指令搭配简介——寄存器 大多数操作都是在此进行 用于间接寻址

  5. SUNPLUS TECHNOLOGY FOR EASY LILE 6502常用指令搭配简介——状态寄存器(P) 进位标志 负数标志 零标志 溢出标志 中断标志 暂停命令标志 十进制模式标志

  6. SUNPLUS TECHNOLOGY FOR EASY LILE 6502常用指令搭配简介——数的表示 • 二进制数的表示: #%00000001或#00000001B • 十进制数的表示: #01或#01D • 十六进制数的表示: #$01或#01H 寄存器的寻址方式请参考6502_inst.pdf,在此不在赘述。

  7. SUNPLUS TECHNOLOGY FOR EASY LILE 6502常用指令搭配简介——常用指令(1) 1, 位置高、置低指令, rmb bit, BYTE ;;置低 smb bit, BYTE ;;置高 这两条指令为对某一个BYTE的其中一位置高,置低,这在写OUTPUT 可用 2, 判断某一位高低而转移到不同的分支 bbr bit, BYTE ,标识 ;;若这一BYTE的bit为低,则程序跳转到标识处执行,否则就顺序执行 bbs bit, BYTE , 标识 ;;若这一BYTE的bit 为高,则程序跳转到标识处执行,否则就顺序执行 3, 程序分支语句: jmp 标识 ;; 它为程序跳转到某一分支执行,跳转的范围较大。 bra 标识 ;; 它为程序跳转到某一分支执行.其实相当与jmp,只是跳转的范围较小。

  8. SUNPLUS TECHNOLOGY FOR EASY LILE 6502常用指令搭配简介——常用指令(2) 4,判断标志位高低而转移到不同的分支 bcc 标识 ;;若c为0,则程序跳转到标识处执行,否则就顺序执行 bcs 标识 ;;若c为1,则程序跳转到标识处执行,否则就顺序执行 beq 标识 ;;若z为1,则程序跳转到标识处执行,否则就顺序执行 bne 标识 ;;若z为0,则程序跳转到标识处执行,否则就顺序执行 5,比较指令, cmp DATA ;该指令主要影响标志位 这条指令为A中的数和DATA的值比较。若A>=DATA,C=1;若A<DATA,C=0;若A=DATA,Z=1。所以,经常和bcs、bcc、beq指令配合使用。cpx、cpy和cmp用法相同。 其余指令请参考6502_inst.pdf文件

  9. SUNPLUS TECHNOLOGY FOR EASY LILE IOP memory Cache memory 0 $0 $40 Zero page $ff NMI,RESET, IRQ Vector 448 byte $106 Page 1(Stack Area) $1ff $1ff 32 byte 32 byte 32 byte 32 byte $240 $0 ~$40 (I/O area) : 512 byte cache $ffff Only 2 Direct Mapped Cache line, each 32 bytes IOP的内存的分配——I/O and cache

  10. SUNPLUS TECHNOLOGY FOR EASY LILE IOP的内存的分配——IO Area ($00 - $3F) $00 - $07(RW): 64-bit GPIO Values(置高置低) $08 - $0F(RW): 64-bit GPIO_OE (1 to enable output)(输入输出) $10 - $1F: RISC-IOP IF Registers (数据交换区) $20: INTR_MASK (W), (中断使能寄存器) bit7: NMI, bit2: RISC INTR, bit1: TIMERA bit0: TIMER B $21: INTR_FLAG (RW)(中断响应寄存器) bit7: NMI, bit2: RISC INTR, bit1: TIMERA bit0: TIMER B write 1 to clear interrupt flag $22-$23: TIMER A (Low-High), (定时器) write will cause count from 0 to that value, then may generate interrupt $24-$25: TIMER B 具体的设置在iop.inc中

  11. SUNPLUS TECHNOLOGY FOR EASY LILE 定时器以初值减,产生溢出中断 Timer A $22 $23 Intr A Overflow Timer B $24 $25 Intr B Overflow SYS_CLK

  12. SUNPLUS TECHNOLOGY FOR EASY LILE gpio_sel_aux gpio_sle IOP、RISC与GPIO的联系 RISC path: gpio_oe[4] gpio_out[4] gpio_in[4] GPIO 0~41 gpio_master Decide GPIO route IOP path: $00 ~$0F Register Select GPIO control path 1: RISC 0:IOP

  13. SUNPLUS TECHNOLOGY FOR EASY LILE RISC 对I/O口如何设置

  14. SUNPLUS TECHNOLOGY FOR EASY LILE IOP 对I/O口如何设置 1、对I/O的置高、置低需要对应的64bit的空间来控制,对应的位写0-置低;写1-置高。在iop.inc中定义如下: GPIO_PROT0 EQU $00 ; 对应GPIO0-7 GPIO_PROT7 EQU $07 ;对应GPIO56-63 2、对I/O的输入、输出也需要对应的64bit的空间来控制,对应的位写0-输入;写1-输出。在iop.inc中定义如下: GPIO_IO0_CFG EQU $08 ;对应GPIO0-7 GPIO_IO0_CFG EQU $08 ;对应GPIO56-63

  15. SUNPLUS TECHNOLOGY FOR EASY LILE IOP与上层的接口 状态标志 时间中断标记 Ir数据 游戏手柄数据 面板按键码值 IOP_DATA0_L …. IOP_DATA7_H (16BYTE) 寄存器 IOP-DATA[8] Vfd_mem[ ]—sent out Qcode_data[ ]--recieve SDRAM space: Sdram_base+ iopya*1024+0x400 $400--$41f(32BYTE) $420--$42a(10BYTE)

  16. SUNPLUS TECHNOLOGY FOR EASY LILE 2K IOP空间具体结构 1:了解Dram中各部分空间很重要,编写程序时请务必有 Stack空间的概念,否则,出现莫名其妙的问题时麻烦 就来了; 2:IOP Code Size亦不能无限扩展,以免冲掉伺服变量 导致系统伺服动作失效。

  17. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——软件的总体架构 Reset 初始化 定时器中断 每100uS发生一次 Virq { 1,清除中断标志 2,用户的计数变 量递减 3,通过data5提供 上层1ms和10ms 的信号 } Mainloop { Qcode service Ir service Vfdr service Vfdw service } 中断返回

  18. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——IR头码的抓取(1) • 判断头码是关键程序 • 提醒您注意几个地方: 1,irq.asm中的rIrCountH 2,rIrCountH与rIrCountLbuf关系。这两个参数在高低电平变化时相互配合,完成时间判定。 3,注意irq 一次循环100us

  19. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——IR头码的抓取(2) • 以NEC为例,时间长度的描述。 例:先9ms LOW,后4.5msHIGH,说明IR HEAD已传来,系统需要接受IR。 rIrCountH记数 ~ IR in 定时100US rIrCountLbuf记数 ~ Timer B

  20. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——IR头码的判断(3) • lda rIrCountLbuf • cmp #80 • bcc Irclearcount ;;小于8ms  Irclearcount • cmp #98 • bcs Irclearcount ;;大于9.8ms Irclearcount ;;由上判断,将时间限制在8到9.8之间。在此之间,既为:9ms • lda rIrCountH • cmp #50 • bcs Irclearcount ;;接下来大于5ms ( 50*100us = 5ms) ;; Irclearcount • cmp #20 • bcc Irclearcount ;;小于2ms Irclearcount • cmp #35 • bcc Irisrepeat ;;小于3.5ms Irisrepeat • cmp #40 • bcc Irclearcount ;;小于4ms Irclearcount • lda #32 • 注释:上面的时序描述,完全反映了头码及重复码的判定过程。

  21. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——IR数据的抓取 • cmp #11 // >>11,为1。Else 0 • ror rIrReceiver • ror rIrReceiver+1 • ror rIrReceiver+2 • ror rIrReceiver+3 C C D7 D6 D5 D4 D3 D2 D1 D0 C C

  22. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——IR数据校验和保存 • lda rIrReceiver+1 ;数据原码 • eor rIrReceiver ;数据反码 • cmp #FFH ;异或结果与0FFH比较 • bne Irdataerr ;不相等,跳转;数据错误 • lda rIrReceiver+3 • sta IOP_DATA6_H ;数据正确,保存IOP_DATA6_H • lda rIrReceiver+1 • sta IOP_DATA6_L ;save to IOP_DATA6_L • 注:1、到此为止,IR的数据已经接收完成并保存到上层接口的寄存器中,上层可以自由调用了。 2、在数据的接收中,采用顺次从高到低移位。所以,先进入的数据被存入了低位。和示波器中的正好相反。

  23. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——VFD数据的收发(1) • VFD数据的传输是在STB为低电平,CLK为上升沿时进行数据的传输。在程序中,我们就是模仿STB和CLK的时序,进行数据的接收和发送。具体的程序已经注释好了,在此不在讲述。

  24. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——VFD数据的收发(2) • VFD数据的接收用ror rVfddata ;和IR的接收一样。 • VFD数据的发送用lda VFD_BUFFER_BASE,x sta rVfddata • VFD-BUFFER:$400-$41c共28个字节。其中有4B的控制字和24B的数据。在我们程序中只用了16B的数据。

  25. SUNPLUS TECHNOLOGY FOR EASY LILE IOP具体软件的实现——QCODE数据的接收 • QCODE数据包括96bit,其中80bit的数据位和16bit的CRC校验位。我们程序中分两种接收,一种是接收96bit;一种是接收80bit。 • 数据接收用rol rQcodedata,x • 接收96bit: • xxyy: • lda rQcodedata,x • sta QCODE_BUFFER,x • inx • cpx #12 ;;接收12bytes=96bits • bne xxyy • 接收80bit: • xxyy: • lda rQcodedata,x • sta QCODE_BUFFER,x • inx • cpx #10 ;;接收10bytes=80bits • bne xxyy

  26. SUNPLUS TECHNOLOGY FOR EASY LILE I2C总线简介 • I2C总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。 • 在 I2C总线上传送的一个数据字节由八位组成。总线对每次传送的字节数没有限制,但每个字节后必须跟一位应答位。 • 标准I2C总线的设备都有一个七位地址,所有连接在I2C总线上的设备都接收启动信号后的第一个字节,并将接收到的地址与自己的地址进行比较,如果地址相符则为主机要寻访的从机,应在第九位答时钟脉冲时向SDA线送出低电平作为应答。 • 启动信号后的第一个字节数据具有特殊含义:高七位是从机的地址,第八位是传送方向位,0表示主机发送数据(写),1表示主机接收数据(读)。被寻址到的从机设备按传送方向位设置为对应工作方式。

  27. SUNPLUS TECHNOLOGY FOR EASY LILE I2C器件地址介绍 • 由于I2C总线可挂接多个串行接口器件,在I2C总线中每个器件应有唯一的器件地址,按I2C总线规则,器件地址为7位数据(即一个I2C总线系统中理论上可挂接128个不同地址的器件),它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位(读/写)。 • 器件寻址字节中的最高4位(D7~D4)为器件型号地址,不同的I2C总线接口器件的型号地址是厂家给定的,如AT24C系列E2PROM的型号地址皆为1010,器件地址中的低3位为引脚地址A2A1A0,对应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚电平给定。

  28. SUNPLUS TECHNOLOGY FOR EASY LILE AT24C系列串行E2PROM • 对于E2PROM的片内地址,容量小于256字节的芯片(AT24C01/02),8位片内寻址(A0~A7)即可满足要求。然而对于容量大于256字节的芯片,则8位片内寻址范围不够,如AT24C16,相应的寻址位数应为11位(211=2048)。若以256字节为1页,则多于8位的寻址视为页面寻址。在AT24C系列中对页面寻址位采取占用器件引脚地址(A2、A1、A0)的办法,如AT24C16将A2、A1、A0作为页地址。凡在系统中引脚地址用作页地址后,该引脚在电路中不得使用,作悬空处理。AT24C系列串行E2PROM的器件地址寻址字节如表所示,表中P0P1P2表示页面寻址位。

  29. SUNPLUS TECHNOLOGY FOR EASY LILE I2C的时序和模拟程序 void I2cStart(void) { Set_SDA_1; Set_SCL_1; delay_time(1); Set_SDA_0; delay_time(1); } void I2cStop(void) { delay_time(1); Set_SDA_0; Set_SCL_1; delay_time(1); Set_SDA_1; }

  30. SUNPLUS TECHNOLOGY FOR EASY LILE I2C完整的数据传输 读写控制位 启动I2C总线 结束I2C总线 7位器件地址 应答信号 应答信号 传送一个字节数据 应答信号 传送一个字节数据

  31. SUNPLUS TECHNOLOGY FOR EASY LILE Q &A 衷心感谢胡工和潘工细心的讲解和指导! 感谢SVCD全体同仁! 感谢在坐的各位同仁! 谢谢大家!

More Related