位串行数字锁电路实验报告DOC.docx

上传人:b****2 文档编号:13962509 上传时间:2023-06-19 格式:DOCX 页数:14 大小:295.92KB
下载 相关 举报
位串行数字锁电路实验报告DOC.docx_第1页
第1页 / 共14页
位串行数字锁电路实验报告DOC.docx_第2页
第2页 / 共14页
位串行数字锁电路实验报告DOC.docx_第3页
第3页 / 共14页
位串行数字锁电路实验报告DOC.docx_第4页
第4页 / 共14页
位串行数字锁电路实验报告DOC.docx_第5页
第5页 / 共14页
位串行数字锁电路实验报告DOC.docx_第6页
第6页 / 共14页
位串行数字锁电路实验报告DOC.docx_第7页
第7页 / 共14页
位串行数字锁电路实验报告DOC.docx_第8页
第8页 / 共14页
位串行数字锁电路实验报告DOC.docx_第9页
第9页 / 共14页
位串行数字锁电路实验报告DOC.docx_第10页
第10页 / 共14页
位串行数字锁电路实验报告DOC.docx_第11页
第11页 / 共14页
位串行数字锁电路实验报告DOC.docx_第12页
第12页 / 共14页
位串行数字锁电路实验报告DOC.docx_第13页
第13页 / 共14页
位串行数字锁电路实验报告DOC.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

位串行数字锁电路实验报告DOC.docx

《位串行数字锁电路实验报告DOC.docx》由会员分享,可在线阅读,更多相关《位串行数字锁电路实验报告DOC.docx(14页珍藏版)》请在冰点文库上搜索。

位串行数字锁电路实验报告DOC.docx

位串行数字锁电路实验报告DOC

大连理工大学城市学院

数字电路与系统课程设计

设计题目:

设计8位串行数字锁电路

 

学院:

电子与自动化学院

专业:

自动化

学生:

刘楠楠

同组人:

董静文、石姗

指导教师:

于海霞

完成日期:

2014年4月27日

 

目录

第一章设计任务

1.1项目名称3

1.2项目设计说明3

1.2.1设计任务和要求3

1.2.2进度安排3

第二章需求分析4

2.1设计原理4

2.2分解设计5

第三章系统功能模块设计5

3.1系统流程图5

3.2输入输出信号定义6

3.3模块功能6

3.31模块一6

3.32模块二6

3.33模块三7

第四章整体功能实现7

4.1整体原理图设计8

4.2程序编译与仿真9

第五章调试并分析结果9

第六章结论11

附录13

第一章设计任务

1.1项目名称:

设计8位串行数字锁电路

本项目的主要内容是设计并实现8位串行数字锁电路。

该电路将所学的数字电路与系统大部分知识和VHDL语言结合。

1.2项目设计说明:

本项目用来实现设计8位串行数字锁电路

1.2.1设计任务和要求

⑴开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开所指示灯LT。

否则,系统进入“错误”状态,并发出报警信号。

⑵开锁程序由设计者确定,并要求锁内给定的密码是可调的,且预置方便,保密性好。

⑶串行数字锁的报警方式是点亮指示灯LF,并使喇叭名叫来报警,直到按下复位开关,报警才停止。

此时,数字锁又自动进入等待下一次开锁的状态。

1.2.2进度安排

第一次课:

预答辩,制定计划分组

第二次课:

详细设计

第三次课:

设计,编程,调试

第四次课:

程序测试机,硬件连续调试

第五次课:

普通题检查

第六、七次课:

提高题设计

第八次课:

答辩

第二章需求分析

2.1设计原理

数字密码锁原理框图如图1所示。

由时钟脉冲发生器、按键、指示灯和控制部分等组成。

开关的消抖动电路放在控制部分考虑,时钟输入CLK由外部时钟脉冲发生器的输出提供。

设计中的指示灯就是发光二极管,共计10个,用来指示系统的工作状态。

其中8个为一组,用来显示已经输入密码的个数,剩余两个,一个为开锁绿色指示灯LT;另一个为报警红色指示灯LF。

控制部分是VHDL语言设计的核心部分,主要由方波生成模块FEN、消抖同步模块XIAOPRO和密码锁逻辑控制模块CORNAA这4个模块构成,可以完成密码的修改、设定及非法入侵报警、驱动外围电路等功能。

2.2分解设计

本设计主要包括方波生成模块,消抖同步模块和密码锁逻辑控制模块

方波生成模块FEN分频占空比为1:

5000000的方波,用于消除抖动。

消抖同步模块实现了消除抖动并且同步的功能。

密码锁逻辑控制模块是整个设计的核心,它实现密码锁的逻辑功能。

第三章系统功能模块设计

3.1系统流程图

3.2输入输出信号定义

表1数字密码锁控制器输入输出信号定义

信号

输入输出

定义

CLR

输入

复位信号

CLK

输入

时钟输入信号

load

输入

密码设置开关

K1K0

输入

代表1和0的按键开关

LT

输出

开锁指示灯

LF

输出

报警指示灯

lamp

