EDA课程电子密码锁的设计Quartus版.docx

上传人:b****3 文档编号:10922924 上传时间:2023-05-28 格式:DOCX 页数:22 大小:390.80KB
下载 相关 举报
EDA课程电子密码锁的设计Quartus版.docx_第1页
第1页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第2页
第2页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第3页
第3页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第4页
第4页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第5页
第5页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第6页
第6页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第7页
第7页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第8页
第8页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第9页
第9页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第10页
第10页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第11页
第11页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第12页
第12页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第13页
第13页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第14页
第14页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第15页
第15页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第16页
第16页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第17页
第17页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第18页
第18页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第19页
第19页 / 共22页
EDA课程电子密码锁的设计Quartus版.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EDA课程电子密码锁的设计Quartus版.docx

《EDA课程电子密码锁的设计Quartus版.docx》由会员分享,可在线阅读,更多相关《EDA课程电子密码锁的设计Quartus版.docx(22页珍藏版)》请在冰点文库上搜索。

EDA课程电子密码锁的设计Quartus版.docx

EDA课程电子密码锁的设计Quartus版

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语言是对逻辑电路进行描述的高级语言,它与其他高级语言相较既有相同的地方,也有其自身特点:

是工业标准的文本格式语言

VHDL已成为一种工业标准。

设计者、EDA工具的供给商和芯片生产厂家,都要遵循这一标准。

该语言是一种文本格式的语言,ASIC的设计者在设计电路时,就像编写其他高级语言一样,用文字来表达所要设计的电路,如此能比较直观地表达设计者的设计思想,而且易于修改。

能同时支持仿真和综合

VHDL语言是一种能够支持系统仿真的语言。

事实上,ASIC成功的关键在于生产前的设计,而保证设计正确性的要紧手腕确实是系统仿真。

目前在大部份的EDA工具中,都有支持VHDL语言仿真的工具。

如此,设计者在ASIC生产前就能够够明白设计的正确与、系统的的性能如何等关键问题。

VHDL不单单是一种仿真语言,它的所有语句有相当一部份是不支持综合的,也确实是说EDA工具无法依照所描述的VHDL语言产生出电路;但其中的可综合语句足以描述一个大而完整的系统。

目前所有的高层次综合工具所支持的综合语句,都是IEEE标准的一个子集。

因此,VHDL语言能够有两种完全不同的描述,一种是基于仿真的描述,它能够利用VHDL语言概念的各类语句,这种程序要紧适用于编写测试基准程序和各类仿真模型的工程师利用,另外一种确实是用于生成具体电路的可综合描述。

它只能利用VHDL中的可综合子集。

它要紧适用于从事电路设计的工程师利用。

是一种并发执行的语言

咱们明白,几乎所有的高级语言的执行都是顺序的,而VHDL语言在仿真进程中的执行是并行的。

这种特性是符合实际逻辑电路的工作进程的。

支持结构化设计和top-down设计方式

VHDL语言是一种结构化的语言,它提供的语句能够完成多层次结构结构的描述,因此VHDL语言能够支持结构化的设计。

结构化设计确实是将一个系统划分为多个模块,而每一个模块又能够继续划分为更多的子模块。

如此就能够够采纳top-down的设计方式,确实是从系统整体要求动身,自上而下的慢慢将系统内容细化,最后完成系统的整体设计。

的描述与工艺无关

设计者在利用VHDL描述时并非需要关切电路最终将在哪一种工艺上实现,EDA工具能够将VHDL源代码映射到不同的工艺床上,提高了设计的可重用性。

6.支持多风格的描述方式

VHDL不仅支持行为级的描述,而且支持数据流及结构描述。

前言

电子密码锁的利用表现了人们消费水平、保安意识和科技水平的提高,而且幸免了携带乃至丢失钥匙的麻烦。

目前设计密码锁的方式很多,例如用传统的PCB板设计、用PLC设计或用单片机设计等等。

而用VHDL能够加倍速速、灵活地设计出符合各类要求的密码锁,优于其他设计方式。

VHDL是一种符合IEEE标准的硬件描述语言,其最大的特点是借鉴高级程序设计语言的功能特性,对电路的行为与结构进行高度抽象化、标准化的形式描述,并对设计的不同层次、不同领域的模拟验证与综合优化等处置,使设计进程廷到高度自动化。

1.概述

电子密码锁在生活中十分常见,在这我将设计一个具有较低本钱的电子密码锁,本文讲述了我整个设计进程及收成。

讲述了电子密码锁的的工作原理和各个模块的功能,并讲述了所有部份的设计思路,对各部份电路方案的选择、元器件的挑选、和对它们的调试、对波形图的分析,到最后的整体图的分析。

要求

本设计名称为电子密码锁,用四个模块,别离为输入模块、操纵模块、扫描器模块、显示模块,来操纵密码的输入、验证与显示。

设计所要实现的功能为:

1数码输入:

手动用3个拨码开关与3个按键设计三位密码的输入,并在显示器显示出该数值。

2数码验证:

开锁时输入密码后,拨动RT键使其为高电平,而CHANGE为低电平检测,密码正确时开锁,输出LOCKOPEN灯灭,LOCKCLOSE灯亮,表示开锁成功。

3错误显示:

