当前位置:文档之家› 基于FPGA的车载电子系统设计毕业论文

基于FPGA的车载电子系统设计毕业论文

中国地质大学长城学院

本科毕业设计题目:基于FPGA的车载电子系统设计

系别

学生姓名

专业

学号

指导教师

指导教师

职称

2015年05 月20 日

基于FPGA的车载电子系统设计

摘要

随着科技的不断发展,FPGA技术带来了汽车电子测试技术的创新,凭借开发基于FPGA 硬件的单个系统可以解决不同的汽车设计和测试应用,而无需多个定制的测试设备。而在FPGA的车载电子系统中,车载电子密码锁成本更低、风险更小、灵活性更高,而且在设计后期更易变更,甚至可对己经投入应用的产品进行升级,因此将成为未来汽车电子设计中的理想配置。

本设计在论文中,阐述了电子密码锁的发展与作用,国内外发展现状,同时也对电子密码锁系统进行了分析。本文通过VHDL语言设计了车载电子密码锁系统,实现了它的数码输入功能,数码清除功能,密码更改功能,激活电锁功能,解除电锁功能,数字位退格功能。并在Quartus II9.0软件和ModelSim-Altera 6.4a联合使用下实现了系统的编译仿真与调试。

关键字:FPGA;电子密码锁;车载电子系统;QuartusⅡ

Abstract

With the continuous development of science and technology, FPGA technology has brought the innovation of automobile electronic test technology, with the development of a single system based on FPGA hardware can solve different vehicle design and test application, and test equipment required multiple custom. In vehicle electronic system FPGA, vehicle electronic password lock with lower cost, lower risk, higher flexibility, and late in the design of more difficult to change, even to upgrade has been put into application products, thus will become the ideal configuration of automotive electronics design in the future.

The design in this paper, describes the development status of the electronic password lock function, and the development of domestic and foreign. At the same time, also has carried on the analysis to the electronic password lock system, this paper designed a vehicle electronic password lock system through the VHDL language, it introduces digital input function, digital clear function, change the password lock function, activation function, releaselock 5, digit backspace function. And in the compilation and simulation system implemented in the combined use of Quartus II9.0 software and ModelSim-Altera 6.4a.

Keywords: FPGA; electronic password lock; vehicle electronic system; Quartus II

目录

1 绪论 (1)

1.1 本课题研究的国内外现状及其发展 (1)

1.2 本课题研究的目的和意义 (1)

1.3 主要设计任务 (2)

2关键技术简介 (3)

2.1FPGA硬件设计描述 (3)

2.1.1 FPGA的设计流程 (3)

2.1.2 VHDL语言的基本结构 (4)

2.1.3 自上而下(TOP DOWN)的设计方法 (4)

2.2 设计语言、仿真平台与开发系统 (5)

2.3 用QuartusⅡ进行系统开发的设计流程 (5)

3系统总体设计 (7)

3.1 电子密码锁设计的原理 (7)

3.2方案的提出 (7)

3.3 系统设计要求 (8)

3.4 系统设计描述 (8)

3.5 各功能模块描述 (9)

4系统详细设计 (12)

4.1 输入模块 (12)

4.1.1时序产生电路 (12)

4.1.2按键消抖电路 (12)

4.1.3键盘扫描电路 (14)

4.1.4 键盘译码电路和键盘输入模块的实现 (15)

4.2电子密码锁控制模块 (16)

4.2.1控制模块的描述 (16)

4.2.2控制模块的实现 (16)

4.3电子密码锁显示模块 (18)

4.3.1数码管显示原理 (18)

4.3.2译码显示的实现 (19)

5系统仿真 (20)

5.1系统各模块的仿真 (19)

5.1.1去抖模块的仿真 (20)

5.1.2密码锁输入电路的仿真 (20)

5.1.3密码锁控制电路的仿真 (21)

5.1.4数码管译码器仿真 (22)

