用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

高速红外VFIR控制器的设计与实现

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:49:58
逻辑以及红外接口控制逻辑和红外接发器接口功能。

2.1 红外TX/RXFIFO与红外控制寄存器组控制逻辑

AMCC S5933支持3个物理总线接口:PCI总线接口、扩充总线接口和非易失性EEPROM总线接口。非易失性EEPROM用于映射PCI的配置空间及设备BIOS的初始化;扩充总线可以与外设设备互连。主机和外设之间可以利用S5933的邮箱寄存器、FIFO寄存器、直通寄存器(Pass-Thru)数据传输方式双向传输数据。

红外寄存器组包括红外接口控制寄存器和状态寄存器。本文中甚高速红外控制利用S5933直通寄存器单周期数据传送向红外接口控制寄存器写控制字,由Pass-Thru逻辑控制电路把地址和数据分离开,直通地址寄存器(APTA)经374锁存并译码,选通红外接口控制寄存器,同时把直通数据寄存器(PTDA)的低字写入红外控制器;该接口控制寄存器的数据宽度为16位,包括红外控制器始能、工作模式(UART、SIR、MIR、FIR、VFIR)的设置,接收或发送数据的选择以及满足SIR模式下多波特率的分频数。红外接口控制寄存器结构定义如图2。

同理使用直通寄存器方式获取红外接口状态寄存器的状态。红外接口状态寄存器结构定义如图3。
javascript:window.open(this.src);" style="cursor:pointer;"/>
    为满足高速数据传输,利用S5933 FIFO寄存器总线主控方式下的同步猝发(Burst)操作(DMA传送)完成主机与红外TX/RXFIFO的数据传输。PCI接口首先初始化S5933作为总线主控设备,然后由PCI接口向主控读/写地址寄存器(MRAR/MWAR)写入要访问的PCI存储空间地址,向主控读/写计数器(MRTC/MWTC)写入要传输的字节数。S5933提供了4个专用引脚RDFIFO#、WRFIFO#、RDEMPY#和WREULL#控制内部FIFO与外部FIFO的数据传输接口逻辑。接收/发送FIFO的数据宽度都是32位,分别由4片8位数据总线的IDT72220 FFO数据位扩展实现。该FIFO既为PCI接口提供数据缓冲,又为红外收发器接口提供访问数据。S5933与红外TX/RXFIFO、红外寄存器组的数据访问控制逻辑如图4。

2.2 红外接口控制逻辑

根据红外接口控制寄存器控制字,红外接口控制逻辑实现外部RX/TXFIFO与红外收发器接口之间的数据传输和逻辑时序。它的工作原理如下:根据控制字,首先启动红外收发器接口CRC校验、编解码器和可编程时钟(RX/TXFIFO读/写时钟RCLK、WCLK和编解码时钟fclock),然后根据控制字的TX/RX位决定是接收还是发送数据。发送数据时,TXFIFO缓冲器不为空,TXFIFO的EF信号就触发红外接口控制逻辑发TXFIFO读操作信号ENR#,读取TXFIFO的数据(数据宽度32位)传给红外收发器接口进行CRC校验、编码以及并/串转换。同理当甚高速红外控制器接收数据时,红外收发器接收到的数据经过译码、串/并转换(数据宽度32位),然后触发红外接口控制逻辑发出红外接收FIFO的写操作信号ENW#,把接收数据写入红外接收FIFO。当RXFIFO写满后,触发控制逻辑发出S5933 FIFO写信号WRFIFO#,上层协议启动PCI接口初始化S5933为同步主控写操作实现红外接收FIFO到主机内存的数据传畀。另外红外接口逻辑还实现红外接口状态寄存器状态的配置,以方便上层协议了解红外控制器工作状态。

2.3 红外收发器接口

红外收发器接口的设计与实现是红外控制器成功的关键。该接口需要实现各种工作模式(SIR、MIR、FIR、VFIR)的编解码器和硬件CRC校验、设计比较复杂。编码器前、译码器后,数据都要进行硬件CRC校验实现差错控制。SIR模式采用RZI(归零反转)编码,信号为高电平,调制为低电平;信号为低电平,调制为高电平脉冲,最大脉冲宽度是位周期的3/16。MIR模式也采用RZI(归零反转)编码,但最大脉冲宽度是位周期的1/4。FIR模式采用4PPM(脉冲位置调制)调制,它的原理是被编码的二进制数据流每两位组合成一个数据码元组(DBP),其占用时间Dt=500ns,再将该数据码元组(DBP)分为4个125ns的时隙(chip),根据码元组的状态,在不同的时隙放置单脉冲。由于PPM通信依赖信号光脉冲在时间上的位置传输信息,所以解调时先保证收发双方时隙同步、帧同步,然后根据脉冲在500ns周期中的位置解调出发送数据。考虑到红外收发器通信距离突然变化引发脉冲宽度扩展,发生码间干扰,导致译码出错,因此根据Hiroshi Uno提出的新算法[7]简化4PPM译码过程,并通过实验验证该算法比最大似然译码算法结构更简单,功耗更低,而且更容易实现。

