侯继红
(广州科技贸易职业学院,广东 广州 511442)
由于红外遥控其体积小、功耗低、功能强、成本低等特点,在日常的家电(如电视、音响设备、空调、电风扇等)都采用红外线遥控[1-2]。在有辐射、高压、有毒气体等危险环境下工作的工业设备普遍采用红外线遥控来完成设备的操作[3]。红外线遥控是目前使用最广泛的一种通信和遥控手段。
近几年随着可编程逻辑器件性能的快速提高,它广泛应用于各个电子信息领域的前沿,已经由传统的通信应用领域向消费电子、汽车电子、工业控制等领域发展,电子工程师对它的认知度越来越高[4-5]。因此,采用可编程逻辑器件的开发语言VHDL语言设计红外遥控解码器,具有一定的应用价值。文章分析了由创芯微电子有限公司设计的用于红外遥控系统中的专用发射集成电CX6122的编码原理,并针对其编码原理提出用VHDL语言编程设计解码电路,该电路已通过综合验证,并在 CPLD芯片(EPM3128ATC100)的实验系统板上通过硬件测试,工作稳定,解码准确,不会出现误码。
CX6122 是一块用于红外遥控系统中的专用发射集成电路。CX6122 所发射的一帧码含有一个引导码,16 位的用户编码和8 位的键数据码及数据码的反码构成。帧码的结构如图1[6]示。
图1 CX6122发射的帧码结构
引导码由一个 9 ms 的载波波形和4.5 ms 的关断时间构成,它作为随后发射的码的引导。这样当接收系统是由微处理器构成的时候,能更有效地处理码的接收与检测及其它各项控制之间的时序关系。当一个键按下时间超过36 ms 后,输出一帧包含引导码、用户码和数据码的帧,超过108 ms 后,输出连发码的数据帧。遥控发射的波形如图2[6]示。图2中的第一段波形就是第一帧的数据编码部分的波形;第二段是第一帧完整的波形;第三段是连码帧的波形。这种遥控编码也是采用PPM, 以脉宽为0.56 ms、间隔0.565 ms、周期为1.125 ms的组合表示二进制的“0”;以脉宽为0.56 ms、间隔1.69 ms、周期为2.25 ms的组合表示二进制的“1”。如图3所示[6]。
图2 CX6122发射的波形[6]
图3 CN6122遥控的编码原理[6]
红外信号的接收使用的是一体化红外接收器HS0038,此接收器的功能是完成红外线的接收、放大及解调[7],还原成同发射格式相同,但相位相反的脉冲信号。红外线一体化接收头输出的脉冲信号经CPLD的其中一个I/O脚输入到内部由VHDL语言设计的解码电路解出数据码。
识别引导码方法很简单,只需要两段延时即可。数据解码的核心是如何识别二进制数码“0”和“1”。从上述可知红外线接收头输出的电平信号相位相反,即以0.56 ms的低电平和0.565 ms高电平组合表示“0”;以0.56 ms的低电平跟1.69 ms高电平组合表示“1”,它们都是以0.56 ms的低电平开始,以不同的高电平宽度来区分“0”和“1”。如果从0.56 ms低电平过后,开始延时0.565 ms,随后检测输入的状态,若读到的为低电平,则说明该位为“0”,反之则为“1”,为了可靠起见,延时时间应该大于0.565 ms,但不能超过1.125 ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.125 ms+0.56 ms)/2=0.842 ms最为可靠,一般取0.84左右即可[8]。因此,可以用VHDL语言的有限状态机来检测输入电平,实现状态转换和判断,并结合延时电路来识别“0”和“1”。
该控制电路采用VHDL语言的有限状态机设计方法来描述和实现,其状态转换图如图4所示。复位信号RES有效时,电路进入系统初始状态S0,在S0状态下时钟信号CLK,以一定的频率采样跟红外线接收头输出相连的CPLD I/O口输入信号Din,如果采样到Din=“1”,则没有接受到红外信号,即遥控按键没有操作,停留在S0状态,并继续采样Din输入信号的状态,一旦采样到输入信号Din= “0”,则遥控信号输出引导码低电平部分,并转入S1状态,在S1状态下经过9 ms延时转入状态S2,在S2状态下如果检测到Din=“1” 则引导码进入的高电平部分,并转入状态S3,在S3状态下延时,当时间到4.5 ms时转入状态S4,从S4开始状态机进入数据解码状态,在S4下检测到Din=“0”,可知遥控编码信号输出正是PPM编码的0.56 ms的脉宽(0.56 ms载波),然后转入状态S5,用S5来判断0.56 ms的脉宽是否已结束,如果Din=“1”则脉宽已结束,转入状态S6,在S6状态下延时0.84 ms ,然后转入S7状态,在状态S7下判断该位是“0”,还是“1”,如果Din=“0” 则确定该位是“0”,否则是“1”,并使解码位数计数器CNT32加1,随后进入S8状态,在S8下将解出的数据移入32位移位寄存器,并通过解码位数计数器CNT32的值判断遥控信号的32位数据是否解码完,如果CNT32<33则仍未解完,转入S9状态,在S9下判断遥控信号PPM编码的下位0.56 ms的脉宽,当Din=“0”时,则是下一位数据脉宽,随即转回状态S5,又通过S5、S6、S7、S8、S9状态完成数据的解码;如果在S8状态下CNT32>33,则32位数据已解码完,转入状态S10,在状态S10进行解码数据的输出,并转入状态S11,在状态S11延时20 ms,然后返回状态S0,至此完成一个数据帧解码过程。
图 4红外遥控解码器的状态转换
详细地分析了用VHDL语言有限状态机设计红外遥控解码器的原理和方法,并在CPLD器件上通过硬件测试,试验结果表明这种解码方法可靠。随着FPGA/CPLD器件的性能不断提高,其应用领域也越来越广泛,这种方法在要求红外控制的可编程逻辑系统设计中有一定的应用价值。
[1] 张建军,穆远祥, 韩江洪. 一种16位码红外遥控器解码方法[J].合肥工业大学学报:自然科学版,2008(02):171-174.
[2] 钱敏.基于 FPGA/HDL 的红外遥控接收信号解码器设计[J].通信技术,2009,42(08):219-224.
[3] 丁跃华,陈艳峰. 基于 EDA技术的红外遥控系统设计[J].电子元器件应用,2006(09):78-80.
[4] 黄如建.红外遥控器解码设计[J]. 电子元器件应用,2006(07):90-92.
[5] 廖超平.EDA技术与 VHDL实用教程[M]. 北京:高等教育出版社,2007.
[6] 无锡创芯电子有限公司.CX6122-001产品手册. [DB/OL] (2009-05-04)[2009-09-10].http://www.si- core.com/product/remote.htm.
[7] 潘松,黄继业. EDA技术与VHDL[M].北京:清华大学出版社,2005.
[8] 戴培山,冯成德.基于Keilc51的红外遥控器解码设计[J].自动化与仪器仪表, 2003(06):11-13.