EDA电子密码锁的设计8.docx
- 文档编号:30120016
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:29
- 大小:358.87KB
EDA电子密码锁的设计8.docx
《EDA电子密码锁的设计8.docx》由会员分享,可在线阅读,更多相关《EDA电子密码锁的设计8.docx(29页珍藏版)》请在冰豆网上搜索。
EDA电子密码锁的设计8
EDA的相关介绍
EDA的特点:
EDA技术对电子系统设计方法的影响:
传统的电路设计的方法是自低向上(Buttumup),即设计师根据设计要求首先选用合适的元器件,然后完成各个单元电路的设计、搭试、性能指标的测试,最后形成系统。
而基于EDA技术的设计方法是自顶向下(ToptoDown),即首先从系统设计入手,在顶端进行功能方框图的划分和结构设计。
然后利用EDA软件进行设计的验证、仿真以及PCB布局布线等工作[12]。
硬件描述语言:
硬件描述语言(HDL)是一种用于进行电子系统硬件设计的计算机高级语言,它采用软件的设计方法来描述电子系统的逻辑功能、电路结构和连接形式。
EDA的另一个特点体现在大规模可编程逻辑器件PLD(ProgrammableLogicDevices)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。
PLD最早出现在20世纪70年代初,其后经历了PROM、PLA、PAL、GAL等几个发展阶段。
80年代中期,美国Xilin公司首先推出了现场可编程门陈列(FPGA)器件。
90年代初,美国Lattice公司又推出了在系统可编程大规模集成电路(ispLSI)。
现通常将高集成度的可编程逻辑器件谶纬复杂可编程逻辑器件(CPLD)。
VHDL硬件描述语言
VHDL(VeryhighspeedintegratedcircuitHardwareDescriptionLanguage)硬件描述语言从高于逻辑级的抽象层次上描述硬件的功能、信号连接关系及定时关系。
VHDL的设计流程如下图。
图1VHDL设计流程
VHDL语言是对逻辑电路进行描述的高级语言,它与其他高级语言相比既有相同之处,也有其自身特点:
1.VHDL是工业标准的文本格式语言
VHDL已成为一种工业标准。
设计者、EDA工具的供应商以及芯片生产厂家,都要遵循这一标准。
该语言是一种文本格式的语言,ASIC的设计者在设计电路时,就像编写其他高级语言一样,用文字来表达所要设计的电路,这样能比较直观地表达设计者的设计思想,并且易于修改。
2.VHDL能同时支持仿真和综合
VHDL语言是一种能够支持系统仿真的语言。
事实上,ASIC成功的关键在于生产前的设计,而保证设计正确性的主要手段就是系统仿真。
目前在大部分的EDA工具中,都有支持VHDL语言仿真的工具。
这样,设计者在ASIC生产前就能够知道设计的正确与、系统的的性能如何等关键问题。
VHDL不仅仅是一种仿真语言,它的所有语句有相当一部分是不支持综合的,也就是说EDA工具无法根据所描述的VHDL语言产生出电路;但其中的可综合语句足以描述一个大而完整的系统。
目前所有的高层次综合工具所支持的综合语句,都是IEEE标准的一个子集。
因此,VHDL语言可以有两种完全不同的描述,一种是基于仿真的描述,它可以使用VHDL语言定义的各种语句,这类程序主要适用于编写测试基准程序和各种仿真模型的工程师使用,另外一种就是用于生成具体电路的可综合描述。
它只能使用VHDL中的可综合子集。
它主要适用于从事电路设计的工程师使用。
3.VHDL是一种并发执行的语言
我们知道,几乎所有的高级语言的执行都是顺序的,而VHDL语言在仿真过程中的执行是并行的。
这种特性是符合实际逻辑电路的工作过程的。
4.VHDL支持结构化设计和top-down设计方法
VHDL语言是一种结构化的语言,它提供的语句可以完成多层次结构结构的描述,所以VHDL语言可以支持结构化的设计。
结构化设计就是将一个系统划分为多个模块,而每个模块又可以继续划分为更多的子模块。
这样就可以采用top-down的设计方法,就是从系统整体要求出发,自上而下的逐步将系统内容细化,最后完成系统的整体设计。
5.VHDL的描述与工艺无关
设计者在利用VHDL描述时并不需要关心电路最终将在哪种工艺上实现,EDA工具可以将VHDL源代码映射到不同的工艺床上,提高了设计的可重用性。
6.支持多风格的描述方法
VHDL不仅支持行为级的描述,而且支持数据流及结构描述。
前言
电子密码锁的使用体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。
目前设计密码锁的方法很多,例如用传统的PCB板设计、用PLC设计或者用单片机设计等等。
而用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法。
VHDL是一种符合IEEE标准的硬件描述语言,其最大的特点是借鉴高级程序设计语言的功能特性,对电路的行为与结构进行高度抽象化、规范化的形式描述,并对设计的不同层次、不同领域的模拟验证与综合优化等处理,使设计过程廷到高度自动化。
目录
1.概述
电子密码锁在生活中十分常见,在这我将设计一个具有较低成本的电子密码锁,本文讲述了我整个设计过程及收获。
讲述了电子密码锁的的工作原理以及各个模块的功能,并讲述了所有部分的设计思路,对各部分电路方案的选择、元器件的筛选、以及对它们的调试、对波形图的分析,到最后的总体图的分析。
2.设计要求
本设计名称为电子密码锁,用四个模块,分别为输入模块、控制模块、扫描器模块、显示模块,来控制密码的输入、验证与显示。
设计所要实现的功能为:
1数码输入:
手动用3个拨码开关与3个按键设计三位密码的输入,并在显示器显示出该数值。
2数码验证:
开锁时输入密码后,拨动RT键使其为高电平,而CHANGE为低电平检测,密码正确时开锁,输出LOCKOPEN灯灭,LOCKCLOSE灯亮,表示开锁成功。
3错误显示:
当密码输入错误时,LOCKOPEN灯亮,LOCKCLOSE灯灭,表示开锁失败。
4更改密码:
当改变密码时,按下CHANGE键使其为高电平,而RT为低电平时,可改变密码。
5密码清除:
按下REST可清除前面的输入值,清除为“888”。
3.总体框图
1)设计方案:
电子密码锁,主要由三部分组成:
密码输入电路、密码锁控制电路和密码锁显示电路。
作为电子密码锁的输入电路,可选用的方案有拨码与按键来控制输入和触摸式键盘输入等多种。
拨码与按键和触摸式4*4键盘相比简单方便而且成本低,构成的电路简单,本设计中采用拨码与按键来作为该设计的输入设备。
数字电子密码锁的显示信息电路可采用LED数码显示管和液晶屏显示两种。
液晶显示具有高速显示、可靠性高、易于扩展和升级的特点,但是普通的液晶存在亮度低、对复杂环境适应能力差的特点,但是在本设计中任然使用LED数码管。
根据以上选定的输入设备与与显示器件,并考虑到现实各项密码锁功能的具体要求,与系统的设计要求,系统设计采用自顶向下的设计方案。
整个密码锁系统的总体总体框图如图3.1所示。
输入模块
寄存器与清零信号发生电路
数值比较器
LED灯
扫描电路
三选一选择器
开/关锁电路
控制模块
显示模块
图3.1电子密码锁系统总体框图
4.电子密码锁的波形仿真
4.1电子密码锁的设计流程
使用QuartusⅡ进行电子密码锁设计的流程为
1.编写VHDL程序(使用TextEditor)(见附录);
2.编译VHDL程序(使用Compiler);
3.仿真验证VHDL程序(使用WaveformEditor,Simulator);
4.进行芯片的时序分析(使用TimingAnalyzer);
5.安排芯片管脚位置(使用FloorplanEditor);
6.下载程序至芯片(使用Programmer)。
5.功能模块
5.1输入模块
1)功能介绍
输入时有三个拨码键控制输入,每个拨码各控制一位密码,对于其中一个拨码键每拨一次码按一次按键,表示输入一位,当输入四位时输出一位数,用“888”作为初始密码。
2)输入模块与仿真图形
单脉冲控制如图5.1如下图
图5.1
上图为单脉冲控制输入,当M给一上升沿信号将在PUL输出一位与之对应的高或低电平。
四位串行输入并行输出寄存器如下图5.1.2
图5.1.2
上图为4为串行输入并行输出寄存器,它由4个D触发组成,当reset为高电平时,每给一脉冲输入数据将向右移一位二值代码,它能同时复位
3)程序的输入
在文本区内输入程序,程序如下:
单脉冲信号控制
puls.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYpulsIS
PORT(PUL,M:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC);
ENDpuls;
ARCHITECTUREBEHAVEOFpulsIS
SIGNALTEMP:
STD_LOGIC;
BEGIN
PROCESS(M)
BEGIN
IFM'EVENTANDM='1'THEN
IFPUL='1'THEN
TEMP<='1';
ELSETEMP<='0';
ENDIF;
ENDIF;
ENDPROCESS;
Q<=TEMP;
ENDBEHAVE;
4位串行输入并行输出寄存器
shifter.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYshifterIS
PORT
(din:
INSTD_LOGIC;
reset,CLK:
INSTD_LOGIC;
qout:
bufferSTD_LOGIC_VECTOR(0TO3)
);
ENDshifter;
ARCHITECTUREactOFshifterIS
BEGIN
PROCESS(CLK)
VARIABLEq:
STD_LOGIC_VECTOR(0TO3);
BEGIN
IFreset='0'THEN
q:
=(others=>'0');
ELSE
ifclk'eventandclk='1'then
q(3):
=q
(2);
q
(2):
=q
(1);
q
(1):
=q(0);
q(0):
=din;
ENDIF;
ENDIF;
qout<=q;
ENDPROCESS;
ENDarchitectureact;
5.2控制模块
1)功能介绍
开锁时输入密码后,拨动RT键使其为高电平,而CHANGE为低电平检测,密码正确时开锁,输出LOCKOPEN灯灭,LOCKCLOSE灯亮,表示开锁成功。
当密码输入错误时,LOCKOPEN灯亮,LOCKCLOSE灯灭,表示开锁失败。
当改变密码时,按下CHANGE键使其为高电平,而RT为低电平时,可改变密码。
按下REST可清除前面的输入值,清除为“888”。
2)控制模块与仿真图形
输入译码器图5.2.1,如下图
图5.2.2
上图为译码器将4位二值代码转化成BCD码从“0000”~“1001”表示
0~9。
表5-2输入译码的真值表
输入输出
DCBAY1Y2Y3Y4字形
000000000
000100011
001000102
001100113
010001004
010101015
011001106
011101117
100010008
100110019
表5-2
总功能控制模块图5.2.3,如下图
图5.2.3
当CHANGE为高电平且rt为低电平时开始输入密码这时lockopen为高电平,而lockclose为低电平,当rt为高电平,change为低电平时开始检测密码,如上图开始密码为“108”当再次出现“108”时lockopen为高电平,而lockclose为低电平,当密码错误时lockopen为低电平,而lockclose为高电平。
4选1选择器与扫描器图5.2.4,如下图
图5.2.4
如上图多路选择器可以从多组数据来源中选取一组送入目的地,在本设计中利用多路选择器做扫描电路来分别驱动输出装置,可以将低成本消耗,如上图当输入“819”时,在时钟地控制下qout将输出“819”,而与之对应的sel扫描对应的数码管。
在文本区内输入程序,程序如下:
输入译码器
KEY.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYKEYIS
PORT(clk:
INSTD_LOGIC;
data:
INSTD_LOGIC_VECTOR(3DOWNTO0);
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
q1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYKEY;
ARCHITECTUREARTOFKEYIS
BEGIN
PROCESS(clk,data)IS
BEGIN
IFclk'EVENTANDclk='1'THEN
CASEdataIS
WHEN"0000"=>q<="0000";q1<="0000";
WHEN"0001"=>q<="0001";q1<="0001";
WHEN"0010"=>q<="0010";q1<="0010";
WHEN"0011"=>q<="0011";q1<="0011";
WHEN"0100"=>q<="0100";q1<="0100";
WHEN"0101"=>q<="0101";q1<="0101";
WHEN"0110"=>q<="0110";q1<="0110";
WHEN"0111"=>q<="0111";q1<="0111";
WHEN"1000"=>q<="1000";q1<="1000";
WHEN"1001"=>q<="1001";q1<="1001";
WHENOTHERS=>q<="0000";q1<="0000";
ENDCASE;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
总功能控制模块
Eleclock.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYEleclockIS
PORT(NB:
INSTD_LOGIC_VECTOR(3DOWNTO0);
NS:
INSTD_LOGIC_VECTOR(3DOWNTO0);
NG:
INSTD_LOGIC_VECTOR(3DOWNTO0);
CLK:
INSTD_LOGIC;
CHANGE,RT:
INSTD_LOGIC;
DB:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
DS:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
DG:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
LOCKOPEN,LOCKCLOSE:
OUTSTD_LOGIC);
ENDENTITYEleclock;
ARCHITECTUREARTOFEleclockIS
COMPONENTKeyIS
PORT(CLK:
INSTD_LOGIC;
DATA:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
Q1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDCOMPONENTKey;
SIGNALENABLE,C0,C1,S,ENABLE1:
STD_LOGIC;
SIGNALTB,TS,TG,D_B,D_S,D_G:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
ENABLE<=CHANGEAND(NOTRT);
ENABLE1<=RTAND(NOTCHANGE);
U0:
KEYPORTMAP(CLK=>CLK,DATA=>NB,Q=>DB,Q1=>D_B);
U1:
KEYPORTMAP(CLK=>CLK,DATA=>NS,Q=>DS,Q1=>D_S);
U2:
KEYPORTMAP(CLK=>CLK,DATA=>NG,Q=>DG,Q1=>D_G);
PROCESS(CLK,D_B,D_S,D_G)IS
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFENABLE='1'THEN
TB<=D_B;
TS<=D_S;
TG<=D_G;
ENDIF;
IFENABLE1='1'THEN
IF(TB<=D_BANDTS<=D_SANDTG<=D_G)THEN
LOCKOPEN<='1';
LOCKCLOSE<='0';
ELSE
LOCKOPEN<='0';
LOCKCLOSE<='1';
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
4选1选择器与扫描器
sel.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYselIS
PORT(QIN1,QIN2,QIN3:
INSTD_LOGIC_VECTOR(3DOWNTO0);
CLK,RST:
INSTD_LOGIC;
QOUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
sel:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDsel;
ARCHITECTUREARTOFselIS
BEGIN
PROCESS(CLK,RST)
VARIABLECNT:
INTEGERRANGE0TO2;
BEGIN
IF(RST='0')THEN
CNT:
=0;
sel<="00000000";
QOUT<="0000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFCNT=2THEN
CNT:
=0;
ELSE
CNT:
=CNT+1;
ENDIF;
CASECNTIS
WHEN0=>QOUT<=QIN1;
sel<="11111110";
WHEN1=>QOUT<=QIN2;
sel<="11111101";
WHEN2=>QOUT<=QIN3;
sel<="11111011";
WHENOTHERS=>QOUT<="0000";
sel<="11111111";
ENDCASE;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
5.3显示模块
1)功能介绍
将密码用BCD七段数码管显示
2)显示模块与仿真波形图5.3,如下图
图5.3
上图将BCD码转化到七段译码电路上
表5-3BCD-七段数码管的真值表
输入输出
DCBAY1Y2Y3Y4Y5Y6Y7字形
000011111100
000101100001
001011011012
001101110013
010001100114
010110110115
011010111116
011111100007
100011111118
100111100119
表5-3
在文本区内输入程序,程序如下:
Seg7.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSeg7IS
PORT(num:
INSTD_LOGIC_VECTOR(3DOWNTO0);
led:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDSeg7;
ARCHITECTUREACTOFSeg7IS
BEGIN
LED<="1111110"WHENnum="0000"ELSE
"0110000"WHENnum="0001"ELSE
"1101101"WHENnum="0010"ELSE
"1111001"WHENnum="0011"ELSE
"0110011"WHENnum="0100"ELSE
"1011011"WHENnum="0101"ELSE
"1011111"WHENnum="0110"ELSE
"1110000"WHENnum="0111"ELSE
"1111111"WHENnum="1000"ELSE
"1111011"WHENnum="1001"ELSE
"1110111"WHENnum="1010"ELSE
"0011111"WHENnum="1011"ELSE
"1001110"WHENnum="1100"ELSE
"0111101"WHENnum="1101"ELSE
"1001111"WHENnum="1110"ELSE
"1000111"WHENnum="1111";
ENDACT;
6.总体设计电路图
1)功能介绍
将各个模块连接在一起实现。
2)顶层文件如下:
3)波形仿真如下:
图6﹒1
当change为高电平,rt为低电平时,输入“952”验证,当再次输入“952”时锁打开,设计正确。
设计心得体会
通过这次设计,使我对EDA产生了浓厚的兴趣。
特别是当每一个子模块编写调试成功时,心里特别的开心。
在编写蜂鸣器模块时,我遇到了很大的困难,一直被定时问题所困扰,解决了这个问题时,我特别的高兴。
写控制文件的程序时,也遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了。
再对控制模块仿真时,虽然语法正确,但连最基本的输入输出都进不去,我们弄了很多遍都不行,后来在老师的指导下我们才解决了这个问题。
另一个问题就是三个时钟信号的配合,其中显示模块和控制模块的信号频率要高。
其次,在进行引脚连接时一定要细心,有些引脚不能使用,我因为没注意使得开始时一直不能得到正确的结果。
这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 电子 密码锁 设计