基于VHDL的数字密码器的设计(2)

2019-05-27 17:50

工具,从一个工作平台移植到另一个工作平台去执行。这意味着同一个VHDL设计描述可以在不同的设计项目中采用,方便了设计成果的设计和交流。另外,VHDL语言的语法比较规范,从而其可读性比较好,给阅读和使用都带来了极大的好处。

5、方便向ASIC移植。VHDL语言的效率之一,就是如果设计是被综合到一个CPLD或FPGA,则可以设计的产品以最快速度上市。当产品的产量达到相当的数量时,采用VHDL进行的设计可以很容易转成用专用集成电路来实现,仅仅需要更换不同的库重新进行综合。由于VHDL是一个成熟的定义型语言,可以确保ASIC厂商交付优良品质的器件产品。此外,由于工艺技术的进步,需要采用更先进的工艺时,仍可以采用原来的VHDL代码。

1.2.3 VHDL的设计流程

利用VHDL语言进行设计可分为以下几个步骤:

1、设计要求的定义。在从事设计进行编程VHDL代码之前,必须先对你的设计目的和要求有一个明确的认识.对所需的信号建立时间、时钟/输出时间、最大系统工作频率、关键的路径等这些要求,要有一个明确的定义,这将有助于你的设计,然后再选择适当的设计方式和相应的器件结构,进行设计的综合。

2、用VHDL语言进行设计描述。(l)应决定设计方式,设计方式一般说来有三种:自顶向下设计,自底向上设计,平坦式设计。前两种方式包括设计阶层的生成,而后一种方式将描述的电路当作单模块电路来进行的。自顶向下的处理方式要求将你的设计分成不同的功能元件,每个元件具有专门定义的输入和输出,并执行专门的逻辑功能.首先生成一个由各功能元件相互连接形成的顶层块来做成一个网表,然后再设计其中的各个元件。而自底向上的处理方法正好相反。平坦式设计则是指所有功能元件均在同一层和同一图中详细进行的。(2)编写设计代码。编写VHDL语言的代码与编写其他计算机科技大学硕士学位论文绪论程序语言的代码有很大的不同。必须清醒地认识到正在设计硬件,编写的VHDL代码必须能够综合到采用可编程逻辑器件来实现的数字逻辑中。懂得EDA工具中仿真软件和综合软件的大致工作过程,将有助于编写出优秀的代码。

3、用VHDL仿真器对VHDL原代码进行功能仿真。对于大型设计,采用VHDL仿真软件对其进行仿真可以节省时间,可以在设计的早期阶段检测到设计中的错误,从而进行修正,以便尽可能地减少对设计日程计划的影响。因为对于小型设计,其综合优化、配置花费的时间不多,而且在综合优化之后,往往会发现为了实现性能目标,将需要修改设计。在这种情况下,用户事先在原代码仿真时所花费的时间是毫无意义的,因为一旦改变设计,还必须重新再做仿真。

4、利用VHDL综合优化软件对VHDL原代码进行综合优化处理。选择目标器件、输入约束条件后,VHDL综合优化软件工具将对VHDL原代码进行处理,产生一个优化了的网络表,并可以进行粗略的时序仿真。

5、配置将综合优化处理后得到的优化了的网络表,安放到前面选定的CPLD或PPGA目标器件之中,这一过程成为配置。再优化了的网络表配置到目标器件后,从完成的版图上可以得到连线长短、宽窄的信息,把它们反注到原来的网络表,为再次进行时序做准备。

6、配置后的时序仿真。这时的时序仿真将检查诸如信号建立时间、时钟到输出、寄存器到寄存器的时延是否满足要求。因为已经得到实际连线引起的时延数据,所以仿真结果能比较精确地未来芯片的实际性能。如果时延仿真结果不能满足设计的要求,就需要重新对VHDL原代码进行综合优化,并重新装配于新的器件之中,或选择不同速度品质的器件。同时,也可以重新观察和分析VHDL原代码,以确认描述是正确有效的。只有这样,取得的综合优化和配置的结果才符合实际要求。

7、器件编程。在成功地完成了设计描述、综合优化、配置和配置后的时序仿真之后,则可以对器件编程和继续进行系统设计的其他工作。

[5]

1.3 可编程逻辑器件(PLD)简介

PLD(可编程逻辑器件)是与ISP(在系统可编程)技术和EDA(电子设计自动化)工具紧密结合、同时进行的。它代表了数字电信领域的最高水平,给数字电路的设计带来了革命性的变化。从70 年代

6

第一片可编程逻辑器件PROM的诞生到现在的CPLD/FPGA,数字系统的设计发生了本质的变化。从传统的对电路板的设计到现在的基于芯片的设计,使得数字系统设计的效率大大提高,产品更新速度大大加快,设计周期大大变短。

1.3.1 PLD的发展历程

