密码锁功能EDA课程设计报告.doc
文本预览下载声明
第1章 设计说明
1.1 总体设计说明
本实验中说要求设计的电子密码锁密码为4位,由三大部分组成,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。下面对每一大部分分别进行讨论:
①、矩阵键盘接口电路设计,由于硬件电路没有提供该矩阵键盘,用开关代替该部分电路。
②、密码锁的控制电路设计
③、输出七段显示电路的设计
1.2 密码锁功能说明
①、数据输入:每按一个数字键,就输入一个数值,并在显示器上的最右上方显示出该数字,并将先前已经输入的数据依序左移一个数字位置。
②、数码清除:按下此键可以清除前面所有的输入值,清除成为“0000”。
③、密码更改:按下此键时将目前的数字设定成新的密码。
④、激活电锁:按下此键可将密码锁上锁。
⑤、解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。
第2章 硬件说明
本设计所需的硬件主要有:七段译码器、发光二极管(用来模拟电子锁,红灯亮为加锁,绿灯亮为解锁)、EPF10K10LC84-4适配器。我们使用教学使用的EDA试验箱,用独立式开关按键,七段译码器,有发光二极管,有红色和绿色,芯片为EPF10K10LC84-4。
第3章 设计内容
程序包括六个逻辑元件,分别为:数字按键输入、控制功能按键输入、时钟分频器、处理核心、输出处理和七段译码器。
3.1 数字按键输入
3.1.1 功能介绍
读取数字键0~9。高电平表示按键未按下,低电平表示按键按下。按照0~9顺序读取,只能输出1位数字。输出4位二进制代码,“0000”~“1001”表示0~9,用“1010”表示无输入。
3.1.2 程序输入
1.建立项目文件
2.建立设计文件
在MAX+PLUSⅡ管理窗口中选择File\New命令,建立文本编辑区,并在File Name文本框中输入shuzishuru.vhd,存盘。
3.编辑程序
在文本编辑区内,输入程序,程序如下:
library ieee;
use ieee.std_logic_1164.all;
entity shuzishuru is
port( numin:IN std_logic_vector(9 downto 0);
numstate,clk:IN std_logic;
numout:OUT std_logic_vector(3 downto 0));
end shuzishuru;
architecture EDA of shuzishuru is
signal state:std_logic;
signal mem:std_logic_vector(9 downto 0);
begin
process(clk)
begin
if clkevent and clk=1 then
if state/=numstate then
if mem/=numin then
case numin is
when 1111111110 = numout=0000;
when 1111111101 = numout=0001;
when 1111111011 = numout=0010;
when 1111110111 = numout=0011;
when 1111101111 = numout=0100;
when 1111011111 = numout=0101;
when 1110111111 = numout=0110;
when 1101111111 = numout=0111;
when 1011111111 = numout=1000;
when 0111111111 = numout=1001;
when others = numout=1010;
end case;
state=numstate;
else numout=1010;
end if;
mem=numin;
end if;
end if;
end process;
end EDA;
4.保存文件并检查语法错误
在MAX+PLUSⅡ管理窗口中选择File/Project/SaveCheck命令,可将变异的文件存盘并检查语法错误,如果有错误则返回编辑区内修改。
5.建立默认符号
在MAX+PLUSⅡ管理窗口中选择File/Create Default Symbol命令,建立一个符号文件供顶层图形设计文件调用。
3.2 控制功能输入
3.2.1 功能介绍
读取控制功能按键-清除按键,修改密码,锁定,解锁。高电平表示按键未按下,低电平表示按键按下。按照“清除按键,修改密码,锁定,解锁”顺序读取,只能输出一位控制信号。输出3位二进制代码,“001”~“100”表示“清除按键,修改密码,锁定,解锁”,用“000”
显示全部