文档介绍:该【基于vhdl的电子密码锁的设计论文本科论文 】是由【kuailonggua】上传分享,文档一共【21】页,该文档可以免费在线阅读,需要了解更多关于【基于vhdl的电子密码锁的设计论文本科论文 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。下载需知ormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLine★本站上传的文档资源均来自互联网,以分享为目的,为有需要者提供学****与参考,版权为原作者所有,若侵犯到原作者的权益,请提出指正,及时与网站客服联系,并提供必要的证据,如属实,网站会在第一时间进行处理,立即删除相应下载链接页面并将文档删除。ormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLines★本站上传的文档,在文档排版上进行过整理,并未对内容进行增加或删除,因此,本站并不保证文档质量,因此下载之前,务必先预览一番,因为预览与下载的内容完全一样,所以如果发现内容有问题,请不要下载。ormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLin★下载后的word文档均可进行复制、编辑,没有密码保护,PDF格式均可转换成word,PPT文档可直接进行修改。因上传需要对文档进行转换,转换过程中有可能不能正常阅读或是下载后不能编辑,遇到这种问题,可以留言,留下邮箱地址,我们会把原始文档发送到你的邮箱。ormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinelec摘要FPGA/VHDL是近几年集成电路中发展最快的产品。由于FPGA性能的高速发展以及设计人员自身能力的提高,可编程逻辑器件供应商将进一步扩大可编程芯片的领地,将复杂的专用芯片挤向高端和超复杂应用。据ICInsights的数据显示,FPGA市场从1999年的29亿美元增长到去年的56亿美元,几乎翻了一番。Matas预计这种高速增长局面以后很难出现,但可编程逻辑器件依然是集成电路中最具活力和前途的产业。本文介绍的VHDL密码锁应具有如下功能:密码预先存入寄存器中,***时,输入密码存入另一寄存器中,当按下“确定”键时,启动比较器,比较两个寄存器中的内容,当结果相同时***;当结果不同时不***。用户需要修改密码时,先***,再按“设定密码”,清除预先存入的密码,通过键盘输入新的2位十进制码,按“确定”完成。关键词:VHDL,密码锁,矩阵目录摘要 1目录 2一、设计要求 3二电路组成 3三功能电路的设计 41、总体设计框图 42、键盘接口电路 13(1)SISO—串行输入/串行输出 14(2)SIPO--串行输入/并行输出 15(3)PISO--并行输入/串行输出 16(4)PIPO--并行输入/并行输出 19(1)数字按键输入部分 19(2)功能键输入部分 19(3)三种工作模式 19附件1:程序清单 20一、设计要求设计一个简单的数字电子密码锁,密码为6位。功能1、密码输入:每按下一个键,要求在数码管上显示,并依次左移;2、密码清除:清除密码输入,并将输入置为”000000”;3、密码修改:将当前输入设为新的密码;4、上锁和***。二电路组成为达到以上功能,可将电子密码锁分为以下几个模块:1、键盘接口电路键盘矩阵、键盘扫描、键盘消抖、键盘译码及按键存储。2、电锁控制电路:数字按键输入、存储及清除。功能按键的设计。密码清除、修改与存储。电锁的激活与解除。3、输出显示电路BCD译码、动态扫描电路。三功能电路的设计1、总体设计框图2、键盘接口电路矩阵式键盘工作原理:矩阵式键盘是一种常见的输入装置,在计算机、电话、手机、微波炉等各工电子产品中被广泛应用。如图所示为一3×4矩阵式键盘。矩阵式键盘以行、列形式排列,图中为4行3列,键盘上的每一个按键盘其实是一个开关电路,当某键被按下时,该按键所对应的位置就呈现逻辑0的状态,键盘的扫描可以以行扫或列扫方式进行,图中为行扫方式,KEYR3—KEYR0为扫描信号,其中的某一位为0即扫描其中的一行,具体见表1-,KEYR2与第二行相连,依此类推。很显然,扫描信号的变化顺序为:0111、1011、1101、1110,周而复始。在扫描的过程中,当有键按下时,对应的键位就为逻辑0状态,从而从KEYC2..-2所示:若从KEYC2..0读出的值全为1时,表示没有键被按下,则不进行按键的处理。如果的键被按下,则将KEYC2..0读出的送至键盘译码电路进行译码。表1-2键盘扫描与其对应的键值的关系时序产生电路:时序电路的产生:在一个系统的设计中,往往需要多种时钟信号,最为方便的方法是利用一个自由计数器来产生各种需要的频率。本电路需要:系统主时钟、消抖取样时钟和动态扫描时钟。,请分析其输出结果:LIBRARYIEEE;;;;ENTITYfree_counterISPORT(CLK:INSTD_LOGIC;CLK_A:OUTSTD_LOGIC;CLK_B:OUTSTD_LOGIC_VECTOR(1DOWNTO0));ENDfree_counter;ARCHITECTUREaOFfree_counterISSIGNALQ:STD_LOGIC_VECTOR(6DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;ENDPROCESS;CLK_A<=Q(1);CLK_B<=Q(4DOWNTO3);ENDa;分析:首选信号Q建立一个9位自由计数器,对输入主时钟进行降频处理;使用CLK_A<=Q(1)语句,取得一个脉冲波形,对主时钟进行2分频,其值为0、1、0、1;使用CLK_B<=Q(4DOWNTO3)语句,取得一脉冲序列,依次为00、01、10、11、00.;:提供键盘扫描信号,即表1-1中的KEYR3..0,变化顺序依次为0111、1011、1101、1110.。。依次重复出现。程序清单:LIBRARYieee;;;;ENTITYscanISPORT(CLK:INSTD_LOGIC;CLK_SCAN:OUTSTD_LOGIC_VECTOR(3downto0));ENDscan;ARCHITECTUREaOFscanISSignalS:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALQ:STD_LOGIC_VECTOE(3DOWNTO0);BeginPROCESS(Clk)BeginIFCLK'EventANDCLK='1'thenQ<=Q+1;S:=Q(3DOWNTO2);ENDIF;ENDPROCESS;---排错!SCAN_OUT<="1110"WHENS=0ELSE"1101"WHENS=1ELSE"1011"WHENS=2ELSE"0111"WHENS=3ELSE"1111";ENDa;说明:程序中,S信号是用来产生扫描信号的四个状态,Q是为了对输入主时钟进行降频处理。,在开关切换的瞬间会在接解点出现来回弹跳的现象,其现象可用图1-2表示:由图可见,虽然只是按了一次键,实际产生的按键信号却不只跳动一次,经过取样信号的检查后,将会造成误码判,认为是按了两次键。如果调整取样频率,可以发现抖现象得到了改善。按键信号:取样信号:取样结果:调整取样频率后的情况如下:●程序清单:LIBRARYieee;;LIBRARYaltera;;ENTITYdebouncingISPORT(d_in,clk:INSTD_LOGIC;dd1,dd0,qq1,qq0:OUTSTD_LOGIC;d_out,d_out1:OUTSTD_LOGIC);ENDdebouncing;ARCHITECTUREaOFdebouncingIS,inv_d:std_logic;signalq0,q1:std_logic;signald1,d0:std_logic;BEGINvcc<='1';inv_d<=notd_in;dff1:dffPORTMAP(d=>vcc,q=>q0,clk=>clk,clrn=>inv_d,prn=>vcc);dff2:dffPORTMAP(d=>vcc,q=>q1,clk=>clk,clrn=>q0,prn=>vcc);process(clk)begin