最早的可编程逻辑器件出现在20世纪70年代,主要是可编程只读存储器(PROM)和编程逻辑阵列(PLA)。20世纪70年代末出现了可编程逻辑阵列(PAL-Programmable Array Logic)器件。20世纪

[6]

80年代初期,美国Lattice公司推出了一种新型的PLD器件,称为通用阵列逻辑(GAL-Generic Array Logic),一般认为它是第二代PLD器件。随着技术的进步,生产工艺的不断改进,器件规模不断扩大,逻辑功能不断增强,各种可编程逻辑器件如雨后春笋般涌现,如PROM、EPROM等。在EPROM基础上出现的高密度可编程逻辑器件称为EPLD或CPLD。现在一般把超过某一集成度的PLD器件都称为CPLD。在20世纪80年代中期,美国Xilinx公司首先推出了现场可编程门阵列(FPGA)。FPGA器件采用逻辑单元阵列结构和静态随机存取存储器工艺,设计灵活,集成度高,可无限次反复编程,并可现场模拟调试验证。在20世纪90年代初,Lattice公司又推出了在系统可编程大规模集成电路(ispLSI)。

1.3.2 FPGA/CPLD简介

FPGA/CPLD都是高密度现场可编程逻辑芯片,都能够将大量的逻辑功能集成于一个单片集成电路中,其集成度己发展到现在的几百万门。复杂可编程逻辑CPLD是由PAL或GAL发展而来的。它采用全局金属互连导线,因而具有较大的延时可预测性,易于控制时序逻辑,但功耗比较大。现场可编程门阵列(FPGA)是由掩膜可编程门阵列和可编程逻辑器件二者演变而来的,并将它们的特性结合在一起。因此FPGA既具有门阵列的高逻辑密度和通用性,又有可编程特性。FPGA通常由布线资源分割的可编程逻辑单元(或宏单元)构成阵列,又有可编程UO单元围绕阵列构成整个芯片。其内部资源是分段互联的因而

[7]

延时不可预测,只有编程完毕后才能实际测量。CPLD和FPGA建立内部可编程逻辑连接关系的编程技术有三种:基于反熔丝技术的器件只允许对器件编程一次,编程后不能修改。其优点是集成度、工作频率和可靠性都很高,适用于电磁辐射干扰较强的恶劣环境。基于EEPROM存储器技术的可编程逻辑芯片能够重复编程100次以上,系统掉电后编程信息也不会丢失。编程方法分为在编程器上编程和用下载电缆编程。用下载电缆编程的器件,只要先将器件装焊在电路板上,通过PC、SUN工作站、就能产生编程所有的标准5V、3.3V或2.5V逻辑电平信号,也称为ISP方式编程,其调试和维修也很方便。基于SRAM技术的器件编程数据存储于器件的RAM区中,使之具有用户设计的功能。在系统不加电时,编程数据存储在EPROM、硬或软盘中。系统加电时将这些编程数据即时写入可编程器件,从而实现板级或系统级的动态配置。

1.3.3 用FPGA/CPLD进行开发的优点

基于EDA技术的FPGA/CPLD器件的开发应用可以从根本上解决MCU所遇到的问题。与MCU相比,

[8]

FPGA/CPLD的优势是多方面的和根本性的:

1、编程方式简便、先进。FPGA/CPLD产品越来越多地采用了先进的IEEE1149.1边界扫描测试(BST)技术和ISP。在+5V工作电平下可随时对正在工作的系统上的FPGA/CPLD进行全部或部分地在系统编程,并可进行所谓菊花链式多芯片串行编程,对于SRAM结构的FPGA,其下载编程次数没有限制。

2、高速。FPGA/CPLD的时钟延迟可达纳秒级,结合其并行工作方式,在超高速应用领域和实时测控方面有非常广阔的应用前景。

3、高可靠性。在高可靠应用领域,MCU的缺憾为FPGA/CPLD的应用留下了很大的用武之地。除了不存在MCU所特有的复位不可靠与PC可能跑飞等固有缺陷外,FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,从而大大缩小了体积,易于管理和屏蔽。

4、开发工具和设计语言标准化,开发周期短。由于FPGA/CPLD的集成规模非常大,集成度可达数百万门。因此,FPGA/CPLD的设计开发必须利用功能强大的EDA工具,通过符合国际标准的硬件描述语言(如VHDL)来进行电子系统设计和产品的和开发。由于开发工具的通用性、设计语言的标准化以及设

7

计过程几乎与所有的FPGA/CPLD器件结构没有关系,所以设计成功的各类逻辑功能块软件有很好的兼容性和可移植性,它几乎可用于任何型号的FPGA/CPLD中由此还可以知识产权的方式得到确认,并被注册成为所谓的IP芯核从而使得片上系统的产品设计效率大幅度提高。由于相应的EDA软件功能完善而强大,仿真方式便捷而实时,开发过程形象而直观,兼之硬件因素涉及甚少,因此可以在很短时间内完成十分复杂的系统设计,这正是产品快速进入市场的最宝贵的特征。EDA专家预言,未来的大系统的FPG刀CPLD设计仅仅是各类再应用逻辑与IP芯核的拼装,其设计周期最少仅数分钟。