VFIR模式采用HHH(1,13)编解码技术。编码器原理:为了正确实现编码,要求在计算内部码字C=(c1,c2,c3)之前,在nT(T表示一个chip时间)时刻到达编码器输入端的输入数据码元组d=(d1,d2)经过3个编码周期(每个编码周期是3T)的延时后进行逻辑计算,得到下一状态矢量值N=(s1,s2,s3),即与输入数据有关的N出现在(n+9T)时刻;再经过一个编码周期,即(n+12T)时刻,状态N赋给内部状态矢量S=(s1,s2,s3),同时计算与输入数据码元组d=(d1,d2)有关的内部码字矢量C=(c1,c2,c3),再经过一个编码周期,内部码字C赋给输出码字矢量Y=(y1,y2,y3)。由此可见16Mbps的数据速率经过编码器变为24Mchip/s编码速率,整个编码过程延时5个编码周期即15个chip。注意编码器初始状态S应设置为(1,0,0)。译码器原理:输入数据R=(r1,r2,r3)经过锁存器延时得到矢量Y4=(y10,y11,y12),对Y4进行不同的延时得到Y3、Y2及Y1。这里矢量Yi是Y4的4-I次延时(由锁存器实现延时);对Y4进行或非运算得到Zd,再将Zd进行不同的延时得到Zc和Zb。这里Zc、Zb、Zd是变量,然后将Y4、Y3、Y2、Y1、Zb、Zc、Zd进行逻辑运算、延时分别得到矢量X1=(x1,x2)、X2=(x3,x4)、X3=(x5,x6);最后将x1、x2经过锁存器得到译码器输出矢量值U=(u1,u2)。整个译码过程延时4个周期即12个chip。可见HHH(1,13)编译码电路比较简单,利用FPGA基于门级描述即可实现,但必须注意锁存器时钟fclock=1/3fchip。VFIR模式增加线性反馈移位寄存器(LFSR)实现加扰和解扰功能提高系统性能,减少误码。

图4 S5933与红外接收/发送FIFO,红外寄存器组数据访问控制逻辑图

3 甚高速红外VFIR控制器的软件设计

控制器软件主要分为三部分:系统初始化部分、接收部分、发送部分。系统初始化首先调用BIOS 1Ah中断功能获取设备PCI总线号、功能号、内存、I/O空间基地址和空间大小以及中断号,然后通过直通(Pass-Thrn)方式写控制命令初始化红外控制器,选择控制器接收或发送数据,设置控制器工作模式和波特率分频数并允许控制器工作。红外控制器具有收发双向数据传输能力。编程时将S5933FIFO设置成由PCI接口初始化为同步主控方式,支持突发传输(DMA);然后根据控制器收/发位判断PCI总线主控读还是主控写操作。程序采用中断控制,主程序调用set_up_pci_busmaster()初始化主控操作,该函数不仅装载访问内存实际地址和传输字节数,而且还要允许读/写传输字节数到零中断。红外控制器初始化完成后,系统等待中断。中断服务处理程序读取S5933中断状态/控制寄存器INTCSR判断中断源,并清除中断标志;读取CRC校验状态位,判断接收数据是否正确。发送数据时,中断服务处理程序还要检测红外发送FIFO状态位是否为1(1表示FIFO为空),不为1置发送不为发空标志tx_not_empty=1,主程序继续等待,直到TXFIFO数据为空;同理接收数据也需要检测红外接口状态寄存器的红色接收FIFO状态位是否为1(测试位为1表示FIFO为空)。这样可保证接收和发送FIFO的数据完全被取走。编写的应用程序使用Turbo C2.0调试通过。

PCI总线已经成为当今电脑的主流总线,为此根据红外串行物理层规范IRDA-1.4设计基本PCI总线的甚高速红外VFIR控制器。使用AMCC公司PCI总线专用控制器外加部分接口控制电路实现VFIR控制器硬件设计,缩短开发周期、提高效率、节约成本。目前正在使用VtoolsD开发虚拟驱动程序,解决系统如何分配红外控制器配置资源、如何访问硬件设备、如何处理硬件中断和总线主控DMA操作以及VXD和应用程序之间的通信。另外国外已有公司推出VFIR红外控制器专用芯片,如MKNET公司的MK7100。




上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:32,375.00000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号