当密码输入错误时,LOCKOPEN灯亮,LOCKCLOSE灯灭,表示开锁失败。

4更改密码:

当改变密码时,按下CHANGE键使其为高电平,而RT为低电平常,可改变密码。

5密码清除:

按下REST可清除前面的输入值,清除为“888”。

3.整体框图

1)设计方案:

电子密码锁,要紧由三部份组成:

密码输入电路、密码锁操纵电路和密码锁显示电路。

作为电子密码锁的输入电路,可选用的方案有拨码与按键来操纵输入和触摸式键盘输入等多种。

拨码与按键和触摸式4*4键盘相较简单方便而且本钱低,组成的电路简单,本设计中采纳拨码与按键来作为该设计的输入设备。

数字电子密码锁的显示信息电路可采纳LED数码显示管和液晶屏显示两种。

液晶显示具有高速显示、靠得住性高、易于扩展和升级的特点,可是一般的液晶存在亮度低、对复杂环境适应能力差的特点,可是在本设计中任然利用LED数码管。

依照以上选定的输入设备与与显示器件,并考虑到现实各项密码锁功能的具体要求,与系统的设计要求,系统设计采纳自顶向下的设计方案。

整个密码锁系统的整体整体框图如下图。

 

图电子密码锁系统整体框图

4.电子密码锁的波形仿真

电子密码锁的设计流程

利用QuartusⅡ进行电子密码锁设计的流程为

1.编写VHDL程序(利用TextEditor)(见附录);

2.编译VHDL程序(利用Compiler);

3.仿真验证VHDL程序(利用WaveformEditor,Simulator);

4.进行芯片的时序分析(利用TimingAnalyzer);

5.安排芯片管脚位置(利用FloorplanEditor);

6.下载程序至芯片(利用Programmer)。

5.功能模块

输入模块

1)功能介绍

输入时有三个拨码键操纵输入,每一个拨码各操纵一名密码,关于其中一个拨码键每拨一次码按一次按键,表示输入一名,当输入四位时输出一名数,用“888”作为初始密码。

2)输入模块与仿真图形

单脉冲操纵如图如以下图

上图为单脉冲操纵输入,当M给一上升沿信号将在PUL输出一名与之对应的高或低电平。

四位串行输入并行输出寄放器如以下图

图上图为4为串行输入并行输出寄放器,它由4个D触发组成,当reset为高电平常,每给一脉冲输入数据将向右移一名二值代码,它能同时复位

3)程序的输入

在文本区内输入程序,程序如下:

单脉冲信号操纵

LIBRARYIEEE;

USEpulsIS

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位串行输入并行输出寄放器

LIBRARYIEEE;

USEshifterIS

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;

操纵模块

1)功能介绍

开锁时输入密码后,拨动RT键使其为高电平,而CHANGE为低电平检测,密码正确时开锁,输出LOCKOPEN灯灭,LOCKCLOSE灯亮,表示开锁成功。

当密码输入错误时,LOCKOPEN灯亮,LOCKCLOSE灯灭,表示开锁失败。

当改变密码时,按下CHANGE键使其为高电平,而RT为低电平常,可改变密码。

按下REST可清除前面的输入值,清除为“888”。

2)操纵模块与仿真图形

输入译码器图,如以下图

图上图为译码器将4位二值代码转化成BCD码从“0000”~“1001”表示

0~9。

表5-2输入译码的真值表

输入输出

DCBAY1Y2Y3Y4字形

000000000

000100011

001000102

001100113

010001004

010101015

011001106

011101117

100010008

100110019

表5-2

总功能操纵模块图,如以下图

图当CHANGE为高电平且rt为低电平常开始输入密码这时lockopen为高电平,而lockclose为低电平,当rt为高电平,change为低电平常开始检测密码,如上图开始密码为“108”当再次显现“108”时lockopen为高电平,而lockclose为低电平,当密码错误时lockopen为低电平,而lockclose为高电平。

4选1选择器与扫描器图,如以下图

图如上图多路选择器能够从多组数据来源当选取一组送入目的地,在本设计中利用多路选择器做扫描电路来别离驱动输出装置,能够将低本钱消耗,如上图当输入“819”时,在时钟地操纵下qout将输出“819”,而与之对应的sel扫描对应的数码管。

在文本区内输入程序,程序如下:

输入译码器

LIBRARYIEEE;

USE

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;

总功能操纵模块

LIBRARYIEEE;

USEEleclockIS

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选择器与扫描器

LIBRARYIEEE;

USEselIS

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<="";

WHEN1=>QOUT<=QIN2;

sel<="";

WHEN2=>QOUT<=QIN3;

sel<="";

WHENOTHERS=>QOUT<="0000";

sel<="";

ENDCASE;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREART;

显示模块

1)功能介绍

将密码用BCD七段数码管显示

2)显示模块与仿真波形图,如以下图

上图将BCD码转化到七段译码电路上

表5-3BCD-七段数码管的真值表

输入输出

DCBAY1Y2Y3Y4Y5Y6Y7字形

000011111100

000101100001

001011011012

001101110013

010001100114

010110110115

011010111116

011111100007

100011111118

100111100119

表5-3

在文本区内输入程序,程序如下:

LIBRARYIEEE;

USESeg7IS

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”时锁打开,设计正确。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2