5、功能强大,应用广阔。目前,FPGA/CPLD可供选择范围很大,可根据不同的应用选用不同容量的芯片。利用它们可实现几乎任何形式的数字电路或数字系统的设计。随着这类器件的广泛应用和成本的大幅度下降,FPGA/CPLD周期系统中的直接应用率正直逼ASIC的开发。

2 数字密码器的VHDL设计

本次设计的数字密码器将实现一般数字密码器的基本功能,并且能够预置任意位密码,比一般的四位密码锁具有更高的安全可靠性。本次设计将利用EDA技术自顶向下的设计方法,采用VHDL语言进行设计输入,并在MAX+PLUSⅡ开发软件上进行编译、仿真、编程、下载,最后在ALTERA公司开发的FPGA芯片EPF10K10LC84-4上实现。

2.1 数字密码器的总体方案设计 2.1.1 数字密码器的功能描述

一个简单的数字密码器是由密码器主体以及附加的外围指示电路组成的,其中密码器主体的作用是用来接受密码并进行密码的验证操作;附加的外围指示电路的主要作用是用来显示输入的密码和根据密码验证的结果来给出不同的指示灯显示或者启动报警装置,而报警装置则通常采用扬声器。

[9]

下面给出数字密码器的系统结构图,如图2-1所示。

WAIT_T SETUP READY OPEN_T A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 GND 数 字 密 码 器 LED_G LED_R ALERT 扬声器

A B 7 C D E F G E D F G C 绿灯 红灯 A B 外部时钟CLK 图2-1 数字密码器的系统结构图

8

在本设计中,数字密码器的功能描述如下所示:

1、密码器的工作时钟由外部晶振来提供,时钟频率为300Hz;

2、密码预先在内部设置,可以设置任意位密码,这里采用6位十进制数字作为密码;

3、密码输入正确后,密码器将启动开启装置。这里密码器只接受前6位密码输入,并以按键音提 示,多余位数的密码输入将不起作用;

4、采用6位7段LED对输入的密码进行动态扫描显示;

5、允许密码输入错误的最大次数为三次, 口令错误次数超过三次则进入死锁状态, 并发出警报; 6、报警后,内部人员可以通过按键SETUP使密码器回到初始等待状态;

7、开启装置开启后,操作人员可以通过按键WAIT_T使密码器回到初始等待状态; 8、密码器具有外接键盘,可以用来输入密码和操作指令;

9、内部按键SETUP不由外接键盘提供,需要放在外部人员不能进入的地方。

2.1.2 数字密码器的内部结构及模块划分

在数字电路设计中,自顶向下的设计方法的主要思想是对数字系统进行模块划分,这样可以将复杂的设计简化成相对简单的模块设计,不同的模块用来完成数字系统中某一部分的具体功能。可见,划分模块是设计过程中一个非常重要的步骤。在这一步,必须花费一定的时间,从而保证模块划分的最优化,这样可以大大减小后面VHDL程序编写的工作量。

[10]

9

指示电路模块

绿灯 LED_G 红灯 LED_R WAIT_T SETUP READY OPEN_T 消 抖 同 步 电 路 C11 C22 C33 C44 WAIT_L S_LG RS RS 控 制 器S_LR ALERT NOTC 密码错误次数达到3次 计数器2 ANC DEP FULL EN DUS CNP RESET DATA_IN 计数器满 计数器1 S0 S1 S2 4位六选一数据选择器 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 使 能 电 路 A00 A10 A20 A30 A40 A50 A60 A70 A80 A90 消抖同步电路 A01 A11 A21 A31 A41 A51 A61 A71 A81 A91 编 码 器 E1 E2 E3 E4 B1 B2 B3 B4 比较器 IN1 IN2 IN3 IN4 IN5 IN6 数 码 管 扫 描 模 块 DATA 数码管显示译码… 1 6 a - g … CLK 分频模块CLK_DIV1 CLK_DIV2 图2-2 数字密码器的模块划分图

SEL[2..0] 数码管选择信号 根据本次设计的数字密码器的功能描述,可以进一步将它划分为如图2-2所示的结构框图。由图可知,整个数字密码器系统主要包括分频模块、消抖同步模块、使能电路模块、密码预置模块、编码模块、比较模块、计数器选择模块、数码管显示译码模块、指示电路模块、数码管扫描模块、误码模块和控制器模块12部分。

2.1.3 数字密码器的工作过程

10


基于VHDL的数字密码器的设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:历年自考中国法律思想史试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: