EDA课程设计--简易14位数字密码锁控制电路设计.doc
《EDA课程设计--简易14位数字密码锁控制电路设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计--简易14位数字密码锁控制电路设计.doc(27页珍藏版)》请在冰豆网上搜索。
EDA
课
程
设
计
课程设计任务书
姓名
学号
班级
学院
电子信息学院
课程
EDA课程设计
题目
简易14位数字密码锁控制电路设计
设计要求
14位数字密码分成高七位和低七位,用数字逻辑开关预置,输出信号OUT为1表示开锁,否则关闭。
14位数字密码分时操作,先预置高七位,然后再预置低七位
要求电路可靠,保密性强,开锁出错立即报警,(用声光两种形式同时报警)
利用MAXPLUS2软件进行设计、编译、并在FPGA芯片上实现
14位密码自己设定。
本次设计采用本人所在班级+本人学号后三位二进制,一班为01.
时间进度
1周
主要参考资料
《EDA实验指导书》主编:
电子信息教研室
《EDA技术与CPLD/FPGA开发应用简明教程》主编:
刘爱荣、王振成 出版社:
清华大学出版社
概述
电子密码锁现在的技术相当成熟,商店的门、保险柜、汽车等等,我们的周边随处可见。
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
EDA技术
2.1EDA的概念
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。
2.2EDA技术的历史与发展
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可*性,减轻了设计者的劳动强度。
2.3EDA的应用
随着计算机技术和应用的发展,计算机辅助设计(CAD)和设计自动化(DA)技术已在电子产品(系统)的设计领域得到广泛应用。
自对电子产品的概念级设计之始,直至产品的物理级设计,EDA技术借助计算机存储量大、运行速度快的特点,可对设计方案进行人工难以完成的模拟评估、设计检验、设计优化和数据处理等工作。
目前,不同厂商、不同技术等级的EDA系统都在应用流行。
根据国内煤炭行业对电子系统的实际需求,本文着重对EDA的基本工具作介绍。
主要内容
3.1设计要求
1、14位数字密码分成高7位(DH6….DH0)和低7位(DL6….DL0),用数字逻辑开关预置,输出信号out为1表示开锁,否则关闭。
2、14位数字密码分时操作,先预置高7位,然后再置入低7位,(顶层电路可参考图1)。
3、要求电路工作可靠,保密性强,开锁出错立即报警,(用声光两种形式同时报警)。
4、利用MAXPLUS2软件进行设计、编译、并在FPGA芯片上实现。
5、设计14位密码自己设定。
比如:
“00010000010100”。
本次采用本人学号后三位二进制+两位:
一班是1,二班是10,三班是11作为设计密码。
3.2原理
2、电路图分析
当CLR有效时,L10的Q端为低电平,L9的Q端为高电平,反相后为低电平,光报警不会启动,声报警为高阻状态,L11的Q端为低电平L1高阻状态。
刚开始时L10的Q端为低电平,当确定高七位密码的信号CLK变为高电平时,IC9A的锁存信号CLK产生一个上升沿,锁存高七位密码,此时L10的Q端变为高电平,则L1门被关闭,没有CLR有效时,高位密码不会改变。
当高七位和低七位密码都正确时,OUT2和OUT2B输出是高电平,当CLK2产生一个上升沿时高电平通过L11是开锁端为有效信号。
同样低电平通过L9使L9的Q端为高电平,反相后为低电平,光报警不会启动,声报警为高阻状态。
当密码错误时,OUT2和OUT2B输出是低电平,当CLK2产生一个上升沿时,开锁信号为低电平,OUT2使L9的Q端为低电平,反相后为高电平,光报警会启动,声报警也会产生。
3、操作步骤
①先清零→置入DH6-DH0高位密码→②按下CLK→高7位被存在ic9a的锁存器中→③置低7位密码→out2=1,表示开锁密码正确→out2b=1→标志输入正确密码。
④按下CLK2→这时L11的Q端控制三态门开锁out=1.如果密码不正确,控制L15→out1A、out1B为高电平报警。
3.3设计内容
1.设计简易14位数字密码模块ic9a模块,框图见下图,模块IC9A设计采用VHDL实现。
2.设计一个报警信号电路(频率:
512Hz)作为CP报警用,方法不限。
时钟由实验箱CP2中的4096HZ提供。
3.在ic9a模块基础上设计14位数字密码锁的顶层电路。
提高部分(选作):
增加修改密码功能。
4.提高部分:
增加修改密码功能。
设计方案
4.1六位锁存器IC
1、VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityicis
port(clk0:
instd_logic;
clr0:
instd_logic;
d0:
instd_logic_vector(6downto0);
q:
outstd_logic_vector(6downto0));
endic;
architectureart1oficis
begin
process(clk0,clr0)
begin
if(clr0='0')then
q<="0000000";
elsif(clk0'eventandclk0='1')then
q<=d0;
endif;
endprocess;
endart1;
2、电路图
3、仿真图
4.2译码器
1、VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityyimais
port(a:
instd_logic_vector(6downto0);
b:
instd_logic_vector(6downto0);
out0:
outstd_logic);
endyima;
architectureareofyimais
signals3:
std_logic_vector(13downto0);
begin
process(a,b)
begin
s3<=a&b;
if(s3="01000100100110")then
out0<='1';
else
out0<='0';
endif;
endprocess;
endare;
2、实体图
3、仿真图
4.3IC9A集成模块
1、VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityicis
port(clk0:
instd_logic;
clr0:
instd_logic;
d0:
instd_logic_vector(6downto0);
q:
outstd_logic_vector(6downto0));
endic;
architectureart1oficis
begin
process(clk0,clr0)
begin
if(clr0='0')then
q<="0000000";
elsif(clk0'eventandclk0='1')then
q<=d0;
endif;
endprocess;
endart1;
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityyimais
port(a:
instd_logic_vector(6downto0);
b:
instd_logic_vector(6downto0);
out0:
outstd_logic);
endyima;
architectureareofyimais
signals3:
std_logic_vector(13downto0);
begin
process(a,b)
begin
s3<=a&b;
if(s3="01000100100110")then
out0<='1';
else
out0<='0';
endif;
endprocess;
endare;
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityic9is
port(clk:
instd_logic;
clr:
instd_logic;
d:
instd_logic_vector(6downto0);
out2:
outstd_logic);
endic9;
architectureart3ofic9is
componentic
port(clk0:
instd_logic;
clr0:
instd_logic;
d0:
instd_logic_vector(6downto0);
q:
outstd_logic_vector(6downto0));
endcomponent;
componentyima
port(a:
instd_logic_vector(6downto0);
b:
instd_logic_vector(6downto0);
out0:
outstd_logic);
endcomponent;
signals1:
std_logic_vector(6downto0);
begin
u1:
icportmap(clk,clr,d,s1);
u2:
yimaportmap(s1,d,out2);
endart3;
2、实体图
3、仿真图
4.4分频器
1、VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfepis
port(reset,cp:
instd_logic;
out3:
outstd_logic);
endfep;
architectureart3offepis
signals:
std_logic_vector(2downto0);
begin
process(reset,cp)
begin
if(reset='1')then
s<="000";
elsif(cp'eventandcp='1')then
s<=s+1;
endif;
out3<=s
(2);
endprocess;
endart3;
2、实体图
3、仿真图
4.5整个密码器
1、实体图
2、仿真图
密码正确时:
密码错误时:
4.6硬件下载
1、芯片的选取
用FLKE10K系列的EPF10K10LC84_3芯片
2、引脚的锁定
选中正确芯片后,锁定引脚,然后编译下载。
3、实际操作
下载后,知道硬件的各个锁定的功能引脚对应的功能
先清零→输入高七位的密码→确定高七位的密码→输入低七位的密码→正确后→按下开锁键开锁
先清零→输入高七位的密码→确定高七位的密码→输入低七位的密码→不正确时→按下开锁键→不开锁→启动了声光报警
可修改密码设计的构想
电路图:
原理说明:
当此硬件下载到芯片时,可知锁存高七位的密码由CLK1控制,其对应的是一个按键或开关,每次输入正确的高七位密码后才能按下CLK1得到一个上升沿,因此就算按键的瞬间有振荡,也仅是锁存高七位的输入的密码,再有上升沿时可以继续锁存高七位的密码,且振荡忽略不计。
因此对IC9A集成模块,添加一个改变密码引脚功能键CHANGE。
对译码器的源程序稍加修改,当CHANGE有效时使输入的密码与另一个密码比较,再对IC9A集成模块的引脚及例化稍加修改,这样实现了简单的可以在两个内置密码间切换的功能。
心得体会
此次课程设计我们通过几天的准备,设计,调试,下载等,遇到过很多困难,当然也学到了很多实际操作的能力。
在VHDL语言设计中,首先是七位锁存器IC的设计,这个设计相当简单了,有清零端,再加一个上升沿触发端,使得锁存七位输入,每一个上升沿锁存一次。
再者是14位译码器的设计,每次输入14位密码,把次密码与内置密码比较,当密码正确时,输出端输出OUT2高电平,不正确时低电平。
然后是IC9A集成模块的设计,这个模块是IC和译码器的综合,通过对前两者的原件例化,内部连接对应产生的模块。
但此例化时要十分注意引脚的对应,命名,当我把IC9A集成模块的输入引脚定义为D时且和七位锁存器IC的输入引脚同名时,此时编译时一直报错,这让我懂得了引脚例化时有些引脚的命名不应冲突。
在顶层图编辑的过程中,我更是浪费了很长时间,以前我设计过一个IC9A集成模块,却有点问题,更正后,当我把所有原件的VHDL语言源程序都正确编译后,且都存到一个子文件夹中,接着我建立了GDF程序,当所有的触发器、三态门、反冲器、以及分频器和IC9A集成模块都导入时,且编译正确后,保存后,当过一段时候再打开时,总是警告IC9A集成模块丢失,我再同一盘中新建一个文件夹时,重新编译所有程序然后还是出现同样地问题,几经周折后我把其换了个新名字然后在编译所有程序后,再建立了GDF程序后终于搞定了。
后来我又上网查了查才知道这是因为当GDF程序读取IC9A集成模块时,两个IC9A集成模块发生冲突,从而报警找不到文件,当改名后就不会再发生冲突。
另外一点是,电路图的输入输出引脚问题,当我随意给输入引脚命名时,编译总是有错误,最后我把他该为与对应的内部元件同名时,这个错误终于解决了。
然后就是硬件下载中的问题,次过程中我收获不少,VHDL文件编译时必须用FLKE10K系列的EPF10K10LC84_3芯片设置来编译,选定其后编译然后锁定引脚,当然次过程要结合相应的硬件,使高低电平对应有开关的引脚,使输出对应有LED灯的引脚,脉冲对应有脉冲输入的引脚或按键。
最后是操作就按步骤就行啦。
整个课程设计中我也感悟颇丰,我知道遇到问题冷静的分析问题,然后解决问题,最后总结收获经验,我还对EDA这门课程更加熟细了,补充了一些知识,另外更多的是增加了实际设计操作能力,对整个设计流程更好的掌握,最后感谢老师们。