APP下载

基于FPGA的红外遥控器解码实现研究

2015-05-30渠海荣

中国新通信 2015年9期

渠海荣

【摘要】 本文主要研究基于FPGA的红外遥控器解码实现研究。主要介绍红外遥控器的工作协议,通过红外接收头接收红外遥控器发送的红外波形,用FPGA对其进行解调和编码模拟红外遥控器的工作时序,并用Modelsim进行仿真验证与实际的信号进行比较判断。

【关键词】 红外遥控器 VS1838B FPGA Modelsim

一、引言

红外遥控器已被广泛使用在各种类型的家电产品上,它的出现给使用电器提供了极大便利,因此研究红外遥控器的实现原理有其必要性。红外遥控系统一般由红外发射装置和红外接收设备两大部分组成,如图1所示。

二、红外遥控器协议

目前的红外遥控器大多数采用NEC协议,该协议采用脉宽调制的传行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“O”;以脉宽为0.565ms、

当遥控器按下按键时,遥控器将发出一串二进制代码,称为一帧数据。可将它们分为5部分,分别为引导码、用户码、用户反码、数据码和数据反码,共32bit。

遥控器发射代码时,均是低位在前。高位在后。其中引导码高电平为9ms,低电平为4.5ms,当接收到此码时,表示一帧数据的开始。解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“O”和“l”均以0.565ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“O”和“l”。

三、FPGA红外解码

本文采用的的是VS1838B通用一体化红外接收头,将一体化红外接收头VS1838B的输入引脚接至FPGA的一个管脚,由于VS1838B的反相作用,在无红外信号时为高电平,一旦检测到有红外信号,起始输入变成低电平。系统便进入接收状态,检测到FPGA引脚点平变化,并计算每一个高、低电平的脉冲宽度。通过脉冲宽度来识别引导码、用户码和数据码。

对红外信号的解码本文主要是通过状态机来实现,状态机主要依据红外编码规则,实现红外编码的解码,利用状态转换方式区分不同区域的红外编码,实现相应的译码。通过分析可以将红外信号分为6个状态过程,分别是idel,red_posedge,check_9ms,red_negedge,check_4ms,red_c.ode.

状态图工作流程:系统上电复位后进入idel状态,等待红外信号的到来,一旦到来进入red_posedge状态,等待红外信号上升沿的到来,一旦到来,将进入check_9ms状态,判断时间是否达到9ms,如果没有达到9ms,将回到idel状态,如果是将进入red_negedge状态,在red_negedge状态等待红外信号下降沿的到来,一旦到来,将进入check_4ms状态,判断时间是否达到4ms,如果没有达到4ms,将回到idel状态,如果是将进入red_code状态,在red_code状态下实现对红外信号的解码。

四、红外解码的仿真实现

为了保证FPGA红外解码的正确性,需要用Modelsim对代码进行仿真验证,在Modelsim中模拟红外信号作为输入,在FPGA中获得输入,进行仿真验证,引导码仿真结果如图5所示。

从图5可以看出在时钟的作用下先产生9ms的低电平在产生4ms的高电平。

在产生引导码之后,还需对红外数据进行仿真验证,如图6所示

从图6可以看出产生用户码Ox00、用户反码Ox00、数据码Oxll和数据反码Oxll,共一帧数据。

仿真整体结果如图7所示。从图7可以看出,红外信号的代码是正确的,符合红外信号的数据规则。

五、小结

基于FPCA的红外遥控器解码实现研究,对红外信号的工作过程进行详细的说明,实现红外信号的F'PCA代码,并对FPCA代码进行了仿真验证,实现红外遥控器的解码。