基于FPGA的红外遥控密码锁的设计*
2013-08-13吴国兴顾媛媛殷美琳
崔 岩,吴国兴,顾媛媛,陆 惠,殷美琳
(上海师范大学天华学院 实习实训处,上海201815)
随着人们生活质量的不断提高,如何在工作生活中实现安全有效的防盗成为人们所关心的问题。传统的机械锁由于其笨重、开锁麻烦以及容易被破解破坏,已经开始逐步退出市场[1]。本文设计的密码锁将键盘式电子密码锁与红外遥控技术结合起来,在保证实现输入解锁、修改密码功能的基础下,还能进行远距离遥控解锁。
1 密码锁系统的工作原理
本文设计的红外遥控密码锁由红外遥控发射模块、接收模块、键盘式密码锁模块及液晶显示模块组成。在10 m的使用范围内,通过红外遥控发射器上的键盘输入密码,红外发射器将产生与按键对应的控制信号,在信号发送前预先对按键信号进行识别编码,将数码指令信号调制到载波上以串行数据的形式发送出去。接收器接收到来自于发射器的红外信号后,经过放大、滤波、解调等过程还原出基带信号送入FPGA,通过相应的密码锁解码模块,得到原始的按键信息并与原来设定的密码进行比对,若密码比对正确,则自动开启;若密码输入3次错误,则自动报警。系统框图如图1所示。
图1 红外遥控密码锁的系统框图
2 红外遥控密码锁系统硬件设计
2.1 发射模块硬件设计
本设计采用红外编码发射芯片BA5104及其外围电路构成红外发射器,发射占空比为1/3的38 kHz方波,提供 K1~K88个按键外加 C1、C2两个用户码,然而本设计要求有 0~9 10个按键,外加各种诸如清除、发射之类的功能按钮,显然芯片本身提供的引脚远不能满足设计需要。而当 K1~K8的值确定时,C1的不同取值可以得到不同的编码。基于此可以将K1~K8中的一部分按键通过逻辑门与C1、C2连起来,使得在扩展按键下芯片的输入各不相同时就可以得到能满足设计需要的编码。发射模块的电路原理图如图2所示。K0~K13是设计的按钮,对应图中的开关,根据从各个开关到BA5104所经过的器件的不同,以上14个开关可以分成四类。LED1为发光二极管,当有键被按下时开始发光,按键弹起时发光停止,以此判断发射器是否正常工作。LED2为红外发射二极管,在按键按下时发射载有指令信号的方波。在实际电路中,通过测试发现图2所示的发射电路是完全可行的,每一个按键的编码都是唯一的,不会引起任何混乱。测试得到了表1所示的按键编码表。
图2 红外遥控发射器电路
表1 发射电路的按键编码表
2.2 接收模块硬件设计
本设计采用CX20106A芯片作为接收器件,其电路图如图3所示。该芯片接收到信号后经过放大、限幅、滤波、检波、积分、整形后以反向输出的方式输出指令信号,所以在接收部分的输出端外加一个三极管构成反向器,以得到正常的数据信号。
图3 红外遥控接收器电路
3 红外遥控密码锁系统软件设计
3.1 数据的读取
根据发射的规律,每个数据的帧头都是110,为了减少芯片的工作量,可以设置一个解码条件判断帧头是否是110。若是则进行解码;否则丢弃该数据,不进行任何操作[2]。这里定义4种状态用来表示数据读取过程中的各个状态。在IDEL(初始化)状态下,只要下一个信号不是系统复位信号,就转入WAIT(等待数据)状态,若此时系统发出复位信号,则继续留在IDEL状态;在WAIT状态,若检测到有数据输入,则进入DAIN(接收数据)状态进行数据输入,否则继续停留在WAIT状态,当遇到复位信号时,返回IDEL状态;在数据输入的DAIN状态输入了12 bit(即一帧)数据,进入CHECK(检测数据)状态,判断是否符合解码条件,判断结束后转为WAIT状态,等待下次数据的输入,若长时间没有完成输入,则转回WAIT状态,继续等待输入数据,同理遇复位信号转入IDEL状态;在状态机的后续程序中,根据CHECK的判断结果按条件解码,并根据表1输出相应的十进制数据。
3.2 程序设计
在密码锁部分的程序设计中定义5种状态表示密码锁工作状态之间的转换。在上电初始,系统首先进入IDLE状态,并在时钟脉冲的驱动下进入 LOCK(锁定)状态。在LOCK状态下,若输入解锁的按键,则从该状态转换成INPA(密码输入)状态;若输入的是改密按键,则进入CHPA(改写密码)状态。在CHPA状态下,若输入的是各种数字按键,则继续停留在该状态直到密码输入完成;若在其间两次输入密码不同,则再次进入LOCK状态。输入时间超过一定限制时也将自动返回LOCK状态。密码输入结束即转入OPEN(开锁)状态。当系统处于OPEN状态时,若输入的密码正确,则输出开锁信号;否则直接转入LOCK状态。对于数据接收到的指令信号,需要交给FPGA去识别判断处理,控制液晶显示屏显示相应的信息,以便直观地判断出是否能达到密码锁预想的功能[3]。
3.3 仿真结果及说明
图4 红外遥控数字密码锁的仿真波形图
选用Verilog硬件描述语言进行编程,用Altera公司的QuartusII软件开发系统进行软件开发。QuartusII软件开发系统拥有编译、逻辑综合、仿真等功能[4]。在QuartusII上进行设计输入,经编译、校验后[5]得到时序仿真结果验证改密码和开锁的过程。下面将给出部分仿真结果及说明。
为方便描述,将图4(a)、图4(b)中的所有信号分别按从上到下的顺序依次编号为1,2,…。如图4(a)所示,信号1是系统的时钟信号;信号2是系统的复位信号,低电平有效;信号3是红外解码模块的时钟,由系统时钟分频得到;信号4是输入的红外编码信号;信号5、6、7反映解码模块的各个状态(WAIT、DAIN、CHECK状态)的变化;信号10是数据读取模块中的输出标志位。从图4(a)中可以看出,当信号 4每组数据完成后,该标志位就出现一个高电平。信号9是解码后送进密码锁模块的十进制信号,从图4(a)中可以看出,发射端发送的第一个数据解码后是十进制的11,表示要执行改密动作,紧接着输入的是原始密码 1,2,3,下一个是 13,该数据表示确认的功能按键,然后输入 2,4,确认,再次输入2,4,确认,则将密码成功修改为 24,下一个数据是十进制的10,这是表示开锁的功能按键,输入2,4确认后,打开密码锁。
图4(b)中,信号 1是解码后送进密码锁模块的十进制信号;信号3、4、5、6依次是密码锁程序状态机中的 LOCK、CHPA、INPA、OPEN状态。从信号 6可以看出,此时的OPEN状态出现了一个高电平,表示这时锁已经打开了;信号7是修改密成功标志位,对照信号1可以明显看出,当修改密成功时,信号7出现了一个正脉冲;信号8是记时开始标志位,当开锁成功后,该标志被置高电平,开始计时,当计时满足一定条件时重新进入锁定状态;信号9是上锁标志,在输入错误次数达到3次或开锁状态下计时时间到时启动上锁;信号10是密码寄存器,从图中可以看出,最开始储存的密码是000123,在改密后变成了000024。
本文使用FPGA器件并加入红外遥控技术实现对密码锁的设计,大大增强了密码锁的安全性。经过仿真测试,验证了本设计方法能满足密码锁的各种功能要求,实现了预期效果。
[1]武玉华,路而红,张磊.数字密码锁专用集成电路的设计[J].计算机测量与控制,2010,18(12):2842-2845.
[2]鲍晓宇,黄松龄,刘国.PLD器件在红外遥控解码中的应用[J].电子技术应用,2000,26(1):67-70.
[3]王冠,愈一鸣.面向 CPLD/FPGA的 Verilog设计[M].北京:机械工业出版社,2007.
[4]王金明,杨吉斌.数字系统设计与 Verilog HDL[M].北京:电子工业出版社,2011.
[5]Alter Corporation.QuartusⅡVersion 8.1 Handbook[EB/OL].(2008)[2013].http://www.altera.com.