《四位密码锁论文》word版.doc_第1页
《四位密码锁论文》word版.doc_第2页
《四位密码锁论文》word版.doc_第3页
《四位密码锁论文》word版.doc_第4页
《四位密码锁论文》word版.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL语言课程设计报告目 录前言:1一、设计任务:2二、题目分析与整体构思:3三、密码锁各部分功能电路设计:4四、程序设计:5五、心得体会:6附录:7参考文献:8前 言数字信号处理是指应用数字的方法处理各种信息类型的基本理论和基本算法,处理的信号对象主要是数字信号。采用专用数字信号处理芯片(DSP芯片)是目前较多采用的方法。但是由于DSP应用系统实现的复杂性和某些器件硬件局限性,已经不能够满足现代电子产品的性能和要求,因此给实际应用中带来诸多不便。但DSP芯片作为数字信号处理器并不是唯一的选择。采用FPGA来实现DSP系统已经十分普遍。在诸如实时图像处理、联合战术无线电通信系统、3G移动通信基站、实时工控系统、卫星导航设备等现代电子通信设备中,FPGA的DSP解决方案已经成了非此莫属的选择了。现代DSP技术时针对传统DSP技术而言的,后者主要是指目前已经广泛使用的DSP处理器解决方案,包括一些列软件技术和开发技术;而现代DSP技术则是基于SOPC技术、EDA技术与FPGA实现的DSP技术,是现代电子技术发展的产物,它有效克服了传统DSP技术的许多瓶颈,在多个方面显示出优势,如高速与实时性,可靠性高,系统的重配置与硬件可重构性,单芯片的可实现性以及技术的标准化和高效率。本文以在PFGA芯片中实现一个简单的可控正弦信号发生模块的设计为例,详细介绍DSP Builder的使用方法,从而有介绍一种另外PFGADSP算法的程序方法。一、设计任务:设计一个四位密码锁,输入密码正确开锁,输入错误不能开锁,三次输入错误报警。功能: 密码输入:每按下一个键,要求在数码管上显示,并依次左移; 密码清除:清除密码输入,并将输入置为”0000”; 密码修改:将当前输入设为新的密码; 上锁和开锁。二、题目分析与整体构思:设计密码锁,从题目要求来看,(1)、需要设计键盘输入电路:键盘输入,用的是矩阵键盘,为了使键盘输入更为准确,要设计防抖电路使键盘输入时的抖动不给数据输入造成影响。(2)、要在输入时看到自己输入的数字为了确保自己输入正确而要设计显示设备,因为只需要显示数字所以用LED数码管就可以了,设计数码管显示电路就需要译码电路。(3)、最后就是密码锁的控制电路,这部分是最终实现密码锁的。以下: 键盘接口电路:键盘矩阵键盘扫描键盘消抖键盘译码及按键存储。 电锁控制电路:数字按键输入、存储及清除。功能按键的设计。密码清除、修改与存储。电锁的激活与解除。 输出显示电路BCD 译码、动态扫描电路。 三、密码锁设计方案:密码锁设计的实现是通过扫描矩阵键盘的输入来采集信息与内部的信息进行比较,如果和内部密码一致就进行开锁,如果不一致就不开锁。矩阵式键盘工作原理:矩阵式键盘是一种常见的输入装置,在计算机、电话、手机、微波炉等各工电子产品中被广泛应用。矩阵式键盘以行、列形式排列,键盘上的每一个按键盘其实是一个开关电路,当某键被按下时,该按键所对应的位置就呈现逻辑0 的状态。键盘消抖电路:因为按键大多是机械式开关,在开关切换的瞬间会在接解点出现来回弹跳的现象。键盘消抖电路:因为按键大多是机械式开关,在开关切换的瞬间会在接解点出现来回弹跳的现象。键盘译码电路:从前面所述的键盘扫描电路的输出可以看出,扫描得到的信号规律性不强,例如数字键主要用来输入数字,但键盘扫描输出无法拿来直接使用,必须对其进行译码才能使用。说明:键盘译码电路除了负责将键盘送出的数据进行译码外,另外就是在译码的同时,必须判别所按下的是数字键还是功能键。按键存储电路因为每次按键都会产生新的数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将键盘扫描译码后的结果记录下来。这一功能可以用移位寄存器来实现下面是主程序模块:下面的是键盘译码模块:四、程序设计:密码锁主程序设计:library ieee;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY keys_lock ISPORT ( clk ,clr,status : IN STD_LOGIC ; selout : OUT STD_LOGIC_VECTOR (2 downto 0) ; key : IN STD_LOGIC_VECTOR (3 downto 0) ; segout : OUT STD_LOGIC_VECTOR (0 TO 6); locks,unlocks,erro: OUT STD_LOGIC );END keys_lock ;ARCHITECTURE doit of keys_lock ISsignal counter1 : std_logic_vector(1 downto 0);signal counter : std_logic_vector(2 downto 0);signal counter2 : std_logic_vector(4 downto 0);signal dc0,dc1,dc2,dc3,lock0,lock1,lock2,lock3 : std_logic_vector(3 downto 0);signal dcc1 : std_logic_vector(4 downto 0);signal dcc : std_logic_vector(6 downto 0);signal d0,d1,d2,d3 : std_logic_vector(0 to 6);signal clk1,test,koff: std_logic;component decode PORT( ssin : in std_logic_vector(3 downto 0); ssout: out std_logic_vector(0 to 6) );end component;begintest=key(3) and key(2) and key(1) and key(0);P1: process(clr,clk) begin if(clr=0) then counter1=00; elsif(clkevent and clk=1) then counter1=counter1+1; end if;end process P1;clk1=0 when counter1=01 else 1;P2: process(clr,clk1,test) begin if(clr=0) then counter=000; elsif(clk1event and clk1=1) then if(test=0) or (koff=0) then counter=counter; else counter=counter+1; end if; end if;end process P2;selout=counter;dcc=counter & key;P3: process(clk,test) begin if(clkevent and clk=0) then if(dcc=0001110) then dcc1=00000; elsif(dcc=0011110) then dcc1=00001; elsif(dcc=0101110) then dcc1=00010; elsif(dcc=0111110) then dcc1=00011; elsif(dcc=1101110) then dcc1=00100; elsif(dcc=1111110) then dcc1=00101; elsif(dcc=0001101) then dcc1=00110; elsif(dcc=0011101) then dcc1=00111; elsif(dcc=1001101) then dcc1=01000; elsif(dcc=1011101) then dcc1=01001; elsif(dcc=1101101) then dcc1=01010; elsif(dcc=1111101) then dcc1=01011; elsif(dcc=0101011) then dcc1=01100; elsif(dcc=0111011) then dcc1=01101; elsif(dcc=1001011) then dcc1=01110; elsif(dcc=1011011) then dcc1=01111; elsif(dcc=1001110) then dcc1=10000; elsif(dcc=1011110) then dcc1=10001; elsif(test=0) then dcc1=01111; end if; end if;end process P3;-dcc1=0000 when (dcc=0001110) else- 0001 when (dcc=0011110) else- 0010 when (dcc=0101110) else- 0011 when (dcc=0111110) else- 0100 when (dcc=1101110) else- 0101 when (dcc=1111110) else- 0110 when (dcc=0001101) else- 0111 when (dcc=0011101) else- 1000 when (dcc=1001101) else- 1001 when (dcc=1011101) else - 1010 when (dcc=1101101) else- 1011 when (dcc=1111101) else- 1100 when (dcc=0101011) else- 1101 when (dcc=0111011) else- 1110 when (dcc=1001011) else- 1111 when (dcc=1011011) else- 0000;P4: process(test,clk,clr) begin if(clr=0) then counter2=00000; koff=1; elsif(clkevent and clk=1) then if(test=0) then counter2=00000; koff=0; elsif(counter211110) then counter2=counter2+1; - end if; elsif(counter2=11110) then koff=1; end if; end if;end process P4;-koff=0 when counter2=01110 else- 1;P5: process(koff,clr) begin if(clr=0) then dc0=0000; dc1=0000; dc2=0000; dc3=0000; locks=0; unlocks=0; erro=0; elsif(koffevent and koff=1) then if(dcc1=10000 and status=0) then lock0=dc0; lock1=dc1; lock2=dc2; lock3=dc3; locks=1; unlocks=0; erro=0; elsif(dcc1=10001 and status=1) then if(dc0=lock0 and dc1=lock1 and dc2=lock2 and dc3=lock3) then locks=0; unlocks=1; else erro=1; end if; else dc0=dcc1(3 downto 0); dc1=dc0; dc2=dc1; dc3dc0, ssout=d0);U2: decode port map(ssin=dc1, ssout=d1);U3: decode port map(ssin=dc2, ssout=d2);U4: decode port map(ssin=dc3, ssout=d3); segout=d0 when counter=000 else d1 when counter=001 else d2 when counter=010 else d3 when counter=011 else 0000000;end doit;译码器设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY decode ISPORT( ssin : in std_logic_vector(3 downto 0); ssout: out std_logic_vector(0 to 6) );end decode;ARCHITECTURE a of decode ISbegin ssout=1111110 when ssin=0000 else 0110000 when ssin=0001 else 1101101 when ssin=0010 else 1111001 when ssin=0011 else 0110011 when ssin=0100 else 1011011 when ssin=0101 else 1011111 when ssin=0110 else 1110000 when ss

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论