128
用户IO口:
76
非用户IO口:
20
JTAG下载口:
4
合计:
100
封装:
TQFP
图2.3EPM3128ATC100-10封装
芯片中包含四个专用输入口>,分别为是全局时钟、全局使能、全局清零、全局时钟/使能信号,这几个信号有专用的连线与CPLD内部的每个宏单元相连,信号到每个宏单元的延时相同且延时最短,如果不用这些引脚可以将其接地。
第三章红外遥控器的硬件结构及设计
3.1红外遥控电路的工作原理
红外遥控作为一种单向红外通讯技术,因其具有性能稳定、使用方便以及成本低
廉等特点,已经在消费电器中得到了普遍的应用。
随着对电器产品智能化和使用便利
性要求的进一步提高,红外遥控的应用已经从传统家电领域向智能设备等新领域扩展。
由于集成电路制造工艺的设计水平的不断提高,将此类分立电路功能集成到嵌入式系
统中已成为可能。
本文设计脉冲信号调制采用了PPM方式,红外遥控系统采用了AHDL语言编写,来实现该电路的功能。
市场上的红外遥控器种类繁多,一般有这些类型uPD6121、TC9012、M50560-001、SA3010等等
不管遥控器的种类如何,其编码方式大多类似,本文以比较典型的uPD6121为例,要想用可编程逻辑器件编写其内部电路模块,首先得了解整个电路的工作原理,
以下是uPD6121红外遥控器的主要原理。
载波波形如图3.1所示。
图3.1红外载波波形
使用455kHZ晶体,经内部分频电路、信号被调制在37.91kHZ的频率上,占空比为:
1/3,1/3的占空比有助于提高红外线的发射效率。
数据格式:
数据格式包括了引导码、用户码、数据码和数据反码,编码总占32位。
数据反码是数据码反向后的编码,编码时可用于对数据纠错。
<注:
第二段用户码也可以在遥控应用电路中被设置成第一段用户码的反码。
)
图3.2uPD6121编码前数据格式
使用455kHZ晶体时各代码所占用的时间
图3.3uPD6121编码后数据格式
位定义:
用户码或者数据码中的每一位可以是位‘0’,也可以是位‘1’。
区分‘0’和‘1’是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式,英文简称PPM。
图3.4uPD6121的位定义
uPD6121G按键输出波形有两种方式:
一种是每次按键都输出完整的一帧数据;另一种是按键按下相同的按键后每发送完整的一帧数据后,再发送重复码,直到按键松开。
重复码波形如图3.5所示。
图3.5uPD6121重复码波形
单一按键波形如图3.6所示。
图3.6uPD6121单一按键波形
连续按键波形如图3.7所示。
图3.7uPD6121连续按键波形
3.2红外遥控器模块的原理图
红外遥控模块的硬件部分原理图较为简单,该电路主要由键盘扫描电路和红外发射部分组成,而编码调制部分由软件部分负责。
图3.7红外遥控发射电路图
由于ALTERA公司的3.3V/2.5V的MAX3000A芯片的IO脚兼容5V,所以键盘扫描电路的上拉电阻可以接5V电源。
D1为红外发射管,D2为红外发射指示灯。
3.3主控制板每个模块功能介绍
主控制板电路除了CPLD的最小系统之外,主要有双门限电压比较电路、数码管扫描显示电路、按键脉冲发生电路、红外接收电路以及一些接插件等。
CPLD的最小系统主要是电源电路、程序的下载电路以及时钟输入电路<作为纯组合逻辑时可不接)几部分组成。
电源电路如图3.8。
采用5V电源适配器供电经AMS1117稳压后产生3.3V电压给CPLD供电。
CPLD的每个电源引脚均要接滤波电容,典型值0.1uF。
图3.8电源部分
电容C5~C12为芯片的每个电源引脚的旁路滤波电容,起电荷池作用,以平滑电流变化引起的电源电压的波动,当芯片电流突然增大时,旁路滤波电容放电以降低芯片的电压波动。
旁路滤波电容通常选用10~100nF的瓷片电容,瓷片电容的特点是:
电感小,等效串联电阻低,用作旁路滤波电容非常合适。
下载电路:
ALTERA公司提供了多种编程下载电缆,如ByteBlasterMV、ByteBlasterⅡ并行下载电缆,目前更好的选择是采用USB接口的USB-Blaster下载电缆。
USB-Blaster电缆与ALTERA器件的接口一般是10芯的接口,其信号定义见表3.1。
表3.1USB-Blaster电缆与ALTERA器件的接口信号定义:
引脚
1
2
3
4
5
6
7
8
9
10
JTAG模式
TCK
GND
TDO
VCC
TMS
—
—
—
TDI
GND
图3.810芯接口引脚图
下载电路原理图如图3.9所示。
图3.9下载电路
时钟电路:
CPLD的主时钟采用25MHZ有源晶振,电路图3.10如下。
图3.10时钟电路
3.4一体化红外接收头
以前的红外接收头主要由CX20186、uPC1373等集成电路加电容元件、红外接收管、滤光片<防光干扰)、金属屏蔽罩<防电磁干扰)组成,体积较大。
这里我们使用HS0038A2接收头。
图3.11是它的原理图。
图3.11一体化红外接收头原理图
由图3.11可知,HS0038A2系列是红外线遥控系统的小型化接收器。
它将接收头、输入给定信号、自动增益控制、控制电路、带通滤波器、解调器、三极管放置在金属屏蔽盒内。
仅有电源、接地和输出三个管脚。
它将红外接收电路简单化,使用也非常方便。
仅将输出接到适当位置即可。
电源与接地分别接到电源端与地端。
当一体化红外接收头接收到红外信号,由接收头内部的自动增益控制器自动放大红外信号到一个信号范围内,使红外装置可以很容易的实现控制,再通过带通滤波电路,它的中心频率是38KHz,所以中心频率附近的频率将被保存。
然后再输出到三极管,由三极管判断输出高低电平。
如果三极管基极为高电平,则输出的是低电平;反之,基极为低电平,则输出为高电平。
3.5红外遥控编码原理与设计
由于EPM3128A芯片的宏单元数量的有限性,在编写红外编码发射电路时,不得不考虑芯片资源的节约问题,所以本设计编写的红外遥控编码原理与uPD6121稍微有所差别,uPD6121格式中数据码和用户码均为8bit,这样编码或者解码时会占用很多的寄存器,及占用CPLD内部很多的可编程触发器。
而本文设计的遥控器只有16个按键,没有那么多种数据要编码发射,且EPM3128A芯片资源也是有限的,所以对用户码和数据码均设定义为4bit。
本文设计的红外编码采用PPM编码方式,下面是其编码信息。
载波信号:
f=38khz;占空比1/3。
位定义:
a为一个时间单位时间长度是38kHZ的16个时钟周期,即a=1÷38kHZ×16=0.421ms<这样有助于时钟分频,减少触发器使用的数量)
图3.12位定义
数据格式:
数据格式中包含了引导码、数据码、数据反码、用户码、用户码,除引导码外其余均为4bit,编码总占16bit。
其中引导码的高电平6.74ms=16a,低电平3.37ms=8a。
图3.13编码前数据格式
每按一次按键发送一帧数据
图3.14编码后数据格式
红外遥控编码的主要电路有,键盘扫描电路、PPM编码电路、时钟分频电路、以及调制电路等组成。
时钟分频电路:
产生整个电路所需要的所有时钟频率;
键盘扫描电路:
产生4位键值信号;
PPM编码电路:
对要发送的数据进行编码后发送;
调制电路:
38kHZ的频率与PPM编码后的串行输出信号进行相与即可。
很明显电路的关键是对要发送的数据进行PPM编码,为了充分利用EPM3128A有限的宏单元,选择一个良好的PPM编码的实现方式显的非常的重要。
下面是两种PPM编码方式:
有PPM编码的位定义可知,
原码1—〉1000
0—〉10
方案1:
首先在PPM编码过程中省去了引导码<方案2同样),只对要发送的数据进行PPM编码论述。
由编码格式可知,要发送的数据的有效信号位数长短不一,不能用简单的逻辑变换将原信号转变为要发送的PPM编码信号后再移位输出。
数据必须按照顺序装载在移位寄存器的前半部分。
将数据码、数据反码、用户码、用户码分别装入16位缓冲寄存器中,用38kHZ、占空比为1/3的频率<频率不固定,其周期最好大于时间a)对这16位缓冲寄存器进行逐位采样,当待译码为1时采样得到的信号为1000,当待译码为0时得到的信号10,并依次装入64位移位寄存器,移位寄存器若有空余位,则全部补零。
当装载完成后,移位寄存器进行移位,在移位的过程中,需要对移位的位数进行计数,当移位寄存器寄满64位时停止移位。
实际应用时最好在移位寄存器前加一个输出位。
该方案的实现方法较为简单,但是会浪费系统很多的资源,仅仅这两个寄存器就需占用80个可编程触发器,当要发送的数据过长,用这样的方法编码简直就是不切实际的。
其逻辑框图如图3.15所示。
图3.15方案1编码原理框图
方案2:
当键盘扫描模块得到稳定键值数据时,将数据码、数据反码、用户码<用户码可以设定为4bit常量)分别装载于寄存器中。
并且启动PPM编码发送电路。
数据码、数据反码。
用户码、用户码分时装载于缓冲寄存器<4bit)中,再由缓冲寄存器装载于移位寄存器<5bit、右移)的4个高位中,及移位寄存器的最低位<输出位)不装载。
自由计数器是两位模值可控计数器,当移位寄存器的移出位是‘0’时,自由计数器计数值由“00”―〉“01”―〉“00”变化,当移位寄存器输出位是‘1’时,自由计数器计数值由“00”―〉“01”―〉“10”―〉“11”―〉“00”变化。
自由计数器每次清零时,产生移位时钟,以对移位寄存器中的数据进行移位。
当移位满4位时,产生地址时钟信号,以对地址发生器做加1处理。
地址发生器由两位计数器构成,地址时钟信号每来一次脉冲,计数器加1,四位地址分别为“00”“01”“10”“11”。
分别对应数据码、数据反码、用户码、用户码。
比较器的功能是,将自由计数器的输出值与“01”比较,当自由计数器输出“01”时,比较器输出为‘1’,其余数值时比较器输出‘0’。
这样当移位寄存器的输出位是‘1’时,比较器就按顺序输出‘1’‘0’‘0’‘0’,当移位寄存器输出位是‘0’时,比较器就按顺序输出‘1’‘0’。
图3.16方案2编码原理框图
了解数据发送的基本结构后,在程序编写时,关键是在无“时间缝隙”的情况下,分别将数据调制发送出去,所以把握好整个电路中的每一个时钟的上升沿和下降沿显的非常的重要。
方案2虽然在结构上貌似麻烦了一点,但是它可以节约芯片的资源,而且当数据量越大时效果越明显。
无疑对于像触发器比较匮乏的MAX3000A系列的CPLD来实现类似于NEC的uPD6121的编码规则,是一个良好的实现方案。
遥控器除了遥控编码当然还有键盘扫描电路。
键盘是4*4键盘,行线接的电阻是上拉电阻,阻值一般为几个K,作用是限流。
CPLD循环输出行信号为“1111”。
当有按键按下时,例如,按下1键,此时KX[3..0]行信号输出为“0111”,输入端KY[3..0]检测到的信号将是“0111”。
可以在编写程序时,将输出信号KX[3..0]与输入信号KY[3..0]同时判断,如刚刚举的例子,可以认为当数据“KX&KY”为“01110111”时,可以译成数据1,同理可得其它按键的编码。
键盘扫描程序设计思想:
循环输出行信号“1110”“1101”“1011”“0111”。
检测列信号输入,将行、列信号相并“K_CODE<=KX_TEMP&KY”。
译键值,将行、列相并的信号“K_CODE”译成“0000”“0001”“0010”“0011”“0100”“0101”“0110”“0111”“1000”“1001”“1010”“1011”“1100”“1101”“1110”“1111”,并且锁存。
去抖动,在译每一个键值后,为了防止按键抖动,加了一个计数环节,一旦检测到列信号后就译码,紧跟着进入计数环节,此时键抖动不会进入其它环节,这样可以防止键的抖动。
3.6红外遥