5.2 系统仿真与分析 (22)

6结论 (24)

参考文献 (25)

致谢 (25)

附录1 电路图 (27)

附录2 源程序 (28)

1 绪论

随着大规模和超大规模可编程器件在FPGA技术支持下的广泛应用,使现代化设计计算已进入一个全新的阶段,从设计思想、设计工具一直到实现方式都发生了诸多变化。

在FPGA技术中,以当代电子技术为特点的逻辑设计仿真测试是最受人关注的技术。为了能准确测试和仿真,这种技术只需要通过电脑就能对所设计的电子系统从许许多多方面上进行;实际软件的设计完成之后,就能完成对系统上的加载程序的扫描检查。科学技术的发展,使电子密码锁种类越来越多,更新换代的更是越来越快。电子密码锁要由以下两个部分电子锁体、电子密匙组成,一把锁里能存放许多密码,我们在使用过程中可随便修改它。下面就是现在主流电子密码锁。

遥控式电子防盗锁目前常见的遥控式电子防盗锁主要有光遥控和无线电遥控两类。键盘式电子密码锁从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。卡式电子防盗锁使用各种“卡”作为钥匙的电子防盗锁是当前最为活跃的产品,无论卡的种类如何多种多样,按照输入卡的操作方式,都可分为接触式卡和非接触式卡两大类。生物特征防盗锁人的某些与生俱来的个性特征(如手、眼睛、声音的特征)几乎不可重复,作为“钥匙”就是唯一的(除非被逼迫或伤害),因此,利用生物特征做密码的电子防盗锁,也特别适合金融业注重“验明正身”的行业特点。

我的基于FPGA的电子密码锁设计电路有显示功能,可以显示数字也可以不用显示。当你要更改密码时,由于有特殊功能的FPGA,他的许多地方都要改,用Quartus II9.0软件把更新后的设计下载到软件中,设计效率马上提高了。而且同单片机的电子密码锁相比用FPGA的设计结构简单、系统保密性和可靠性更高。可以广泛的应用在公共场所如食堂、仓库、饭店等。

可以根据设计师的愿望更改设计的FPGA在我们的领域中是一门新技术。设计师只用对系统的功能进行相应描述,键盘式电子密码锁从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。卡式电子防盗锁使用各种“卡”作为钥匙的电子防盗锁是当前最为活跃的产品,就能在FPGA工具的协助下完成系统设计,为电子产品的设计和研发缩短了实践,降低了其成本,提高了系统的稳定性。

1.1 本课题研究的国内外现状及其发展

大众对安全的要求随着安全意识的增加和生活质量的提高而高。如何研制出安全方便又有可靠的防盗功能的锁是设计师的不变理想。电子技术快速的发展,带来各种各样的电子产品,电子密码锁就是是其中的产物。资料显示出来,上世纪30年的电子密码锁,已经在一些特别的地方有了用处。更具数学的概率理论电子锁的密码可以有许多种组合,而采用机械锁输入密码的设计,还可避免钥匙被偷偷复印的可性。越来越受到人们的重视。我们看的电影中经常出现许多类型的电子锁,如数字锁,指纹锁,磁卡锁,IC卡锁和其

他生物功能的锁。但按键的电子密码锁还是更加经济的选择,可以大规模的推广使用。

高科技的集成电路的发展,使电子锁在八零年代后的个头越来越小,可靠性和成本也变高,在安全性要求较高的情况下使用,和供电需求,使用的是局限在一定范围内,很难普及,所以对它的研究没有重大进展。

发达国家如今技术相对先进,有品种丰富的电子密码锁,已广泛的在各种大型公共应用。在中国,电子锁的整体水平仍在70年,电子密码锁的成本也很高,市场仍对电子锁的钥匙,钥匙和钥匙卡型电子锁已引进了国际先进水平,目前市场的几个工厂的生产与供应。但我们自主研制的电子锁,还没有市场,使用率也不广。值得一提的是世界许多先进的技术国内很多企业已经引进了,因此在我国发展前景也必将乐观。希望通过不断的努力,中国的电子密码锁可广泛用。