输出

密码输入显示灯

arm

输出

报警输出信号

3.3模块功能

3.31模块一:

方波生成模块

方波生成模块FEN分频占空比为1:

5000000的方波,用于消除抖动。

分频电路的输入时钟CLK是由外部时钟提供的,外部时钟周期取200ns。

(程序见附录)

3.32模块二:

消抖同步模块

对于K1和K0信号,它们分别代表1和0的按键开关,可以直接送入密码锁逻辑控制模块CORNAA。

但由于它们是由按键产生的,其产生时刻和持续时间长短是随机的,并且存在因开关簧片反弹引起的电平抖动现象.因此,必须在每个开关后面安排一个消抖和同步化电路模块XIAOPRO,目的是保证系统能捕捉到输入脉冲,同时,保证每按一次健只形成一个宽度固定的脉冲。

在XIAOPRO模块中,因为变量的赋值是直接的,立即生效的,它在某一时刻仅包含一个值,而信号的赋值是有一个值,而信号的赋值是有一定附加时延的,故当时钟脉冲下降沿到来时,变量temp2和temp3在赋值语句执行后立即分别得到新值:

tmp1的值和tmp2的非值,而输入信号a经过一定时延赋值给信号tmp1,实现了消除抖动并且同步的功能。

(程序见附录)

3.32模块三:

密码锁逻辑控制模块

模块CORNAA是整个设计的核心,它实现密码锁的逻辑功能。

开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯LT。

否则,系统进入“错误”状态,并发出报警信号。

串行数字锁的报警方式是点亮指示灯LF,并使喇叭鸣叫,直到按下复位开关,报警才停止。

此时,数字锁又自动进入等待下一次开锁的状态。

该8位串行电子密码锁设置8位二进制密码,要求锁内给定的密码是可调的,且设置方便,保密性好。

其具体操作分为输入密码和修改密码两部分。

(1)输入密码

密码输入值的比较主要有两部分,密码位数和内容,任何一个条件不满足,都不能打开锁。

若锁内密码为“00001111”,K1和K0置低电平,分别表示输入“1”和“0”。

输入密码前先进行复位操作,再按着从密码最低位到最高位的顺序依次正确输入00001111。

若采用共阴极LED接法,当输入第0位“0”后,八个二极管中相对应的二极管点亮(此时二极管指示灯lamp=“10000000”,输入密码信号shift=“10000000”),接着输入第1位“0”(此时lamp=“11000000”,shift=“01000000”)……依照顺序,将8位二进制密码全部正确输入完毕后(此时lamp=“11111111”,shift=“00001111”),经检验,输入的密码shift等于锁内预先设置的密码lock,密码开锁信号LT置高电平,锁开启。

同时,密码修改控制信号LA置高电平。

若在输入密码的过程中,8位二进制密码出现一位或多位输入错误,那么锁不能开启,同时ALM置高电平,指示灯LF亮,发出报警信号,通知管理员。

直到按下复位开关,报警才停止。

此时,数字锁又自动进入等待下一次开锁的状态。

(2)修改密码

为防止非管理员任意进行密码修改,必须在正确输入密码后,才能重新设置密码。

输入正确密码后,锁打开,同时,密码修改控制信号LA置高电平,就可直接进行修改密码的操作。

修改密码实质就是用输入的新密码去取代原来的旧密码,存储新密码时,输入一位密码,密码位数加1。

若采用共阴极LED接法,与输出引脚lamp相接的发光二极管由亮变暗。

当输入8位密码后,8只发光二极管全变暗。

此时给CLK一个低电平,新密码产生。

(程序见附录)

第四章整体功能实现

4.1整体原理图设计

4.2程序编译与仿真

当各个模块分别编译成功后,则创建一个个元件符号。

再用图形编辑器将各元件模块组装起来,如图4

 

第五章调试并分析结果

编译成功后进行仿真。

建立波形文件。

仿真波形如图5~图6所示。

、开始时,先给系统清零,即使clr为0(按下KEY[3]),若设置密码则SW[17]开关拨下使load为低电平,此时通过按去抖开关KEY[0],KEY[1]进行密码设置0和1,每输入一位密码则数目管显示的数字加1直到输入第8位

设置密码:

仿真图如下如所示。

设置密码时将SW[17]拨下使load为低电平并且clr为高电平此时可以设置密码,由图可以看出设置的密码为00000111每设置一位密码数码管HEX5的七个引脚都随着y1[0~6]的变化而变化,进而显示出当前的位数。

设置密码仿真图

当输入密码时,开关拨上使load为高电平输入密码开始,此时通过按去抖开关KEY[0],KEY[1]进行密码设置0和1,每输入一位密码则数目管显示的数字加1直到输入第8位。

系统自动将输入的密码与预设的密码进行比较如果相同则开锁。

开锁成功仿真图如下如所示,此时设置的密码为00001111输入的密码为00001111,由图可以看每设置一位密码数码管HEX5的七个引脚都随着y1[0~6]的变化而变化,进而显示出当前的位数。

