基于FPGA实现红外遥控信号接收功能


前言

人的眼睛能看到的可见光,若按波长排列,依次(从长到短)为红、橙、黄、绿、青、蓝、紫,红光的波长范围为 0.62μm~0.7μm,比红光波长还长的光叫红外线。红外线遥控器就是利用波长 0.76μm~1.5μm 之间的近红外线来传送控制信号的。红外线的特点是不干扰其他电器设备工作,也不会影响周边环境,若对发射信号进行编码,可实现多路红外遥控功能。

红外遥控系统分为发射和接收两部分。发射部分的发射元件为红外发光二极管,它发出
的是红外线而不是可见光。接收电路的红外接收管是一种光敏二极管,使用时要给红外接收
二极管加反向偏压,它才能正常工作而获得高的灵敏度。然而现在不论是业余制作或正式的
产品,大都采用成品的一体化接收头。红外线一体化接收头是集红外接收、放大、滤波和比
较器输出等的模块,性能稳定、可靠。

本章将使用 FPGA 来对脉冲编码的数字序列进行解码。根据解码结果与红外遥控实际发出的数值进行比较从而判断解码是否正确,本段前言引用小梅哥开发教程。

一、红外接收原理

本章节主要是采用HT6221器件实现红外线接收,HT6221 为 Holtek 公司生产的一款基于 NEC 红外通信协议的遥控编码芯片,其采用PPM(Pulse Position Modulation)进行编码。基于 HT6221 芯片的红外遥控发送一次数据的数据帧定义如下图所示:一帧数据由帧头、地址码、数据码、数据反码以及 1bit 结束位(可忽略)组成,以上段落源自小梅哥开发教程。
在这里插入图片描述
其中,引导码由 9ms 高电平的头码和 4.5ms 低电平的间隙组成,其代表一个数据帧的帧头;地址码共 16 位,低位在前,高位在后。因此,NEC 协议理论上支持最高 65536 个不同的用户;8 位数据码及其反码也是低位在前,高位在后。因此,理论上该协议支持高达 256 个用户指令。该协议采用脉冲之间不同时长的时间间隔来区分“1”和“0”,下图为其编码协议中“1”和“0”的编码发送波形。
数据编码发送波形
而在实际接收时,接收头接收到信号后输出的波形刚好与此波形反相。因此,本模块的设计实际就是对下图 1 以及下图 2 波形的提取。数据 0 是 0.56ms 的低电平和 0.56ms 的高电平,数据 1 是0.56ms 的低电平和 1.69ms 的高电平。可见 0 和 1 的区别在于高电平持续时间的长短不同,根据这个区别就可以见别出 0 和 1 了。
在这里插入图片描述
在这里插入图片描述
以上说明了按键短按时数据波形,当按键长按时输出波形如下图所示,此处不再详述。为了简化设计方便理解,本模块设计先不对这种情况解析。
在这里插入图片描述

二、代码设计思路

这篇红外接收代码是比较简单的代码,相对于IIC来说,太简单了,只要知道协议是怎样的,那么通过modelsim对着仿真进行设计是易如反掌的,这里先补充说明一下,在设计当中很容易联想到通过计数器实现9ms等时钟统计,例如主时钟是125M,那么计数到9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值