数字密码锁

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

EDA综合设计实验设计题目:数字密码锁

本系统采用有限状态机进行设计,目的在于实现八位二进制,串行输入数字密码锁,并具有开锁与错误提示。开锁代码为八位二进制数,当输入代码的位数和位值与预先设置的密码一致时方可开锁,并使数码管显示由“B”变为“A”

设计报告

目录

1、摘要 (003)

2、数字密码锁的设计 (003)

2.1 系统设计 (003)

2.2 单元电路设计 (004)

2.3 软件设计 (004)

3、系统测试 (005)

4、结论 (006)

5、参考书目 (006)

6、附录 (007)

一、摘要

本系统是基于EDA作为开发工具,VHDL语言为硬件描述语言,QUARTUS II作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。

本系统采用有限状态机进行设计,目的在于实现八位二进制,串行输入数字密码锁,并具有开锁与错误提示。开锁代码为八位二进制数,当输入代码的位数和位值与预先设置的密码一致时方可开锁,并使数码管显示由“B”变为“A”。

二、数字密码锁的设计

数字密码锁有两类:一类是并行接收数据,称为并行锁;一类是串行接受数据,称为串行锁。如果输入代码与锁内密码一致,锁被打开;否则,应封闭开锁电路。

(一)系统设计

本系统的设计要求是八位二进制,串行输入数字密码锁,并具有开锁与错误提示。

方案一:由时钟脉冲发生器、按键、指示灯和控制部分等组成。时钟输入CLK由外部时钟脉冲发生器的输出提供。设计中的指示灯就是发光二极管,共十个,用来指示系统的工作状态。其中八个为一组,用来显示已经输入的密码的个数,剩余两个,一个为开锁绿色指示灯LT;另一个为报警红色指示灯LF。控制部分是VHDL语言设计的核心部分,主要由方波生成模块、消抖同步模块和密码锁逻辑控制模块这四个模块组成,可以完成密码的修改、设定及非法入侵警报、驱动外围电路等功能(原理图如图一所示)。本系统虽然设计完善,但程序复杂,占用资源多,设计不够灵活。故本设计采用方案二。

图一:方案一设计图

方案二:利用有限状态机对系统进行设计。本设计分为两个模块:其一,密码预置模块,可自行设置8位二进制的密码。其二,密码检测模块,检测输入的密码与预先设置的密码是否一致。本设计程序简单,利用有限状态机其优点在于克服了纯硬件数字系统顺序方式控制不灵活的缺点,容易构成性能良好的同步时序逻辑模块,而且单进程Moore状态机比较容易构成能避免出现毛刺现象的状态机,易实现。

(二)单元电路设计

(1) 密码预置模块abc:该模块有3个输入端,1个输出端。DIN1为预置密码输

入端,CLR1为清零端,CLK1为串行脉冲输入端。当CLR1在低电平的状态下,DIN1端可设置密码,给CKL1输入八下计数脉冲即可完成密码的预置。预设置的密码将会通过DOUT输出到序列检测模块。

(2) 密码检测模块SCHK:该模块有4个输入端,1个输出端。DIN2为待检测

密码输入端,D_IN为已预置的密码输入端,CLR2为清零端,CLK2为串行脉冲输入端.当CLR2在低电平的状态下,在CLK2输入串行输入脉冲,当给CLK2输入八下计数脉冲时,即八位密码全部验证,如果密码正确,则在AB输出口输出A。

系统原理图如下图所示

图二:系统原理图

(三)软件设计

本系统采用VHDL语言编写,用Quartus II软件进行仿真分析。程序见附录1。

仿真分析(目标芯片型号;最高工作频率MHz;

资源使用个LCs, 个I/O.)

图三是密码预置模块abc的仿真波形,有图可见当预置密码输入端串行输入8为2进制密码后DOUT会将密码输出。

图三:密码预置模块仿真波形

图四是密码检测模块的仿真波形,右图可见当待测密码端输入的密码与预置的密码一致是AB端会由B变为A .

图四:密码检测模块仿真波形

图五是整个系统的仿真波形。输入密码与预置密码一致时AB由B跳为A.

图五:系统仿真波形

三、系统测试

本系统采用GW48系列SOPC/EDA实验开发系统(GW48-PK2/CK)对系统

进行硬件仿真分析及测试,引脚锁定采用模式五。通过该锁定图,在实验箱上对设计进行操作及验证,验证结果与预计相符。

硬件验证:实验箱编号;目标芯片型号。

引脚锁定表

四、结论

通过硬件仿真分析及测试,结果与预计相符。从结果中得出本设计的正确性,其结构简单易实现,突出了Moore状态机在应用中的优势。设计还可以增加一个报警电路,当输入的密码不正确时蜂鸣器鸣叫报警。

五、参考书目

1.EDA技术与VHDL(第三版) 清华大学出版社潘松、黄继业编著

2.EDA技术实验与课程设计清华大学出版社曹昕燕、周凤臣、聂春燕编著

六、附录

附录1.程序

(1)密码预置模块

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY abc IS

PORT (DIN,CLK,CLR :IN STD_LOGIC;

DOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END abc;

ARCHITECTURE behave OF abc IS

TYPE ST_TYPE IS(ST0,ST1,ST2,ST3,ST4,ST5,ST6,ST7,ST8); SIGNAL Q : ST_TYPE;

SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

PROCESS( CLK,CLR )

BEGIN

IF CLR = '1' THEN Q <= ST0 ;

ELSIF CLK'EVENT AND CLK='1' THEN

CASE Q IS

WHEN ST0=> D(7)<=DIN ;Q<=ST1;

WHEN ST1=> D(6)<=DIN ;Q<=ST2;

WHEN ST2=> D(5)<=DIN ;Q<=ST3;

WHEN ST3=> D(4)<=DIN ;Q<=ST4;

WHEN ST4=> D(3)<=DIN ;Q<=ST5;

WHEN ST5=> D(2)<=DIN ;Q<=ST6;

WHEN ST6=> D(1)<=DIN ;Q<=ST7;

WHEN ST7=> D(0)<=DIN ;Q<=ST8;

WHEN OTHERS => Q<=ST0;

END CASE ;

END IF ;

END PROCESS ;

PROCESS( Q )

BEGIN

IF Q = ST8 THEN DOUT <=D ;

END IF;

END PROCESS ;

END behave;

(2)密码检测模块

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY SCHK IS

PORT(DIN,CLK,CLR :IN STD_LOGIC;

相关文档
最新文档