EDA综合设计实验
设计题目:数字密码锁
设计报告
目录
1、 2、
摘要……………………………………………………………003 数字密码锁的设计……………………………………………003
2.1 系统设计………………………………………………..…….003 2.2 单元电路设计………………………………………………...004 2.3 软件设计……………………………………………………...004 3、 4、 5、 6、
系统测试………………………………………………………005 结论……………………………………………………………006 参考书目………………………………………………………006 附录……………………………………………………………007
2
一、摘要
本系统是基于EDA作为开发工具,VHDL语言为硬件描述语言,QUARTUS II作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。
本系统采用有限状态机进行设计,目的在于实现八位二进制,串行输入数字密码锁,并具有开锁与错误提示。开锁代码为八位二进制数,当输入代码的位数和位值与预先设置的密码一致时方可开锁,并使数码管显示由“B”变为“A”。
二、 数字密码锁的设计
数字密码锁有两类:一类是并行接收数据,称为并行锁;一类是串行接受数据,称为串行锁。如果输入代码与锁内密码一致,锁被打开;否则,应封闭开锁电路。
(一)系统设计
本系统的设计要求是八位二进制,串行输入数字密码锁,并具有开锁与错误提示。
方案一:由时钟脉冲发生器、按键、指示灯和控制部分等组成。时钟输入CLK由外部时钟脉冲发生器的输出提供。设计中的指示灯就是发光二极管,共十个,用来指示系统的工作状态。其中八个为一组,用来显示已经输入的密码的个数,剩余两个,一个为开锁绿色指示灯LT;另一个为报警红色指示灯LF。控制部分是VHDL语言设计的核心部分,主要由方波生成模块、消抖同步模块和密码锁逻辑控制模块这四个模块组成,可以完成密码的修改、设定及非法入侵警报、驱动外围电路等功能(原理图如图一所示)。本系统虽然设计完善,但程序复杂,占用资源多,设计不够灵活。故本设计采用方案二。
图一:方案一设计图
3
方案二:利用有限状态机对系统进行设计。本设计分为两个模块:其一,密码预置模块,可自行设置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。
4
仿真分析(目标芯片型号 ;最高工作频率 MHz; 资源使用 个LCs, 个I/O.)
图三是密码预置模块abc的仿真波形,有图可见当预置密码输入端串行输入8为2进制密码后DOUT会将密码输出。
图三:密码预置模块仿真波形
图四是密码检测模块的仿真波形,右图可见当待测密码端输入的密码与预置的密码一致是AB端会由B变为A .
图四:密码检测模块仿真波形
图五是整个系统的仿真波形。输入密码与预置密码一致时AB由B跳为
A.
图五:系统仿真波形
三、 系统测试
5
本系统采用GW48系列SOPC/EDA实验开发系统(GW48-PK2/CK)对系统进行硬件仿真分析及测试,引脚锁定采用模式五。通过该锁定图,在实验箱上对设计进行操作及验证,验证结果与预计相符。
硬件验证:实验箱编号 ;目标芯片型号 。
引脚锁定表
四、结论
通过硬件仿真分析及测试,结果与预计相符。从结果中得出本设计的正确性,其结构简单易实现,突出了Moore状态机在应用中的优势。设计还可以增加一个报警电路,当输入的密码不正确时蜂鸣器鸣叫报警。
五、参考书目
1.EDA技术与VHDL(第三版) 清华大学出版社 潘松、黄继业编著 2.EDA技术实验与课程设计 清华大学出版社 曹昕燕、周凤臣、聂春燕编著
6
六、附录
附录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;
7
D_IN :IN STD_LOGIC_VECTOR(7 DOWNTO 0); AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END SCHK;
ARCHITECTURE behav OF SCHK 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
D <= D_IN;
PROCESS( CLK,CLR ) BEGIN
IF CLR = '1' THEN Q <= ST0 ; ELSIF CLK'EVENT AND CLK='1' THEN CASE Q IS
WHEN ST0=> IF DIN = D(7) THEN Q <= ST1 ; ELSE Q <= ST0 ; END IF ; WHEN ST1=> IF DIN = D(6) THEN Q <= ST2 ; ELSE Q <= ST0 ; END IF ; WHEN ST2=> IF DIN = D(5) THEN Q <= ST3 ; ELSE Q <= ST0 ; END IF ; WHEN ST3=> IF DIN = D(4) THEN Q <= ST4 ; ELSE Q <= ST0 ; END IF ; WHEN ST4=> IF DIN = D(3) THEN Q <= ST5 ; ELSE Q <= ST0 ; END IF ; WHEN ST5=> IF DIN = D(2) THEN Q <= ST6 ; ELSE Q <= ST0 ; END IF ; WHEN ST6=> IF DIN = D(1) THEN Q <= ST7 ; ELSE Q <= ST0 ; END IF ; WHEN ST7=> IF DIN = D(0) THEN Q <= ST8 ; ELSE Q <= ST0 ; END IF ; WHEN OTHERS => Q<=ST0; END CASE ; END IF ; END PROCESS ;
PROCESS( Q ) BEGIN
IF Q = ST8 THEN AB <= \"1010\" ; ELSE AB<=\"1011\"; END IF ; END PROCESS ; END behav ;
8
附录2.设计说明书
功能、技术指标
本次设计我选择了数字密码锁,设计要求是:8位二进制,串行输入,有开锁和错误提示,经研究及查阅资料后,决定采用摩尔(moore)来实现密码的预置和检测并以LED数码管指示开锁是否成功。其原理图如图所示:
模块abc实现密码预置功能,用户可以自行设置密码,而且密码可更改。模块SCHK实现密码检测功能,当用户输入的待测密码与上一次输入的密码一致之时开锁成功,此时LED数码管指示将由b跳变为A。本电路基本由PLD来实现需外接1个共阴数码管,6个按键,6个LED指示灯。
内部电路结构图如下:
9
附录3.使用说明书
首先预置密码,当CLR1(键6)在低电平的状态下,DIN1(键7)端可设 置密码,给CKL1(键8)输入八下计数脉冲即可完成密码的预置。然后进行密码检测,CLR2(键1)在低电平的状态下,在DIN2(键2)输入待检测密码,在CLK2(键3)输入串行输入脉冲,当给CLK2输入八下计数脉冲时,即八位密码全部验证,如果密码正确,则在数码管1显示将由b跳变为A,否则数码管将保持显示b。
10
因篇幅问题不能全部显示,请点此查看更多更全内容