EDAWord文档下载推荐.docx
- 文档编号:16994880
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:29
- 大小:239.93KB
EDAWord文档下载推荐.docx
《EDAWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDAWord文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
4)答辩与评分标准:
(1)完成系统分析:
30分;
(2)完成设计过程:
(3)完成仿真:
10分;
(4)完成下载:
(5)回答问题:
20分。
5)参考文献:
(1)潘松,黄继业编著.《EDA技术实用教程》,2005,科学出版社
(2)徐志军,徐光辉编著.《CPLD/FPGA的开发与应用》,电子工业出版社,2001.1
(3)
(4)
(5)
(6)
6)课程设计进度安排
内容天数 地点
构思及收集资料1 图书馆
设计与调试7 实验室
撰写论文2 图书馆、实验室
学生签名:
2013年1月11日
课程设计(论文)评审意见
(1)设计程序 (40分):
优( )、良( )、中( )、一般( )、差( );
(2)仿真结果 (10分):
(3)下载结果 (10分):
(4)回答问题 (10分):
(5)报告成绩(30分):
(6)格式规范性及考勤是否降等级:
是( )、否( )
评阅人:
朱路 职称:
副教授
2013年1月12日
目录
目录1
绪论2
一、关键技术的介绍3
1.1现场可编程门阵列FPGA3
1.2VHDL语言3
1.3QuartusⅡ软件4
二、系统总设计的方案5
2.1主要程序控制5
2.2输入键盘6
三、系统设计的详细方案8
3.1主控电路的详细设计8
3.2键盘输入的详细程序10
3.3显示电路13
四、仿真结果14
五、小结15
谢辞16
附录16
绪论
随着社会物质财富的日益增长,安全防盗已成为全社会问题。
人们对锁的要求越来越高,既要安全可靠地防盗,又要使用方便。
弹子锁由于结构上的局限已难以满足当前社会管理和防盗要求。
随着电子技术的发展,安全性能好、密码量大的电子密码锁代替机械式密码锁已是必然趋势。
电子密码锁与普通机械锁相比,具有许多独特的优点:
保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等。
目前市面上的电子密码锁大部分都是用单片机作为主控芯片,但是如果使用单片机技术,会发生程序跑飞现象。
系统的可靠性较差。
除了基于单片机技术的电子密码锁,还有基于现场可编程门阵列FPGA器件的电子密码锁。
用FPGA器件构造系统,通过VHDL语言进行程序的编写,再仿真下载到FPGA器件中。
采用FPGA开发的数字系统,不仅具有很高的工作可靠性,而且升级也极其方便。
本次课程设计是设计了一种基于现场可编程门阵列FPGA器件的电子密码锁,采用VHDL语言对系统进行描述,并在EP1K30TC144-3上实现。
系统所实现的功能:
用户给电子密码锁设定一个密码,当使用本机键盘开锁时,该密码与用户设定的密码比较,如果密码正确,则开锁;
如果密码不正确,则清空当前的输入重新输入。
在输入的时候,每按下一个键,就输入一个数值,并在数码管上的最右方显示出该数值,同时将先前输入的数据依序左移一个数字位置。
按下清除键就能将已经输入的值清零。
在解锁状态下,按下修改密码键就能将当前输入的值修改为密码。
按下上锁键就可使得系统在上锁状态。
另外还有一个创新设计是有万能密码,就是系统内置不可修改的密码,换句话说,有两个密码,万能密码和自定义密码。
一、关键技术的介绍
本次课程设计的要求是用VHDL语言编写的数字电子密码锁系统,并且进行仿真与下载。
但是由于条件有限,所以我只做了VHDL语言编写与相关仿真。
在这里,牵涉到了几个关键字,FPGA可编程器件,VHDL语言与QuartusⅡ软件。
下面对这三个关键字进行介绍。
1.1现场可编程门阵列FPGA
FPGA的全称是Field-ProgrammableGateArray,就是现场可编程门阵列。
它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
FPGA内部有丰富的触发器和I/O引脚。
使用者可以根据需要,通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
具体的方法就是用硬件描述语言(例如VHDL语言)编写相应的程序,完成电路设计,下载(也可以称作做烧录)到FPGA芯片上。
FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低。
由于目前电子产品生命周期相对缩短,相近功能产品的派生设计增多等特点,促使FPGA越来越多地取代了ASIC的市场,特别是对国内众多的科研单位来说,小批量、多品种的产品需求,使得FPGA成为首选。
用户在采用FPGA设计ASIC电路(专用集成电路)时,不需要投片生产就能得到合用的芯片。
另外,FPGA还可做其它全定制或半定制ASIC电路的中试样片。
在ASIC电路中,FPGA是设计周期最短、开发费用最低、风险最小的器件之一。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
1.2VHDL语言
在EDA设计中,除了硬件部分(FPGA),软件程序的设计也很重要,两者密不可分,FPGA芯片只有在完成硬件描述语言设计之后,进行了烧录,才能够起到作用。
在本次课程设计中所使用的编程语言是VHDL语言。
VHDL语言是一种硬件描述语言,一般多用在EDA(电子设计自动化)中。
VHDL的全称Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,翻译成中文就是超高速集成电路硬件描述语言。
主要是应用在数字电路的设计中VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。
与其他硬件描述语言相比,VHDL有许多的特点,下面进行简单的介绍。
首先,VHDL的功能强大、设计灵活,可以用简洁明确的源代码来描述复杂的逻辑控制,具有更强的行为描述能力。
另外,VHDL语言支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。
VHDL支持广泛,目前大多数EDA工具几乎都支持VHDL。
强大的系统硬件描述能力也是VHDL的一个优点,VHDL既可以描述系统级电路,又可以描述门级电路。
VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,在用VHDL进行设计时,使用者不需要首先考虑选择完成设计的器件,可以集中精力进行设计的优化。
独立于器件的设计,VHDL语言的设计与工艺无关,当设计描述完成后,可以用多种不同的器件结构来实现所设计的程序的功能,同时还能使得设计描述的移植成为可能,易于共享和复用。
1.3QuartusⅡ软件
在EDA设计的时候,在把程序下载到FPGA芯片之前,往往需要在PC上进行仿真,确定仿真没有问题之后,才会下载到FPGA芯片上。
在程序的编译与程序的仿真下载,所使用的软件是QuartusII软件。
在EDA课程上,所使用的软件是Max+plusII软件。
Max+plusII是Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
但是目前Altera已经停止了对Max+plusII的更新支持,之后Altera公司开发了一种针对其公司生产的系列CPLD/PGFA器件的综合性开发软件QuartusII。
QuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
AlteraQuartusII(3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。
QuartusII软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。
该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
此外,QuartusII支持的芯片也很多,有Altera公司的MAX3000A系列、MAX7000系列、MAX9000系列、ACEX1K系列、APEX20K系列、APEXII系列、FLEX6000系列、FLEX10K系列,支持MAX7000/MAX3000等乘积项器件。
支持MAXIICPLD系列、Cyclone系列、CycloneII、StratixII系列、StratixGX系列等。
支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
二、系统总设计的方案
本次课程设计的主要任务是设计一个电子密码锁。
并且对电子密码锁的功能进行了相关的规定。
要求能进行数码输入,数码清除,密码更改,还要求有激活电锁键与解除电锁键。
另外还要有一个万能密码,在主人忘记密码时使用。
为了实现这些功能,要进行一些软件设计,下面是软件设计的主要思路。
2.1主要程序控制
电子密码锁有两个状态,一个是已经锁上的状态,另一个是解锁状态。
在已锁状态下,只可以进行输入与解锁。
具体的来说,就是能输入数值,并且显示已输入数值以及按键解锁。
在解锁状态下,可以修改密码,可以上锁。
具体的说就是能输入数值,并且将已输入的数值显示出来,将输入的数值更改为修改的密码,此外就是还能上锁,把解锁状态变为已锁状态。
比较两个状态,可以知道,输入数值并且显示是这两个状态都要能实现的功能,这部分可以独立地处理。
在此处我们将输入并且显示数值这部分的电路简化为键盘输入了数值,并且将信号传递到主要控制电路。
两个状态用一个信号来表示,在程序中是使用了ENLOCK表示,当ENLOCK为1的时候为已锁状态,否则为解锁状态。
下面对这两个状态分别进行分析。
已锁状态下,可以进行常见的解锁功能。
输入一个四位数之后,按下解锁键,然后将这四位数与在器件里面内置的数值进行比较,如相等就进入解锁状态,ENLOCK值改为“0”,如不想等,就缓存清除,ENLOCK值不变,依旧是在已锁状态。
在解锁状态下,可以修改密码和解锁。
修改密码的过程,是输入一个四位数之后,按下修改密码键就可以将当前的四位数修改为密码并且存储下来。
另外,在该状态下还可以按下上锁键进入已锁状态,ENLOCK值改为“1”。
另外还需要注意的就是数值的关系处理。
在输入数值的时候,由于是一位一位的逐位输入,所以需要将先前输入的数值与当前输入的数值存储下来,在这里我们暂时将其称为缓存。
在任务书中,要求每按下一个键,就输入一个数值,并在数码管上的最右方显示出该数值,同时将先前输入的数据依序左移一个数字位置。
要实现这个功能就需要将输入的缓存不断地改变。
每次输入一位就把缓存的原有数据左移一位,将当前数据加到缓存的最后一位。
这里我们使用了“并置”的方法。
需要注意,当输入位数达到四位的时候,就禁止输入,或者说是输入无效,只能用清零键或者是按下解锁键判断是否正确。
在已锁状态下,按下解锁键就可以把缓存的值与系统内部已经存储的密码进行比较,相等就解锁。
而在解锁状态下,按下修改密码键就可以将已存储的密码修改为已存储的数值。
以上就是大致上的设计的主要逻辑关系。
在任务书中有一个创新设计,是能有一个万能密码。
万能密码的作用是为了怕使用者忘记密码,不论原来密码是什么,只要输入万能密码就能开锁。
在此处,我们将万能密码设置为8888.为了实现万能密码的功能,可以设计两个比较器,第一个比较器的作用是将缓存与已经存储的密码比较,第二个比较器的作用则是在第一次比较之后解锁失败后,将缓存与万能密码相比较,如果相等,也能进行解锁,否则不能解锁。
下面是示意图来表示设计的逻辑关系。
以上是简易的流程图,说明一下,中的内容所表示的都是键盘输入。
而椭圆内的内容则是表示当前状态,也就是ENlLOCK的状态。
内表示为数值。
流程图比较简陋,但是能将大致的思路表示清楚。
2.2输入键盘
在前面的内容中,已经知道了需要有键盘输入,在主要程序控制电路中只是简化了来描述。
在实际设计中,这部分是重难点。
我们所采用的方法是对键盘进行扫描,然后将扫描的数值输出给主要的控制的程序。
键盘的大致摸样如下图。
正如图中所表示的,除了数字键,还有几个功能键。
功能键有“解锁”,“上锁”,“修改密码”,“清除”,所实现的功能在前文中都有交代,这些功能键需要被直接输出。
而数字键则需要译码之后才能将值输出到控制电路。
下面介绍一下输入电路电路的原理构造等。
首先,由时序产生电路产生时序脉冲,然后对键盘电路进行扫描与译码。
这里的译码有两个,第一个译码是将扫描得到的结果编译得到各个按键相应的信号,第二个译码是将数字键转化成为二进制的数字信号。
在进行电路扫描时候,对键盘进行信号的扫描,用扫描信号查看检测键盘的各个键的值。
扫描信号变化的顺序依次为1110-1101-1011-0111-1110……依序的周而复始。
扫描时依序分别扫描四列按键,当扫描信号为1110时扫描KY3这一排按键;
当扫描信号为1101室,扫描KY2这一排按键;
当扫描信号为1011时,扫描KY1这一排按键;
当扫描信号为0111时,扫描KY0这一排按键。
每扫描一排按键就检查一次是否有键被按下,如果这排没有按键被按下就忽略,反之,如果出现被按下的键则立刻进行按键编码的动作,且将编码的结果储存于寄存器中。
按键方式采用的是行列式按键结构,是4×
4键盘,本设计中只用了其中的14个按键。
0~9与另外4个功能键。
行列式按键是指直接用I/O口线通过动态扫描构成的按键电路。
每个按键通过动态扫描需要八根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线的工作状态。
它的电路配置灵活,软件结构简单,占用的I/O资源少。
首先固定输出4行为高电平(接到电源),然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。
在本次设计中,所采用的键盘是机械开关,所以在开关按下的时候可能会产生信号来回弹跳突变的情况。
这种情况可能会造成错误的输入,比如说,当按下一次按键然后很快的放掉,可能会出现实际产生的按键信号出现问题,在取样信号的检查之后,会造成错误的判断,认为有两次输入。
示意如下图。
如果调整抽样频率,弹跳现象就可以获得改善。
如下图可以看出来。
调整抽样频率的具体方法就是加上弹跳消除电路,也就是键盘输入去抖电路。
去抖电路的脉冲信号频率必须要相对其他脉冲信号的频率要更高,工作频率要是扫描信号的2倍或者更高。
三、系统设计的详细方案
大致的设计完成之后,下面就是实际的程序设计。
在这里分为三个部分,主要控制部分与键盘输入部分还有显示部分。
下面详细介绍主要控制电路与键盘输入电路。
其中键盘部分的输出是主控部分的输入。
显示部分则是与主控部分的缓存相连,直接输出。
3.1主控电路的详细设计
主控电路是整个电路的控制中心。
功能是对按键的输入内容进行处理,并且将需要显示的内容输出。
DATA_NUMBER,也就是数据输入数值,也就是当输入的值为数字时候,就会将当前输入的值译码赋给DATA_NUMBER。
DATA_FUNCTION,就是功能输入的值,当输入为功能键,也就是“清除”“上锁”“解锁”“修改密码”等键时候,在经过键盘输入电路译码之后,会将当前输入的键的值赋给DATA_FUNCTION,DATA_FUNCTION的各个值分别表示了不同的功能键。
FLAG_NUMBER,表征的为当前输入是否为数字。
当前输入若为数字,FLAG_NUMBER的值就为1,若当前无输入或者是输入为功能键则为0。
FLAG_FUNCTION所表征的是当前输入是否是功能键。
若当前输入为功能键,FLAG_FUNCTION的值就为1,若当前无输入或者是输入为数字键则为0。
以上就是由输入键盘电路输出的值。
除此之外,还有CLK时钟脉冲输入。
输出有两个,一个是ENLOCK,一个是BCD显示。
ENLOCK所表示的是当前的状态,若是已锁状态,ENLOCK的值就是1,否则为0。
BCD显示为16位。
BCD显示的值由缓存赋予。
在按照任务书中要求,控制电路所要实现的功能如下。
①如果按下数字键,第一个数字会从显示其的最右端开始显示,此后每新按一个数字时,显示器上的数字必须左移一格,以便将新的数字显示出来。
②假如要更改输入的数字,可按清除键清除已经输入的所有的数字,再重新输入四位数。
③当输入的数字键超过预设位数时,电路不予理会,而且不再显示以后的数字。
④按下激活电锁键可将密码锁上锁。
⑤按下解锁键会检查输入的密码是否正确,若密码正确无误则解锁。
如果密码错误,则再次判断是否与万能密码相同,相同也可以解锁,但是如果输入既不与密码相同,又不与万能密码相同,则不能解锁,并且缓存清零。
在具体编程的时候,需要定义一下中间信号来代替输出输入信号进行计算,最后将中间信号传递给相应的输出。
内部的功能信号有缓存(HC)、密码(MIMA)、输入数值的个数(NUMBER)。
代替输出信号的内部信号是Q(代替ENLOCK信号)、HC(代替输出BCDXS)。
下面是具体程序的编写,首先是将按下数字按键进行数据输入,对数值的存储的电路。
KEYIN_PROCESS:
BLOCKIS
BEGIN
PROCESS(FLAG_NUMBER)IS
IFFLAG_NUMBER'
EVENTANDFLAG_NUMBER='
1'
THEN
IFNUMBER<
4THEN
HC<
=HC(11DOWNTO0)&
DATA_NUMBER;
NUMBER<
=NUMBER+1;
ENDIF;
ENDPROCESS;
ENDBLOCKKEYIN_PROCESS;
一旦有数值输入,也就是FLAG_NUMBER有改变的时候,该进程就会启动,先判断是否能够进行输入(也就是已经输入的数值是否超过4位)。
如果可以进行输入,FLAG_NUMBER的数值就会通过并置的方式逐位加到缓存HC上。
但是当输入数值的个数超过4位的时候,输入就无效了。
除了上面的程序可以修改内部电路的缓存,还可以在功能输入的时候,通过清除键,对缓存进行修改。
在修改密码键有效的时候,将缓存的值赋给内部电路中寄存器保存的密码。
下面是功能输入的电路。
LOCK_PROCESS:
PROCESS(FLAG_FUNCTION)IS
BEGIN
IF(CLK'
EVENTANDCLK='
)THEN
IFDATA_FUNCTION(3)='
="
0000000000000000"
;
--清除缓存
000"
IFDATA_FUNCTION
(1)='
Q<
='
--上锁控制信号有效
IFNUMBER=4THEN
IFDATA_FUNCTION
(2)='
ANDQ=’0’THEN
MIMA<
=HC;
--密码存储
ELSIFDATA_FUNCTION(0)='
THEN--开锁控制信号有效
IFMIMA=HCTHEN--密码核对
0'
ELSIFHC="
1000100010001000"
--设置"
8888"
为万用密码
ENDBLOCKLOCK_PROCESS;
--输出上锁/开锁控制信号
ENLOCK<
=Q;
--输出显示信息
BCDXS<
ENDARCHITECTUREART;
在有功能键输入的时候,根据功能键的所对应的的位置,对DATA_FUNCTION的值进行不同的解释。
在上述程序中,可以看到,这就是主要控制程序。
当FLAG_FUNCTION有变化,也就是有功能键的输入的时候,首先判断是否为清除键,如果是清除键,就清零缓存与已输入数值的个数。
然后判断是否为上锁按键按下,如果是,就将Q强制为1。
如果都不是,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA
![提示](https://static.bdocx.com/images/bang_tan.gif)