前言:中文期刊网精心挑选了vhdl语言范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
vhdl语言范文1
关键词:8路抢答器控制系统;EDA;CPLD;vhdl;仿真
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)05-11351-02
1 引言
随着电子技术的发展,可编程逻辑器件(PLD)的出现,使得电子系统的设计者利用EDA(电子设计自动化)软件,就可以独立设计自己的专用集成电路(ASIC)器件。可编程逻辑器件是一种半导体集成器件的半成品。在可编程逻辑器件的芯片中按一定方式(阵列形式或单元阵列形式)制作了大量的门、触发器等基本逻辑器件,对这些基本器件适当地连接,就可以完成某个电路或系统的功能。
8路抢答器控制系统是工厂、学校和电视台等单位举办各种智力竞赛等娱乐活动中经常使用的重要基础设备之一。目前设计抢答器的方法很多,例如用传统的PCB板设计、用PIC设计或者用单片机设计。而用VHDL可以更加快速、灵活地设计出符合各种要求的抢答器,优于其他设计方法,使设计过程达到高度自动化。本文介绍的八路数显抢答器基于VHDL语言、以EDA技术作为开发手段、采用CPLD(复杂的可编程逻辑器件)作为控制核心设计而成。与传统设计相比较,不仅简化了接口和控制,也提高了系统的整体性能和工作可靠性,具有电路简单、成本低廉、操作方便、灵敏可靠等优点。
2 设计思路与系统结构
2.1 8路抢答器控制系统的设计思路与功能
根据抢答要求,系统所需实现的功能如下:
(1)设计制作一个竞赛抢答器,共设8个组别每组控制一个抢答开关,分别为sl,s2,…,s8。
(2)设置主持人控制键Reset,用于控制整个系统清零和抢答有效控制。
(3)主持人发出开始命令,8人开始抢答。其中一人先按下抢答键,蜂鸣器发出鸣叫,数码显示该人号码,其他人再按键,系统不再响应,直至主持人按键清零,下一次抢答开始。
2.2 系统原理结构框图
根据以上设计思路与功能要求,设计系统结构框图,见图1所示。该系统共分六个组成部分:主持人控制电路、CPLD控制模块、脉冲振荡电路、8人(组)抢答电路、数码显示电路、蜂鸣器声响电路。
图中脉冲振荡电路用于产生标准时钟信号,为系统提供CLK信号;数码显示部分显示抢答成功者的组别号。控制部分是EDA设计的核心部分,用硬件描述语言(VHDL)来描述数字系统的结构、行为和功能,采用“自顶向下”设计方法,将电路的硬件设计转变为软件设计。
图1 8路抢答器控制系统结构框图
3 硬件设计
VHDL语言设计的出现从根本上改变了以往数字电路的设计模式,使电路由硬件设计转变为软件设计,使电子设计的核心转化为VHDL语言的编程设计,这样提高了设计的灵活性,使电路的设计复杂程度大大降低。
(1)主持人控制电路和8人抢答电路,每人(组)各设一个按键开关,分别为reset、sl,s2,…,s8,每个开关接一个电阻和一个电源Vcc,当按键按下为高电平有效;
(2)CPLD控制芯片采用Altera公司MAX7000S系列的EPM7128SLC84-15来实现;
(3)脉冲振荡电路,石英晶体振荡电路如图,c1、c2为微调电容;
(4)蜂鸣器声响电路。当BELL为高电平时,三极管导通,蜂鸣器发出声响。当BELL为低电平时,三极管截止,蜂鸣器不发声;
(5)数码显示采用共阴极7位二进制输入8字管。
4 基于VHDL的设计
VHDL是用来描述从抽象到具体级别硬件的工业标准语言,它是由美国国防部在20世纪80年代开发的HDL,现在已成为IEEE承认的标准硬件描述语言。VHDL支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的再利用等优点。
VHDL主要用于描述数字系统的结构、行为和功能,其程序结构特点是将一个电路模块或一个系统分成实体(外部端口)和构造体(内部功能算法实现)两部分实现。对于一个电路模块或者数字系统而言,定义了外部端口后,一旦内部功能算法完成后,其他系统可以直接依据外部端口调用该电路模块或数字系统,而不必知道其内部结构和算法。VHDL的特点使得电子系统新的设计方法一一“自顶向下”设计方法更加容易实现。
图2 8路抢答器原理图
本设计在MAX+plusⅡ环境中进行,MAX+plusⅡ是美国ALTERA公司提供的FPGA/CPLD开发集成环境。MAX+plusⅡ界面友好,使用便捷,被誉为业界最容易的EDA软件。
下面详细论述使用MAX+plusⅡ软件设计8路抢答器控制系统的过程。
4.1 VHDL实体设计
端口部分共设计10个输入端口,8个输出端口。输入端口包括1个脉冲端口、1个主持人控制端口和8人抢答端口。输出端口包括1个蜂鸣器输出端口和8字管输出管端口。
8路抢答器实体部分的VHDL代码:
ENTITY barenqiangda IS
PORT(s: IN STD_LOGIC_VECTOR(7 downto 0);[8人抢答输入端口定义]
reset,clk: IN STD_LOGIC; [主持人复位和脉冲端口定义]
a: OUT STD_LOGIC_VECTOR(0 downto 6); [8字管输出端口定义]
bell: OUT STD_LOGIC);[蜂鸣器输出端口定义]
END barenqiangda;
4.2 VHDL构造体设计
8路抢答器实体部分以并行处理语句――进程(PROCESS)语句为基本语句,该程序以复位、脉冲和8人抢答答信号为敏感信号,当敏感信号发生变化时,进程被激活,顺序执行内部语句。
构造体部分VHDL代码:
4.3 芯片设置、编译、管脚设置
程序输入完成后然后选择用于编程的目标芯片:选择菜单“Assign”“Device”,窗口中的Device Family是器件序列栏,先在此栏中选择MAX7000S。然后选择7128SLC84-15器件,按OK,就可以进行编译了。经“MAX+PLUSE II”中的“Compiler”菜单编译,以验证设计结果是否符合要求,如果有问题,则返回原设计文件再次进行修改,直到正确为止。
编译无误后经“MAX+PLUSE II”中的“FLOORPLAN EDITOR”菜单,进行输入、输出管脚设置,将18个元件端口放置到EPM7128SLC84-15芯片适当的I/O口,并用手工调整按图2所示设置。
4.4 仿真
编译成功后进行仿真。首先建立波形文件。波形文件建好并存盘后。选择菜单“Max+plusII”“simulator”,启动仿真操作,结束后观察仿真波形(图3所示)。从仿真波形看,符合设计要求。
图3 逻辑功能仿真波形
4.5 下载实验
仿真结束后,就可将文件下载到芯片中。连接硬件系统后,通上电源,经“MAX+PLUSE II”中的“PROGRAMMER”菜单,调出编程器窗口。一切就绪后,按下编程器窗口中的“program”按钮,设计的内容就开始下载到CPLD芯片EPM7128SLC84-15中。经实际电路测试验证,达到了设计的要求。
5 结束语
VHDL语言设计的出现从根本上改变了以往数字电路的设计模式,使电路由硬件设计转变为软件设计,使电子设计的核心转化为VHDL语言的编程设计,这样提高了设计的灵活性,降低了电路的复杂程度,修改起来也很方便。并且整个设计很大一部分由电脑辅助来完成,大大缩短了设计周期,减少了设计费用,降低了设计风险。这种数字系统的设计可以直接面向用户需求,根据系统的行为功能要求,自上至下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件,体现了EDA的自动化特点。
参考文献:
[1]郭勇. EDA技术基础(第2版)[M]. 机械工业出版社,2005.314-320.
vhdl语言范文2
【关键词】数字电路;VHDL;教学改革;设计方法
1.引言
数字电路是理工科中的电类专业和计算机专业必修的专业基础课程,也是信息类各专业的平台课程。该课程在介绍有关数字系统基本知识、基本理论、基本电路的基础上,重点讨论数字系统中各种逻辑电路分析与设计的基本方法,以及该领域的发展现状及最新的技术。设置该课程的主要目的是为了让学生了解各种基本逻辑电路,能熟练地运用有关知识和理论对各类逻辑电路进行分析设计。目前, 大多数高等院校仍是采用传统的数字电路教学模式, 以教材为中心,过于强调基本原理、公式的推导以及波形的分析,往往让学生觉得抽象,不能够很好地理解电路、集成芯片的功能及应用。而实验环节主要在实验箱上完成,开设的是一些验证性的实验,对各实验项目的电路设计以手工为主,一般遵循自底向上的设计方法,从电路的功能分析,真值表、表达式、逻辑电路图到器件的选择、连线、测试等,学生的认识仅仅停留在局部小部件上,复杂的系统设计思想受到限制。在数字电子技术飞速发展的今天,大规模以及超大规模集成电路的广泛应用,这种缺乏实用性和创新性的传统教学模式,已不再适应现代应用型人才的培养。因此,教学需要融入新技术 、突破传统教学模式,引入VHDL语言的数字电路教学改革就成为一个重要的研究课题。
2.VHDL语言及其特点
超高速集成电路硬件描述语言(VHDL) 是一种用于数字电路设计的高级语言,是被IEEE和美国国防部确认为标准的硬件描述语言,其主要用于描述数字电路的结构,行为,功能和接口。基于这种描述结合相关的软件工具,可以得到所期望的实际数字电路。利用VHDL语言进行电路设计具有以下几个特点:
(1)VHDL可用于设计复杂的、多层次的设计,并且支持设计库和设计的重复使用;
(2)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力;
(3)VHDL有丰富的仿真语句和库函数,使其在设计的早期就能查验设计系统的功能可行性,借助于相关仿真器随时可对设计进行仿真模拟;
(4)对于VHDL完成的一个确定的设计,一般可进行逻辑综合和优化,并能自动的把VHDL描述设计转变成门级网表;
(5)VHDL语言支持电路描述由高层向低层的综合变换,便于文档管理,易于理解和设计的再利用;
(6)VHDL对于设计的描述具有相对独立性,设计者可以不懂硬件的结构,最终实现的目标器件设计。
3.VHDL语言较传统设计方法的优点
通过上述特点,我们了解到VHDL语言功能强大、设计灵活、容易掌握。将VHDL语言引入数字电路教学中,有利于增强学生对电路设计的认识,掌握更多的设计方法,提高分析设计能力。本文针对六进制约翰逊计数器的设计,分别采用了传统设计方法和VHDL方法进行设计,通过对比可得出,VHDL可以显著提升数字电路的教学效果。
3.1 传统设计方法
传统电路设计采用自底向上的设计方法如图1所示。本文选用JK、D触发器及门电路来实现,采用3个触发器连接产生8个状态,六进制约翰逊计数器只有6个状态,将其中的010,011两个状态禁止掉,具体状态转换表如表1所示。
图1 自底向上设计方法
表1 状态转换表
CLK Q2n'Q1n'Q0n Q2n+1'Q1n+1'Q0n+1
1 0..0..0 0...0...1
2 0..0..1 0...1...1
3 0..1..1 1...1...1
4 1..1..1 1...1...0
5 1..1..0 1...0...0
6 1..0..0 0...0...0
由状态转换表得出状态方程:
,,
将Q2,Q1选用D触发器,Q0选用JK触发器,得出驱动方程:
,,,
根据驱动方程最终画出逻辑原理图如图2所示。
图2 逻辑原理图
在得到逻辑原路图后,还需要进行逻辑验证,验证无误后再对逻辑原理图进行逻辑验证无误后,在PCB版上完成布线、装配、焊接及调试,如有问题,再进行局部修改,直至整个电路调试完毕为止。
图3 自顶向下设计方法
3.2 VHDL设计方法
VHDL设计采用自顶向下的设计方法如图3所示。首先根据设计要求对电路功能进行行为级描述和仿真,然后再进行RTL级描述和仿真,达到预期结果后再进行逻辑综合、布局布线,最终完成电路设计。
(1)行为描述,也就是对计数器数学模型的描述,通过代码描述出输入、输出引脚和计数过程中状态变化时序及关系,具体程序如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
entity counter6 is
port(clk,reset:in std_logic;
count_out:out std_logic_vector(2 downto 0));
end counter6;
architecture rtl Of counter6 is
signal next_count:std_logic_vector(2 downto 0);
begin count_proc:process(clk,reset)
begin if reset='0' then
next_count<="000";
elsif clk'event and clk='1' then
case next_count is
when "000"=>next_count<="001";
when "001"=>next_count<="011";
when "011"=>next_count<="111";
when "111"=>next_count<="110";
when "110"=>next_count<="100";
when "100"=>next_count<="000";
when others=>next_count<="000";
end case;
end if;
count_out<=next_count;
end process;
end rtl;
利用Max+plusⅡ软件对上述程序进行编译、仿真,仿真结果如图4所示,结果表明,该方案符合设计要求。
图4 仿真结果
(2)RTL描述,即用具体门电路、运算器等来描述行为部分。行为描述程序抽象程度较高,故需转化为RTL方式描述的VDHL程序,以便于映射到具体的逻辑元件,得到硬件的具体实现。对于改写后的RTL程序同样需要进行仿真,检查正确性。
(3)逻辑综合,利用MAX+PLUS II Advanced Synthsis ALtera将其转换为门级网络表,输出逻辑原理图并进行仿真、检查定时关系。最后根据需要利用门级网表做出ASIC芯片或生成FPGA码点,完成电路设计。
3.3 VHDL与传统设计方法比较
相较于传统设计方法,VHDL采用自顶向下的设计方法,可进行结构化、模块化设计,更利于分工合作,再加上各层次的仿真检查,便于早期发现错误并改正,提高了设计效率;同时设计描述的相对独立性,使得学生设计时不必写表达式、真值表,不必考虑所用器件,降低了设计难度;另外VHDL语言简单易学,MAX+PLUS II界面友好,通过仿真波形分析,学生能更形象、更深刻的理解所学内容。
4.结束语
数字电路作为专业基础课程,其教学效果的好坏,将直接影响后续相关专业课程的学习。在数字电路教学中引入VHDL描述语言,利用MAX+PLUS II进行编译、仿真、演示,不但丰富了教学内容,改进了教学手段,提高学习兴趣,还有助于学生消除“抽象感”;另外VHDL能将传统教学中较难实现的电路设计转换为软件设计,不仅简化了设计工作,还有利于增强学生对集成芯片的认识,提高分析设计能力,掌握更多的设计方法,以适应现代应用型人才培养要求。
参考文献
[1]张天瑜.基于VHDL的数字电路课程改革研究[J].湖北广播电视大学学报:2010(02):25-26.
[2]黄红霞.基于VHDL提升数字电路教学效果的研究[J].黄石理工学院学报,2010(03):66-70.
[3]谭勇,朱斌.基于EDA技术的数字电路实验教学改革[J].中国现代教育装备,2012(17):43-44.
vhdl语言范文3
关键词:VHDL;计费器;QuartusⅡ;FPGA
中图分类号:TP312 文献标识码:A 文章编号:1006-8937(2013)29-0007-03
出租车是现代人类的重要交通工具,而出租车的计费系统的安全性和先进性是人们普遍关心的问题,要求计费器性能稳定,计费准确,以及预防司机作弊行为等等都关系到乘客的切身利益。因此,设计出符合人们普遍要求及放心的产品具有重要的意义。采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。基于单片机设计的计费器更新周期长,而且单片机程序是不通用的,不同的单片机芯片有不同的指令集,因此设计研发比较困难。利用VHDL语言设计的基于CPLD/FPGA的出租车计费器不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、设计灵活、易于调试、修改方便。
1 出租车计费器的设计要求
1.1 能够实现计费的功能
费用的计算是按行驶的里程收费,设出租车的起价为5.00元,当里程小于3 km时,按起步价计算费用;当里程大于3 km时每公里按1.3元计费。等待累计时间超过2 min,按每分钟1.5元计费。所以总费用按下式计算:总费用=起费用+(里程-3 km)×里程单价+等候时间×等候单价。
1.2 能够实现显示的功能
显示汽车行驶里程:用两位数字显示,显示方式为“XX”,单位为km。计程范围为0~99 km,计程分辨率为1 km;显示等候时间:用两位数字显示分钟,显示方式为“XX”。计时范围为0~59 min,计时分辨率为1 min;显示总费用:用四位数字显示,显示方式为“XXX.X”,单位为元。计价范围为0~999.9元,计价分辨率为0.1元。
2 系统总体设计
根据设计要求,采用自顶向下的设计方法,将整个系统设计分为分频模块、计量模块、计费模块、控制模块及动态扫描显示模块,系统组成框图如图1所示,其中计量模块是整个设计的重点。
3 各模块具体设计
下面将介绍系统各模块及顶层电路的具体设计。
3.1 分频模块
分频模块对系统时钟信号进行分频,分别得到15 Hz,13 Hz,1 Hz三种频率;1 Hz作为计量模块的驱动信号,计费模块采用13 Hz、15 Hz的驱动信号;计量模块每计数一次,计费模块就实现13次或者15次计数,即为实现出租车等待计时的1.5 元/min、计里程时的1.3元/km的收费。那么分频模块输入时钟频率应为15×13=195 Hz,由于系统设计硬件验证时所用EDA实验箱上面没有195 Hz的时钟源,只有192 Hz及16 384 Hz的时钟源,195 Hz与192 Hz相隔3 Hz,误差太大,而将16 384 Hz的时钟源84分频后得到时钟信号与195 Hz相差0.047619 Hz,误差较小,故分频模块选择输入时钟频率clk_16384为16 384 Hz,经过两次分频得到clk_1(1 Hz),clk_13(13 Hz),clk_15(15 Hz)。
3.2 计量模块
此模块主要功能是计算载客时汽车行驶的公里数及停车等待时的等候时间即完成计程和计时功能。计程器的量程为99 km,满量程后自动归零,计时器的量程为59 min,满量程后自动归零。输入端口clk1为计量脉冲信号,是由分频模块提供的1 Hz时钟信号,s是计量开始/停止信号,pause是停车等待信号,fin是汽车的里程脉冲信号。当s=1,pause=0时表示汽车正常行驶,开始计量,clk1的上升沿到来时,若fin为高电平,则以记录的clk1的脉冲个数作为汽车行驶的公里数,行驶超过3 km时,en0输出高电平。s=1,pause=1表示汽车中途停车等待,记录clk1的脉冲个数,60个脉冲为1 min,当超过2 min时,en1输出高电平。s=0时不论pause为何值,计量停止,显示清零。输出端口k1、k0分别表示里程的十位数字和个位数字,m1、m0分别表示等待时间的十位数字和个位数字。将设计的VHDL程序编译之后生成的元件符号图如图2所示。
程序编译通过后对计量模块进行仿真,仿真图如图3所示。在第2个clk1时钟周期,s信号为1,pause仍为0,里程k0开始计数,计数到3后,表示汽车行驶超过3 km,需按1.3元/km收费,此时en0输出高电平。在具体程序设计中,为了缩短硬件测试时间,使得测试时间与实际时间缩短了6倍,既实际时间1 min,测试时间为10 s。所以当s为1、pause为1时,汽车处于载客等待状态,每10个clk1周期模拟实际的1分钟,m0的值自动加1,当m0加到2后,表示等待超过2 min,需按1.5元/min收费,此时en1输出有效脉冲信号。
3.3 控制模块
控制模块主要是根据两个不同的输入使能信号ent0和ent1,对两个输入脉冲13 Hz及15 Hz进行选择输出,提供给计费模块计费。ent0和ent1分别由计量模块的en0、en1提供。 其参考程序如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity kongzhi is
port(ent0,ent1:in std_logic;
clk_in1:in std_logic;
clk_in2:in std_logic;
clk_out:out std_logic);
end kongzhi;
architecture rt4 of kongzhi is
begin
process(ent0,ent1)
begin
if ent1='1' then
clk_out
elsif ent0='1' then
clk_out
end if;
end process;
end rt4;
3.4 计费模块
当输入的start信号不为0时,对不同的输入脉冲频率clk2的脉冲个数进行计数即为乘车费用,输出端口c0、c1、c2、c3分别表示费用的小数位,个位、十位、百位数字的四位BCD码输出。
3.5 动态扫描显示模块
本模块包括9个输入端口,2个输出端口。系统显示部分利用人眼的视觉暂留效应,采用动态扫描的方法,点亮8个数码管,当输入数码管扫描信号clkweixuan选择实验箱上面的750 kHz频率,硬件现象显示良好,没有闪烁的感觉。八个四位BCD码输入中wc0、wc1、wc2、wc3分别是计费模块输出的c0、c1、c2、c3,即为乘客乘车的费用;Wmin0和wmin1为汽车停车等待时间的个位和十位,wk0、wk1为汽车行驶的公里数的个位和十位。输出端口weixuan为数码管的片选信号,qout为数码管的位选信号。
本模块包括两个process,一个process在时钟信号的控制下从0到7进行循环计数,不同的计数值,输出八个不同的4位BCD码输入,并产生数码管的片选信号;一个process完成对4位BCD码输出值的七段数码管显示译码,产生数码管位选信号,在这个进程要注意显示费用个位数字的数码管必须带小数点。
3.6 顶层设计
对各个子模块程序进行编译,仿真,然后生成各个模块的元件符号,采用原理图的输入方式将各模块连接起来构成顶层模块,或者用VHDL语言采用元件例化语句编写顶层模块程序。图4是采用VHDL语言编写顶层程序生成的RTL电路图。
4 硬件测试
整个系统程序设计完成,仿真通过后选择器件。本设计在武汉恒科HK-Ⅵ型EDA实验箱上进行硬件测试,选择器件为Atera的FPGA芯片EP1K30TC144-3,然后根据设计要求合理分配引脚,进行全编译生成编程文件。连接好实验箱,将编程文件下载到FPGA器件上,观察硬件现象。数码管显示初始状态如图5所示。当start=1、pause=1(start输入高电平,pause输入高电平),出租车进入等待状态,行驶路程显示数码管停止计数,等待时间显示数码管跳动计数,同时继续计费。图6为某时刻当前状态下的数码管显示,里程为39 km,等待时间为3 min,总费用=5+(39-3)×1.3+(3-2)
×1.5=53.3元,硬件现象完全符合。
5 总 结
本文设计硬件系统采用VHDL语言编程,基于FPGA实现了出租车计费器的计时、计程、计费功能。使用硬件语言描述的形式,可以充分利用FPGA的优势,成本低、灵活性强、功耗小、周期短。使用VHDL语言设计硬件电路,设计与器件无关,具有良好的可移植性。如果出租车计费标准发生变化时,修改VHDL源程序即可,设计具有一定的实用价值。
参考文献:
vhdl语言范文4
ISSN Print: 2162-531X
ISSN Online: 2162-5328
Aims & Scope
Advances in Materials Physics and Chemistry contains rapid communications, full-length original research, review articles and comments on interrelationships among synthesis, micro/nanostructures, properties, processing and performance of Materials Science, Physics, and Chemistry. This includes, but is not limited to:
vhdl语言范文5
目前国内数字逻辑课程的教学内容多是基于SSI、MSI等器件进行分析和设计,采用的是经典的数字逻辑设计方法,即用真值表、卡诺图、状态转换图、状态转换表、状态方程、时序图、逻辑图和逻辑函数表达式等方法,来分析和设计数字逻辑系统。显然,对于较复杂的数字系统,因其输入变量数、输出函数变量数和状态数的急剧增加,再使用上述这种传统方法进行分析和设计难以适用,甚至根本无法进行。数字逻辑课程的实验环节也是基于标准SSI,MSI芯片的所谓硬实验台实验室(Hardware-based Laboratory),这种实现台不易做成开放性,实验准备,实验内容和实验课安排都不灵活,实验内容和效果也受到所供SSI,MSI芯片的限制。如今,数字化的概念已深入到各个领域,几乎绝大多数系统已不是简单几个逻辑变量就能完全描述的。然而目前在专门讲授数字系统设计基础理论和方法的数字逻辑课程中,绝大多数高校仍然是沿用了几十年不变的老方法,显然已远远落后于时代的要求,必须加以改革创新。
2 引进VHDL语言的方法
VHDL的方法克服了传统方法的弱点,与传统方法相比有几处根本优点,设计者可以在VHDL描述模型建立之后马上用仿真手段来验证系统功能是否满足要求。这种方法还可以免去传统方法的许多繁杂的试凑等耗时劳动(设计瓶颈),因而减少设计时间,降低设计难度,避免了由于人工试凑设计常容易发生的错误。利用各种EDA工具,可自动的将一个可综合的设计在给定的具体器件上进行门级实现。而且,用这种方法系统整体指标往往容易实现,而传统的方法则不然。这种方法其主要设计文件是用VHDL语言编写的源程序,而不是电路原理图,显然传统硬件电路设计最后形成的主要文件是电路原理图,它与设计的器件和技术有关,不易设计文档的复用。用VHDL语言设计系统硬件电路,主要设计文件是用VHDL语言编写的源程序,以此作为归纳文件有很多好处:首先,资料量小,便于保存;其次是可继承性好,即设计其它硬件电路时可以调用文件中的某些库、进程和过程等描述某些局部硬件电路的程序;第三是阅读方便,很容易在程序中看出某一硬件电路的工作原理和逻辑关系,而阅读电路原理图,推知其工作原理都需要较多的硬件知识和经验,而且看起来也不够一目了然。VHDL还有一个重要的特点就是设计描述与器件无关(without referenec to specific hardware),显然这是基于SSI、MSI等器件进行分析和设计无法做到的,设计者能专注其设计,而且在EDA综合工具的配合下支持自顶向下的设计。
采用VHDL的方法,在实验环境上也把基于硬件的实验室改变成基于软件的实验室(Software-based Laboratory)即软实验台,直接在VHDL仿真器中验证实验结果的正确性,根本克服了硬实验台的不足,易于实现实验的开放性和网络教学模式。
VHDL的方法是顺应迅速发展的通讯技术、电子测量技术、自动化控制等技术的需要而发展起来的,它使硬件软件化变为现实,使大规模和超大规模集成电路的设计向标准化、自动化的方向迈进了一大步。无疑,传统的设计方法已经远远落后,国内电子行业已逐渐将VHDL硬件描述语言应用于电子系统设计中。为了避免我们的教学内容与电子技术发展脱节,增强人才的竞争能力,适应市场需要,将VHDL硬件描述语言引入数字逻辑的教学和实验中,逐步对旧的教学模式和教学内容加以改革,势在必行,也是时代的要求和科技发展的必然结果。
3 举例说明采用VHDL方法的风格和特点
VHDL语言是目前广泛流行的硬件描述语言之一,它起源于美国国防部超高速集成电路计划,计划公布后受到业界的普遍欢迎。1987年12月被IEEE正式批准为标准的硬件描述语言,并于1993年公布了修改后的IEEE最新标准。VHDL支持结构化的开发设计,因此一个大型的数字系统可以分成较小的子系统,许多人可在不同的子系统中同时进行开发工作。VHDL是通过元件例化语句来实现这一功能的。和其它高级语言一样,VHDL是一种强类型语言,这使设计中的许多错误易于发现。VHDL允许设计者在不同的抽象层次里对系统进行行为描述及结构描述。VHDL有三种主要的建模描述风格:
算法描述(Algorithmic):即用顺序语句来描述输入输出对应关系的算法,这种描述方式最初往往与实现硬件无关。
数据流描述(Dataflow):即用一组并行语句来描述数据在寄存器之间流动的建模方式。这种方式与实际硬件实际存在某种对应关系。
结构描述风格(Structural):这是一种与硬件结构最近的描述方式,它通过文件的例化语句来实现。
下面用一个实例来说明采用VHDL语言设计一个四位可控的Johnson计数器,从中可以领略一下采用VHDL方法的风格和特点,此例所反映的设计过程也是笔者所指的软实验台所包含的具体内容。设计模块端口信号有:LEPT,左移控制;RIGHT,右移控制;STOP,停止计数控制;CLK,时钟输入端,Q3-Q0,计数器输出端。设计采用VHDL输入方式。该设计的VHDL代码如下:
library IEEE;
use IEEE.std_logic_1164.all;
entity johnson is
port ( LEFT : in STD_LOGIC;
RIGHT : in STD_LOGIC;
STOP : in STD_LOGIC;
CLK : in STD_LOGIC;
Q : buffer STD_LOGIC_VECTOR (3 downto 0));
end johnson;
architecture johnson_arch of Johnson is
signal DIR: STD_LOGIC;
signal RUN: STD_LOGIC;
begin
process (CLK)
begin
if (CLK'event and CLK='1') then
if (RIGHT='0') then
DIR
elsif (LEFT='0') then
DIR
end if;
if (STOP='0') then
RUN
elsif (LEFT='0' or RIGHT='0') then
RUN
end if;
if (RUN='1') then
if (DIR='1') then
Q(3 downto 1)
Q(0)
else
Q(2 downto 0)
Q(3)
end if;
end if;
end if;
end process;
end johnson_arch;
从上面的VHDL的设计代码可见:VHDL的设计文档由三大部分组成,即库的声明,端口说明和结构体设计描述。其中端口说明清晰的反映了所设计器件的输入输出性质,在结构体设计描述中也清楚的描述了器件所完成的逻辑功能。这是传统的采用SSI,MSI等标准规格器件设计所没有的优点。
图1 设计实例功能仿真图
用VHDL仿真器验证设计的正确性。参见图1:设计实例功能仿真图。
vhdl语言范文6
(重庆师范大学涉外商贸学院,中国 重庆 401520)
【摘 要】随着计算机技术的飞速发展,EDA技术也有了巨大的发展,被广泛应用于电子、通信、医学、军事等各个领域。本文介绍了基于VHDL硬件描述语言设计彩灯控制器的思维与技巧,在MAX+plusⅡ开发工具软件中进行源文件的编辑、逻辑综合、适配、仿真及编程下载。仿真和验证的结果表明,该设计方法切实可行,该判决器具有一定的实际应用性。
关键词 EDA; VHDL;彩灯控制器;MAX+plusⅡ
基金项目:重庆师范大学涉外商贸学院校级科研项目(KY2014008)。
作者简介:周婷(1988—),重庆合川人,硕士研究生。
0 引言
电子设计自动化(EDA)技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑优化和仿真测试,直至实现既定的电子线路系统功能[1]。由美国国防部主持开发的VHDL语言是一种可用于数字电路描述和综合的高级语言[2],如果结合VHDL语言仿真电路进行仿真和验证,可以尽早发现电路设计中的错误,从而缩短开发的周期,降低开发成本,提高系统的设计效率。
VHDL语言是目前应用最广泛的硬件描述语言之一。它是一种人和机器都能理解的高级语言,与具体的硬件电路没有关系,具有较高的易读性。它支持层次化结构设计,从系统整体要求出发,从上至下逐层设计直到最终生成器件,完成电路系统。一个完整的VHDL程序包括有库、包集合、实体、结构体,另外还有配置块[3]。它的最大特点是将一项工程设计分成了内部和外部,工程可以是目标系统、电路模块甚至一个元件。其中外部是系统的端口;内部则是不可视部分,其功能用程序设计好后可直接调用。
1 彩灯控制器的功能分析与设计
彩灯在生活中经常能够看到,并且给我们的生活增添了许多色彩。尤其在节假日,不仅闪烁着美丽耀眼的光芒,还能够烘托出节日的气氛。本文采用EDA技术,使用VHDL语言实现彩灯的控制。
在美国ALTERA公司的MAX+PLUSⅡ平台上,使用VHDL硬件描述语言实现的彩灯控制电路的设计如下:在电路中以1代表灯亮,以0代表灯灭,由0、1按不同的规律组合代表不同的灯光图案,同时使其选择不同的频率,从而实现多种图案多种频率的花样功能显示。彩灯控制器的元件,Y[15..0]是彩灯控制器的输出端。reset是彩灯控制器的复位信号输入端,当复位信号reset=‘1’时,彩灯状态会和s0相同;否则,当有时钟信号来临时,会根据程序设置显示出彩灯的亮灭状态。en是彩灯循环方式控制信号输入端,当en=‘0’时,彩灯自左边第一个灯和中间分别向右边循环闪烁;当en=‘1’时,彩灯自右边第一个灯和中间分别向左边循环闪烁;否则,彩灯会呈现熄灭状态。
2 彩灯控制器VHDL语言设计
十六路彩灯显示系统控制器的主要VHDL语言程序代码如下所示:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity colorlamp is
port(clk,reset,en:in std_logic;
y:out std_logic_vector(15 downto 0));
end;
architecture beha of colorlamp is
type states is (s0,s1,s2,s3,s4,s5,s6,s7);
signal st:states;
signal yn:std_logic_vector(15 downto 0);
begin
one:process(clk,reset)
begin
if reset=´1´ then st <= s0;
elsif clk´event and clk=´1´ then
case st is
when s0 => st <= s1;
when s1 => st <= s2;
when s2 => st <= s3;
when s3 => st <= s4;
when s4 => st <= s5;
when s5 => st <= s6;
when s6 => st <= s7;
when s7 => st <= s0;
when others => st <= s0;
end case;
end if;
end process one;
two:process(st,en,clk)
begin
case st is
when s0 =>
if en=´0´ then yn <= "1000000010000000";
elsif en=´1´ then yn <= "1000000010000000";
else yn <= "0000000000000000";
end if;
when s1 =>
if en=´0´ then yn <= "0100000001000000";
elsif en=´1´ then yn <= "0000000100000001";
else yn<= "0000000000000000";
end if;
when s2 =>
if en=´0´ then yn <= "0010000000100000";
elsif en=´1´ then yn <= "0000001000000010";
else yn <= "0000000000000000";
end if;
when s3 =>
if en=´0´ then yn <= "0001000000010000";
elsif en=´1´ then yn<= "0000010000000100";
else yn<= "0000000000000000";
end if;
when s4 =>
if en=´0´ then yn<= "0000100000001000";
elsif en=´1´ then yn <="0000100000001000";
else yn <= "0000000000000000";
end if;
when s5 =>
if en=´0´ then yn <= "0000010000000100";
elsif en=´1´ then yn<= "0001000000010000";
else yn<= "0000000000000000";
end if;
when s6 =>
if en=´0´ then yn <= "0000001000000010";
elsif en=´1´ then yn<="0010000000100000";
else yn <= "0000000000000000";
end if;
when s7 =>
if en=´0´ then yn <= "0000000100000001";
elsif en=´1´ then yn<="0100000001000000";
else yn <= "0000000000000000";
end if;
when others => yn <= "0000000000000000";
end case ;
if clk´event and clk=´1´ then y<= yn ;
end if;
end process two;
end beha;
3 仿真结果
利用MAXPLLUS2的原理图输入,以原理图的形式形成最后的十六路彩灯显示系统器件并且进行仿真。图1分别是彩灯自右边第一个灯和中间分别向左边循环闪烁,彩灯自左边第一个灯和中间分别向右边循环闪烁的仿真时序图(如图1)。
4 结束语
通过上述实验可知,本设计是可行的。仿真正确后通过下载电缆下载到CPLD/FPGA芯片上即可。芯片可以重复使用无数次。只要拥有计算机,配上相应的软件就可以随心所欲的改变彩灯的方式,而且不受时间的限制。
参考文献
[1]赵刚,编.EDA技术简明教程[M].成都:四川大学出版社,2004.
[2]宋文好,等.数字电路的VHDL综合技术[J].现代计算机,2001(111):22-25.