基于NiosⅡ的学习型遥控器设计
扫描二维码
随时随地手机看文章
摘要:以Altera FPGA系列Cyclone EPlCl2Q240C8器件为载体,通过SoPC技术构建嵌入式软核NiosⅡ处理器平台,运用Verilog HDL硬件描述语言设计等精度测量载波频率IP核、红外信号解调IP核、红外编码脉宽测量IP核和红外发送调制逻辑电路,以实现载波的精确测量、红外信号解调、脉宽测量和调制功能,并给出了外围硬件电路和软件设计方案。实验表明,该遥控器解决了单片机因时钟频率低而无法对载波频率进行测量的瓶颈,实现了对任何一款普通遥控器的按键编码学习,真正完成了学习型遥控器的学习功能。
关键词:软核处理器;等精度;遥控器;FPGA/SoPC
O 引言
红外遥控器在家电产品中被广泛应用,但各产品的遥控器采用了不同的频率或编码方式,导致这些遥控器不能相互通用,这给人们的生活带来了诸多不便。针对这个问题,很多厂家设计和生产了一种称为万能遥控器的红外信号遥控装置,这类遥控器大多数采用复制遥控器红外波形达到学习目的,其方法简单,实现起来较方便,通过对不同普通遥控器发出的红外线编码进行学习和存储,可以对多个家用电器进行遥控,从而可以减少家庭中遥控器的数目。但是,这类遥控器通常采用专用 ASIC或单片机来实现,并且只能接收单一载波的红外信号编码,导致实际使用时有诸多局限,主要体现在:如果家用电器遥控装置的载波频率不同,万能遥控器将无能为力;不同的家用电器使用单一的遥控器界面,容易产生混淆和误操作;受存储空间的限制,能够支持的遥控器数目有限。
因此,本文设计了一种基于NiosⅡ的红外学习型遥控器,把载波频率测量、红外信号解调、脉宽测量、调制发送IP核集中到FPGA器件上,极大地简化外围硬件电路,利用了Nios软核CPU的32位处理器,可以很好地对脉宽进行精确测量,同时提高处理速度,能够精确地对载波频率进行测量,并将原始的红外信号进行最大程度上无失真还原,解决了单片机因时钟频率低无法对载波频率进行测量的瓶颈,实现了对各种各样红外遥控的学习,真正完成了学习型遥控器的学习功能。
1 整体设计方案
系统主要由NiosⅡ处理器、Avalon总线、EPCS控制器、SDRAM控制器、FLASH控制器、输入输出I/O口、等精度测量载波频率IP核、红外信号解调IP核、红外编码脉宽测量IP核、红外发送调制逻辑电路、中断控制器等组成,如图1所示。上电后,系统通过EPCS调用系统配置信息,系统进行初始化。当“学习”键按下时,通过I/O口中断产生一个测量红外载波频率请求信号,此时“学习”指示灯亮。当检测到外部遥控红外信号时,处理器通过Avalon总线调用等精度测量载波频率IP核开始测量频率,“学习”指示灯熄灭表示学习载波频率成功。接下来通过“家电”按键即可将该载波频率储存到该家电红外编码FLASH载波频率存储区域。对应的“家电”指示灯亮,表示可以进入该家电红外遥控信号学习或发送阶段。学习时,只需将家电遥控器发送窗对准学习型遥控器的接收窗,发送红外遥控信号。此时Nios软核处理器会通过Avalon总线调用红外信号解调IP核和红外编码脉宽测量IP核,完成红外信号的解调和一帧完整编码脉宽高低电平时间测量(此过程中处理的所有数据存储在SDRAM中)。当“学习”灯再次亮起,表示该信号已得到确认。按下学习型遥控器的任一功能键,即可将该信号送到指定的该家电按键FLASH存储区域;发送时,先选择“家电”选择键(即选定了载波频率),然后按下“功能键”时,NiosⅡ处理器会自动调用FLASH存储数据,通过红外发送逻辑电路调制到载波上,完成红外信号还原。
2 硬件电路设计
2. 1 主控制电路设计
主控制电路主要以Altera FPGA系列Cyclone EPlCl2Q240C8器件为载体,通过SoPC技术构建嵌入式软核NiosⅡ处理器平台,运用Verilog HDL硬件描述语言设计等精度测量载波频率IP核、红外信号解调IP核、红外编码脉宽测量IP核和红外发送调制逻辑电路,以实现载波的精确测量,红外信号解调、脉宽测量和调制功能。复位电路采用了专用看门狗芯片CATl025,以避免电路的死循环,同时也可以通过手动按下复位键,使系统重新启动。时钟是采用外部时钟方式,其频率为50 MHz。主控制电路图如图2所示。
2.2 外围硬件电路设计
2.2.1 按键与指示电路
为了简化软件程序,结合FPGA多I/O口的优势,本设计采用独立按键方式,当按键按下时,FPGA对应的I/O口会检测到低电平;按键弹起时,FPGA 对应的I/O口会检测到高电平。对于指示电路,采用不同颜色的发光二极管来指示不同的状态或控制不同的家用电器,当其中的一个指示灯闪烁时,表示正在学习对应的家电遥控器或者是发送对应的家电遥控信号。
2.2.2 红外接收和发送电路
红外接收电路由红外二极管、三极管9014及电阻组成。当未检测到红外信号时,红外接收二极管电阻很大(近似于断路),三极管9014处手截止状态,此时 IR_RECEIVE端检测到高电平;当检测到红外信号时,红外接收二极管电阻较小,这时三极管9014发射极正偏,集电极反偏,三极管处于放大状态。红外信号通过共发射极电路放大后输入到FPGA的I/O口18脚,交给Nios软核进行处理。发送时,经过红外发送调制逻辑电路调制后的红外信号从FPGA I/O口16脚输出,红外信号通过三极管9014再次倒相放大后从集电极输出,驱动红外发射管辐射出红外调制信号,从而实现红外遥控信号的再生。红外发送和接收电路如图3所示。
2.2.3 存储电路
存储电路主要由AM29LV320DT(4 MB 16位并行总线)FLASH芯片和K4S641632H(64 MB 16位并行总线)SDRAM芯片组成。其中的SDRAM芯片起缓冲数据的作用,保存处理器及外部交换的数据信息,掉电或复位后数据丢失。FLASH闪速存储器,用于SoPC系统的程序存放和需要掉电保存的数据存放,但是,FLASH的读操作比SDRAM慢,写速度更加缓慢(相对于SDRAM而言)。 NiosⅡ系统启动后,在NiosⅡ的Boot程序把存放在FLA-SH中的程序复制到SDRAM后,再运行。
3 软件设计
当系统上电后进入等待状态。当检测到学习键按下时候,系统进入学习状态。在学习过程中,Nios处理器写入频率测量控制字,通过A-valon总线调用频率测量IP核对载波频率进行测量。测量完成后,检测到有启动解调控制字和测量脉宽控制字写入,即开始对红外信号解调同时对解调后的信号的脉宽进行测量。测量完成后,处理器会将数据写入对应存储区域,完成本次学习过程。如图4所示。还原信号时,处理器写入发送调制控制字,通过Avalon总线控制红外发送调制逻辑电路,发送完成后返回等待状态,等待下一次发送。如图5所示。
4 系统功能仿真
为了验证该学习型遥控器的原理、硬件系统和软件系统,选用21K8型飞利浦电视遥控器,RMFDLC7461型NEC电视遥控器和RM-687C型索尼电视遥控器作为实验对象,分别按这三个遥控器的“电源”功能键,发送红外遥控信号,它们对应的载波频率分别为36 kHz,38 kHz和40k-Hz,学习型遥控器的红外接收二极管接收到红外信号,并通过三极管9014放大,送入FPGA的I/O口18脚,利用QuartusⅡ软件中的集成仿真器可对学习型遥控器进行功能仿真。首先建立一个工程,全部编译通过后,然后对其功能和时序进行仿真测试,如图6~图8所示。通过比较图6~图8中的已经滤掉载波红外信号High_En和红外发送调制逻辑电路输出的信号IR_code的波形可看出,接收和发射的高低电平维持的时间相同,数据一致,电平也一致。
由仿真结果表明,21K8型飞利浦电视遥控器、RM-FDLC7461型NEC电视遥控器和RM-687C型索尼电视遥控器的“电源”功能键代码和学习型遥控器发出的代码,两者相同,表示学习成功。同时也表明该遥控器可以精确地测量不同载波的红外遥控信号,解决了单片机因时钟频率低而无法对载波频率进行测量的瓶颈。
5 结语
该学习型遥控器通过SoPC技术构建嵌入式软核NiosⅡ处理器平台,运用Verilog HDL语言设计等精度测量载波频率IP核、红外信号解调IP核、红外编码脉宽测量IP核和红外发送调制逻辑电路,把载波的精确测量,红外信号解调、脉宽测量和调制集中到Ahera FPGA系列Cyclone-EPICl2Q240C8器件上,极大地简化外围硬件电路。实验表明,该遥控器解决了单片机因时钟频率低而无法对载波频率进行测量的瓶颈,实现了对任何一款普通遥控器的按键编码学习,真正完成了学习型遥控器的学习功能。