EDA考试设计报告电子锁码器样本Word格式.docx
- 文档编号:17666459
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:35
- 大小:84.72KB
EDA考试设计报告电子锁码器样本Word格式.docx
《EDA考试设计报告电子锁码器样本Word格式.docx》由会员分享,可在线阅读,更多相关《EDA考试设计报告电子锁码器样本Word格式.docx(35页珍藏版)》请在冰豆网上搜索。
1)密码输入状态
密码输入状态四个状态灯显示为“0010”。
当状态灯这样显示时使用者可以输入想要输入八位以内十进制数然后拨动回车键,当输入暂时数(temp_password)等于已存储密码(password)时,对的输入状态灯亮。
当输入暂时数不等于已存储锁定密码,对的输入状态灯不亮且及时跳至主状态中结束状态。
当对的输入状态灯亮时,有两种选取。
①拨动回车键调至运营状态;
②拨动变化键(change_password、上升沿有效)进入密码修改状态。
2)密码修改状态
密码修改状态四个状态灯显示为“0100”,这是对的输入状态灯依然在亮。
当状态灯这样显示时使用者可以输入想要八位以内十进制数。
当输入完毕时,使用者有两个选取:
①拨动变化键,把已输入数存储为密码;
②拨动回车键,直接进入运营状态,由于对的输入状态灯依然亮,对的输入依然有效(当使用者觉得所修改密码不适当状况下需要用到)。
当使用者输入完毕,并拨动变化键把想要密码存储完后,拨动回车键就可进入运营状态。
(只要对的输入状态灯亮时,拨动回车键都能是锁码器进入运营状态)
3)运营状态
运营状态四个状态灯显示为“1000”,这时对的输入状态灯已熄灭。
当锁码器处在运营状态时,锁定输出使能信号为‘1’。
当使用者觉得已经完毕运营时拨动回车键就能使锁码器进入主状态中结束状态,并使输出使能信号、go信号置‘0’,且使次状态回到输入状态。
三、结束状态
结束状态没有任何操作,会有一种简朴流水灯效果,倒数一段不长时间后自动返回待机状态。
四、结束语
在设计基本完毕时,还存在诸多细节上问题。
例如在对的输入之后想要进入变化密码状态而未拨动变化键时,如果拨动数字选项键,会使到进入变化状态后暂时数初始值不为空(全0)。
虽然比较繁琐,但是通过一步步耐心在modelsim仿真验证后,基本上已经能让使用者正常、以便使用该锁码器了。
由于de2板上开关存在严重抖动现象,因此该锁码器中除了电平触发复位键外,其她所有使用到开关都带有去抖动功能。
最后,感谢郭晓云教师悉心指引。
参照文献:
EDA技术与应用(张建邓桃丽邓锐朱旭东编著)
单片机技术及系统设计(周美娟肖来胜编著)
源程序:
--模块名称:
程序包模块
--模块功能:
设立设计中使用到两个类型。
libraryieee;
useieee.std_logic_1164.all;
packageMy_packageis
typestate1is(standby_state,password_state,end_state);
typestate2is(input_state,change_state,run_state);
endMy_package;
--模块名称:
待机状态、密码输入准备状态、结束状态转换
--模块功能:
在待机状态下按一下回车键进入密码输入准备状态,
-----------在密码输入准备状态下发出一种complete信号进入结束状态,
-----------结束状态中自动计数一秒后回到待机状态。
usework.My_package.all;
entityStandby_password_end_transitionis
port(
clk:
instd_logic;
--时钟输入
reset:
--复位键
enter:
--回车键
complete:
--完毕运营信号
lkd_state:
bufferstate1;
--模块状态信号
go:
outstd_logic--密码输入模块准许信号
);
endStandby_password_end_transition;
architecturebehaviorofStandby_password_end_transitionis
signalstarting:
std_logic:
='
0'
;
--待机到密码输入准备状态容许信号
signalfinishing:
--密码输入准备状态到结束状态容许信号
signalending:
--结束状态到待机状态容许信号
signalcount:
integerrange0to49999999:
=0;
--计数器
signalcount_delay:
integerrange0to999999:
signalstart:
begin
--进程名称:
三状态转换控制进程
--进程功能:
在不同准许信号下三状态转换
process(reset,clk,starting,finishing,lkd_state)
begin
ifreset='
1'
then
lkd_state<
=standby_state;
elsifrising_edge(clk)then
caselkd_stateis
whenstandby_state=>
--待机状态解决
ifstarting='
then
lkd_state<
=password_state;
else
endif;
whenpassword_state=>
--密码准备状态解决
iffinishing='
=end_state;
else
whenend_state=>
--结束状态解决
ifending='
then
endcase;
endif;
endprocess;
starting容许信号控制
starting容许信号控制,附去抖动
process(enter,lkd_state,reset)
start<
elsiflkd_state=standby_statethen
ifrising_edge(enter)then
start<
endif;
else
process(clk,start,count_delay,enter)
ifrising_edge(clk)then
ifstart='
ifcount_delay<
999999then
count_delay<
=count_delay+1;
elsifenter='
starting<
else
endif;
else
count_delay<
starting<
go信号控制
process(lkd_state)
iflkd_state=password_statethen
go<
elsego<
finishing信号控制
process(lkd_state,complete)
ifrising_edge(complete)then
finishing<
else
finishing<
ending信号控制
process(lkd_state,clk,reset,count)
ifrising_edge(clk)then
iflkd_state=end_statethen
ifcount<
49999999then
count<
=count+1;
ending<
else
ending<
count<
endbehavior;
解码锁码
按回车键,若密码输入对的可选取变化密码或直接运营(run)
--按回车键跳结束状态(end_state);
--不对的转至结束状态。
--锁定新密码后按回车键跳到运营状态;
--按回车键调至借宿状态。
entityUnlockis
port(
clk:
--时钟输入
change_password:
--变化密码键(上升沿有效)
enter:
--回车键(上升沿有效)
reset:
--复位开关(高电平电平有效)
run:
outstd_logic;
--运营容许信号(高电平有效)
------------Standby_password_end_transition模块信号
go:
--密码输入模块准许信号
complete:
--运营完毕信号
------------暂时密码模块用信号
password_allow:
--密码输入容许
clr_t:
--暂时密码清零信号
ok:
bufferstd_logic;
--回车键信号
change:
--change_password信号
count_pn_enable:
--count_pn使能信号
set_count_pn:
--count_pn置数信号
password:
bufferstd_logic_vector(31downto0);
--设定密码
temp_password:
instd_logic_vector(31downto0);
--暂时密码
p_state:
bufferstate2;
--Unlock状态信号
correct_input:
--密码输入对的信号
d_complete:
instd_logic--complete控制信号
endUnlock;
architecturebehavior2ofUnlockis
signalclr_o:
--ok清零信号
signalclr_c:
--change清零信号
signalclr_cpl:
--complete清零
signalset_cpl:
--complete置数
signalpass_word:
std_logic_vector(31downto0):
="
00000000"
--过渡密码
signalcount_delay1:
signalcount_delay2:
signaloo:
signalclr_oo:
signalcc:
signalclr_cc:
输入状态、变化状态、运营状态转换
输入状态、变化状态、运营状态控制、解决
process(clk,reset,p_state,go,correct_input,change,ok,temp_password)
ifreset='
then--复位
p_state<
=input_state;
clr_cpl<
set_cpl<
clr_t<
run<
pass_word<
count_pn_enable<
set_count_pn<
elsifgo='
casep_stateis
wheninput_state=>
--输入状态解决
run<
clr_cpl<
set_cpl<
count_pn_enable<
set_count_pn<
clr_t<
ifcorrect_input='
count_pn_enable<
set_count_pn<
ifok='
p_state<
=run_state;
clr_t<
set_count_pn<
elsifchange='
=change_state;
endif;
endif;
whenchange_state=>
--变化状态解决
ifok='
p_state<
clr_t<
elsifchange='
pass_word<
=temp_password;
count_pn_enable<
whenrun_state=>
--运营状态解决
run<
clr_cpl<
set_cpl<
endcase;
else--go不等于1时解决
ok信号控制
通过回车键控制ok信号置1,通过clr_o置零,附去抖动
process(enter,reset,clr_oo,go)
oo<
elsifclr_oo='
elsifgo='
oo<
process(clk,clr_o,oo,count_delay1,enter)
ifgo='
ifclr_o='
ok<
clr_o<
elsifoo='
ifcount_delay1<
count_delay1<
=count_delay1+1;
elsifenter='
ok<
clr_o<
clr_oo<
count_delay1<
clr_oo<
ok<
clr_o<
clr_oo<
complete信号控制
process(clr_cpl,set_cpl,clk,d_complete)
ifclr_cpl='
complete<
elsifset_cpl='
=d_complete;
password_allow信号控制
process(p_stat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 考试 设计 报告 电子锁 样本