VHDL设计中信号与变量的使用研究

上传人:冷*** 文档编号:23870740 上传时间:2021-06-12 格式:DOCX 页数:3 大小:14.24KB
返回 下载 相关 举报
VHDL设计中信号与变量的使用研究_第1页
第1页 / 共3页
VHDL设计中信号与变量的使用研究_第2页
第2页 / 共3页
VHDL设计中信号与变量的使用研究_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述
VHDL设计中信号与变量的使用研究 摘要:VHDL语言是现代电子设计的重要工具。数据对象是其中的重要语言要素,通常由常量、变量与信号等组成,一般情况下,这些要素在经过综合后可以引入寄存器,这样就能够产生相同的逻辑电路,与初始值的功效基本相同。语言要素中的常量和变量可以从计算机语言中找到与其对应的数据类型,并且这类常量和变量的语言行为与高级中的变量和常量基本相同。比较特殊的要素是信号,它的数据对象包含更多的硬件特征,这也是VHDL中最有特色的语言要素之一。本论文讲述的是常量和变量的相似之处,还有变量和信号的相同与不同之处,主要表现为定义位置、适用范围、延时行为特性等,并以实例加以验证。 下载论文网关键词:VHDL 变量 信号0 引言电子电路技术更新换代的周期很快,新技术的发明与应用所需时间很短,集成电路技术也在发生着日新月异的变化,在这样的背景下,传统的芯片设计技术和系统集成技术已经不能适应新的标准要求。因此,必须要尽快提高设计效率,要想提高设计效率必须要降低设计难度,VHDL设计方法能够在很大程度上降低芯片和系统集成的设计难度。电子设计自动化技术是现代电子设计的重要技术,高速集成电路硬件描述语言是EDA的重要工具。1 关于数据对象的简介在VHDL语言要素中,数据对象是比较重要的内容,一般都包含如下三类:常量、变量和信号。常量是一个全局量,它的定义和设置主要是为了使程序更容易阅读和修改,在程序中,常量作为一个固定不变的稳定值,不可以被改变。变量相对于常量来说,算是一个局部量,变量主要是在局部程序的某个进程或子程序中使用。变量一般不可以超出自身所在的程序结构,其信息的传输也离不开程序结构对其所做的定义和赋值,在实际工作过程中,不会出现延时暂停的状况,工作具有即发性。信号是一种比较特殊的数据对象,作为在VHDL中的一个全局量,通常是在程序包说明、实体说明和结构体描述中使用。信号与连接线比较类似,通过基本数据来描述硬件系统,信号可以充当并行语句模块间的信息交流通道。2 信号与变量的定义位置与赋值范围在VHDL中,定义变量的一般表述是:variable 变量名:数据类型:=初始值。变量限于自身的属性,作为局部量,其能够适用的范围很小,通常情况下仅限于定义了变量的进程或子程序的顺序语句中。变量不能将信息带出对它作出定义的当前结构中。在这些语句结构中,同一变量的值将随变量的赋值语句前后顺序的运算而改变。变量的赋值其实从技术角度来看,本身是一种十分理想的数据传输模式,这种工作时瞬间发生,不会有暂停或迟滞现象发生。变量定义语句中的初始值可以是一个与变量具有相同数据类型的常数值,这个表达式的数据类型必须与所赋值的变量一致。变量的主要作用是在进程中作为临时的数据存储单元。变量赋值的一般表述为:目标变量名:=表达式;信号定义的语句格式与变量相似,信号定义也可以设置初始值。定义信号的一般表述是:Signal 信号名:数据类型:=初始值信号赋值语句表达式为:目标信号名=表达式;赋值语句中的表达式可以是一个运算表达式,也可以是数据对象(常量、变量、信号)。数据信息的传入可以设置延时量。所以目标信号获得传入的数据并不是即时的。即使不作任何的延时设置,也要经历一个特定的延时。因此,由于器件的延迟特性,符号“=”两边的数值并不是一致的。所以,两者赋值位置与范围不同,主要体现在三个方面:基本用法:信号用于作为电路中的信号连线;变量用于作为进程中局部数据存储单元。适用范围:信号适用于整个结构体的任何地方;变量只能适用于所定义的进程中。行为特性:信号在进程的最后才对信号赋值;变量是立即赋值的。但也有相同之处,主要体现在两方面:在设计不准确、不完整的计算机条件语句中,变量与信号在经综合后一般均可以存入寄存器,这样也可产生基本相同的逻辑电路。初始值的功效相同。从技术角度来看,没有必须明确要求变量和信号定义的初始值,如果对其进行改变或设置,可能会导致综合后的硬件电路不支持。3 实际案例分析例1:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;q:OUT STD_LOGIC);END mux4;ARCHITECTURE BODY_mux4 OF mux4 ISSignal muxval : integer range 7 downto 0;BEGINPROCESS(i0,i1,i2,i3,a,b)BeginMuxvalqqqqnull;End case;End PROCESS;End BODY_mux4;综合的结果为图2。从上面两个例子的结构可以看出,设计者的用意是想要设计一个4选1多路选择器,对应的电路理应是一个纯组合电路,其中的a和b是通道选通的控制信号。例一与例二的主要不同在于,例一中将标识符muxval定义为信号,而例二中将其定义为变量。结果综合出了完全不同的电路。综合后的电路图如图1和图2所示。可以从电路图中看出,图1中含有时序电路,而图2是纯组合电路。例一中,信号muxval在进程中出现了三次赋值操作,即有三个赋值源:muxval=0、muxval=muxval+1和 muxval=muxval+2,但根据进程中信号的赋值规则,前两个赋值语句中的赋值目标信号muxval都不可能得到更新,只有最后的muxval=muxval+2语句中的muxval的值得到了更新,所以传输符号右边的muxval并未得到任何确定的初值,即并未执行语句muxval=0,结果只能被综合成随b和a变动的时序电路,导致左边的muxval也是一个不确定的信号。结果在进程最后的CASE语句中,无法通过判断muxval的值来确定选通输入,及对q的赋值。例一和例二就有所不同了,程序中首先将muxval定义为变量,根据变量顺序赋值以及暂存数据的规则,首先执行了语句muxval:=0,从而使两个if语句中的muxval都能得到确定的初值。另一方面,当if语句不满足条件时,即当a或b不等于1时,由于muxval已经在第一条赋值语句中被更新为确定的值,即0了,所以尽管两个if语句从表面上看都属于不完整的条件语句,但都不可能被综合成时序电路了,显然从图2可以看到一个纯组合电路。4 结论本文首先通过描述和比较,总结了信号和变量在定义和赋值范围上的不同与相同,然后经过程序和综合结果的比较,总结了变量与信号的其他区别,可以看出,若是信号和变量定义不够精确和完整,很容易给设计结果造成损失,综合的电路也会完全不同。因此,技术人员在用VHDL语言设计芯片或集成电路的程序时,要确保信号和变量的恰当、正确使用,在VHDL语言设计中,要能够熟练准确地使用信号或变量的系统默认值,尽可能地灵活实现设计的目标。参考文献:1潘松,黄继业.EDA技术实用教程M.北京:科学出版社,2005.2曾繁泰.EDA工程的理论与实践M.北京:电子工业出版社,2004.3徐惠民.数字逻辑设计与VHDL描述M.北京:机械工业出版社,2004.4江国强编著.EDA技术与应用M.北京:电子工业出版社,2004.5姜立东等编著.VHDL语言程序设计及应用 第二版M.2004年06月.6黄智伟.全国大学生电子设计竞赛训练教程M.北京:电子工业出版社,2005:241-242.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!