可是目前使用的电子密码锁大部分还是用的单片机,在实际应用中,因为容易出问题,不咋滴可靠啊。车载电子系统之中电子密码锁是一个重要的组成部分,而电子密码锁以前都是硬件电路设计或者单片机来实现的,随着时代的发展,这些设计的缺点越来越突出,FPGA作为当代科技的产物越来越应用到各行各业中,电子密码锁也要赶这个潮流,我的论文就这么来的。

1.2 本课题研究的目的和意义

在现代的车载电子系统中,为了更能智能化的控制电子密码锁,让我能更方便的使用,让它有更好的稳定性和使用性,针对单片机的设计的缺点,我采用FPGA技术,通过Quartus Ⅱ这个高大上的软件实现,设计了一个电子密码锁,并通过上面那个高大上软件来实现。使用V HDL这种普遍的硬件编程语言对系统用自上而下的方法进行了描述,并在FPGA芯片QuartusⅡ上实现。我的设计充分利用了FPGA的可编程的资源特点,可很好的对该系统进行更新和保护。因此,使用FPGA 开发的数字系统,不但有很高的工作稳定的可靠性,其升级与改进也特别的方便,应用前景十分良好。

1.3 主要设计任务

通过对FPGA技术的学习和了解,设计基于的车载电子系统的电子密码锁程序。要求有数码输入功能,数码清除功能,密码更改功能,激活电锁功能,解除电锁功能,数字位退格功能。并在Quartus II9.0软件和ModelSim-Altera 6.4a的联合使用下实现了系统的编译仿真与调试。

2关键技术简介

2.1FPGA硬件设计描述

2.1.1 FPGA的设计流程

FPGA设计过程包括系统设计与实现的设计,本系统的设计实施阶段的工作完成后,他将作为系统输入,系统输入时一个比较厉害的型号被输入进来了,这个型号十分的高大上很是稳定,时间序列分析,对器件编程和系统验证的设计就是,如果模拟错了或走错了一步,要找出问题并更改才行。但是如果系统模拟成功了,那就可以实现各种各样你想要的功能了,一般来说,RTL意思是用来描述是示意或VHDL改变设计代码的最有用的方法了。为了实现最的终设计有时要反复修改,经过多次的修改才行。

在理论上,VSLI(Ultra Scale Large Integration,超大规模的集成电路)的设计描述层次可以为6个方面,即系统方面的(系统的功能、参数)、算法方面的(描述系统的功能行为)、RLT级、门方面的(逻辑门)、电路方面的(晶管体)、版图方面的(物体工艺)。每一方面的又可分3个侧面来进行描述:行为举止方面的描述、结构方面的描述和物质方面的描述。但是在实际的情况中往往都把算法级行为方面的的描述或者RLT级行为方面的的描述全部称为行为方面的级别的描写,下图2.1为FPGA的设计流程。

图2.1 系统设计流程

在理论上FPGA设计起来特别的简单明了,不用关心别的那些没用的,只要考虑方面的描述和方面的名系统级,算法级的行为,RLT级,门级4级可以描述。在FPGA系统设计实际上指的是系统级和算法级,和“RLT”主要指的是方面的的RLT描述的行为。在门的网表描述,通过综合工具产生。FPGA的设计流程和相关的概念说明如下:库:指原器件厂家提供的技术支持和Quartus II9.0软件提供的图书馆。有各种各样的基本功来实现各种用户的要求也是十分的满意。

需要指出的是,我的系统设计起来十分的复杂,RTL级实现起来很难实现,必须经过长期的细心地观察和刻苦的长期努力,Quartus II9.0软件给我提供了很大的帮助,这不愧是一款当今社会主流的硬件编程软件,编译和仿真都很有效的实现了。当然库作为一个重要的组成部分也是十分有用的,费了我好大的帮助,还好最后实现了仿真,我也是很激动的,太不容易了。

