




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章:数字系统设计实例8.1数字密码锁电路的设计8.1.1系统设计要求 (1)密码输入:每按下一个“数字键”,就输入一个数值,并在显示器上显示出该数值,同时将先前输入的数据依次左移一个数字位置。 (2)密码清除:按下“清除”键可清除前面的所有的输入值,清除成为“0000”。 (3)密码更改:按下“更改”键可将目前的数码设定成新的密码。 (4)密码上锁:按下“上锁”键可将密码锁定。(5)密码解除:按下“解除”键首先检查输入的密码是否正确,密码正确即开锁。8.1.2系统设计根据系统设计要求,系统设计采用自顶向下的设计方法。顶层设计采用原理图设计方式,系统的整体组装设计原理图如图8-1所示,它由密码输入模块(sr)、密码锁控制模块(ctrl)和密码锁显示译码模块(ym)三部分组成。图8-1 系统的整体组装设计原理图8.1.3模块设计与实现系统模块由输入模块、控制模块和译码模块三个模块组成,下面我们介绍各子模块的设计及实现过程。1、密码锁输入模块密码锁输入模块由时序产生电路、键盘扫描电路、键盘译码电路及按键存储电路组成。(1)时序产生电路产生电路中使用三种不同频率的工作脉冲波形,即系统时钟脉冲、弹跳消除取样信号和键盘扫描信号。(2)键盘扫描电路 key2 key1 key0 sel321 - 1110sel546 - 1101sel987- 1011sel#0*-0111扫描电路作用是提供键盘扫描信号,扫描信号变化的顺序依次为1110- 1101 -1011- 0111-1110依序地周而复始。当键盘扫描信号为1110时,按键位置分别为011(“1”键按下)、101(“2”键按下)、110(“3”键按下);当键盘扫描信号为1101时,按键位置分别为011(“4”键按下)、101(“5”键按下)、110(“6”键按下);当键盘扫描信号为1011时,按键位置分别为011(“7”键按下)、101(“8”键按下)、110(“9”键按下);当键盘扫描信号为0111时,按键位置分别为011(“*”键按下)、101(“0”键按下)、110(“#”键按下)。(3)键盘译码电路上述键盘中的按键分为数字按键和功能按键,每个功能按键可能负责不同的功能,例如“清除”键、“上锁”键和“解锁”键等。数字按键主要是用来输入数字的。但是键盘所产生的输出是无法直接拿来用作密码锁控制电路的输入的;另外,不同的按键具有不同的功能,所以必须有键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。 按键存储电路因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕的结果记录下来。本设计采用串入串出移位寄存器实现。 各按键位置与数码关系如表8-1所示。其中“*”为“上锁”, “#”为“清除/解锁”。若按下的是数字键,则译成相对应的bcd码,若按下的是功能键,则译成四位数的码字,并由密码锁控制电路做相应的动作。表8-1 按键位置与数码关系键扫信号sel3.0111011101110110111011101101110111011011101110111按键位置key2.0011101110011101110011101110011101110按键号123456789*0#键盘译码输出n=0001n=0010n=0011n=0100n=0101n=0110n=0111n=1000n=1001f=0100n=0000f=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 isport( 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);-按键行号00,01,10,11end entity sr;architecture art of sr is signal c_qd: std_logic; signal c_sr: std_logic_vector(1 downto 0); signal n,f: std_logic_vector(3 downto 0); signal fn,ff: std_logic; signal sel: std_logic_vector(3 downto 0); signal q: std_logic_vector(5 downto 0); signal c: std_logic_vector(2 downto 0); begin-内部连接 data_n = n; “数字”按键译码値寄存器data_f =f; flag_n = fn; “数字”按键标志值数据 flag_f = ff; cqd = c_qd; 键盘输入采样时钟 csr =c_sr; 按键位置 ksel=sel; 键盘扫描信号 c(0) = key_in(0); -按键输入寄存器(键盘矩阵的输出) c(1) = key_in(1);c(2) = key_in(2); counter: block is;键盘扫描模块(计数器) begin process(clk_in) is begin if(clk_inevent and clk_in=1) then q=q+1; end if; c_qd=q(3);- 键盘输入采样时钟 c_sr = q(5 downto 4);- 确定键盘扫描行号 end process; sel = 1110 when c_sr=00 else;-扫描“0”行 1101 when c_sr=01 else 1011 when c_sr=10 else 0111 when c_sr=11 else 1111; end block counter; key_decoder: block;-键盘译码模块 signal z: std_logic_vector(4 downto 0);-按键位置 begin process(c_qd);-键盘采样钟触发 begin z n n n n n n n n n n n f f f=1000; end case; end if; end process; fn = not (n(3) and n(2) and n(1) and n(0);- 数字键标志 ff = f(2) or f(0); - 功能键标志 end block key_decoder;end architecture art;2、密码锁控制模块密码锁控制电路是整个电路的控制中心,主要完成对数字按键的输入和功能按键输入的相应控制。(1)数字按键输入的相应控制 如果按下数字键,第一个数字会从显示器的最右端开始显示,此后每新按下一个数字时,显示器上的数字必须左移一位,以便将新的数据显示出来。 假如要更改输入数字,可以按“倒退”键来清除前一个输入的数字,或者按“清除”键清除所有输入数字,再重新输入四位数。 由于这里设计是一个四位电子密码锁,所以当输入的数字键超过4个时,电路不予理会,而且不再显示第四个以后的数字。(2)功能按键输入的相应控制 “清除”键:清除所有的输入数字,即作归零动作。 “上锁”键:按下此键时可将密码锁上锁(上锁前必须设置四位数字密码)。 “解除”键:按下此键会检查输入的密码是否正确,若密码正确无误则解锁。下面给出密码锁控制模块的vhdl源程序。【例8-2】密码锁控制模块的vhdl程序(ctrl.vhd)。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity ctrl isport ( data_n : in std_logic_vector(3 downto 0);-数字键数据 data_f : in std_logic_vector(3 downto 0); -功能键数据 flag_n : in std_logic; -数字键数据标志 flag_f : in std_logic; -功能键数据标志 mimain : buffer std_logic; -密码输入标志 setin : buffer std_logic; -密码设置标志 old : buffer std_logic; -旧密码设置标志 cqd : in std_logic; -键盘输入采样时钟 enlock : out std_logic; -开锁信号 data_bcd: out std_logic_vector (15 downto 0);bcd数据end entity ctrl;architecture art of ctrl is signal acc, reg: std_logic_vector (15 downto 0);acc暂存键入的信息,reg存储输入的密码 begin process (cqd,flag_f) is begin if (cqdevent and cqd=0) then if flag_f=1 then if(data_f = 0100) then acc= 1111111111111111;-功能键“*” mimain=0; setin=0; old enlock mimain = 1; -密码输入标志 acc setin = 1; -密码设置标志 acc=1111111111111111; old null; end case; elsif (mimain=1) then if acc=reg then;-密码核对 enlock=0; mimain=0; else mimain=0; end if; elsif (setin=1) then if (old=1) then if(acc=reg) then old=0; else setin=0; old=0; end if; else if (acc1001100110011001) then;-设置“9999”为万用密码 reg=acc; -密码存储 setin=0; end if; end if; end if; end if; elsif flag_n=1 then acc= acc(11 downto 0)& data_n;-实现数位左移 end if; end if;end process; data_bcd dout7 dout7 dout7 dout7 dout7 dout7 dout7 dout7 dout7 dout7 dout7=0000000; end case; end process;end architecture art;8.1.4 波形仿真前面我们给出了各模块的vhdl源程序及顶层原理图,下面我们对其进行仿真验证。 1. 密码锁输入模块的仿真波形图 8-2 电子密码锁输入模块仿真波形2. 密码锁控制模块的仿真波形图8-3 电子密码锁控制模块仿真波形3. 密码锁译码模块的仿真波形图8-4 电子密码锁译码模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年井下瑞雷波探测仪项目合作计划书
- 云服务在智慧教室建设中的应用与挑战
- 智能教育背景下大数据驱动的学生个性化学习路径研究
- 2025届江西省赣中南五校联考物理高二第二学期期末统考试题含解析
- 学生个人数据在数字化转型中的安全存储与处理
- 教育心理学视角下的学生学习动力
- 2025年江苏省连云港市赣榆高级中学物理高二下期末教学质量检测试题含解析
- 教职工科技应用创新在商业领域的拓展
- 孩子心理健康成长的五大要素
- 企业远程培训的智慧教室应用分享
- GB/T 18380.33-2022电缆和光缆在火焰条件下的燃烧试验第33部分:垂直安装的成束电线电缆火焰垂直蔓延试验A类
- 第一章-护理学基础绪论
- 烟花爆竹经营单位安全管理人员培训教材课件
- J波与J波综合征课件
- 微整面部美学设计面部风水设计课件
- 5吨龙门吊安装与拆除专项施工方案
- 康复科护理质量监测指标
- 农药基本常识课件
- 六年级数学分数除法、解方程计算题 (含答案)
- 高速铁路竣工验收办法
- 拟投入公路工程施工设备检测仪器设备表
评论
0/150
提交评论