ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:308.82KB ,
资源ID:4067474      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4067474.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(红外编码与解码的VHDL实现.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

红外编码与解码的VHDL实现.docx

1、红外编码与解码的VHDL实现红外编码与解码的VHDL实现红外遥控在家电中应用广泛,采用VHDL语言设计红外遥控器的控制系统,该系统通过了实时仿真的验证,可现实键值读入,红外发射码的生成及发送功能。电路模块的程序代码可重复使用,可方便的嵌入到各类需要红外遥控控制器的嵌入式系统中,本次窗帘的遥控器电路就是用VHDL语言编写,并下载至CPLD中执行。红外遥控作为一种单向红外通讯技术,因其具有性能稳定、使用方便以及成本低廉等特点,已经在消费电器中得到了普遍的应用。随着对电器产品智能化和使用便利性要求的进一步提高,红外遥控的应用已经从传统家电领域向智能设备等新领域扩展。由于集成电路制造工艺的设计水平的不

2、断提高,将此类奋力电路功能集成到嵌入式系统中已成为可能。本文设计脉冲信号调制采用了PPM方式,红外遥控系统采用了VHDL语言编写,来实现该电路的功能。市场上的红外遥控器种类繁多,一般有这些类型uPD6121、TC9012、M50560-001、SA3010等等不管遥控器的种类如何,其编码方式大多类似,本文以比较典型的uPD6121为例,要想用可编程逻辑器件编写其内部电路模块,首先得了解整个电路的工作原理,以下是uPD6121红外遥控器的主要原理。载波波形:图 4-14 红外载波波形使用455kHZ晶体,经内部分频电路、信号被调制在37.91kHZ的频率上,占空比为:1/3,1/3的占空比有助于

3、提高红外线的发射效率。数据格式:数据格式包括了引导码、用户码、数据码、和数据反码,编码总占32位。数据反码是数据码反向后的编码,编码时可用于对数据纠错。(注:第二段用户码也可以在遥控应用电路中被设置成第一段用户码的反码。图 4-15 uPD6121编码前数据格式使用455kHZ晶体时各代码所占用的时间图 4-16 uPD6121编码后数据格式位定义:用户码或者数据码中的每一位可以是位0,也可以是位1。区分0和1是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式,英文简称PPM。图 4-17 uPD6121的位定义uPD6121G按键输出波形有两种方式:一种是每次按键都输出完整的一帧数

4、据;另一种是按键按下相同的按键后每发送完整的一帧数据后,在发送重复码,知道按键松开。重复码图 4-18 uPD6121重复码波形单一按键波形图 4-19 uPD6121单一按键波形连续按键波形图 4-20 uPD6121连续按键波形4.4.1、EPM3128ATC100-10复杂可编程逻辑器件芯片介绍EPM3128ATC100-10是ALTERA公司MAX3000A CPLD系列中的一种。MAX3000A系列的CPLD采用成本优化的0.3um,四层金属生产工艺,提供32到512个宏单元。3.3V的MAX3000A CPLD系列提供商业级和工业级常用的速度等级和封装,是那些对成本敏感,大批量应用

5、的企业的理想选择方案。MAX3000A系列产品的特性:图 4-21 max3000a系列产品特性EPM3128ATC100-10特点:逻辑门:2500逻辑阵列块(LAB):8宏单元(Macrocells):128用户IO口:76非用户IO口:20JTAG 下载口:4合计:100封装:TQFP图 4-22 EPM3128ATC100-10 封装芯片中包含四个专用输入口(GCLK1,OE1,GLCRn,OE2(GCLK2),分别为是全局时钟、全局使能、全局清零、全局时钟/使能信号,这几个信号有专用的连线与CPLD内部的每个宏单元相连,信号到每个宏单元的延时相同且延时最短,如果不用这些引脚可以将其接

6、地。4.4.2、红外遥控器模块的原理图红外遥控模块的硬件部分原理图较为简单,该电路主要由键盘扫描电路、红外发射部分组成,而编码调制部分由软件部分负责。图 4-23 红外遥控发射电路图由于ALTERA公司的3.3V/2.5V的MAX3000A芯片的IO脚兼容5V,所以键盘扫描电路的上拉电源可以接5V。D1为红外发射管,D2为红外发射指示灯。4.5、主控制板每个模块功能介绍主控制板电路除了CPLD的最小系统之外主要有双门限电压比较电路、数码管扫描显示电路、按键脉冲发生电路、红外接收电路(上面已有介绍)、电机驱动电路(上面有介绍)以及一些接插件等。4.5.1、CPLD最小系统绍CPLD的最小系统主要

7、是电源电路、程序的下载电路以及时钟输入电路(作为纯组合逻辑时可不接)几部分组成。电源电路:采用5V电源适配器供电经AMS1117稳压后产生3.3V电压给CPLD供电。CPLD的每个电源引脚均要接滤波电容,典型值0.1uF。图 4-24 电源部分电容C5C12为芯片的每个电源引脚的旁路滤波电容,起电荷池作用,以平滑电流变化引起的电源电压的波动,当芯片电流突然增大时,旁路滤波电容放电以降低芯片的电压波动。旁路滤波电容通常选用10100nF的瓷片电容,瓷片电容的特点是:电感小,等效串联电阻低,用作旁路滤波电容非常合适。下载电路:ALTERA公司提供了多种编程下载电缆,如ByteBlasterMV、B

8、yteBlaster 并行下载电缆,目前更好的选择是采用USB接口的USB-Blaster下载电缆。USB-Blaster电缆与ALTERA器件的接口一般是10芯的接口,其信号定义见表。引脚12345678910JTAG模式TCKGNDTDOVCCTMSTDIGND图 4-25 10芯接口引脚图下载电路原理图:图 4-26 下载电路时钟电路:CPLD的主时钟采用25MHZ有源晶振,电路图如下:图 4-27 时钟电路5.1、红外遥控编码原理与设计由于EPM3128A芯片的宏单元数量的有限性,在编写红外编码发射电路时,不得不考虑芯片资源的节约问题,所以本设计编写的红外遥控编码原理与uPD6121稍

9、微有所差别,uPD6121格式中数据码和用户码均为8bit,这样编码或者解码时会占用很多的寄存器,及占用CPLD内部很多的可编程触发器。而本文设计的遥控器只有16个按键,没有那么多种数据要编码发射,且EPM3128A芯片资源也是有限的,所以对用户码和数据码均设定义为4bit。本文设计的红外编码采用PPM编码方式,下面是其编码信息。载波信号:f=38khz;占空比1/3;位定义:a为一个时间单位时间长度是38kHZ的16个时钟周期,即a=138kHZ16=0.421ms(这样有助于时钟分频,减少触发器使用的数量)图 5-2 位定义数据格式:数据格式中包含了引导码、数据码、数据反码、用户码、用户码

10、,除引导码外其余均为4bit,编码总占16bit。其中引导码的高电平6.74ms=16a,低电平3.37ms=8a。图 5-3 编码前数据格式每按一次按键发送一帧数据图 5-4 编码后数据格式红外遥控编码的主要电路有,键盘扫描电路、PPM编码电路、时钟分频电路、以及调制电路等组成。时钟分频电路:产生整个电路所需要的所有时钟频率键盘扫描电路:产生4位键值信号PPM编码电路:对要发送的数据进行编码后发送调制电路:38kHZ的频率与PPM编码后的串行输出信号进行相与即可很明显电路的关键是对要发送的数据进行PPM编码,为了充分利用EPM3128A有限的宏单元,选择一个良好的PPM编码的实现方式显的非常

11、的重要。下面是两种PPM编码方式:有PPM编码的位定义可知,原码 11000 010方案1:首先在PPM编码过程中省去了引导码(方案2同样),只对要发送的数据进行PPM编码论述。由编码格式可知,要发送的数据的有效信号位数长短不一,不能用简单的逻辑变换将原信号转变为要发送的PPM编码信号后再移位输出。数据必须按照顺序装载在移位寄存器的前半部分。将数据码、数据反码、用户码、用户码分别装入16位缓冲寄存器中,用38kHZ、占空比为1/3的频率(频率不固定,其周期最好大于时间a)对这16位缓冲寄存器进行逐位采样,当待译码为1时采样得到的信号为1000,当待译码为0时得到的信号10,并依次装入64位移位

12、寄存器,移位寄存器若有空余位,则全部补零。当装载完成后,移位寄存器进行移位,在移位的过程中,需要对移位的位数进行计数,当移位寄存器寄满64位时停止移位。实际应用时最好在移位寄存器前加一个输出位。该方案的实现方法较为简单,但是会浪费系统很多的资源,紧紧这两个寄存器就需占用80个可编程触发器,当要发送的数据过长,用这样的方法编码简直就是不切实际的。其逻辑框2图如下:图 5-5 方案1 编码原理框图方案2:方案2也是本人被芯片有限的资源逼出来的一种实现方案,方案若有啥不足之处,请多多指教。当键盘扫描模块得到稳定键值数据时,将数据码、数据反码、用户码(用户码可以设定为4bit常量)分别装载于寄存器中。

13、并且启动PPM编码发送电路。数据码、数据反码。用户码、用户码分时装载于缓冲寄存器(4bit)中,再由缓冲寄存器装载于移位寄存器(5bit、右移)的4个高位中,及移位寄存器的最低位(输出位)不装载。自由计数器是两位模值可控计数器,当移位寄存器的移出位是0时,自由计数器计数值由“00” “01” “00”变化,当移位寄存器输出位是1时,自由计数器计数值由“00” “01” “10” “11” “00”变化。自由计数器每次清零时,产生移位时钟,以对移位寄存器中的数据进行移位。当移位满4位时,产生地址时钟信号,以对地址发生器做加1处理。地址发生器由两位计数器构成,地址时钟信号每来一次脉冲,计数器加1,

14、四位地址分别为“00”“01”“10”“11”。分别对应数据码、数据反码、用户码、用户码。比较器的功能是,将自由计数器的输出值与“01”比较,当自由计数器输出“01”时,比较器输出为1,其余数值时比较器输出0。这样当移位寄存器的输出位是1时,比较器就按顺序输出1000,当移位寄存器输出位是0时,比较器就按顺序输出10。图 5-6 方案2 编码原理框图了解数据发送的基本结构后,在程序编写时,关键是在无“时间缝隙”的情况下,分别将数据调制发送出去,所以把握好整个电路中的每一个时钟的上升沿和下降沿显的非常的重要。方案2虽然在结构上貌似麻烦了一点,但是它可以节约芯片的资源,而且当数据量越大时效果越明显

15、。无疑对于像触发器比较匮乏的MAX3000A系列的CPLD来实现类似于NEC的uPD6121的编码规则,是一个良好的实现方案。遥控器除了遥控编码当然还有键盘扫描电路。键盘是4*4键盘,行线接的电阻是上啦电阻,阻值一般为几个K,作用是限流。CPLD循环输出行信号(KX3.0)“1110”“1101”“1011”“0111”,当没有按键按下时,CPLD的列输入信号(KY3.0)为“1111”。当有按键按下时,例如,按下1键,此时KX3.0行信号输出为“0111”,此时输入端KY3.0检测到的信号将是“0111”。可以在编写程序时,将输出信号KX3.0于输入信号KY3.0同时判断,如刚刚举的例子,可

16、以认为当数据“KX&KY”为“01110111”时,可以译成数据1,同理可得其它按键的编码。键盘扫描程序设计思想:循环输出行信号“1110”“1101”“1011”“0111”。检测列信号输入,将行、列信号相并“K_CODECODE(7)CODE(6)CODE(5)CODE(4)CODE(3)CODE(2)CODE(1)CODE(0)NULL;END CASE;当完成整个解码过程后要产生一个使能信号,一个脉冲沿,还有四位有效数据。解起始码部分:图 5-9 起始码解码框图起始码部分由16a的高电平和8a的低电平组成,用38khz的频率对红外信号Din进行采样。起初,当采样信号为1时累加器1加一处理,如果其中有一次为0,则对累加器清零。直到采满15次连续的1信号后,再对Din信号的低电平采样,同理踩满连续7个0信号后,输出起始码有效信号。如果连续的0信号中出现一个或者多个高电平信号,则对累加器1和累加器2全部清零,恢复初始解码状态。比较器的大小并无固定的值,根据采样时钟而定,允许累加器的数值有所偏差,采样频率越高,越是能够采的比较精确的起始码,但频率越高,累加器位数也越多,适可而已即可。注:大顺与你分享

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1