测试激励:指的是测试的系统程序是否产生的信号的反应,产生的反应就叫做测试激励。可以观察FPGA是不是正确的。所有的仿真可用于测试看不看的刺激。

约束:是指综合方面的逻辑上的和布局布线时候上的约束。这对编程的时候要求很好,也很重要,是十分重要的一个步骤。确实需要很好的约束一下,要不然调试的结果很容易出错。

2.1.2 VHDL语言的基本结构

VHDL(Very high speed integrated circuit Hardware Description Language)硬件描述语言从高于逻辑级的抽象层次上描述硬件的功能、信号连接关系及定时关系。VHDL的设计流程如2.2图。

图2.2 VHDL的设计流程

通常一个完整的VHDL语言程序包含实在体(Entity)、结构体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)这五个部分。

1、实在体

实在体描述部分是对设备外观图片的描述,这是从外部装置的外观看,包括设备的端点的口,还可以定义参数,以及参数在模块外面的重点,主要用于系统的外部接口的设计描述。

2、结构体

结构体是设备内部图像上的描述,是个一次设计的单位。相应的实体上的单位,编制并纳入数据图书馆设计初步设计后,它只能被纳入图书馆的设计。结构描述了一种设计方

法构和行为,一个输入和输出的设法设计的关系。表示设备的不同设计可以有多种结构,方案。一个从抽象到具体的设计的过程中,结构的描述分为行为方面的描述,寄存装置上传输的描述和构造的描述这三个层次。

3、库

库是一个实在体,编译器结构,数据采集和配置。总要说在前面的设计单位使用库。有一次,在设计单元库的数据是可见的,因此共享设计成果已编译。VHDL语言库大约可以分成IEE库,标准库,ACSI库,厂家提供的用户定义的库和库工作。

4、包馆合

这个名词我都没听过,查过百度后我恍然大悟,它就相当于大大的图书馆,可以在里面存放许多资料信息,用的时候再去里面找就行。

5、配置

配置语从库作为一个实体,选择一个特定的结构,是在图书馆的一个地方是一个编译个体,并有相应的配置名称。通过配置手段,可以选择各种不同的结构,性能测试设计任务使用仿真工具对的各种配置。此外,配置方法和法规的特点可以在多层的描述。

2.1.3 自上而下(TOP DOWN)的设计方法

自上而下的设计方法就是一种新的现代的电子系统的设计的惯用套路了,从而从整体设计上来要求,自上而下逐渐实现设计算数模型的设计仿真与调试,以及数据流级的仿真设计,系统设计选型,最后完成系统硬件的整体设计。半导体制造厂的制造过程中产生的基于FPGA的网络芯片,是基于FPGA芯片的配置比特流文件的网表生成。经过我长期的实验和观察我发现了许多的问题都出现在Quartus II9.0软件编译的时候,但是人家软件都给我提示出来了。这是用VHDL语言设计硬件系统最突出的优势。

2.2 设计语言、仿真平台与开发系统

(1)硬件描述语言

我用的VHDL这种很普遍的硬件设计语言设计电子密码锁,可以支持各种各样的设计方法,独立的硬件描述和具体的技术和硬件构造,可以方便地调整大小和结构设计,标准规范,易于共享和复用,易于移植的ACSI。这可是硬件编程语言界的最好用的方法之一了,太厉害了。

(2)QuartusⅡ软件开发工具

软件实现仿真的工具我用的是美国公司推出的Quartus II9.0软件,它就是生产大名鼎鼎的骁龙处理器的公司,能用VHDL,Verilog HDL硬件描述语言入,还使用ModelSim-Altera 6.4a工具进行编辑编译和仿真,可以满足我的设计的所有需要,是一款十分主流的软件,对它我很满意放心。

