




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于VHDL的数字电路设计目 录 1 引言22 数字系统的设计方法23 数字密码锁的设计23.1设计分析与要求23.2基本原理33.3设计模块说明33.3.1 方波生成模块33.3.2消抖同步模块43.3.3密码锁逻辑控制模块54 数字密码锁的电路仿真75 总结8致谢10基于VHDL的数字电路设计 摘要: EDA技术的应用给电子设计带来巨大变革。利用先进的EDA工具,基于硬件描述语言,可以进行系统级数字逻辑电路的设计。本文简述VHDL语言的功能及其特点,并以8位串行数字锁设计为例,介绍了在MAX+plus II开发软件下,利用VHDL硬件描述语言设计数字逻辑电路的过程和方法。关键词:VHDL;MAX+PLUS II;EDA;数字密码锁; Design of Digital Circuit Based On VHDL Abstract: The application of EDA technologies to electronic design brought great changes. The use of advanced EDA tools based on the hardware description language, for system-level digital logic circuit design. This paper describes the function of VHDL and its characteristics, and eight serial digital lock design as an example, in the MAX + plus II development software, using VHDL hardware description language design digital logic circuits the process and methods. Key words:VHDL;MAX+PLUS II;EDA;Digital-Password-Lock; 1 引言目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能,自上而下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件,实现电子设计自动化。电子设计自动化EDA(即Electronic Design Automation)的关键技术之一就是可以用硬件描述语言(HDL)来描述硬件电路。VHDL的英文全名是Very-High Integrated Circuit Hardware Description Language,翻译成中文就是“超高速集成电路硬件描述语言” ,它诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为集成电路硬件描述语言。现在,VHDL作为IEEE的工业标准硬件描述语言,得到了众多EDA公司的支持,因此其在电子工程领域已成为事实上的通用硬件描述语言。VHDL支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强,生命周期长,支持大规模设计的分解和已有设计的再利用等优点。2 数字系统的设计方法VHDL主要用于描述数字系统的结构、行为和功能,其特点是将一个电路模块或一个系统分成端口和内部功能算法实现两部分。对于一个电路模块或者数字系统而言,定义了外部端口后,一旦内部功能算法完成后,其他系统可以直接依据外部端口调用该电路模块或数字系统,而不必知道其内部结构和算法。VHDL的特点使得电子系统新的设计方法“自顶向下”设计方法更加容易实现。可以先对整个系统进行方案设计,按功能划分成若干单元模块,然后对每个单元模块进一步细分,直到细化成一个个最简单的单元电路。数字系统的层次化设计,一般都要经过4个阶段:设计输入,编译,仿真验证,下载器件。本设计采用“自顶向下”的设计方法,逐层完成相应的描述,编译,仿真与验证,即先建立一些低层次的设计,再将它们组合在一起,最后形成一个单一的顶层设计文件。Max+plus II软件有多种输入方式,主要有:各种文本输入,原理图输入和波形输入。对于不同层次的模块,应采用不同的输入方式进行描述。由于VHDL擅长描述模块的逻辑功能,而原理图擅长描述硬件连接关系,所以在底层设计中,对底层所有模块使用VHDL语言进行描述,在顶层设计中,使用原理图输入方法。设计流程图如图1所示:设计输入设计处理系统测试器件编程设计仿真设计思路图1 数字系统的设计流程3 数字密码锁的设计8位串行数字密码锁是数字电路设计中较为典型的电路,本文在美国Altera公司的Max+plus II开发平台上,用VHDL设计了此数字电路。3.1 设计分析与要求数字锁即电子密码锁,锁内有若干密码,所以密码可由用户自己选定。数字锁有两类:一类是并行接收数据,称为并行锁;一类是串行接受数据,称为串行锁。如果输入代码与锁内密码一致,锁被打开;否则,应封闭开锁电路,并发出报警信号。 设计一个8位串行数字锁,并验证其操作。具体要求如下:(1) 开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开所指示灯LT。否则,系统进入“错误”状态,并发出报警信号。(2) 开所程序由设计者确定,并要求锁内给定的密码是可调的,且预置方便,保密性好。(3) 串行数字锁的报警方式是点亮指示灯LF,并使喇叭名叫来报警,直到按下复位开关,报警才停止。此时,数字锁又自动进入等待下一次开锁的状态。3.2 基本原理数字密码锁原理框图如图2所示。由时钟脉冲发生器、按键、指示灯和控制部分等组成。开关的消抖动电路放在控制部分考虑,时钟输入CLK由外部时钟脉冲发生器的输出提供。设计中的指示灯就是发光二极管,共计10个,用来指示系统的工作状态。其中8个为一组,用来显示已经输入密码的个数,剩余两个,一个为开锁绿色指示灯LT;另一个为报警红色指示灯LF。控制部分是VHDL语言设计的核心部分,主要由方波生成模块FEN、消抖同步模块XIAOPRO和密码锁逻辑控制模块CORNAA这4个模块构成,可以完成密码的修改、设定及非法入侵报警、驱动外围电路等功能。656734210时钟脉冲器Clk alm控制 Lf 部分 Lt LampClrk1 k0 lc load按键 复位信号喇叭图2 数字密码锁原理框图数字锁的核心部分是控制器,该部分的输入输出信号定义如表1所示。表1 数字密码锁控制器输入输出信号定义输入输出信号 定义 CLR 复位信号 CLK 时钟输入信号 K1 K0 代表1和0的按键开关 LC 管理员初始化密码开关 LT 开所指示灯 load 密码设置开关 LF 报警指示灯 lamp 密码输入显示灯 arm 报警输出信号3.3 设计模块说明本设计主要包括方波生成模块,消抖同步模块和密码锁逻辑控制模块,下面分别加以介绍。3.3.1 方波生成模块方波生成模块FEN分频占空比为1:1000的方波,用于消除抖动。分频电路的输入时钟CLK是由外部时钟提供的,外部时钟周期取200ns。FEN模块程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY fen IS PORT(clk:in std_logic; clk1:out std_logic);END fen;ARCHITECTURE fen_arc OF fen ISBEGIN PROCESS(clk) VARIABLE cnt:integer range 0 to 9999; BEGIN IF clkevent AND clk=1then IF cnt=9999 then cnt=0; clk1=1; ELSE cnt:=cnt+1; clk1=0; END IF END IF; END PROCESS;END fen_arc;3.3.2 消抖同步模块对于K1和K0信号,它们分别代表1和0的按键开关,可以直接送入密码锁逻辑控制模块CORNAA。但由于它们是由按键产生的,其产生时刻和持续时间长短是随机的,并且存在因开关簧片反弹引起的电平抖动现象.因此,必须在每个开关后面安排一个消抖和同步化电路模块XIAOPRO,目的是保证系统能捕捉到输入脉冲,同时,保证每按一次健只形成一个宽度固定的脉冲。在XIAOPRO模块中,因为变量的赋值是直接的,立即生效的,它在某一时刻仅包含一个值,而信号的赋值是有一个值,而信号的赋值是有一定附加时延的,故当时钟脉冲下降沿到来时,变量temp2和temp3在赋值语句执行后立即分别得到新值:tmp1的值和tmp2的非值,而输入信号a经过一定时延赋值给信号tmp1,实现了消除抖动并且同步的功能。用来描述输入消抖同步电路功能的VHDL语言程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xiaopro IS PORT(a,clk1:in std_logic; b:out std_logic);END xiaopro;ARCHITECTURE xiao_arc OF ziaopro ISSIGNAL tmp1:std_logic;BEGIN PROCESS(clk1,a) VARIABLE tmp3,tmp2:std_logic; BEGIN IF clk1 event and clk1=0then tmp1=a; tmp2:=tmp1; tmp3:=not tmp2; END IF; b=tmp1 and tmp3 and clk1; END PROCESS;END xiao_arc;3.3.3密码锁逻辑控制模块模块CORNAA是整个设计的核心,它实现密码锁的逻辑功能。管理员有权在任何时候按动密码初始化按键LC,此时锁内密码设置为程序初始化密码值(在本模块程序中初值为10010101)。开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯LT。否则,系统进入“错误”状态,并发出报警信号。串行数字锁的报警方式是点亮指示灯LF,并使喇叭鸣叫,直到按下复位开关,报警才停止。此时,数字锁又自动进入等待下一次开锁的状态。该8位串行电子密码锁设置8位二进制密码,要求锁内给定的密码是可调的,且设置方便,保密性好。其具体操作分为输入密码和修改密码两部分16。(1)输入密码 密码输入值的比较主要有两部分,密码位数和内容,任何一个条件不满足,都不能打开锁。若锁内密码为“10010101”,K1和K0置低电平,分别表示输入“1”和“0”。输入密码前先进行复位操作,再按着从密码最低位到最高位的顺序依次正确输入10101001。若采用共阴极LED接法,当输入第0位“1”后,八个二极管中相对应的二极管点亮(此时二极管指示灯lamp=“10000000”,输入密码信号shift=“10000000”),接着输入第1位“0”(此时lamp=“11000000”, shift=“01000000”)依照顺序,将8位二进制密码全部正确输入完毕后(此时lamp=“11111111”, shift=“10010101”),经检验,输入的密码shift等于锁内预先设置的密码lock,密码开锁信号LT置高电平,锁开启。同时,密码修改控制信号LA置高电平。 若在输入密码的过程中,8位二进制密码出现一位或多位输入错误,那么锁不能开启,同时ALM置高电平,指示灯LF亮,发出报警信号,通知管理员。直到按下复位开关,报警才停止。此时,数字锁又自动进入等待下一次开锁的状态。(2)修改密码为防止非管理员任意进行密码修改,必须在正确输入密码后,才能重新设置密码。输入正确密码后,锁打开,同时,密码修改控制信号LA置高电平,就可直接进行修改密码的操作。修改密码实质就是用输入的新密码去取代原来的旧密码,存储新密码时,输入一位密码,密码位数加1。若采用共阴极LED接法,与输出引脚lamp相接的发光二极管由亮变暗。当输入8位密码后,8只发光二极管全变暗。此时给CLK一个低电平,新密码产生。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY cornaa IS PORT(clk,k1,k0,clr,load:in std_logic; lt:inout std_logic; lamp:out std_logic_vector(7 downto 0); lf,alm:out std_logic);END cornaa;ARCHITECTURE corn_arc OF cornaa ISSIGNAL shift,lock:std_logic_vector(7 downto 0);SIGNAL lam:std_logic_vector(7 downto 0);SIGNAL la:std_logic;BEGIN PROCESS(clk,clr) BEGIN IF CLR=0THEN la=0; ELSIF clk=event and clk=1THEN IF load=0THEN la=1; END IF; END IF; END PROCESS; PROCESS(clk,clr) VARIABLE a:integer range 0 to 8; BEGIN IF clr=0THEN lam=00000000; shift=00000000; a:=0; lt=0; lf=0; alm=0; ELSIF clk event and clk=1THEN IF lt=0THEN IF a/=8 then IF k1=0then shift=1&shift(7 downto 1); lam=1&lam(7 downto 1); a:=a+1; ELSIF k0=0then shift=0&shift(7 downto 1); lam=0&lam(7 downto 1); a:=a+1; END IF; ELSIF a:=0; IF shift=lock then lt=1; else lf=1; alm=1; END IF; END IF; ELSIF la=1then IF k1=0then shift=1&shift(7 downto 1); lam=0&lam(7 downto 1); ELSIF k0=0then shift=0&shift(7 downto 1); lam=0&lam(7 downto 1); END IF; END IF; END IF; END PROCESS; lamp“Device”,窗口中的Device Family器件序列栏,先在此栏中选择ACEX1K。为了选择EP1K30TC144-3器件,应将此栏下方标有“Show only Fastest Speet Grades”的勾销去,以便显示出所有速度级别的器件。完成器件选择后,按OK,就可以进行编译了。VCCINPUTVCCVCCVCCVCCVCCINPUTINPUTINPUTINPUTINPUTCLRLAMPITOUTPUTOUTPUTOUTPUTNOTNOTNOTNOTLCOUTPUTCLRK0K1XIAOPROCORNAAFENclkClk clk1 A BClk1Clk LTK1 LAMPK0 LFCLR ALMLOADLCXIAOPROA BClk1LFALMVCC图3 顶层图形设计结构图编译成功后进行仿真。首先建立波形文件。波形文件lock.scf建好并存盘后,选择菜单“Max+plus II”-“simulator”,启动仿真操作,结束后观察仿真波形。本设计中,仿真波形如图4图6所示。当给初始密码输入信号LC一个低电平时,就将程序预先设定的密码(“10010101”)装入lock中,lock的值变为95。按下CLR后,系统复位,处于输入密码状态。当输入的开锁密码串行顺序装入shift中,并用lamp显示输入密码的位数。密码输入完毕后,比较输入的密码shift是否等于预先设定的密码lock,若相等,锁开启。在图4中可以看到,shift等于lock(“95”),8位密码输入正确,开锁指示灯亮,可以开锁。由图5可以看到,输入密码shift“AA”)不等于设定密码lock(“95”),报警指示灯亮,ALM变为高电平,输出报警信号。由图6可以看出,当给load一个低电平后,就可以进行修改密码的操作了。将8位新密码(“55”)输入完,新密码就自动装入load中,load中,load值变成“55”,密码修改完毕。在FPGA中,不同电路系统的设计往往采用自顶向下的设计方法,亦即将一个大的系统分解成单元电路。在每个单元电路的设计完成后,采用专门的仿真工具进行功能仿真是很有必要的,可节省不少设计时间。5 总结 VHDL 有着类似C 语言的风格易于学习和掌握,与传统的原理图输入设计方法相比较,VHDL 更适用于规模日益增大的数字系统,用VHDL等硬件描述语言进行数字系统的设计是当前EDA 发展的趋势也是一种具有广阔前景的集成电路开发工具。 图4 输入正确密码波形图5 输入错误密码波形图6 修改密码波形致谢感谢老师在百忙之中对我的指导,还有我的父母对我的养育和培养。也感谢同学们对我的支持与关心,还有所有帮助我的人。 参考文献1 曹建国,王威,王丹一种基于VHDL的数字密码锁的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甲状腺肿瘤课件及讲义
- 甲状腺癌CT课件
- 田径裁判基础知识培训
- 人生与哲学教学课件
- 8减几课件教学
- 河南省南阳市九师联盟2024-2025学年高二下学期6月期末考试化学试题(含答案)
- 新解读《GB-T 35019-2018全断面隧道掘进机 泥水平衡盾构机》
- 用气安全知识培训课件记录
- 用心陪伴-静待花开课件
- 生物安全知识培训目的课件
- 2025时事政治考试题库(含答案)
- 小学学期末质量分析会
- 公务车驾驶员安全课件
- 麻醉苏醒延迟机制与管理策略
- 2025年广西公需科目答案02
- YC/T 507-2014烟草测土配方施肥工作规程
- NB-T 10935-2022 除氧器技术条件
- GB/T 13331-2014土方机械液压挖掘机起重量
- 淹溺急救与护理ppt
- 部编版小学三年级上册道德与法治全册教案表格版
- 新人教版(部编版)小学语文1年级上教材解读
评论
0/150
提交评论