基于fpga的电子密码锁设计内容摘要:

也不必关心最终设计实现的目标器件是什么; ( 4) VHDL 具有电路仿真与验证功能,可以保证设计的正确性,用户甚至不必编写如何测试相量 便可以进行源代码级的调试,而且设计者可以非常方便地比较各种方案之间的可行性及其优劣,不需做任何实际的电路实验; ( 5) VHDL 语言可以与工艺无关编程; ( 6) VHDL 语言标准、规范,易于共享和复用。 VHDL 语言的基本结构 VHDL 有五大元素组成 ,即实体、结构体、配置、程序包和库 [11]。 具体说明如下: ( 1) 实体 实体说明部分是说明一个器件的外观视图,即从器件外部看到的器件外貌,其中包括器件的端口,同时也可以定义参数,并把参数从外部传入模块内部,主要用于描述所设计的系统的外部 接口。 ( 2) 结构体 结构体是描述一个器件的内部视图,是次级设计单元。 在其对应的初级设计单元实体说明被编译并且被并入设计库之后,它就可以单独地被并入该设计库中。 结构体描述一个设计的结构和行为,把一个设计的输入和输出之间的关系建立起来。 一个设计可以有多个结构,分别代表该器件的不同实现方案。 根据对一个器件设计由抽象到具体的过程,可把结构体的描述方式分为三个层次:行为描述方式、寄存器传输描述方式( RTL)和结构描述方式。 ( 3) 库 库是经编译后的实体、结构体、包集合和配置的集合。 使用库时总要在设计单元的前面 予以说明。 一旦说明,库中的数据对该设计单元就是可见的,从而共享 基于 FPGA 的电子密码锁设计 9 已经编译过的设计结果。 VHDL 语言中存在的库大致有 IEEE 库、 STD 库、 ASIC 厂家提供的库、用户定义的库和现行作业库。 ( 4) 包集合 包集合属库中的一个层次,是一种可编译的源设计单元。 它收集了VHDL 语言中所用到的信号、常数、数据类型、函数和过程的说明等。 用户可以构造一个包集合,用以存放常数、数据类型、函数和过程,该包集合经编译后便自动加到WORK 库中。 使用库中的包集合时,在打开库后要用 USE 语句说明,例如: LIBRARY IEEE; USE ; ( 5) 配置 配置语句从一个库中为一个实体选择一个特定的结构体,是一种放在库中的被编辑单元,并有相应的配置名。 通过配置技术,可以选取多种不同的结构体,以便对一个设计任务采用仿真工具进行多种配置的性能实验。 另外,配置说明和规定的特性还可以用在多层描述中。 VHDL 语言的应用 硬件描述语言已成为当今以及未来电子设计自动化 (EDA)解决方案的核心,特别是对于深亚微米复杂数字系统的设计,硬件描述语言具有独特的作用。 VHDL 在数字电子电路的设计中具有硬件 描述能力强、设计方法灵活等优点 [12]。 利用硬件描述语言 VHDL,数字电路系统可从系统行为级、寄存器传输级和门级三个不同层次进行设计,即上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。 然后,利用电子设计自动化( EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。 接着,再用专用集成电路 (ASIC)或现场可编程门阵列 (FPGA)自动布局布线工具,把网表转换为要实现的具体电路布线结构。 目前,这种高层次设计 (highleveldesign)的方法已被广泛采用。 据统计,目前在美国硅谷约有90%以上的 ASIC 和 FPGA 采用硬件描述语言进行设计。 VHDL 的应用已成为当今以及未来 EDA 解决方案的核心,而且是复杂数字系统设计的核心 [13]。 VHDL 的设计流程 基于 FPGA 的电子密码锁设计 10 总 体方 案编 写 H D L 代 码 软 件 模 拟综 合 : 面 向 F P G A和 A S I C网 表硬件验证 图 VHDL 的设计流程 4 系统设计方案的研究 系统功能需求分析 本系统主要集中在以 FPGA 以核心外围扩展设计,整个电路主要电子锁具的组成框图是以可编程逻辑器件( FPGA)为核心,配 以相应硬件电路,完成密码的设置、存贮、识别和显示、驱动电磁执行器并检测其驱动电流值,报警等功能。 FPGA 接收键入的代码,并与存贮在闪存中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;如果密码不正确,则允许操作人员重新输入密码,最多可输入三次;如果三次都不正确,则通过 FPGA 产生报警, FPGA 将每次开锁操作和此时电磁执行器的驱动电流值作为状态信息发送给监控器,同时将接收来自接口的报警信息也发送给监控器。 系统方案的总体设计 系统原理框图 本系统由主控芯片( FPGA)、键盘、 显示电路、报警电路和开 /关门电路组成,而主控芯片又可分为按键处理部分、控制部分和译码显示部分。 系统原理框图如图 所示: 基于 FPGA 的电子密码锁设计 11 图 数字电子密码锁系统总体框图 总体设计原理 实现系统大量逻辑电路的集成,在设计中使用了现场可编程逻辑门阵列器件( FPGA)。 FPGA 主要实现以下逻辑功能:键盘处理、数码显示、设置密码、解码开门以及报警等控制功能。 本系统有 13 个按键,包括 0~ 9 共 10 个数字键和 1 个确认键, 1 个警报复位键, 1个清 0 键。 输入正确密码后,按确认键即可开门,在门 开的状态下,第一次输入新密码后再确认密码可设置密码,输入的密码在八位数码管上显示,最后输入的数字显示在最右边,每输入一位数字,密码在数码管上的显示左移一位。 高位的零不用输入,因此密码可以为 1~ 8 位。 初始密码为 0,即上电后,按确认键即可开门。 门开后可通过锁门按钮关门,门关上后要再次输入密码才能开门。 在输入密码的过程中,当用户键入错误密码时,系统就会报警,由扬声器发出报警声,当连续三次出现密码错误时,则系统会长时间报警不止,这时必须按警报复位键方可停止。 基于 FPGA 的电子密码锁设计 12 5 电子密码锁的设计与仿真 系统的硬件模块实现 整个电子密码锁系统可划分为键盘扫描、获取键值、数码显示、设置密码和解码开门等五个子模块。 通过 FPGA 的处理,从而实现基于 FPGA 的电子密码锁的设计,系统实现框图如图 所示。 作为电子密码锁的输入电路,数字密码输入电路可采用一个 3 4 的通用数字机械键盘作为本设计的输入设备。 机械式键盘具有低成本、可靠性高、构成电路简单、技术成熟和应用广泛等特点,因此将其应用到通用电子密码锁中还是比较适宜的。 数字电子密码锁的显示信息电路可采用 LED 数码管显示和液晶屏幕显示两种。 液晶显示具有高 速显示、高可靠性、易于扩展和升级等优点,但是普通液晶显示屏存在亮度低、对复杂环境的适应能力差等缺点,在低亮度的环境下还需要加入其它辅助的照明设备,驱动电路设计相对复杂,因此本设计的显示电路使用通用的 LED 数码管。 几个主要功能模块的设计 密码锁输入电路 (1)时序产生电路 本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉冲(它是系 基于 FPGA 的电子密码锁设计 13 统内部所有时钟脉冲的源头,且其频率最高)、弹跳消除取样信号、键盘扫描信号。 当一个系统中需使用多种操作频率的脉冲波形时,最方便的方法之一就是利用一计 数器来产生各种需要的频率。 也就是先建立一个 N 位计数器, N 的大小根据电路的需求决定, N 的值越大,电路可以分频的次数就越多,这样就可以获得更大的频率变化,以便提供多种不同频率的时钟信号。 若输入时钟为 CLK, N 位计数器的输出为Q[N1..0],则 Q(0)为 CLK 的 2 分频脉冲信号, Q(1)为 CLK 的 4 分频脉冲信号, Q(2)为 CLK 的 8 分频脉冲信号„„ Q(N1)为 CLK 的 2N 分频脉冲信号; Q(5 DOWNTO 4)取得的是一个脉冲波形序列,其值依 00- 01- 10- 11- 00- 01 周期性变化,其变化频率为 CLK 的 32 分频。 我们利用以上规律即可得到各种我们所需要频率的信号或信号序列。 CLK_1K:时钟信号 SIGNAL K_SRCLK: STD_LOGIC。 键盘输入采样时钟 SIGNAL K_POS: STD_LOGIC_VECTOR(1 DOWNTO 0)。 按键位置信号 SIGNAL KSCAN:STD_LOGIC_VECTOR(3 DOWNTO 0)。 键盘扫描信号 KEY IN:STD_LOGIC_VECTOR(2 DOWNTO 0); 按键输入信号 KSRCLK:STD_LOGIC。 键盘输入采样时钟 ( 2) 键盘扫描电路 扫描电路的作用是用来提供键盘扫描信号的,扫描信号变化的顺序依次为 1110- 1101- 1011- 0111- 1110„„ 依序的周而复始。 扫描时依序分别扫描四列按键,当扫描信号为 1110 时扫描 KY3 这一排按键;当扫描信号为 1101 室,扫描 KY2 这一排按键;当扫描信号为 1011 时,扫描 KY1 这一排按键;当扫描信号为 0111 时,扫描KY0 这一排按键。 每扫描一排按键就检查一次是否有键被按下,如果这排没有按键被按下就忽略,反之,如果出现被按下的键则立刻进行按键编码的动作, 且将编码的结果储存于寄存器中。 扫描信号发生器 COUNTER : BLOCK IS SIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0)。 SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0)。 基于 FPGA 的电子密码锁设计 14 1110110110110111 BEGIN PROCESS (CLK_1K) IS BEGIN IF CLK_1K39。 EVENT AND CLK_1K =39。 139。 THEN Q = Q+1。 END IF。 C_DEBOUNCE = Q(2)。 去抖时钟信号 , 大约 125 Hz C_KEYBOARD = Q(6 DOWNTO 5)。 产生键扫信号 ***“00011011”, 大约 16 Hz C_DEBOUNCE = Q(1)。 仿真时用 C_KEYBOARD = Q(5 DOWNTO 4)。 仿真时用 CLK = Q(0)。 END PROCESS。 ( 3) 键盘译码电路 在密码输入电路中,按键又分为数字按键和文字按键,每一个按键可能负责不同的功能,例如清除键、上锁键和解锁键等。 数字按键主要是用来输入数字的,但是键盘所产生的输出是无法直接拿来用作密码锁控制电路的输入的,另外,不同的按键具有不同的功能,所以必须由键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。 键盘译码电路主要将所对应的键盘值设定成所要用的功能键,其主要程序如下: Z=K_POS amp。 C。 IF (K_SRCLK39。 EVENT AND K_SRCLK = 39。 139。 ) THEN CASE Z IS WHEN 11101=N=0000。 WHEN 00011=N=0001。 WHEN 00101=N=0010。 WHEN 00110=N=0011。 基于 FPGA 的电子密码锁设计。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。