EDA课设报告(14位密码锁).doc_第1页
EDA课设报告(14位密码锁).doc_第2页
EDA课设报告(14位密码锁).doc_第3页
EDA课设报告(14位密码锁).doc_第4页
EDA课设报告(14位密码锁).doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

EDA课程实习报告27EDA课程实习报告课程名称:EDA课程实习报告课 程 号: 专 业: 班 级: 学 号: 学生姓名: 指导教师: 日 期: 课程设计任务书姓名 学号 班级 学院 课程EDA课程设计任务书题目简易14位数字密码锁控制电路设计目的1、14数字密码分成高7位(DH6-DH0)和低7位(DL6-DH0),用数字逻辑开关预置,输出信号out表示开锁,否则关闭。2、14位数字密码分时操作,先预置高7位,然后再置入低7位。3、 要求电路工作可靠,保密性强,开锁出错立即报警,用声光两种形式同时报警。4、 利用maxplus2软件进行设计、编译、并在FPGA芯片上实现。5、 14位密码自己设定,比如:“10001010100010”。本次设计采用本人学号后三位二进制8421码+两位:一班是01,二班10,三班11,四班00.设计要求 1. 设计简易14位数字密码模块IC9A模块,模块IC9A采用VHDL实现。2. 设计一个报警信号电路,方法不限。3. 在IC9A模块基础上设计14位数字密码锁的顶层电路。目录一、 摘要-1二、 课程设计目的-2三、 课程设计要求-2四、 设计与分析-3五、 译码电路设计-6六、 报警电路信号产生器-12七、 muxplus仿真-17八、 试验箱下载测试-19九、 课设心得-22十、 附件一:顶层原理图- 24十一、 附件二:管脚列表-25一、摘要十四位数字密码锁是一个比较实用且实现目的明确效果明显的实验。通过用VHDL语言编程,编译出D触发器,锁存器,译码器等基本元件电路,然后通过原理图连接各器件,组成密码锁电路。通过仿真和测试下载来验证实验的正确性。从而让学生达到熟悉FPGA芯片编译下载过程,熟练掌握VHDL语言。关键字:密码锁 VHDL 仿真二、 课程设计目的1、 14数字密码分成高7位(DH6-DH0)和低7位(DL6-DH0),用数字逻辑开关预置,输出信号out 表示开锁,否则关闭。2、 14位数字密码分时操作,先预置高7位,然后再置入低7位。3、 要求电路工作可靠,保密性强,开锁出错立即报警,用声光两种形式同时报警。4、 利用maxplus2软件进行设计、编译、并在FPGA芯片上实现。5、 14位密码自己设定,比如:“10001010100010”。本次设计采用本人学号后三位二进制8421码+两位:一班是01,二班10,三班11,四班00。三、 课程设计要求1、 设计简易14位数字密码模块IC9A模块,模块IC9A采用VHDL实现。2、 设计一个报警信号电路,方法不限3、 在IC9A模块基础上设计14位数字密码锁的顶层电路。四、 设计与分析1、方案设计思路 14位密码锁,如果设计14个输入端口的,试验箱上的输入端口会出现不够用的情况。所以设计高低七位,同时也可以满足设计要求的中的先锁存高七位的要求。先输入高七位,按下锁存控制键,将高七位锁存;再输入低七位,此时译码器开始进行译码,如果14位唯一译码成立,则输出1,否则为0。按下开锁键,如果密码正确,则开锁,否则触动报警电路,声光报警。由于人对声音的分辨频率是有一定范围的,太高或太低的频率都会导致发声的结果不明显,所以需要设计一个指定分频的分频电路,产生声音信号源。2、原理框图 3、顶层原理图设计顶层原理图中,CLR为清零信号,CLK为锁存按键信号,D16-D10的号码码输入端,CLK2为开锁键,OUTA2为开锁正确响应输出,OUTB2为密码输入正确响应输出,SHENG为密码输入错误声音报警输出端,GUANG为密码输入错误光报警输出端。 在输入密码前,先用CLR高电平有效进行清零,清零时::IC9A中的Q中储存的数值会被清零;:通往声报警电路的D触发器置零,输出0,不管声音产生器发出是0/1,经过与门,声报警无信号,不报警;:通往判断的两个D触发器,下面一个置零,输出为0,上面一个置一,输出1,经过反相器,为0,声光报警无反应。然后将高7位密码置入D16-D10,这时给CLK一个上升沿触发锁存,高7位密码被锁存,然后再把低7位置入D16-D10,如果密码正确的话,OUT2B输出1,然后给开锁键CLK2一个脉冲,:密码正确的话,output会输出1,经过D触发器,输出1,OUT2A输出1,进行开锁;;如果密码错误,output会输出0,经过D触发器,输出0,经过反相器,则为1,则SHENG和GUANG进行声光报警。五、 译码电路设计 IC9A电路包括锁存电路和译码电路。分别受CLK 和CLK2触发进行锁存和译码。1、锁存电路锁存电路是用来锁存密码高七位,便于下一步与第七位一起与正确密码进行比较,因此其逻辑原理是:当clk出现上升沿,将D16-D10给Q16-Q10,锁存即可,同时内部设置有清零端,受CLR上升沿触发。VHDL语言程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCQ ISPORT(CLK,CLR: IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(6 DOWNTO 0); Q: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END SCQ;ARCHITECTURE ART OF SCQ ISBEGINPROCESS(CLK,CLR)BEGINIF(CLR=1)THENQ=0000000;ELSIF(CLKEVENT AND CLK=1)THENQ(6)=D(6);Q(5)=D(5);Q(4)=D(4);Q(3)=D(3);Q(2)=D(2);Q(1)=D(1);Q(0)=D(0);END IF;END PROCESS;END ART;锁存器原理图:锁存器仿真:2、译码器此处译码器的功能其实就是14为唯一译码。当十四位与个人密码(我的为1100110 0101100)一样,就输出1,否则为0。实现判断密码是否正确VHDL语言程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY YM ISPORT( OUTPUT: OUT STD_LOGIC; A: IN STD_LOGIC_VECTOR(6 DOWNTO 0); B: IN STD_LOGIC_VECTOR(6 DOWNTO 0);END YM;ARCHITECTURE ART OF YM ISBEGINPROCESS(A,B)BEGINIF(A=1100110 AND B=0101010)THENOUTPUT=1;ELSEOUTPUT=0;END IF;END PROCESS;END ART;译码器原理图:译码器仿真:3、IC9A密码模块整合 将锁存器和译码器链接成密码识别模块如图所示。先输入高七位,按下锁存控制键CLK,将高七位锁存;再输入低七位,此时译码器开始进行译码,如果14位唯一译码成立,则输出1,否则为0。IC9A仿真:六、 报警电路信号产生器扬声器有高电平触发的时候才会发声,但是人对声音的分辨频率是有一定范围的,太高或太低的频率都会导致发声的结果不明显,所以需要设计一个指定分频的分频电路,产生声音适合人耳分辨的信号源频率。普通的八分频可以为计数总数为八,当次数小于4的时候输出1,大于4小于7的时候输出0,然后清零重新计数即可,对8个脉冲大致分为1/2。VHDL语言编程:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DIV8 ISPORT(CLK:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC);END DIV8;ARCHITECTURE ART OF DIV8 ISSIGNAL CNT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL N_T,N_1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN N_1=00000111; N_T=N_1)THEN CNT=00000000; ELSE CNT=CNT+1; END IF; IF (CNTN_T) THEN CLKOUT=0; ELSE CLKOUT=1; END IF;END IF; END PROCESS;END ART;八分频原理图:仿真:如果需要更大的分频同理可以改用任意N分频,当N为多少时候可以实现多少分频。原理同上,当数值小于大致一半的时候,输出1,否则输出0。大致分为1/2,即可。这样防止出现尖波,发出刺耳的声响。LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FEN IS PORT(N:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; OUT1:OUT STD_LOGIC);END FEN;ARCHITECTURE ART OF FEN ISSIGNAL Q:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL N1,N2:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN N1=0&N(7 DOWNTO 1); N2=N-1;PROCESS(N,CLK) BEGINIF(CLKEVENT AND CLK=1)THEN IF Q=N2 THEN Q=00000000; ELSE Q=Q+1; END IF; IF QN1 THEN OUT1=0; ELSE OUT1=1;END IF;END IF;END PROCESS;END ART;N分频原理图:N分频仿真:但是在实际操作过程中,如果用N可调分频来产生声音信号的话,还得外设8个甚至更多的输入端,然而实验箱上的输入端不够用,所以最终选择8分频,然后通过管脚锁定低一些的输入频率,如:cp3管脚,16HZ,然后通过8分频之后,输出效果已经达到理想效果。七、 muxplus仿真如上图为全程仿真,其中包含着清零,锁存,正确开锁,错误开锁,报警等多有仿真实验。1.200NS时清零脉冲过来;2.紧接着置数1100110;3.输入锁存脉冲clk,此时q中锁存了1100110,并且一直是这个数;4.400ns时输入低七位0101001,此时OUT2B自动判断此密码正确;5.输入开锁脉冲clk2的时候,out2a开锁,开锁成功;6.此时q中依然存储着1100110,直接把低七位改为0000000,out2a判断密码为错误;7. 输入开锁脉冲clk2,锁关闭,声光立刻报警,声报警按照,clk3脉冲的8分频输出报警;8.再次清零时,q中数值归零,声光报警返回初始态。八、 试验箱下载测试1、 管脚封装根据实验箱芯片类型,设置芯片为FLEX10KEPF10K10LC84-3。对照试验箱的输入输出,设定管脚对应的输入输出,我的输入输出如下:输入/输出管脚号试验箱控制名称CLK32CP3D1628K1D1529K2D1430K3D1335K4D1236K5D1137K6D1038K7CLK39K8CLK247K9CLR48K10OUT2A53L3OUT2B54L4SHENG58L5GUANG59L6根据这些管脚定义软件方面的管脚,如下图。2、 试验箱下载封装管脚之后调试一遍点击下载,弹出右图对话框,点击configure,下载。3、 调试同于软件仿真,先按一下k10清零,然后从k7-k1,一次输入1100110,按k8锁存,然后在k7-k1输入0101010,L4亮,说明密码正确,按k9,灯L3亮,说明开锁成功。紧接着进行报警实验,按k10清零,随意输入k7-k1,按k8锁存,接着依然随意输入,发现L4未亮,按k9,结果L6闪烁,L5亮,说明能够正常报警,检测完毕。九、 课设心得向来对于编程类的设计挺感兴趣,再加上下一个学期选的方向是A方向专业,所以对于这次的课程设计格外的用心,因此也学到了很多。基础知识的重要性。作为编程的基础,那就是语法格式之类的语言规则。对于VHDL语言来说,格式都是相对固定的,结构体、实体、进程、IF语句、敏感列表等等,该怎样写,怎样放都是有固定格式的,这个是初学者很容易编译出错的原因所在。虽然EDA课程已经结束,但是在此次课设的过程中,这些基本的东西还是时不时低阻扰我的课设进度。但是这样也是对我那些不扎实的基础的一个巩固,课设整个过程下来,找错、改错的锻炼有增加了不少,相信我的基础知识也牢固了不少。整理思路,冷静查错。当一个程序出错的时候,要冷静地从头开始思考,不要心浮气躁欲速则不达。从最基本的源头想起,才便于更快地找出错误。不知庐山正面目,只缘身在此山中,当自己的程序自己实在看不出来的话,不不妨找人看看,自己的程序,自己最容易进入死胡同,借助团队他人的力量

温馨提示

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

评论

0/150

提交评论