(3)EDA实验开发系统

在实验设计中我使用VHDL语言来编写,这是一种通用的硬件编程语言,各路大神都用它。它的特点是可以实现从写程序到实现它的运行调试的一条龙服务,真是编程工作

中人们的福音啊。

2.3 用QuartusⅡ进行系统开发的设计流程

以下为使用QuartusⅡ来实现电子密码锁设计的流程

(1)编写VHDL的程序(使用VHDL File);

(2)编译VHDL的程序(使用Compiler);

(3)仿真验证VHDL的程序(使用Waveform,Simulator);

(4)进行芯片时间顺序上的解读(使用Timing Analyzer);

(5)安排芯片引脚的位置(使用Floorplan Editor);

(6)下载程序至要用的芯片(使用Programmer)。

3系统总体设计

3.1 电子密码锁设计的原理

1、编码总量的确定

电子密码锁的随机开锁成功概率的定义为:

P = 1 / NT (3.1)其中p是随机开锁成功的概率,NT代码总。显然锁安全性高,NT应该尽可能大,所以P趋于零,但更大的进步,相应的电路太复杂了,更多的内存和麻烦的密码。所以NT应该合理的上限和下限。

NTL的下限值的选择应使随机解锁操作时间成功的密码。如果每次解锁时间T,随机试验为新台币,将在1 / 2分成N段1 / n段预计解锁成功。在这段时间P = 1 / 2解锁成功期望的随机测试时间:

TR = NT×T/2N (3.2)这是假设的设计没有考虑输入错误的保护,在无保护的情况下密码锁,开锁时间随机测试任何运营商是十,那么:

NTL=(2n×TEN t)×x (3.3)其中x是最小安全系数。即:

TEN=(NTL×t/2n)/x (3.4)显然如果NT > = NTL,然后TR >TEN,分段随机试验是不容易成功。

因此,数字密码锁设置总的编码是系统安全的主要技术指标,保密。一般来说,当NT选中,N NT的原则的上限是更安全的,但总体设计n =(10 ~ 1000)NLT更合理。

2、编码制式的选择

编码制式应该根据NT的大小选取,可分为以下三种:

(1)密码的各位都可以重码:NT1=ai;

(2)密码的非相邻位可以重码:NT2=a(a-1)i;

(3)密码的任何一位都不能重码:NT3=a(a-1)……(a-i+1)。

其中a为基数,i为位数,a和i的选取应该满足NT≥NTL ,a=2,3,4,10,12,14,16。

现在以最常用的a=10,i=6为例,可以计算出NT2=0159NT 1,NT 3=0.15N T1,所以编码制式是否考虑重码对NT有很大的影响。

此外,同一衬底的不同风格会影响NT代码量,和基片的选择会影响电路的硬件设计。

采用十进制编码设计的密码锁,密码允许您留个心眼,重新写密码,简化了电路设计,对穿来穿去的计数方式的密码锁的密码输入。

3、错误密码输入的保护措施

前面介绍过了,自身的安全是电子密码锁的设计考虑的重点,因为代码和密码捕获都是是随机的,如果P = 1捕获的接近0,必须采取保护措施的输入错误。简单地说,就是要设个防盗号心眼,人家一般都是输错三回密码就死机了,这点设计的相当有必要,防止有人瞎碰密码当然只要关机重启之后就能恢复正常状态了,咱不是什么人才也就跟着人家

改了。

3.2方案的提出

方案一:采用数字电路控制。虽这个设计虽说是设计简单,但它是纯电路实现,不带编程语言,不符合毕业设计的要求,也不好用。

方案二:通过单片机实现,前面说过的。单片机虽然设计方便点而且端口也挺多,但是单片机设计的缺点就是太不稳定了。

