哈工大HIT数字逻辑大作业Word文件下载.docx
《哈工大HIT数字逻辑大作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《哈工大HIT数字逻辑大作业Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
2.当开锁按扭开关(可设置8位或更多,其中只有4位有效,其余位为虚设)的输入代码等于所设密码时启动开锁控制电路,并且用绿灯亮、红灯灭表示开锁状态。
3.从第一个按扭触动后的5秒内若未能将锁打开,则电路自动复位并发出报警信号,同时用绿灯灭、红灯亮表示关锁状态。
二.工作原理、系统方框图
1.系统原理简图:
2.组成原理:
系统主要由四部分组成,分别是:
①数据输入触发器、②计时器、③密码修改兼比较器、
主控元件。
1数据输入触发器:
组成:
8个数据输入端a,b,c,d,e,f,g,h、键入密码控制端inkey和时钟信号clk。
触发原理:
当inkey为有效值1时,锁存器锁存当前8个输入端的值并且输出,与相应输入端输入值两两比较(使用异或门比较,相同输出0,不同输出1),再将比较结果相或运算输出,输出为1时即为需要触发计时,输出时钟,否则输出0值;
电路如图:
2计时器:
输入:
由数据输入触发器给出时钟源,control期间给定控制端re。
原理:
自定义的元器件,对给定的CBA,元件工作时会由CBA->
000->
CBA循环计数,控制时钟频率从而达到计时效果。
同时输出端与七段译码器相连,译码器输出连接到显像管可实现计时显示。
显示由两部分组成:
输入倒计时(5->
0)和可输入次数倒计时(3->
0)组成,后者的时钟源由前者输出转换给定。
(时钟输入、控制端输入、2个循环逆序计数器、2个七段译码器7448和异或门、非门、或门组成)
计时器VHDL代码:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycountis
port(clr:
instd_logic;
--同步复位
re:
--同步置数
clk:
--时钟信号
A:
B:
C:
--置数值
s2,s1,s0:
outstd_logic);
endcount;
architecturertlofcountis
signaltemp:
std_logic_vector(2DOWNTO0);
begin
s2<
=temp
(2);
s1<
=temp
(1);
s0<
=temp(0);
co:
process(clk,re,clr)
begin
if(clr='
1'
andre='
0'
)then
temp<
="
000"
;
elsifre='
andclr='
then
temp
(2)<
=C;
temp
(1)<
=B;
temp(0)<
=A;
elsif(clk'
eventandclk='
)then
iftemp="
temp
(2)<
temp
(1)<
temp(0)<
else
temp<
=temp-1;
endif;
endif;
endprocessco;
endrtl;
3密码修改兼比较器:
由控制端cpa和O2组成;
当cpa=1时有效,此时主控元件control控制O2信号为高电平‘1’,开始修改密码;
当cpa=0时,主控元件control控制O2信号为低电平‘0’,锁存密码。
主控部分电路:
输入:
T0(倒计时结束信号,结束为‘1’,否为‘0’),T1(输入次数计数结束信号,结束为‘1’,否为‘0’),S0(输入触控信号,inkey为‘1’,按钮值发生改变则返回‘1’,否为‘0’),S1(比较器返回结果,若比较密码与输入一致,返回‘1’,否为‘0’),inkey(键入密码),CPA(修改密码)
输出:
RE(计时器复位信号,真为‘1’,否为‘0’),KEEP(计时维持信号,真为‘1’,否为‘0’),SC(开锁状态,开为‘1’,锁为‘0’),O1(inkey输入有效信号,有效为‘1’,否为‘0’),O2(密码修改锁存信号,修改为‘1’,锁存为‘0’),WA(警告信号,警告为‘1’,否为‘0’),CLOCK(锁死状态,锁死为‘1’,未锁死为‘0’),red(红灯),green(绿灯),Bell(警告响铃)
功能:
依照输入信号值对其他部分电路进行实时控制
主控元件代码:
entitycontrolis
port(t0,t1,s0,s1,inkey,cpa:
keep,wa,clock,o1,sc,re,o2:
outstd_logic);
endcontrol;
architecturertlofcontrolis
std_logic:
='
sc<
=temp;
wa<
whent0='
else
'
;
clock<
whent1='
re<
wheninkey='
else
msc:
process(s1,inkey)
begin
ifinkey='
temp<
elsifinkey='
ands1='
then
endprocessmsc;
mkeep:
process(s0,t0)
if(s0='
keep<
elsift0='
endprocessmkeep;
mo1:
process(t0,t1,inkey)
o1<
elsift0='
andinkey='
endprocessmo1;
mo2:
process(cpa,inkey)
ifcpa='
andtemp='
o2<
else
endprocessmo2;
endrtl;
三.各部分选定方案及电路组成、相关器件说明
数据输入触发器是由数据输入端,1个74LS373芯片,八个异或门,一个与门和一个或门组成。
计时器是由时钟输入、控制端输入、2个循环逆序计数器、2个七段译码器74LS48芯片和异或门、非门、或门组成。
密码修改兼比较器是由1个74LS373芯片,异或门,与门、非门和或门组成的逻辑电路系统。
四.设计结论
根据基本的数字逻辑和FPGA设计原理能够设计出一定复杂度的电子密码锁。
本次课题设计完成的是基于FPGA的密码锁设计,通过一个多星期的不断努力、克服各种困难,最终实现了任务目标。
本次设计解决的主要问题是是利用HDL语言完成基于FPGA的电子密码锁的编程问题。
设计是理论知识与实践的完美结合,对于现代大学生的实践能力是个很好的培养。
短短的一个星期的时间的设计虽然短暂,但是它给我的收获确实难忘,不仅仅在智能仪器方面有了很大的进步,而且在FPGA、max+plusII软件等方面也学到了不少在上课学不到的知识。
这段时间我查阅到很多关于课程设计的书籍,对我帮助也很大。
我觉得自己以前的盲目,现在明白了很多。
也对我们专业动手实践的兴趣提高了很多。
有了这些经历对于我日后工作一定会有很大帮助。
相信这次设计中学到的种种东西一定会存在我的脑海里,令我终身受益。
在课程设计的过程中也可以看到我的不足,如原理知识掌握不实,曾经学过的知识如今却不会应用,软件的应用也不熟练,希望日后提供给我们更多的锻炼机会来培养我们的实践能力。
五.设计心得与总结
xxx:
我们学习了数字电子电路和模拟电子电路,对电子技术有了一些初步了解,但那都是一些理论的东西。
通过这次数字电子钟的课程设计,我们才把学到的东西与实践相结合。
从中对我们学的知识有了更进一步的理解。
在此次的密码锁的设计过程中,更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。
也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。
虽然这次的设计并没能顺利完成,但在实验中不断探索检验,也让我从中受益,设计的过程中对电路中的每一个环节,电路中各个部分的功能的实现和修改不断推进的同时也在离成功不断接近。
各个芯片能够完成什么样的功能,使用芯片时应该注意那些要点。
同一个电路可以用那些芯片实现,各个芯片实现同一个功能的区别。
同时对普通计数器如何构成n进制计数器有了更深的了解和掌握,对自我的实际操作能力也有了很高的提升。
同时,我进一步巩固了自己运用max+plusII的能力和技巧。
这次使用max+plusII的过程中,从软件的安装到程序的设计、调试都是我自己独立完成,只是最后小组成员进行了一定的内部讨论。
电子密码锁虽然简单,但是在线路的连接上还是让我感受到细心很重要。
在调试环节,逻辑发生器和示波器等工具都充分发挥了其作用,帮助我进一步完善程序。
此外,这次的实验还让我感受到做事时耐心的重要作用。
自己独立完成一项任务时可能会有各种各样的困难,不骄不躁,不气不馁,以平和的心态应对一切,这才是一个工科学生应该具备的心里素质。
这次实验让我从中学到了很多东西,做事的方法。
做事的心态。
也让我体验到了自主完成一项从未体验过的事物的快感。
yy:
在这次实验中我认为学习不仅需要智力、能力,更需要求真务实的科学精神。
max+plusII的安装、调试、运行、仿真数据的输入等都会影响实验结果,造成实践与理论的脱节。
这就要在实验过程中,要实事求是如实地记录实验仿真的波形,同时在产生问题时,我时刻提醒自己要耐心的积极思考、认真分析错误和产生误差的原因。
实验中总是出错误,每一次实验都是对自己耐心的一次考验,所以我们要更有恒心的去面对实验。
电路总体上的思路是很好设计的,当下达任务的时候我们就大体上有了构架。
总体系统分为主控和实现功能的三部分组成。
但是涉及到细节的时候我们遇到很多小的困难。
像编译软件安装、运行、调试。
计时器的设计,仿真波形的建立。
分工的时候我简单的按照开始的思路设计了一个计时器,但是开始的几次都是不能使用于电路。
只能不断的修改,使其与总体的电路吻合。
感觉设计的时候应该全面的考虑一下各部分的功能,给出各部分详细的介绍,电路构架,和输入输出的配置和功能。
总之实验又让我们笼统的了解了逻辑电路的设计思路,虽然不是很仔细的学习,但大部分知识都了解了一下。
也锻炼了我们团队协作的能力。
通过了这三周自己孜孜不倦的学习以及不断摸索,我学到了很多知识拓展了自己的视野,同时增强了自己的同手操作能了。
能分析问题和解决问题的应用型技术人才,这为以后的工作做好了准备!
zzz:
①细节决定成败:
VHDL语言和之前惯用的C语言代码截然不同,它的工作方式也相当特异,因为一些“小”错误,总是连编译都很难通过;
②好的工具很重要:
max+plusII在我的XP系统上工作不正常,移动已经连好线路的器件,线路会断开!
因为排版的问题必须移动器件导致我重画了好几次。
然而过后才知道在其他同学的电脑上可以自由移动器件,让我好无语;
学会了使用简单的OCR软件和在线网站;
③劳心者治人,劳力者治于人:
在整个项目中我主要做一些简单工作,但是这次max+plusII画图还真是特别不顺利;
写文档虽然也用了点心思但重要性远远比不上核心技术;
总的来说,时间花了却没什么价值。
下次有项目争取做脑力劳动。
六.参考文献
[1]刘昌华,管庶安,数字逻辑原理与FPGA设计,北京航空航天大学出版社,2009
[2]陈耀和.VHDL语言设计技术.北京电子工业出版社,2004.
[3]冯涛,可编程逻辑器件开发技术—MAX+PLUS2入门与提高.北京:
人民邮电出版社,2002.
七.附录
总体器件表及相关器件的功能表、管脚分布
锁存器74LS373*2、七段译码器74LS48*2、计数器*2、若干异或门、或门、与门、非门等;
74LS373的真值表(功能表),表中:
L——低电平;
H——高电平;
X——不定态;
Q0——建立稳态前Q的电平;
G——输入端,与8031ALE连高电平:
畅通无阻低电平:
关门锁存。
图中OE——使能端,接地。
当G=“1”时,74LS373输出端1Q—8Q与输入端1D—8D相同;
当G为下降沿时,将输入数据锁存。
E
G
功 能
直通Qi=Di
1
保持(Qi保持不变)
X
输出高阻
74ls373引脚(管脚)排列图:
74LS48管脚图:
74LS48真值表:
总体设计图
仿真结果
1、按钮触发计时功能模拟
说明:
inkey为‘0’时,使锁存功能暂停,则锁存器输出与输入相同,当inkey为‘1’时,锁存当前密码按钮各值,一旦密码按钮触动(值变化),触控信号为‘1’(S0)。
O1、keep来自主控元件控制信号,CA-CH时锁存器输出值,a-h为键入值。
Clk为输入时钟,Tclk为向计时器的时钟传递。
2、计时器功能模拟
计时器工作及复位功能验证,将主控复位信号固定为‘1’,使的输出至“000”时复位,实际工作时主控复位信号将由inkey决定,当键入密码时,发出复位信号至“101”(图中模拟用“010”代替),当输入被触发,时钟送至计时器,便开始倒计时。
3、主控元件功能模拟
计数器计时结束信号t1为真(‘1’)时,clock为1,锁住电路;
倒计时结束信号t0为真(‘1’)时,输入控制信号O1为‘0’(inkey输入无效);
cpa为‘1’时,且SC为真(‘1’,锁开),修改密码信号O2为真。
4、密码修改及锁存功能模拟
sc为真(锁开),cpa输入‘1’,修改信号O2为真。
小组各成员所做工作说明
电路系统的整体构思、主控电路和数据输入触发器的设计、仿真波形的建立和应用。
计时器的设计、实验电路的汇总。
电路图修改整理、倒计时器测试设计、整理部分文档。