ymdata_bcd[3..0]dout7[6..0]inst 图4.6 译码显示电路符号图
模块外部信号端口:
data_bcd:密码信号输入端口,提供密码信号输入。 dout7:密码锁状态信号显示灯,提供状态显示信号。
5.计算机仿真
5.1电子密码锁的设计流程
使用QuartusⅡ进行电子密码锁设计的流程为 (1)编写VHDL程序(使用Text Editor)(见附录); (2)编译VHDL程序(使用Compiler);
(3)仿真验证VHDL程序(使用Waveform Editor, Simulator); (4)进行芯片的时序分析(使用Timing Analyzer); (5)安排芯片管脚位置(使用Floorplan Editor); (6)下载程序至芯片(使用Programmer)。 5.2系统的有关编译与仿真
本节主要是阐述设计在Quartus II6.0软件中实现编译与仿真。
在Quartus II6.0在输入源程序后,我们需要建立一个工程,在工程中我们要把设计文件加入工程中;然后选择仿真器和综合器类型值得注意的是如果选择默认的“NONE”,表示选择Quartus II软件中自带的仿真器和综合器,结合自己的设计,在此我选择默认项“NONE”;最后选择目标芯片。在“Family”栏选择芯片系列,在此我选择“Cyclone”系列再选择此系列的具体芯片EP2C35F484C6。
工程建立以后,可以进行源程序的编译。选择“Processing”Start Compilation,启动全程编译。编译后产生的报告如下所示:
图5.1 编译后产生的统计报告
编译成功后,就可以进行波形的仿真。 5.2.1防抖模块的仿真
图5.2为键盘输入防抖电路的仿真结果图,图中的输出信号N,ACC,REG是为了便于仿真时观察中间结果而增加的观测点的输出,调试好后程序中的相应语句应注释掉。由图上可以看出,原来的弹跳现象经过键盘输入防抖电路处理后已经清除了,必须连续两次取样检测到信号才会有反应,否则电路将其视为噪声,不予理会。
图5.2 键盘输入防抖电路的仿真结果图
由图中可以看出,键盘扫描出的信号弹跳现象得到改善。 5.2.2密码锁输入电路的仿真
图5.3为密码锁输入电路的仿真结果图,图中的输出信号CLK_SCAN,C_DEBOUNCE是为便于仿真时观察中间结果而增加的观测点的输出,调试好后
程序中的相应语句应注释掉。
图5.3密码锁输入电路仿真结果图
输入信号KEY_IN[2..0]依序依011-101-110-011-101的顺序周期性循环,对键盘进行扫描。如有按键发生,键盘扫描输出信号CLK_SCAN做出反应。 5.2.3密码锁控制电路的仿真
图5.4和图5.5分别是两个密码锁控制电路仿真结果图。
图5.4 密码锁控制电路仿真结果图(一)
图5.4的仿真过程为先输入上锁密码“1234”,再按下上锁键激活电锁接着输入万能解锁密码“8888”,最后按下解锁键解锁。
图5.5 密码锁控制电路仿真结果图(二)
图5.5的仿真过程为先输入上锁密码“1234”,再按下上锁键激活电锁,接
着输入解锁密码“1234”;最后按下解锁键解锁。从仿真图上可以看出,密码控制电路的设计是正确的。
通过波形仿真来验证是否完成了相应的模块功能,如果出现问题要进行相应的修改。进行完波形仿真,就可以通过QuartusII6.0中的模块编辑器来建立相应的功能模块,将前面各个设计好的功能模块进行整合,可得到一个完整的电子密码锁系统的整体组装设计原理图。(图5.6)
图5.6 密码锁的整体组装设计原理图