通过以上比较虽然方案二比方案一强点,但是它不符合时代的潮流,不能满足本科设计的要求,在运行时程序有时会产生各种错误,因此基于我现在所学新知识的理解应用,我想出了第三种方案。

方案三:利用FPGA设计的车载电子密码锁,它的设计成本特别低,设计方便还有很实惠的开发板,还可以仿真出结果,实现起来相对容易,更利于系统的改进和提高,稳定性更好,更好用。

通过以上比较描述我决定使用用基于FPGA的电子密码锁设计这个靠谱的方案。3.3 系统设计要求

设计一个好用又实惠的车载电子密码锁,具体要求能够输入密码,当然还要能显示密码,还得能改密码,要不然不就难了,还得有输入的按钮啊,确定的按钮啊,还要能把锁锁上,防止被坏人盗走咱的密码,这点是很有必要的。要求如下:

(1)数码输入:每按下一个数字键,就输入一个数值,并在显示器上面显示出

该数值,同时将之前输入的数据按序左移一个数字位置。

(2)数码清除:按下此键可清除前面输入的所有的值,清除为“0000”。

(3)密码更改:按下此键时可将目前输入的数字设定成新的密码。

(4)激活电锁:按下此键时可将密码锁上锁。

(5)解除电锁:按下此键时会检查输入的密码正确与否,密码正确即开锁。

(6)数字位退格:按下此键时可清除最低的数字,并使各位向右移动。

3.4 系统设计描述

我设计的密码锁是一个使用简单的电子密码锁,它以开发板为主体,采用4*4的键盘,前10个键是数字键,8个数码管来显示输入的密码,后面的按键实现电子密码锁的各个功能,总体外观如图3.1所示。

图3.1 电子密码外观图

上图3.1为在实验开发板上实现的我的密码锁,使用开发板有十六个按钮,分别对应数字0到9和各个功能键,LED显示为开发板上数码管显示。

3.5 各功能模块描述

电子密码锁主要由三个部分组成:数字密码输入电路、密码锁控制电路、密码锁显示电路。也就是说,设计分为三个大的功能模块。图3.2为数字电子密码锁系统总体框图。

图3.2 数字电子密码功能模块图

(1)我设计的密码锁输入电路包括包括许多的小功能的模块,模块的功能太高端了,说了也不懂,还是不说了吧。

模块的功能:一般模块的功能我就不在介绍了为值得一提的是了加强按键按的准确性我决定加了去抖模块。

作为一个大学本科的毕业论文,我当然不打算做什么高大上的东西,就在在Quartus II9.0软件和ModelSim-Altera 6.4a上凑合着演示一把得了,这两个软件便宜又好用,当然也学了好长时间,用当然不会用,能凑合着毕业就行。

(2)我的密码锁控制电路也有好多的部分组成,同上原因我也不打算说了,大家自己去百度看看吧。

模块功能:这个功能显而易见,改密码以及对密码的各种保护。

(3)显示这块比较好理解就是将数字的代码,什么二进制十六进制的转换成一般人能看懂的文字,就叫显示,很关键的一步。

通过上面所描述的系统结构可知,一般正常点的的车载电子系统都要有输入和控制和显示三个部分组成,这点我相信大家都能理解。

从图3.2显示:我的系统运行的相当完美,该有的功能都有了,输错三回密码就死机

了,这点设计的相当有必要,防止有人瞎碰密码当然只要关机重启之后就能恢复正常状态了。系统没输入密码之前,LED灯是灭着的,当密码输入并且正确时,LED灯便亮了。

4系统详细设计

4.1 输入模块

4.1.1时序产生电路

本时序产生电路中分别使用了几种不同种类工作的跳动波形:系统时钟跳动它是系统内部的所有时钟跳动的源头,且有最高的频率、弹跳消除取样信号以及键盘扫描信号。

