基于FPGA 的数字系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《基于FPGA的数字系统设计》项目设计项目名称: 电子密码锁

姓名:蒋流洲

院系:应用技术学院

专业: 09电子信息工程(应电应本)

学号: 200915254137

指导教师:徐正坤

完成时间: 2011年6月 30日

目录

1 项目名称、内容与要求………………………………………… 1页1.1 设计内容……………………………………………………… 1页

1.2 具体要求……………………………………………………… 1页

2 系统整体架构(Architecture Description)…………………1页2.1 设计思路……………………………………………………… 1页2.2 系统原理(包含:框图等阐述)与设计说明等内容…………2页

2.3 创新点与原创性内容………………………………………… 3页

3 系统设计 (含HDL 或原理图输入设计)……………………… 3页注:此部分包含主要逻辑单元、模块、源代码等内容

3.1 HDL 代码……………………………………………………… 3页

3.2 系统整体电路图(或RTL 级电路图)……………………… 11页

4 系统仿真(Simulation Waveform)……………………………12页

5 FPGA 实现(FPGA Implementation)………………………… 12页注:此处应包含硬件验证、操作过程、结果等说明

6 总结(Closing)……………………………………………… 15页参考书目(Reference):………………………………………… 16页

1项目名称、内容与要求

1.1 设计内容

实验板上有10个按键k1~k10,其中k1~k10作为密码输入按键,k10作为复位按键,一便重新开始输入的密码。当然,这个电子密码锁与实际的电子密码锁的设计有一些不一样,也许实际的电子密码锁并不设置复位按键,而是当密码输入错误后,延长很长一段时间才接受新密码的输入。

假设电子密码锁的密码为四位数3216。利用实验板上的一个数码管显示输入密码次数,当输入密码正确时,在数码管上显示字符“H”;当输入密码不正确时,在数码管上显示字符“E”。

1.2 具体要求

1﹞.具有密码输入功能。

2﹞.设置复位按键,以便重新输入新的密码。

3﹞.在数码管上显示输入密码次数。

4﹞.拒绝接受超过规定次数的密码输入信号。

5﹞.当密码输入正确时,在数码管上显示字符“H”;当密码输入不正确时,在数码管上显示字符“E”;

2 系统整体架构

2.1 设计思路

电子密码锁在生活中十分常见,在这我将设计一个具有较低成本的电子密码锁,本文讲述了我整个设计过程及收获。讲述了电子密码锁的的工作原理以及各个模块的功能,并讲述了所有部分的设计思

路,对各部分电路方案的选择、元器件的筛选、以及对它们的调试、对波形图的分析,到最后的总体图的分析。

2.2 系统原理(包含:框图等阐述)与设计说明等内容

用VHDL编写程序实现电子密码锁,其原理框图如图所示,程序中的时终信号clk为石英(32 768Hz)分频后的8Hz标准信号,作为产生0.5s信号的输入信号。七中k1k9为按键输入信号,k10作为复位按键。当没有按键按下时连接到CPLD或FPGA的信号k1k10都为高电平信号;当有按键按下时,k1~k10的一个信号为低电平。

电子密码锁采用状态机和对按键输入次数相结合的方法,保证只有输入正确的密码,状态机才能转换到最后正确的状态,显示开锁字符。程序由7个进程组成,进程P1和P2将8Hz标准信号分频后,产

生0.5s脉冲信号(carry),与按键输入信号配合,消除按键输入的抖动,并作为状态转换进程P4的时终输入信号。

进程P3锁存按键输入信号,为状态机提供一个稳定的按键输入信号。进程P4将下一个状态(next_state)转换为当前状态(state)。进程P5产生次态信号(next_state),只有当有按键输入和状态转移控制信号en为逻辑“1”时才能够产生次态信号。进程P4和进程P5是电子密码锁的核心,密码的设置也是编写状态机时确定的。

进程P6对按键输入次数计数,并且为显示按键输入次数的7段译码器BCD码数据。进程P7判断按键输入次数是否已经输入3次,如果输入密码的次数小于等于3,状态转移控制信号en为逻辑“1”,否则为逻辑“0”。当仍然有密码输入时,禁止状态发生变化,因此如果输入密码过程中,只要输入一个错误密码,就不可能转换到最后正确的状态。BCD码-7段译码器显示按键输入次数和输入密码正确或者错误

2.3 创新点与原创性内容

新增显示正确与错误功能

3 系统设计 (含HDL 或原理图输入设计)

3.1 HDL 代码

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_arith.all;

Use ieee.std_logic_unsigned.all;

Entity elock is

Port(clk,k1,k2,k3,k4,k5:in std_logic;

k6,k7,k8,k9,k10:in std_logic;

row:out std_logic_vector(2 downto 0);

led:out std_logic_vector(7 downto 0));

end elock;

architecture behavioral of elock is

signal count:std_logic_vector(1 downto 0);

signal count1:std_logic_vector(3 downto 0);

type states is(s4,s3,s2,s1,s0);

signal state:states:=s0;

signal next_state:states:=s0;

signal en,carry,op,k11,k22,k33,k44,k55:std_logic; signal k66,k77,k88,k99,k100:std_logic;

signal row1:std_logic_vector(2 downto 0);

begin

p1:process(clk)

begin

if rising_edge(clk) then

count<=count+'1';

end if;

相关文档
最新文档