密码锁设计VHDL源程序文档.docx
- 文档编号:3248730
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:23
- 大小:436.68KB
密码锁设计VHDL源程序文档.docx
《密码锁设计VHDL源程序文档.docx》由会员分享,可在线阅读,更多相关《密码锁设计VHDL源程序文档.docx(23页珍藏版)》请在冰豆网上搜索。
密码锁设计VHDL源程序文档
2.2系统的输入、输出端口以及寄存器清单及说明:
CLK输入时钟方波信号端口
KIN键盘按键输入端口
KOUT键盘完整编码码值输出端口(七位二进制数)
KOUT1扫描信号输出端口(三位二进制数)
SIN键盘消抖输入端口(七位二进制数)
SOUT键盘消抖输出端口(七位二进制数)
LIN键盘按键编码模块输入端口(七位二进制数)
DF数字按键标志寄存器
FF功能按键标志寄存器
ND数字按键识别编码寄存器
NF功能按键识别编码寄存器
LOCK电子密码锁上锁状态标志寄存器
LOCK1电子密码锁报警状态标志寄存器
UNLOCK电子密码锁开锁状态标志寄存器
NULL1电子密码锁无密码状态标志寄存器
DATA电子密码锁数码显示数据寄存器
CAT电子密码锁数码显示位选寄存器
DISPLAY电子密码锁数码显示段选寄存器(十七位二进制数)
NUM0、NUM1、NUM2、NUM3数码显示中分位显示数据寄存器
DISNUM数码显示段选数据寄存器
I1数码显示计数器
SCANS键盘扫描中按键完整编码寄存器
SCAN键盘扫描寄存器
CNT键盘消抖计数器
SIN1键盘按键键值寄存器
I键盘扫描计数器
DF1数字按键状态标志寄存器
ACC键盘数字输入暂存器
T报警计数器
REG电子密码锁密码存储器
NC计数器
1键盘输入扫描部分源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYkbscan1is
PORT(clk:
inSTD_LOGIC;
kin:
inSTD_LOGIC_VECTOR(3DOWNTO0);---PC7-PC4
kout:
outSTD_LOGIC_VECTOR(7downto0);--PC3--PC
kout1:
outSTD_LOGIC_VECTOR(3downto0));
endkbscan1;
architectureaofkbscan1is
signalscans:
std_logic_vector(7downto0);--PC7--PC0
signalscan:
std_logic_vector(3downto0);--PC3--PC0
signalcnt:
integerrange0to140;
signalsin1:
std_logic_vector(3downto0);
signali:
integerrange0to3;
begin
scans<=scan&kin;
kout<=scans;
kout1<=scan;
process(clk)
begin
if(falling_edge(clk))then
if(i=3)then
i<=0;
else
i<=i+1;
endif;
caseiis
when0=>scan<="0001";
when1=>scan<="0010";
when2=>scan<="0100";
when3=>scan<="1000";
endcase;
endif;
endprocess;
Enda;
2键盘输入消抖部分源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYxiaodouis
Port(clk:
inSTD_LOGIC;
sin:
instd_logic_vector(7downto0);
sout:
outstd_logic_vector(7downto0));
endxiaodou;
architecturebehavioralofxiaodouis
signalcnt:
integerrange0to120;
signalsin1:
std_logic_vector(7downto0);
begin
process(clk)
begin
sin1<=sin;
if(rising_edge(clk))then
if(sin1=sin)then
cnt<=cnt+1;
else
sin1<=sin;
cnt<=0;
endif;
if(cnt=120)then
sout<=sin;
cnt<=0;
endif;
endif;
endprocess;
endbehavioral;
3键盘输入编码部分源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYbianmais
PORT(clk:
inSTD_LOGIC;
lin:
inSTD_LOGIC_VECTOR(7DOWNTO0);---PC7-PC4
DF,FF:
outstd_logic;
nd,nf:
BUFFERstd_logic_vector(3downto0));
endbianma;
architecturebofbianmais
begin
process(clk)
begin
ifclk'eventandclk='1'then
caselinis
when"10000001"=>ND<="0000";--0
when"00010001"=>ND<="0001";--1
when"00010010"=>ND<="0010";--2
when"00010100"=>ND<="0011";--3
when"00100001"=>ND<="0100";--4
when"00100010"=>ND<="0101";--5
when"00100100"=>ND<="0110";--6
when"01000001"=>ND<="0111";--7
when"01000010"=>ND<="1000";--8
when"01000100"=>ND<="1001";--9
whenothers=>ND<="1111";
ENDCASE;
ENDIF;
IFCLK'EVENTANDCLK='1'THEN
CASELINIS
when"00011000"=>NF<="0001";--qingchu
when"00101000"=>NF<="0010";--queren
when"01001000"=>NF<="0011";--shangsuo
when"10001000"=>NF<="0100";--kaisuo
when"10000100"=>NF<="0101";--wangjimima
when"10000010"=>NF<="0111";--genggaimima
Whenothers=>NF<="1000";
ENDCASE;
ENDIF;
ENDPROCESS;
DF<=NOT(ND(3)ANDND
(2)ANDND
(1)ANDND(0));
FF<=NF
(2)ORNF
(1)ORNF(0);
endb;
4电子密码锁的控制部分程序
DF数字按键标志寄存器
FF功能按键标志寄存器
ND数字按键识别编码寄存器
NF功能按键识别编码寄存器
LOCK电子密码锁上锁状态标志寄存器
LOCK1电子密码锁报警状态标志寄存器
UNLOCK电子密码锁开锁状态标志寄存器
NULL1电子密码锁无密码状态标志寄存器
DATA电子密码锁数码显示数据寄存器
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYkongzhiIS
PORT(CLK:
INSTD_LOGIC;
DF,FF:
inSTD_LOGIC;
ND,NF:
inSTD_LOGIC_VECTOR(3downTO0);
LOCK,LOCK1,UNLOCK:
bufferSTD_LOGIC;
NULL1:
bufferSTD_LOGIC;
DATA:
outSTD_LOGIC_VECTOR(15downTO0));
ENDkongzhi;
ARCHITECTUREV1OFkongzhiIS
signali1:
integerrange0to3;
signaldf1:
std_logic;
signalACC:
STD_LOGIC_VECTOR(15DOWNTO0);
signalt:
INTEGERRANGE0TO2;
signalREG:
STD_LOGIC_VECTOR(15downTO0);
signalNC,A:
INTEGERRANGE0TO3;
begin
PROCESS(FF,DF)IS
BEGIN
ifrising_edge(clk)then
IFFF='1'THEN
IFNF="0001"THEN
ACC<="0000000000000000";
NC<=0;
ENDIF;
ELSE
df1<=df;
IFdf1='0'andDF='1'THEN
IFNC<4THEN
ACC<=ACC(11DOWNTO0)&ND;
NC<=NC+1;
ENDIF;
ENDIF;
ENDIF;
IFFF='1'THEN
IFNF="0011"THEN
REG<=ACC;
LOCK<='0';
UNLOCK<='1';
LOCK1<='1';
NULL1<='1';
else
IFNF="0100"THEN
IFREG=ACCTHEN
LOCK<='1';
UNLOCK<='0';
LOCK1<='1';
NULL1<='1';
ELSE
LOCK<='0';
UNLOCK<='1';
IFt=2THEN
REG<="1000100010001000";
LOCK1<='0';
lock<='1';
unlock<='1';
null1<='1';
t<=0;
ELSE
t<=t+1;
ENDIF;
ENDIF;
else
IFNF="0101"THEN
REG<="1000100010001000";
LOCK<='0';
UNLOCK<='1';
LOCK1<='1';
NULL1<='1';
else
IFNF="0111"THEN
IFUNLOCK='1'THEN
IFREG=ACCTHEN
REG<="0000000000000000";
NULL1<='0';
LOCK<='1';
LOCK1<='1';
UNLOCK<='1';
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 密码锁 设计 VHDL 源程序 文档