数电课程设计基于FPGA的电子密码锁的设计文档格式.docx
《数电课程设计基于FPGA的电子密码锁的设计文档格式.docx》由会员分享,可在线阅读,更多相关《数电课程设计基于FPGA的电子密码锁的设计文档格式.docx(45页珍藏版)》请在冰豆网上搜索。
electronicpasswordlock;
hardwaredescriptionlanguage;
1绪论
1.1国内外现状及其发展
随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。
锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。
随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。
据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。
这种锁是通过键盘输入一组密码完成开锁过程。
研究这种锁的初衷,就是为提高锁的安全性。
由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。
电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。
电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。
但较实用的还是按键式电子密码锁。
20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。
目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。
在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。
但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。
国内的不少企业也引进了世界上先进的技术,发展前景非常可观。
希望通过不断的努力,使电子密码锁在我国也能得到广泛应用[1]。
目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式[2]。
基于现场可编程逻辑门阵列FPGA器件的电子密码锁,用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。
1.2电子密码锁的原理
1.2.1编码总量的确定
电子密码锁随机开锁成功的概率定义为:
P=1/NT
其中P为随机开锁成功概率,NT为密码编码总量。
显然要使密码锁保密安全性高,NT应尽可能大,使P趋于零,但NT越大,相应电路越复杂,密码的记忆与操作也越麻烦。
故NT应有合理的上限和下限。
下限NTL的选择应使密码落在随机开锁可能成功的操作时区以外。
若每一次开锁操作时间为t,为便于做随机试验,将NT分为n段并期望在1/n段的1/2处开锁成功。
此时
p=1/2n
则随机开锁试验期望成功的时间为:
Tr=NT×
t/2n
假定系统设计不考虑误码输入的保护,密码锁在无保护的情况下使操作人员任意作随机开锁试验的时间为TEN,则:
NTL=(2n×
TENt)×
x,其中x为最低安全系数。
即:
TEN=(NTL×
t2n)x
显然若使NT>
=NTL,则Tr>
TEN,则使分段随机试验不易成功。
由此可得出数字密码锁的编码总量设定是系统设计安全性、保密性的首要技术指标。
一般来说,当NT选定之后,NT的上限NTH原则上是越大越安全,但一般设计时取NTH=(10~1000)NTL较为合理。
1.2.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=0159NT1,NT3=0.15NT1,所以编码制式考虑是否重码对NT有很大影响。
另外,相同制式下不同的基底对编码总量NT会有影响,而且基底的选择也会影响到硬件电路的设计。
本文设计的密码锁采用十进制编码,密码各位允许重码,为简化电路设计,密码锁口令采用对串行脉冲计数的方式输入。
1.2.3误码输入的保护措施
如前所述,电子密码锁的设计应考虑自身的安全保密性,由于编码和捕捉密码的实验都是随机的,若要使P=1NT趋近于0,必须采取误码输入的保护措施。
假定设定的误码输入次数不超过三次,误码达到三次时系统应关闭主控电路,拒绝大于三次的密码输入,并且系统进入死锁状态。
系统正常状态的恢复也可采用以下三种方式:
(1)延时后输入二级密码管理方式,即由管理员级密码作为正常输入的开锁密码,之后重新定义新的开锁密码;
(2)使用一个按键使系统重新恢复到正常状态;
(3)系统掉电恢复[3][4]。
1.3电子密码锁的系统简介
通用的电子密码锁主要由三个部分组成:
数字密码输入电路、密码锁控制电路和密码锁显示电路。
(1)密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电路、键盘译码电路等几个小的功能电路。
(2)密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。
(3)密码显示电路主要将显示数据的BCD码转换成相对应的编码。
如,若选用七段数码管显示电路,主要将待显示数据的BCD码转换成数码器的七段显示驱动编码[4]。
1.4系统设计要求
设计一个具有较高安全性和较低成本的通用电子密码锁,具体功能要求如下:
(1)数码输入:
每按下一个数字键,就输入一个数值,并在显示器上的显示出该数值,同时将先前输入的数据依序左移一个数字位置。
(2)数码清除:
按下此键可清除前面所有的输入值,清除为“0000”。
(3)密码更改:
按下此键时会将目前的数字设定成新的密码。
(4)激活电锁:
按下此键可将密码锁上锁。
(5)解除电锁:
按下此键会检查输入的密码是否正确,密码正确即开锁。
1.5本课题的研究目的和意义
随着人们生活水平的提高,对家庭防盗技术的要求也是越来越高,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的欢迎。
现在市场上主要是基于单片机技术的电子密码锁,但可靠性较差。
FPGA即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物,是一种超大规模集成电路,具有对电路可重配置能力。
通常FPGA都有着上万次的重写次数,也就是说现在的硬件设计和软件设计一样灵活、方便。
相对于基于单片机技术的电子密码锁,用FPGA器件来构成系统,可靠性提高,并且由于FPGA具有的现场可编程功能,使得电子密码锁的更改与升级更为方便简单[3]。
通过本次设计掌握FPGA系统设计的方法,熟悉FPGA设计的相关软件,以及硬件描述语言的使用,了解电子密码锁的系统构成,利用FPGA实现电子密码锁的设计与实现,可以加深自己对所学专业的认识,关联知识,增强自己的动手能力,积累实践经验,为以后的工作打好基础。
2现场可编程门阵列FPGA
自1985年Xilinx公司推出第一片大规模现场可编程逻辑器件(FPGA)至今,FPGA已经历了十几年的历史。
在这十几年的过程中,可编程器件有了惊人的发展:
从最初的1200个可利用门,到今天的25万可利用门,规模增大了200多倍;
FPGA供应商也从Xilinx的一枝独秀,到今天近20个厂商的分庭抗争;
FPGA从单一的基于SRA结构到今天各种结构类型的出现,都充分体现了可编程器件这一巨大市场的吸引力。
FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低。
由于目前电子产品生命周期相对缩短,相近功能产品的派生设计增多等特点,促使FPGA越来越多地取代了ASIC的市场,特别是对国内众多的科研单位来说,小批量、多品种的产品需求,使得FPGA成为首选[5]。
2.1FPGA的基本结构
FPGA的发展非常迅速,形成了各种不同的结构。
按逻辑功能块的大小,FPGA可分为细粒度FPGA和粗粒度FPGA。
细粒度FPGA的逻辑功能块较小,资源可以充分利用,但连线和开关多,速度慢;
粗粒度FPGA的逻辑功能块规模大,功能强,但资源不能充分利用。
从逻辑功能块的结构上分类,可分为查找表结构、多路开关结构和多级与非门结构。
根据FPGA内部连线的结构不同,可分为分段互联型和连续互联型。
根据编程方式,FPGA可分为一次编程和可重复编程两种。
FPGA一般可由三种可编程电路和一个用于存放编程数据的SRAM组成,这三种可编程电路是:
可编程逻辑块(CLB)、输入/输出模块(IOB)和互联资源(IR)。
CLB是FPGA的主要组成部分,是实现逻辑功能的基本单元。
它主要是由逻辑函数发生器、触发器、数据选择器等电路组成。
IOB提供了器件引脚和内部逻辑阵列之间的连接,通常排列在芯片的四周。
其主要是由输入触发器、输入缓冲器、输出触发/锁存器和输出缓冲器组成。
每一个IOB控制一个引脚,可被配置为输入、输出活双向I/O功能。
可编程互联资源包括各种长度的金属连线和一些可编程连接开关,它们将各个CLB之间和IOB之间互相连接起来,构成各种复杂功能的系统。
图2.1给出了XilinxSpartan-Ⅱ芯片内部结构[6]。
图2.1XilinxSpartan-II芯片内部结构
2.1.1可配置存储器
FPGA芯片逻辑功能的配置是由按点阵分布于芯片的存储单元——静态存储器(SRAM)实现的,即通过对分布的SRAM的不同加电配置,决定各部分的逻辑定义。
对于FPGA器件编程实现,实际上就是由加载于SRAM上的配置数据决定和控制各个CLB、IOB及内部连线PI的逻辑功能和它们之间的相互连接关系。
加载不同的配置数据,芯片便实现不同的逻辑功能。
配置LCA的数据文件由XACT(XilinxAutomatedCAETools)开发系统产生,通过数据配置方式及相应接口加载于芯片中。
2.1.2可配置逻辑块(CLB)
图2.2CLB结构框图
XC4000系列的CLB(简化框图如图2.2所示)具有13个输入、4个输出。
内部由两个独立的四输入逻辑函数发生器、一对触发器和若干个由配置控制的多路转换器组成。
逻辑块的输入输出可以接到外部的可编程连线资源。
两个四输入逻辑函数发生器(输入分别为F1~F4和G1~G4),可以独立提供四输入的任意定义的布尔函数,它们的输出分别为F′和G′。
函数发生器的输出由存储器查找表(lookuptable,LUT)技术实现,传播延迟与所实现的函数无关。
第三个输出为H′的函数发生器可以实现三输入(F′、G′和块外信号H1)的任意布尔函数。
由函数发生器生成的信号F′或H′可以被连到X输出端,G′或H′可以被连到y输出端。
从而使一个CLB可以实现两个独立的多达四变量的任意函数,或单个五变量任意函数,或一个任意的四变量函数连同一个五变量函数,或多达九变量的一些函数。
在单一逻辑块上实现如此宽的逻辑函数,既减少了所要求的逻辑块数又减少了在信号通路上的时延,达到了增加密度和速度的目的。
在CLB中有两个边沿触发的D触发器,它们具有公用时钟(K)和时钟使能(EC)输入,第三个公用输入(S/R)可以分别地对它们编程为异步置位或复位信号,该输入也可定义为不被使能。
另外,还有一个单独的全局置位/复位线,在电源接通或重新配置时由专用复位网线对每个触发器置位或复位。
函数发生器F′和G′的另一种可选方式是使其中的查找存储器用做16×
2或32×
1位的读/写存储单元阵列使用。
这种RAM的速度是很高的,读操作与逻辑延时一样,大约5.5ns,而写操作大约8ns。
这是一个新的相当有用的功能,在系统中可以设计寄存器阵列、LIFO堆栈或FIFO缓冲器等。
2.1.3输入/输出块(IOB)
图2.3输入输出模块IOB
用户可配置的IOB(见图2.3)为芯片外部引脚和内部逻辑提供了一个界面,每个IOB控制一个外部引脚,并可定义为输入、输出或双向三种功能。
当IOB定义为输入时,输入信号经Pad进入输入缓冲器,并根据配置可以直接输入,亦可以通过边沿触发器或电平敏感锁存器输入。
当IOB定义为输出时,输出信号可以通过配置选择是否反相,是直接传输到Pad,还是通过边沿触发器寄存后传输。
可以选择用输出使能信号(OE)使输出缓冲器是否为高阻状态,以实现三态输出或双向I/O传输。
2.1.4可编程内部连线(PI)
内部连线由一些具有可编程开关点或开关矩阵的金属线段组成,结构对称、规范,适合于建立自动有效的布局布线算法。
布线通道的数目由阵列规模决定。
2.2FPGA的优点
FPGA与CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件的基础上发展起来的。
FPGA既继承了ASIC的大规模、高集成度、高可靠性的优点,又克服了普通ASIC设计周期长、投资大、灵活性差的缺点,逐步成为复杂数字硬件电路设计的理想首选。
在这十几年的发展过程中,以FPGA/CPLD为代表的数字系统现场集成技术取得了惊人的发展:
现场可编程逻辑器件从最初的数百个门发展到现今的数百万个门。
目前,国际上现场可编程逻辑器件著名厂商有Xilinx的XC系列,TI公司的TPC系列,Altera公司的FIEX系列等。
同以往的PAL、GAL等相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。
对用户而言,CPLD与FPGA的内部结构只是稍有不同,但用法一样,所以多数情况下不加以区分[7]。
FPGA具有以下特点:
1.FPGA芯片的规模越来越大,其单片逻辑门数已达数百万门。
所能实现的功能也越来越强,用FPGA设计,ASIC电路用户不需要投片生产就能得到合用的芯片。
2.FPGA可做其它全定制或半定制ASIC电路的试样片,并且它采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容,它是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
3.FPGA内部有丰富的触发器和I/O引脚,用户可以反复地编程、擦除、使用或在外围电路不动的情况下用不同软件实现不同的功能。
既能使数字系统适应柔性系统的需求(不同的配置实现不同的功能),又能随着市场需求的变化和技术的发展及时扩展,变更数字系统的功能,提高了电子产品的应变能力。
4.FPGA的保密性好。
在某些场合下,根据要求选用防止反向技术的FPGA能很好的保护系统的安全性和设计者的知识产权。
5.FPGA开发工具智能化,功能强大,软件包中有各种输入工具和仿真工具以及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可以完成电路的输入、编译、优化、仿真,直至最后芯片的制作。
可以使设计人员能集中精力进行电路设计,使产品快速推向市场。
6.电路设计人员使用FPGA进行电路设计时,软件易学易用[8]。
正是如此,FPGA应用前景广阔,尤其适合于新产品的研制。
2.3FPGA的设计流程
FPGA设计流程包括系统设计和设计实现,系统方案完成之后即进入设计实现阶段的工作,他以系统方案为输入,进行RTL级描述、功能仿真(RTL级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、系统验证一系列流程的处理才能完成FPGA芯片的设计,其设计流程如图2.4所示。
需要说明的是,如果仿真验证不对或者某一步有错,就要返回修改。
有必要检查和修改的地方有RTL级描述、系统方案、约束和测试激励等。
一般情况下,对RTL级的描述即原理图或者HDL设计代码的修改最多也最有效。
修改后要重新走一遍流程。
有时要反复修改,经过多次这样的迭代才能完成最后的设计[8]。
在理论上,把VLSI(UltraLargeScaleIntegration,超大规模集成电路)的设计描述为6个层次[1,2],即系统级(系统功能、参数定义)、算法级(描述系统功能行为)、RTL级、门级(逻辑门)、电路级(晶体管)、版图级(物理工艺)。
每一级又都分3个侧面来描述:
行为域描述、结构域描述、物理域描述。
但在实际情况中往往把算法级行为域描述或者RTL级行为域描述都称为行为级描述。
图2.4系统设计流程
对于FPGA的设计而言,不需要关心电路级和版图级,只考虑系统级、算法级、RTL级、门级4个层次的行为域描述和结构域描述即可。
上述的FPGA系统设计中的系统实际上是指系统级和算法级,而“RTL级描述”主要是指RTL级行为域的描述。
在门级,由综合工具产生的门级网表来描述。
FPGA的设计流程和相关概念说明如下:
库:
指FPGA器件厂家提供的工艺库和EDA工具提供的标准通用库(如IEEE库等)。
工艺库中有各种宏功能模块和基本功能单元,含有他们的行为级模型、门级模型、布线模型等信息。
需要说明的是,系统行为仿真和RTL级功能仿真有时要用到某种功能模块,例如RAM模型。
对于RAM模型的控制信号,不同的厂家其规定不一定相同,如写使能信号,有的厂家规定高电平有效,有的厂家规定低电平有效。
其实,在厂家提供的工艺库中,RAM模型有行为级模型、门级模型、版图级模型等。
而行为级模型只是规定其功能,无延时信息,跟工艺无关,但门级模型和版图级模型跟工艺密切相关。
解决的方法是系统行为仿真时可以使用高级语言自己建立一个模型或者调用厂家库中提供的行为级模型,功能仿真时调用行为级模型,时序仿真时调用门级模型。
测试激励:
指测试文件,他调用FPGA设计的顶层模块,同时产生顶层模块需要的输入信号,称之为激励信号,使用行为描述即可,不要求可综合。
仿真时他作为最顶层的文件,从而可以观察FPGA的输出是否正确。
所有的仿真都可使用同一个测试激励。
约束:
指对逻辑综合和布局布线时的约束。
包括器件型号、速度、面积、功耗、引脚分配、时钟网络资源的分配、模块在器件中的定位等约束。
一部分在软件中设置,一部分以约束文件的形式存在。
(1)系统行为描述
系统行为描述是指使用硬件描述语言HDL(Hard-wareDescriptionLanguage)语句的全集来描述算法,模拟系统的行为和功能,不要求所有的语句都能够综合成电路。
事实上,有些语句是专为描述行为而创建的,不能综合(不能用电路来实现其功能)。
也可以使用高级语言如C语言来进行描述,此时往往要配合专用的系统设计工具来进行描述与仿真,如SPW等。
这种系统算法级行为域的描述可