网站大量收购闲置独家精品文档,联系QQ:2885784924

第8章 应用举例(备用).doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 应用举例(备用)

第八章:数字系统设计实例 8.1数字密码锁电路的设计 8.1.1系统设计要求 (1)密码输入:每按下一个数字键,就输入一个数值,并在显示器上显示出该数值,同时将先前输入的数据依次左移一个数字位置。 (2)密码清除:按下清键可清除前面的所有的输入值,清除成为“0000”。 (3)密码更改:按下更改键可将目前的数码设定成新的密码。 (4)密码上锁:按下上锁键可将密码锁。 (5)密码解除:按下解除键首先检查输入的密码是否正确,密码正确即开锁。系统设计 根据系统设计要求,系统设计采用自顶向下的设计方法。顶层设计采用原理图设计方式,系统的整体组装设计原理图如图8-1所示,它由密码输入模块、密码锁控制模块和密码锁显示译码模块三部分组成。 图8-1 系统的整体组装设计原理图模块设计与实现 系统模块由输入模块、控制模块和译码模块三个模块组成,下面我们介绍各子模块的设计及实现过程。 密码锁输入模块 密码锁输入模块由时序产生电路、键盘扫描电路、键盘译码电路及按键存储电路组成。 (1)时序产生电路 产生电路中使用三种不同频率的工作脉冲波形,即系统时钟脉冲、弹跳消除取样信号和键盘扫描信号。 (2)键盘扫描电路SEL ------------- 1110 SEL ------------- 1101 SEL------------- 1011 SEL-------------0111 扫描电路作用是提供键盘扫描信号,扫描信号变化的顺序依次为1110- 1101 -1011- 0111-1110……依序地周而复始。键盘扫描信号为1110位置键盘扫描信号为111时,按键位置键盘扫描信号为11时,按键位置键盘扫描信号为111时,按键位置*”键按下)、101(“0”键按下)、110(“#”键按下)。 (3)键盘译码电路 上述键盘中的按键分为数字按键和按键,每个按键可能负责不同的功能,例如清除键、上锁键和解锁键等。数字按键主要是用来输入数字的但是键盘所产生的输出是无法直接拿来用作密码锁控制电路的输入的;另外,不同的按键具有不同的功能,所以必须有键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。 按键存储电路 因为每次扫描会产生新的数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕的结果记录下来。各按键位置与数码关系如表8-1所示*”为“上锁”, “#”为“清除/解锁”。若按下的是数字键,则译成相对应的BCD码,若按下的是功能键,则译成四位数的码字,并由密码锁控制电路做相应的动作。 表8-1 按键位置与数码关系 键信号SEL[3.0] 1110 1110 1110 1101 1101 1101 1011 1011 1011 0111 0111 0111 按键位置[2..0] 011 101 110 011 101 110 011 101 110 011 101 110 按键号 1 2 3 4 5 6 7 8 9 * 0 # N= 0011 N= 0100 N= 0101 N= 0110 N= 0111 N= 1000 N= 1001 F= 0100 N= 0000 F= 0001 按键功能 数码输入 上锁 数码输入 清除解锁 根据上述分析,密码输入电路的VHDL程序 【例8-1】密码输入电路的VHDL程序(SR.VHD)。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY SR IS PORT( CLK_IN : IN STD_LOGIC; --时钟信号 KEY_IN : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --按键输入信号 DATA_N : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --“数字键数据 DATA_F : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--功能键数据 FLAG_N: OUT STD_LOGIC; --数字键数据标志 FLAG_F: OUT STD_LOGIC; --功能键数据标志 CQD: OUT STD_LOGIC; --键盘输入采样时钟 KSEL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --键盘扫描信号 CSR: OUT STD_LOGIC_VECTOR(1 DOWNTO 0));--按键

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档