基于FPGA 的数字系统设计文档格式.docx
- 文档编号:15923775
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:13
- 大小:132.04KB
基于FPGA 的数字系统设计文档格式.docx
《基于FPGA 的数字系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于FPGA 的数字系统设计文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
实验板上有10个按键k1~k10,其中k1~k10作为密码输入按键,k10作为复位按键,一便重新开始输入的密码。
当然,这个电子密码锁与实际的电子密码锁的设计有一些不一样,也许实际的电子密码锁并不设置复位按键,而是当密码输入错误后,延长很长一段时间才接受新密码的输入。
假设电子密码锁的密码为四位数3216。
利用实验板上的一个数码管显示输入密码次数,当输入密码正确时,在数码管上显示字符“H”;
当输入密码不正确时,在数码管上显示字符“E”。
1.2具体要求
1﹞.具有密码输入功能。
2﹞.设置复位按键,以便重新输入新的密码。
3﹞.在数码管上显示输入密码次数。
4﹞.拒绝接受超过规定次数的密码输入信号。
5﹞.当密码输入正确时,在数码管上显示字符“H”;
当密码输入不正确时,在数码管上显示字符“E”;
2系统整体架构
2.1设计思路
电子密码锁在生活中十分常见,在这我将设计一个具有较低成本的电子密码锁,本文讲述了我整个设计过程及收获。
讲述了电子密码锁的的工作原理以及各个模块的功能,并讲述了所有部分的设计思路,对各部分电路方案的选择、元器件的筛选、以及对它们的调试、对波形图的分析,到最后的总体图的分析。
框图等阐述)与设计说明等内容
用VHDL编写程序实现电子密码锁,其原理框图如图所示,程序中的时终信号clk为石英(32768Hz)分频后的8Hz标准信号,作为产生0.5s信号的输入信号。
七中k1k9为按键输入信号,k10作为复位按键。
当没有按键按下时连接到CPLD或FPGA的信号k1k10都为高电平信号;
当有按键按下时,k1~k10的一个信号为低电平。
电子密码锁采用状态机和对按键输入次数相结合的方法,保证只有输入正确的密码,状态机才能转换到最后正确的状态,显示开锁字符。
程序由7个进程组成,进程P1和P2将8Hz标准信号分频后,产生0.5s脉冲信号(carry),与按键输入信号配合,消除按键输入的抖动,并作为状态转换进程P4的时终输入信号。
进程P3锁存按键输入信号,为状态机提供一个稳定的按键输入信号。
进程P4将下一个状态(next_state)转换为当前状态(state)。
进程P5产生次态信号(next_state),只有当有按键输入和状态转移控制信号en为逻辑“1”时才能够产生次态信号。
进程P4和进程P5是电子密码锁的核心,密码的设置也是编写状态机时确定的。
进程P6对按键输入次数计数,并且为显示按键输入次数的7段译码器BCD码数据。
进程P7判断按键输入次数是否已经输入3次,如果输入密码的次数小于等于3,状态转移控制信号en为逻辑“1”,否则为逻辑“0”。
当仍然有密码输入时,禁止状态发生变化,因此如果输入密码过程中,只要输入一个错误密码,就不可能转换到最后正确的状态。
BCD码-7段译码器显示按键输入次数和输入密码正确或者错误
2.3创新点与原创性内容
新增显示正确与错误功能
3系统设计(含HDL或原理图输入设计)
3.1HDL代码
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
Entityelockis
Port(clk,k1,k2,k3,k4,k5:
instd_logic;
k6,k7,k8,k9,k10:
row:
outstd_logic_vector(2downto0);
led:
outstd_logic_vector(7downto0));
endelock;
architecturebehavioralofelockis
signalcount:
std_logic_vector(1downto0);
signalcount1:
std_logic_vector(3downto0);
typestatesis(s4,s3,s2,s1,s0);
signalstate:
states:
=s0;
signalnext_state:
signalen,carry,op,k11,k22,k33,k44,k55:
std_logic;
signalk66,k77,k88,k99,k100:
signalrow1:
std_logic_vector(2downto0);
begin
p1:
process(clk)
ifrising_edge(clk)then
count<
=count+'
1'
;
endif;
endprocessp1;
p2:
ifcount="
11"
then
carry<
='
º
else
0'
endprocessp2;
p3:
process(carry,k1,k2,k3,k6,k9)
ifrising_edge(carry)then
if(k1='
)then
k11<
if(k2='
k22<
if(k3='
k33<
if(k4='
k44<
if(k5='
k55<
if(k6='
k66<
if(k7='
k77<
if(k8='
k88<
if(k9='
k99<
if(k10='
k100<
endprocessp3;
p4:
process(carry)
state<
=next_state;
endprocessp4;
p5:
process(state,k11,k22,k33,k44,k55,k66,k77,k88,k99,k100)
casestateis
whens0=>
ifk33='
anden='
next_state<
=s1;
op<
whens1=>
ifk22='
=s2;
whens2=>
ifk11='
=s3;
whens3=>
ifk66='
=s4;
whens4=>
op<
whenothers=>
next_state<
endcase;
ifk100='
then
endprocessp5;
p6:
process(carry,k11,k22,k33,k44,k55,k66,k77,k88,k99,k100)begin
ifk100='
count1<
="
0000"
elsifop='
then
1111"
elsif(en='
andop='
1110"
and(k11='
ork22='
ork33='
ork44='
ork55='
ork66='
ork77='
ork88='
ork99='
))then
=count1+1;
endprocessp6;
p7:
process(count1)
ifcount1<
011"
En<
endprocessp7;
--a,b,c,d,e,f,g,dp
withcount1select--7¶
Î
Ò
ë
Â
Æ
÷
led<
01100000"
when"
0001"
--1
"
11011010"
0010"
--2
11110010"
0011"
--3
01100110"
0100"
--4
10110110"
0101"
--5
10111110"
0110"
--6
11100000"
0111"
--7
11111110"
1000"
--8
11110110"
1001"
--9
01101110"
¡
10011110"
11111100"
whenothe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于FPGA 的数字系统设计 基于 FPGA 数字 系统 设计