基于CPLD的数字锁课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南工程学院
课程设计任务书
课程名称:嵌入式系统
题目:基于CPLD的数字锁
专业班级:电子信息0781
学生姓名:李武
指导老师:陈军根
审批:
任务书下达日期 2011 年01月02 日
设计完成日期 2011 年 01月21日
目录
一.设计总体思路 (6)
1.1基本原理 (6)
1.2总设计框图 (6)
二.单元电路设计及模块仿真 (7)
2.1消除抖动模块 (7)
2.2键盘扫描模块 (9)
2.3七段数码显示电路模块 (10)
2.4译码电路模块 (12)
2.5 密码控制电路模块............................. . (15)
2.6 总电路 (17)
三.编程下载 (18)
四.总结与体会 (21)
五.参考文献 (22)
一、总体设计思路
1.1基本原理:
本次设计我把逻辑功能划分为两个大的模块:控制部分和处理部分。控制模块是整个系统的控制核心,负责接收其模块传来的输入信号,再根据系统的功能产生相应的控制信号送到相关的模块。具体操作如下:密码预先存入寄存器中,开锁时,输入密码存入另一寄存器中,当按下“确定”键时,启动比较器,比较两个寄存器中的内容,当结果相同时M=1,LT绿灯亮,并开锁;当结果不同时M=0,LF红灯亮,不开锁。用户需要修改密码时,先开锁,再按“设定密码”,清除预先存入的密码,通过键盘输入新的2位十进制数,然后再按下确定键完成操作。
1.2总设计框图如下:
二、单元模块设计
2.1 消除抖动模块
我们使用的按键通常都是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动(如下图所示)。
然而,抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。在这里,我们用软件去除抖动。当检测到键闭合时,执行一个延时程序产生数毫秒的延时,让前沿弹跳消失后再检测闭合;当发现键松开后,也给数毫秒的延时,当后沿弹跳消失后,再检测下一个键的输入。或者当前沿弹跳消失后,将检测到的信号所存,然后再输出,这样就不需要后沿延时了。
消除抖动的电路封装图如下:
程序如下:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
LIBRARY altera; --抖动
USE altera.maxplus2.ALL;
ENTITY lwdou IS
PORT
( CLK,lwin : IN STD_LOGIC;
lwout : OUT STD_LOGIC );
END ;
ARCHITECTURE a OF lwdou IS
signal Vcc, INV_B : std_logic ;
signal A0, A1 : std_logic ;
signal B0, B1 : std_logic ;
BEGIN
Vcc <= '1' ;
INV_B <= not lwin ;
dff1 : dff PORT MAP (d =>Vcc , q => A0 , clk => CLK, prn => Vcc, clrn => INV_B );
dff2 : dff PORT MAP (d =>Vcc , q => A1 , clk => CLK, prn => Vcc, clrn => INV_B );
process (CLK)
begin
if CLK'EVENT and CLK='1' then
B0 <= not A1;
B1 <= B0;
end if ;
end process ;
lwout <= not (B1 and not B0);
END ;
消抖电路的仿真波形图如下:
2.2 键盘扫描模块
我们在键盘的四列输入口中输入一个低电平时钟扫描,当有按键被打下时,对应的行被键接通也呈现低电平状态,然后将此输入输出信号输出到键盘编码就可以进行键盘按键识别了。
键盘扫描封装图如下:
该模块程序如下:
LIBRARY IEEE; --键盘扫描
USE IEEE.std_logic_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL ;
ENTITY LWSM IS
PORT (
CLK : IN STD_LOGIC ;
SM : OUT STD_LOGIC_VECTOR (4 downto 1) );
END ;
ARCHITECTURE a OF LWSM IS
Signal M : STD_LOGIC_VECTOR(2 DOWNTO 1);
SIGNAL N: STD_LOGIC_VECTOR(4 DOWNTO 1);
Begin
PROCESS (CLK)
Begin
IF CLK'Event AND CLK='1' THEN
N <= N+1;
M <=N(4 DOWNTO 3);
END IF;
END PROCESS;
SM <= "1110" WHEN M=0 ELSE
"1101" WHEN M=1 ELSE
"1011" WHEN M=2 ELSE
"0111" WHEN M=3 ELSE
"1111";
END ;
键盘扫描电路的仿真波形图:
2.3 七段数码显示电路模块
本模块我们通过串行扫描方式驱动LED数码管,可较少地占用可编程器件资源;并利用MAXPLUS Ⅱ对动态扫描LED显示电路进行仿真。
显示电路模块封装图如下:
程序如下:
LIBRARY IEEE;--显示模块