当一个系统中需使用多种操作频率的脉冲波形时,最方便的方法之一就是利用一计算器来产生各种需要的东西。也就是先建立一个N位计数器,N的大小根据电路的需求决定,N的值越大,电路可以变动的次数就越多,这样就可以获得更大的种类的变化,以便提供多种不同的信号。若输入时钟为CLK,N位计数器的输出为Q[N-1..0],则Q(0)为CLK 的2分频脉冲信号,Q(1)为CLK的4分频脉冲信号,Q(2)为CLK的8分频脉冲信号……Q(N-1)为CLK的2N分频脉冲信号;Q(5 DOWNTO 4)取得的是一个脉冲波形序列,其值依00-01-10-11-00-01周期性变化,其变化频率为CLK的32分频。我们利用以上规律即可得到各种我们所需要的各种想要的结果。

CLK_1K:时钟信号

SIGNAL K_SRCLK: STD_LOGIC ; --键盘输入采样时钟

SIGNAL K_POS: STD_LOGIC_VECTOR(1 DOWNTO 0);

--按键位置信号

SIGNAL KSCAN:STD_LOGIC_VECTOR(3 DOWNTO 0); --键盘扫描信号

KEY IN:STD_LOGIC_VECTOR(2 DOWNTO 0);--按键输入信号

KSRCLK:STD_LOGIC;--键盘输入采样时钟

4.1.2按键消抖电路

键盘的设计采用的是物理开关结构,所以信号可能会不太稳定而产生反弹的可能,反应激烈的反弹可能导致输入密码时输错了,由此可见按键消除抖动电路的重要性。

原因是反弹现象,虽然每只按一次按钮,然后放手,但关键信号真的产生但不打一次,采样后信号的检测,会造成错误的判断,认为键盘按了两次。

抽样结果如下图4.1和4.2所示。

图4.1 弹跳现象产生错误的抽样结果

如果调整系统抽样频率,弹跳现象就可以获得改善。

图4.2 调整系统抽样频率后得到的抽样结果

所以我们必须增加消除跳动来的电路,避免误了动作上信的号。特别是,消除跳起来的信号用于来把脉的信号频率的把脉的信号电路必须比其他电路使用次数要多一点;通常的扫描次数的电路频率设置在100kHz,并将消除吊起来的约200kHz的电的作业的频率,作业的频率是平时的2倍,或者更高。

debounce: block is

begin

u1:debouncing port map (d_in=>key_in(0),d_out=>c(0),

clk=>c_debounce);

u2:debouncing port map (d_in=>key_in(1),d_out=>c(1),

clk=>c_debounce);

u3:debouncing port map (d_in=>key_in(2),d_out=>c(2),

clk=>c_debounce);

end block debounce;

按键消抖部分是由两个小的模块集成为一个去抖电路的,所以在此分开介绍此两个模块。

Dcfq模块:dcfq 模块的主要程序

if clrn='0' and prn='1' then

q<='0';

elsif clrn='1' and prn='0' then

q<='1';

elsif clk'event and clk='1' then

q<=d;

end if;

此段程序作用是判断输入信号是否有效,如有效则输出,无效清零。

debouncing 模块主要程序如下:

u1:dcfq port map (clk=>clk,clrn=>inv_d,prn=>vcc,d=>vcc,q=>q0);

u2:dcfq port map (clk=>clk,clrn=>q0,prn=>vcc,d=>vcc,q=>q0);

process(clk)

begin

if clk'event and clk='1' then

d0<=not q1;

d1<=d0;

end if;

end process;

dd0<=d0;dd1<=d1;qq1<=q1; qq0<=q0;

d_out<=not (d1 and not d0);

d_out1<=not q1;

end architecture art;

这段程序的作用就是通过对信号的分段来处理,从而将按键产生的不规率的信号转换为有规律的使用的信号,达到消除抖动的目的。

4.1.3键盘扫描电路

