基于CPLD的数字锁课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;--显示模块

相关文档
最新文档