此时clr为高电平load为低电平当密码输入完毕后将load变为高电平进行密码输入输入方法与设置密码相同没设置一位密码数码管HEX7的七个引脚都随着y0[0~6]的变化而变化,进而显示出当前的位数。

当输完八位密码后系统将其与预先设置的密码进行对比,由于设置与输入的密码相同所以lt为高电平开锁,lf、alm为低电平没有反应。

密码正确开锁成功仿真图

仿真结束后,就可以将设计文件编程下载到芯片中去。

连接硬件系统后,选择“Max+plusⅡ”→“programmer”菜单,调出编程器(programmer)窗口。

一切就绪后,按下编程器窗口中的“program”按钮,设计的内容就下载到FPGA芯片EP1K30TC144-3中去了。

经实际电路测试验正达到了设计的要求。

第六章结论

在这个实验中,我们最终实现了8位串行数字锁电路,输入代码与锁内密码一致,锁被打开;否则,封闭开锁电路,发出报警信号并且密码可调的功能与要求。

通过这一课程设计使我们将课堂上的理论知识有了进步的了解,并增强了对VHDL语言的兴趣。

VHDL有着类似C语言的风格易于学习和掌握,与传统的原理图输入设计方法相比较,VHDL更适用于规模日益增大的数字系统,了解了更多的分析调试和解决问题的能力,但同时也暴露出我在知识上掌握不足等缺点:

在实验中经常是一步做完不知道下一步改做些什么,在设计过程中也遇到了一些问题,但在我和同学共同努力下,查找相关资料,通过各种书籍和网上的知识,将问题一一解决。

开始时我们在研究几个模块的程序时便遇到了一些问题,定义不清晰,读程序困难等,但通过查阅关于VHDL语言的相关知识书,对这些已经有了初步的掌握,对分频消抖等一些模块的定义更清晰。

但是在最后下载到芯片时我们仍然遇到了问题,代表显示译码管的灯始终不亮,最后我们调节的分频的时间,对程序又做了更深一步的研究,才成功完成此次试验。

我们在增长知识的同时增强解决问题和动手的能力。

在此次实验中,更离不开老师和其他同学的帮助,我们收获的不仅是知识上的果实。

附录:

程序一:

方波模块

libraryieee;

useieee.std_logic_1164.all;

entityfenis

port(clk:

instd_logic;

clk1:

outstd_logic);

endfen;

architecturefen_arcoffenis

begin

process(clk)

variablecnt:

integerrange0to499999;

begin

ifclk'eventandclk='1'then

ifcnt=499999then

cnt:

=0;

clk1<='1';

else

cnt:

=cnt+1;

clk1<='0';

endif;

endif;

endprocess;

endfen_arc;

模块二:

消抖同步模块。

libraryieee;

useieee.std_logic_1164.all;

entityxiaoprois

port(a,clk1:

instd_logic;

b:

outstd_logic);

endxiaopro;

architecturexiao_arcofxiaoprois

signaltmp1:

std_logic;

begin

process(clk1,a)

variabletmp3,tmp2:

std_logic;

begin

ifclk1'eventandclk1='0'then

tmp1<=a;

tmp2:

=tmp1;

tmp3:

=nottmp2;

endif;

b<=tmp1andtmp3andclk1;

endprocess;

endxiao_arc;

模块三:

该模块是整个程序的核心,它实现密码锁的逻辑功能。

libraryieee;

useieee.std_logic_1164.all;

entitycornaais

port(clk,k1,k0,clr,load:

instd_logic;

lt:

inoutstd_logic;

lamp:

outstd_logic_vector(7downto0);

lf,alm:

outstd_logic);

endcornaa;

architecturecorn_arcofcornaais

signalshift,lock:

std_logic_vector(7downto0);

signallam:

std_logic_vector(7downto0);

signalla:

std_logic;

begin

process(clk,clr)

begin

ifclr='0'then

la<='0';

elsifclk'eventandclk='1'then

ifload='0'then

la<='1';

endif;

endif;

endprocess;

process(clk,clr)

variablea:

integerrange0to8;

begin

ifclr='0'then

lam<="00000000";

shift<="00000000";

a:

=0;

lt<='0';

lf<='0';

alm<='0';

elsifclk'eventandclk='1'then

iflt='0'then

ifa/=8then

ifk1='0'then

shift<='1'&shift(7downto1);

lam<='1'&lam(7downto1);

a:

=a+1;

elsifk0='0'then

shift<='0'&shift(7downto1);

lam<='1'&lam(7downto1);

a:

=a+1;

endif;

else

a:

=0;

ifshift=lockthen

lt<='1';

else

lf<='1';

alm<='1';

endif;

endif;

elsifla='1'then

ifk1='0'then

lock<='1'&lock(7downto1);

lam<='0'&lam(7downto1);

elsifk0='0'then

lock<='0'&lock(7downto1);

lam<='0'&lam(7downto1);

endif;

endif;

endif;

endprocess;

lamp<=lam;

endcorn_arc;

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

当前位置:首页 > 小学教育 > 语文

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

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