1、 电子与信息工程电子与信息工程学院学院 EDA 课程设计报告 ( 2011 2012 学年 第 一 学期) 班 级: 学 号: 姓 名: _ 指导教师: _ 课课 程程 设设 计计 报报 告告 - 1 - 2011 年 9 月 课程设计题目:电子密码锁的设计仿真实验课程设计题目:电子密码锁的设计仿真实验 实验目的:实验目的: 1.掌握 VHDL 语言的使用,学会用 VHDL 语言来编程解决实际问题; 2.学会使用 EDA 开发软件设计小型综合电路,掌握仿真的技巧; 3.学会应用开发系统实现硬件电路,检验电路的功能。 实验要求:实验要求: 功能描述:功能描述:用于模仿密码锁的工作过程。完成密码锁
2、的核心控制功能。 功能要求:功能要求:设计一个密码锁,平时处于等待状态。管理员可以设置或更改密码。如 果不预置密码,密码缺省为“1234” 。用户如果需要开锁,按相应的按 键进入输入密码状态,输入 4 位密码,按下确定键后,若密码正确,锁 打开; 若密码错误, 将提示密码错误, 要求重新输入, 三次输入都错误, 将发出报警信号。报警后,只有管理员作相应的处理才能停止报警。用 户输入密码时,若输入错误,在按下确定键之前,可以通过按取消键重 新输入。正确开锁后,用户处理完毕后,按下确定键,系统回到等待状 态。系统操作过程中,只要密码锁没有打开,如果 60 秒无操作,系统 回到等待状态。要求密码在输
3、入过程中被依次显示, 即先输入的为密码 的第一位,总是显示在最左边。用两个发光二极管模拟显示,其中一个 显示当前的工作模式,灭表示用户模式,亮表示管理员模式;另外一个 指示锁的状态,灭表示锁处于锁定,亮表示锁被开启。 课课 程程 设设 计计 报报 告告 - 2 - 功能描述功能描述: 用户开锁用户开锁: 默认情况下,密码锁处于用户使用状态。如果当前为管理员状态, 则按下 user 键回到用户状态。 用户开锁时, 输入四位数用户密码, 可以从 out_code6 的输出状态确定密码输入状态。如输入错误则 按下 clear 清除前一位输入。输入完毕后按 enter,如果密码正 确,则开锁,否则重新
4、输入密码。开锁后再次按下 enter 键则关 锁,回到等待状态。三次密码输入错误,警报器 alarming 为 1。 输入管理员密码 解除警报。 管理员管理员解除警报解除警报:当用户三次密码输入错误的时候,alarming 为 1,此时,只要管 理员密码输入正确后, 按下 clear 键, alarming 为 0, 报警取消。 管理员管理员修改修改密码密码: 在非警报和为开锁状态下,任何时候按 admin 键进入管理员状 态。按 chgcode 选择修改密码,先选择修改的是用户密码还是管 理员密码。修改用户密码则按 user 键,修改管理员密码则按 admin 键。然后分别输入旧密码,新密码
5、,新密码要输入两次。 旧密码与所要修改的密码对应。 如旧密码输入错误, 则无法修改; 当验证不成功即两次新密码不相同时,修改密码失败。返回等待 状态。成功后也返回等待状态。 定时返回:定时返回: 用户在未开锁状态下,60s 没有按键输入,则返回等待状态,但 不包括 alarming 状态。只要是 alarming,则只有管理输入管理 员密码才能解锁并按下 clear 消除警报。 课课 程程 设设 计计 报报 告告 - 3 - 设计过程:设计过程: 1 1:设计分析:设计分析 EDA 基本特点之一是自顶向下,设计时将基本功能要求模块化,据此,我将功 能要求转化为四个较为清晰的模块:输入输出模块,
6、控制模块,按键设置,60s 计 时模块。 控制模块:控制模块:整个程序的主要部分,采用状态循环的办法,以用户每按下一次按 键为计量单位,划分状态,以实现各种功能。 60s60s 计时器模块:计时器模块:完成 60s 没有按键则返回等待状态这一功能的主要模块。这 个模块的核心思想是一个变量 numtime 计数。变量 numtime 的初始值为 0,在无报 警为开锁的情况下, 时钟每秒发出一个上升沿信号, 计数一次, 如有按键则 numtime 清零,否则计数到 60 即“111100”则返回信号 back 变为 1,返回等待状态。 按键设置模块按键设置模块:将各种功能按键用高低电平赋值,便于调用。 2 2:设计过程:设计过程 确定整个系统的输入输出: 输入:num - 数字键; rst - 复位键; user - 用户键; admin - 管理员键; chagcode - 更改密码键; clear - 清除键; enter -