ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:535.12KB ,
资源ID:2310289      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2310289.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于CPLD的数字锁.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于CPLD的数字锁.docx

1、基于CPLD的数字锁第1章 系统概述1.1总体思路本次课程设计主要是设计一个电子数字锁。思路如下:(1)数字锁通过键入(电平)输入密码(两位十进制)。(2)数字锁分上锁和解锁两个状态。(3)可以通过程序预置密码。(4)密码可以显示出来。(5)解锁成功、失败都有信号显示。1.2设计内容及设计要求1.2.1设计内容本次课程设计是使用EDA实验箱,基于EP1C3T144C8N芯片的设计方案。具体功能及其硬件如下:(1)通过七位电平开关输入密码。(如110 1110表示十进制数0)(2)通过一位电平开关控制数码管的位码(分为0的时输入第一位数码管的值;1时输入第二位数码管的值)。(3)通过一位电平开关

2、控制上锁和开锁两个状态(分别为1和0)。(4)通过两位数码管显示输入的密码。(5)通过两个LED灯显示开锁成功和失败两种情况(LED1和LED2分别为10时成功,01时失败)。1.2.2 设计要求(1)设计思路清晰,给出整体设计框图;(2)设计各单元电路,完成其功能仿真和编译并生成低层模块;(3)完成顶层设计并编译通过;(4)完成设计下载并调试电路;(5)写出设计报告;第2章 总体设计方案2.1设计流程图图2.1 流程图2.2设计程序原理图图2.2 程序原理图第3章 子模块程序设计3.1译码模块图3.1 译码模块3.1.1程序解析本模块主要是对输入的信号进行编码以及译码,由输入信号X(三位),

3、Y(四位)组成一个七位的间接码,比如X输入110,Y输入1110组成110 1110一个七位码并且转换为四位的间接码0000,通过输入信号XT来控制译码显示哪一位数码管。具体程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY keycode ISPORT(X:IN STD_LOGIC_VECTOR(2 DOWNTO 0);输入变量1 Y:IN STD_LOGIC_VECTOR(3 DOWNTO 0);输入变量2 XT:IN STD_LOGIC; 控制位选变量 C,D:OUT STD_LOGIC_VECTOR(6 DOWNTO 0):=01

4、11111; 输出译码变量 e,f,CO:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END keycode;输出间接码ARCHITECTURE yima OF keycode IS SIGNAL S,EN,EN1: STD_LOGIC; BEGIN PROCESS(X,Y) VARIABLE xy: STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN xy:=(X&Y); IF XT=1THEN CASE xy IS WHEN1101110=E=0000;C(6 downto 0)E=0001;C(6 downto 0)E=0010;C(6 dow

5、nto 0)E=0011;C(6 downto 0)E=0100;C(6 downto 0)E=0101;C(6 downto 0)E=0110;C(6 downto 0)E=0111;C(6 downto 0)E=1000;C(6 downto 0)E=1001;C(6 downto 0)COCOE=0000;C(6 downto 0)F=0000;D(6 downto 0)F=0001;D(6 downto 0)F=0010;D(6 downto 0)F=0011;D(6 downto 0)F=0100;D(6 downto 0)F=0101;D(6 downto 0)F=0110;D(6

6、 downto 0)F=0111;D(6 downto 0)F=1000;D(6 downto 0)F=1001;D(6 downto 0)E=0000;D(6 downto 0)BT=01;EBT=10;E NULL; END CASE;END PROCESS;PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1THEN N=N+1; END IF;END PROCESS;END;3.2.2 仿真解析图 3.4 显示模块仿真图如上图所示输入信号A为111 1111(十进制数8的段码),B为1100111(十进制数9的段码),当E为01时输出E=A,当E=10时输出

7、E=B。3.3控制模块图3.5 控制模块元件图3.3.1程序解析本模块作为密码控制程序,由译码模块输入的间接值E,F,通过输入状态控制信号co=1来控制上锁(E和F存入寄存器G和H中),co=0来控制开锁(判断输入的E,F是否分别等于寄存器存好的G和H),如果开锁成功LED1亮,LED2灭;如果开锁失败LED1和LED2都亮。具体程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity taxi is port ( e,f: IN STD_LOGIC_vector(3 downto

8、0);输入的密码 co : IN STD_LOGIC;状态开关(上锁、解锁) led1,LED2 : OUT STD_LOGIC结果显示(成功、失败) );end entity taxi;architecture one of taxi is signal G,H:STD_LOGIC_vector(3 downto 0); begin PROCESS(e,f,co) begin if co=1 then 上锁 g = e; h = f; led1=0;led2=0; else -解锁 if g=e and h=f then led1=1;led2=0; else led1 =0;led2 =

9、1; end if; end if ; end process; end architecture;3.3.2 仿真解析图3.6 控制模块仿真图 如图所示当控制信号co=1时(上锁),E=5和F=5将存入锁存器中(即密码),当控制信号co=0时(解锁),输入信号E=0,F=5并不是密码,所以LED1和LED2都为1,当输入信号为(E=5,F=5)时,密码正确,LED1为1,LED2为0。第4章 调试与结果1、打开quartus2软件,找到工程文件,并打开vhd程序文件,选定cyclone中EP1C3T144C8芯片,在assignments下拉框中选中pins,按规定选好管脚。2、打开实验箱,

10、按管脚图接好线。将实验箱连接到电脑上,打开实验箱电源。3、在quartus2中选定tools下拉框中的Programmer项,进入程序下载界面,点击Start按钮运行sof文件。看到右上方的Progress到达100%时运行完毕。图4.1 实物图 如上图所示,在右下角电平开关中输入密码,状态开关为解锁状态,输入的密码为21,但是并不是密码,所以数码管上面的两个LED灯都亮了。总结通过本次课程设计,我深刻的了解到自己的不足。EDA这门课程是上学期学的,因为课程比较紧,当时在VHDL语言上下的功夫很少,就造成了我这次课程设计的囧态。 刚开始拿到课题,看到课题的设计内容和要求,感觉不是很难,但是一开始做就遇到问题程序的编写,那时候学的时候根本就是模仿的编写的,现在要自己动手编,感觉无从下手,语言规则什么的都不是很明确,就是照着书上编一段小的模块,那错就是十几个,排错误没有经验也只能请教高手和网络了,慢慢的一步

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1