扫描电路顾名思义就是来扫描输入的东西的看看有没有哪些不对的或者重复的。2在这个房间里,扫描一排按钮;当扫描信号为1011,ky1扫描的一排按钮;当扫描信号是0111,通过扫描ky0关键行。在每个扫描检查是否有按键按下一排按钮,按下这个按钮就行是不能忽视的,相反,如果按键立即通过行动的关键代码,并将结果使用在一个注册码里面。

--扫描信号发生器

counter: block is

begin

process (clk_1k) is

begin

if (clk_1k'event and clk_1k='1') then

q<=q+1;

end if ;

k_srclk<=q(7);

k_pos<=q(9 downto 8);

end process ;

scan <="1110" when k_pos=0 else

"1101" when k_pos=1 else

"1011" when k_pos=2 else

"0111" when k_pos=3 else

"1111";

end block counter;

键盘扫描电路的作用是用来提供键盘扫描信号,扫描信号变化的顺序为1110- -1101-1011-0111-1110……周而复始。扫描信号0111代表扫描的为*、0、#这一排按键,当*这个按键被按下时,由CSR[1..0]读出的值为11,按键位置的数码关系如表4.1所列。

表4.1按键位置的数码关系

扫描信号

CSR[1..0]

00 00 00 01 01 01 10 10 10 11 11 11 键盘输出

信号SEL[3..0] 0011 0101 0110 0011 0101 0110 0011 0101 0110 0011 0101

011

按键号 1 2 3 4 5 6 7 8 9 * 0 # 4.1.4 键盘译码电路和键盘输入模块的实现

密码的输入要由键盘来控制,因此该模块十分重要的,要是没做好,输入密码时就可能出错,得到的东西不是你想要的,这是万万不能有的,一定要别家的小心,能不能成功就要靠这个模块了。

键盘译码电路主要将所对应的键盘值设定成所要用的功能键,其主要程序如下:z<=k_pos & c;

if (k_srclk'event and k_srclk = '1') then

case z is

when "11101"=>n<="0000";

when "00011"=>n<="0001";

when "00101"=>n<="0010";

when "00110"=>n<="0011";

when "01011"=>n<="0100";

when "01101"=>n<="0101";

when "01110"=>n<="0110";

when "10011"=>n<="0111";

when "10101"=>n<="1000";

when "10110"=>n<="1001";

when others =>n<="1111";

end case;

end if;

if k_srclk 'event and k_srclk='1' then

case z is

when "11011" =>f<="0100";

when "11110" =>f<="0001";

when others =>f<="1000";

end case;

end if;

生成符号图如4.7:

图4.7 键盘输入电路

模块外部信号端口:

clk_1k:时钟脉冲输入端口,为系统提供工作的时钟脉冲。

key_in:按键输入端口,为按键输入提供输入信号。

kscan:键盘扫描序列(仿真时用),为按键扫描提供信号。

data_n:数字输出端口,为数字的输出提供信号。

data_f:功能输出端口,为功能的输出提供信号。

flag_n::数字输出标志,用于识别数字是否输出。

flag_f:功能输出标志,用于识别功能是否输出。

ksrclk:键盘输入采样时钟。

kpos:按键位置,用于识别按键所在位置提供信号。

模块内部信号:

scan:键扫信号“00-01-10-11”寄存器

k_ksrclk:去抖时钟信号,为去抖提供信号。

c:键盘输入去抖后的寄存器,用于键盘去抖后存储键盘输入的寄存器。

n,f:数字、功能按键译码值的寄存器,用于存储数字、功能按键译码后的值。

fn,ff:数字、功能按键标志值数字、功能按键。

q:模块内部信号,用于识别各个信号所用。

k_pos:按键位置信号,用于提供按键位置所在信号。

4.2电子密码锁控制模块

4.2.1控制模块的描述

控制锁的控制模块是整个系统的控制终端,主要用途是控制数字信号输入与功能信号的输入。

相关主题
文本预览
相关文档 最新文档