VHDL语言范文(精选10篇)
VHDL语言 第1篇
1. VHDL的特点
1.1 功能强大。
与其它的硬件描述语言相比,VHDL具有更强的描述能力和语言结构,可以用简洁的源代码描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后直接生成电路级描述。
1.2 系统硬件描述能力强。
VHDL具有丰富的数据类型、丰富的仿真语句和库函数,它在任何大系统的设计早期就能查验设计系统功能的可行性,随时可对设计进行仿真模拟。
1.3 设计与工艺无关。
用VHDL进行硬件电路设计时,我们并不需要首先考虑选择完成设计的器件。VHDL的硬件描述与具体的工艺和硬件结构无关,因此VHDL设计程序的硬件实现目标器件有广阔的选择范围。
1.4 设计方法灵活,易于修改。
VHDL语言标准、规范,大多数EDA工具都支持VHDL。在硬件设计过程中,用VHDL语言编写的源程序便于管理,VHDL易读、结构模块化、方便修改、交流和保存。
1.5 支持广泛,移植能力强。
VHDL是一个标准语言,在电子设计领域为众多的EDA工具支持,因此移植能力好。
2. VHDL的基本结构
完整的VHDL程序一般由库、实体、结构体三个最基本的部分构成。
2.1 库(Library)。
在库内存放了可被其他VHDL程序调用的数据定义、器件说明、程序包等资源,库的种类很多,在安装元件库的目录下有VHDL87或VHDL93文件夹,里面包括IEEE、Altera、IPM、STD四个库。
2.2 实体(Entity)。
它仅定义设计模块输入/输出信号,不涉及模块内部逻辑功能的实现。
2.3 结构体(Architectrue)。
它描述设计模块的逻辑功能,结构体必须和实体相联系,确定实体定义的输入与输出信号的逻辑关系,一个设计实体可以有多个结构体。
3. VHDL的设计流程
在VHDL的设计过程中,我们采用自顶向下的方法,首先从系统设计入手,在顶层进行功能方框图的划分,其次对各模块进行设计并仿真,再次综合进行门级仿真,如果没有错误即可下载,最后实现电路。用VHDL设计数字系统的流程如下:
输入源程序编译源程序仿真综合门级仿真物理设计时序仿真
4. VHDL的应用实例24进制计数器
我们可以通过MAX+Plusll平台的编译、仿真,得到仿真波形图(图1),在仿真无误的情况下,编程下载到器件芯片(图2)。
24进制计数器VHDL程序描述如下:
通过以上实例,我们可以看到,VHDL语言具有良好的电路行为描述能力和系统描述能力,利用VHDL语言设计数字电路更为灵活方便,设计周期也大大减小。目前,国际上用VHDL进行系统逻辑设计成为流行方式,学会VHDL及其设计方法也是新的潮流。VHDL将成为数字系统设计领域中所有技术人员必须掌握的一种语言。
摘要:本文简要讲述了VHDL语言的特点、基本结构和设计流程, 通过实例“24进制计数器”介绍了在MAX+plusⅡ环境下运用VHDL语言设计实际电路的具体方法和步骤。
关键词:VHDL,数字电路,设计流程
参考文献
[1]程云长.可编程逻辑器件与VHDL语言.北京科学出版社, 2002.
VHDL简答题总结 第2篇
Bit只是一个逻辑型变量,只能存在“0”和“1”,不存在不定状态和高阻态
STD_LOGIC存在U初始值,X不定,0,1,Z高阻 W弱信号不定,L弱信号1,H弱信号0,-不可能情况 2 信号和变量的异同?
延时:变量无延时 信号有延时
位置:变量在PROCESS 信号ARCHITECTUUE SIGNAL BEGIN
信号可以是全局量,只要在构造体中已定义,那么构造体内的所有地方都可以使用;变量是局部量,只能在进程、子程序中定义和使用。如果将结果带出外部,则必须将变量付给一个信号量才行。3 VHDL基本顺序和并行语句有哪些?
顺序描述语句:WAIT语句,断言语句,信号带入语句,变量赋值语句,IF语句,CASE语句,LOOP语句,NEXT语句,EXIT语句,进程调用语句,NULL语句
并行语句:进程语句,并发信号带入语句,条件信号带入语句,选择信号带入语句,并发调用语句,块语句 4 利用VHDL进行硬件设计的流程?
规格设计——行为级描述——行为级仿真——RTL级描述——RTL级仿真——逻辑综合优化——门及仿真,定时检查——输出门级网络表 5 基本硬件描述语言有哪些?
VHDL和Verilog HDL 及日本电子振兴协会开发的UDL/I语言 6 VHDL所包含库的种类有哪些?
IEEE库
STD库是VHDL的标准配置
ASIC逻辑门库
WORK库现行作业库 7 IEEE库中所包含基本类型转换函数有那些? STD_LOGIC_1164包集合
TO_STDLOGICVECTOR(A)由BIT_VECTOR变换为STD_LOGIC_VECTOR TO_BITVECTOR(A)由STD_LOGIC_VECTOR转换为BIT_VECTOR TO_STDLOGIC(A)由BIT转换为STD_LOGIC TO_BIT(A)由STD_LOGIC转换为BIT STD_LOGIC_ARITH包集合
CONV_STD_LOGIC_VECTOR(A,位长)由INTEGER、UNSIGNED、SIGNED转变为STD_LOGIC_VECTOR CON_INTEGER(A)由UNSIGNED、SIGNED转变为INTEGER STD_LOGIC_UNSIGNED包集合
CONV_INTEGER(A)由STD_LOGIC_VECTOR转变为INTEGER 8 简述基本的VHDL的程序结构有那些?
一个完整的VHDL程序包含实体(ENTITY),构造体(ARCHITECTURE),配置(CONFIGURATION),包集合(PACKAGE),库(LIBRARY)9 VHDL程序包含程序子结构有那些?
子程序是一个VHDL程序模块,这个模块利用顺序语句来定义和完成算法,因此只能使用顺序语句。VHDL子程序与其他软件语言程序中的子程序的应用目的是相似的,能更有效地完成重复性的工作。子程序有两种类型,即过程process和函数function 10 简述when else与if else的差别?
后者只能在进程内部中使用(因为是顺序结构),前者的else一定有,但if可以省略,when语句不可嵌套,而if则不然 什么是ASIC及ASIC的特点?
VHDL在数字电路设计中的应用 第3篇
关键词:VHDL 数字电路 MAX+plusⅡ 仿真
0 引言
VHDL是70年代末和80年代初,由美国国防部为超高速集成电路VHSIC(Very Hight Speed Intergrated Circuit)计划提出的硬件描述语言VHDL(VHSIC Hardware Description Language)。1983年7月,由Intermetrics公司和Texas Instruments公司组成开发小组,承担了提出语言版本并开发其软件环境的任务。其目的在于所开发的硬件描述语言具有功能强大、严格、可读性好、通用性好、移植性好等特点,避免重复劳动,省时省力并能降低开发电子新产品的费用。利用计算机辅助设计自上而下的逐层完成相应的描述,并与大规模可编程器件相结合,使设计出的电路系统速度更快、体积更小、重量更轻、功耗更小、稳定性更高,大大提高了产品的竞争能力。VHDL语言已日益成为一种通用的硬件设计交换媒介, MAX+PLUSⅡ计算机辅助工程软件,提供了全面的逻辑设计能力,从编辑、综合、布线到仿真、下载验证一气呵成,十分方便。
1 VHDL语言特点:
传统的设计方法是基于中小规模集成电路器件进行设计(如74系列及其改进系列、CC4000系列、74HC系列等都属于通用型数字集成电路),而且是采用自底向上进行设计:①首先确定可用的元器件;②根据这些器件进行逻辑设计,完成各模块;③将各模块进行连接,最后形成系统;④而后经调试、测量观察整个系统是否达到规定的性能指标。
VHDL与电路图设计电路的方式不同,和电路图设计方式相比,具有以下特点:①易于修改;②设计能力更强;③VHDL语言很方便:独立于器件设计;相同的程序代码可以用于不同厂家生产的器件。④VHDL具有电路仿真与验证功能,仿真结果直观、形象。
2 VHDL程序的基本结构:
VHDL程序的基本结构可分为:①LIBRARY和PACHAGE声明区;②ENTITY定义区;③ARCHITECTURE定义区;④CONFIGURATION定义区。
2.1 LIBRARY和PACKAGE声明区:Library(库)是用于存放预先编译好的Package(程序包)。Package(程序包)中定义了基本的常数,数据类型,元件及子程序等。作用:声明在实体和结构体定义中将用到的数据类型、元件或子程序等。
声明格式:Library 库名;Use 库名. PACKAGE名.All;
2.2 ENTITY定义区:ENTITY(实体)用于定义电路的外观,即I/O端口的类型和数量。
定义格式:Entity 实体名 is。Port(a:inbit;b:in bit;c:out bit);
End 实体名;其中a、b、c是端口名,in、out是端口模式,bit是数据类型。
2.3 ARCHITECTURE定义区:定义了实体的实现。即电路的具体描述,说明电路执行什么动作或实现功能。
定义格式:Architecture 结构体名 of 实体名 is
[声明语句;(内部信号、变量、常数,元件,子程序声明)]
Begin并行描述语句;End 结构体名;
2.4 CONFIGURATION定义区:当实体有多个结构体时,系统默认实体选用最后一个结构体,利用CONFIGURATION语句可以任意选择采用哪一个结构体。
定义格式:Configuration 配置名 of 实体名 is
for选用的结构体名end for;end configuration 配置名;
3 十进制计数器的VHDL程序设计:
下面以十进制计数器为例简单的介绍一下,用VHDL语言进行电路设计的具体过程。
3.1 功能:此十进制计数器的有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时禁止计数。
3.2 语言程序设计:library ieee;use ieee.std_logic_1164.all;→library声明区;entity cnt10 isport(clk,clr,ena:in std_logic;—计数、清零、计数使能信号;co:out std_logic;—计数进位;cq:out integer range 0 to 15);—4位计数结果输出end cnt10;entity定义区architecture behav of cnt10 is signal cqi:integer range 0 to 15;begin process(clk,clr,ena)begin if clk=‘1 then cqi<=0;—计数器异步清零elsif clk'event and clk=‘1 then if ena='1' then if cqi<9 then cqi<=cqi+1;—等于9,则清零else cqi<=0;end if;end if;end if;end process;process(cqi)beginif cqi=9 then co<=‘1;—进位输出else co<=‘0;end if;end process;cq<=cqi;end behav;architecture定义区
3.3 VHDL语言的开发环境:以MAX+plusⅡ作为运行环境,支持原理图、VHDL和Verilog语言文本文件,以及波形与EDIF等格式的文件作为设计输入,并支持这些文件的任意混合设计。MAX+plusⅡ具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果。在MAX+plusⅡ环境下用VHDL语言设计电路的全过程包括以下几个步骤:①源文件的编辑:点击“新建文件夹”在对话框中选择“Text Editor file ”,按 “OK”按钮,即选中了文本编辑方式。然后将上述程序输入。输入完毕后,选择菜单“File→Save”,出现对话框,然后在“File Name”框中输入文件名,然后按“OK”,文件即被存入。②系统的编译:在编译系统文件F_ADDER.GDF前,需要设置该文件为顶层文件Project。选择菜单“File”→“Project”→“Set Project to Current File”,当前的工程即被设为F_ADDER。选择“MAX+plusⅡ”→“Compiler”菜单,可运行编译器,检验程序是否正确。③系统仿真:选择菜单“File”→“New”,在对话框中选择“Waveform Editor File”,按“OK”后将出现波形编辑器子窗口。选择菜单“Node”→“Enter Nodes from SNF”,在出现的对话框中选择“list”键,然后按“=〉”按钮,在按下“OK”键,选中的信号将出现在波形编辑器中。编辑好输入信号保存,再按下“MAX+plusⅡ”→“simulator”出现仿真结果。
CNT10的仿真波形如图1:
该仿真波形,很直观的将十位计数器的计数过程展现出来,同时也验证了vhdl程序设计的可实现性。④系统下载:程序设计成功后,就可以下载到芯片上进行实验操作了。如果MAX+plusⅡ是安装后第一次调用编程器,则MAX+plusⅡ讲弹出对话框选择型号,以便调用正确的编程器驱动程序。其选择方法是启动“Programmer”,选菜单“Options”→“Hardware Setup”,在“Hardware Type”下拉栏中选“ByteBlaster”,按“OK”即可。用鼠标双击编程器子窗口或者选择“MAX+plusⅡ”→“Programmer”菜单,可调出编程器(Programmer)窗口。在将设计文件编程配置进硬件芯片前,需连接好硬件测试系统。一切连接就绪后,方可按下编程器窗口中的“Configure”按钮,无误后,即可将所涉及的内容下载到芯片中。下载成功后弹出的小窗口中显示“Configuration Complete”。接下去就可以在实验系统上进行实验验证。
4 小结
通过对十进制计数器的VHDL的仿真实现,简单的介绍了用VHDL语言进行数字电路设计的方法、步骤,表明了VHDL在数字电子电路的设计中具有设计方法灵活、硬件描述能力强、仿真结果直观等特点。随着集成电路技术的高速发展,数字系统迅速朝着更高集成度、超小型化、高性能、高可靠性和低功耗的系统级芯片方向发展,从而使电路设计逐步向高层设计转移。作为一种设计技术,VHDL已成为数字电路设计时一种重要的方法,为我们的学习、工作提供了很大的帮助。
参考文献:
[1]曾繁泰,陈美金编著.VHDL程序设计.清华大学出版社.2000.
[2]刘润华,单亦先编著.电子设计自动化.石油大学出版社.2001.9:35-41.
[3]谭会生,张昌凡编著.EDA技术与应用.西安电子科技大学出版社.2001.
[4]王振红编著.VHDL数字电路设计与应用实践教程.机械工业出版社.2003.6.
VHDL语言与数字系统的设计 第4篇
1 VHDL的由来
VHDL是一项诞生于美国国防部所支持的研究计划, 目的是为了把电子电路的设计意义以文字或文件的方式保存下来, 以便其他人能轻易地了解电路的意义。
1985年完成第一版的硬件描述语言, 两年后 (1987) 成为IEEE标准, 即IEEE1076标准。1988年, 美国国防部规定所有官方的A-SIC设计都必须以VHDL为设计描述语言, 所以VHDL就渐渐成为工业界的标准。之后于1993年增修为众所周知的IEEE1164标准, 1996年, IEEE又将电路合成的标准程序与规格加入至VHDL硬件描述语言中, 成为IEEE1076.3标准。
2 VHDL语言的特点
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用, 它自身必然具有很多其他硬件描述语言所不具备的优点, 归纳起来, VHDL语言主要具有以下的优点:
2.1 VHDL语言功能强大, 设计方式多样
VHDL语言具有强大的语言结构, 只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时, 它还具有多层次的电路设计描述功能。此外, VHDL语言能够同时支持同步电路、异步电路和随机电路的设计, 这是其他硬件描述语言所不能比拟的。VHDL语言设计方法灵活多样, 既支持自顶向下的设计方式, 也支持自底向上的设计方法, 即支持模块化设计方法, 也支持层次化设计方法。
2.2 VHDL语言具有强大的硬件描述能力
VHDL语言具有多层次的电路设计描述功能, 既可描述系统级电路, 也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述, 也可以采用三者的混合描述, 同时, VHDL语言也支持惯性延迟和传输延迟, 这样可以准确地建立硬件电路的模型。VHDL语言的强大描述能力还体现在他具有丰富的数据类型。VHDL语言既支持标准定义的数据类型, 也支持用户定义的数据类型, 这样会给硬件描述带来较大的自由度。
2.3 VHDL语言具有很强大的移植能力
VHDL语言很强大的移植能力主要体现在:对于同一个硬件电路的VHDL语言描述, 它可以从一个模拟器移植到另一个模拟器上, 从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。
2.4 VHDL语言的设计描述与器件无关
采用VHDL语言描述硬件电路时, 设计人员并不需要首先考虑选择进行设计的器件。
2.5 VHDL语言程序易于共享和复用
VHDL的缺点:
1) VHDL语言有时不能准确地描述硬件电路;
2) VHDL语言的系统级抽象描述能力较差;
3) VHDL语言不能描述模拟电路。
3 IEEE1076标准对于基本逻辑模块的描述
该标准对于VHDL语言的符号和基本语法给予说明和注解, 概括如下:
标准库:ieee.std_logic_1164 ieee.std_logic_arith ieee.std_logic_s igne d
ieee.std_logic_uns igned
3.1 算术运算及类型
signed和unsigned
s igne d:有符号二进制数, 其最高位代表符号, 0’表示负数, 1’表示正数;
uns igne d:无符号二进制数, 仅表示除负数外的正数和0’。
算术及比较运算符:算术运算符:+、-、﹠;比较运算符:<、<=、>、>=、=;
3.2 逻辑运算符
AND, NAND, OR, NOR, XOR, XNOR, NOT。
3.3 组合逻辑语法
a.并行语句;b.顺序语句。
4 仿真软件
VHDL语言编写的程序输入完成后, 首先要经对编写程序进行编译, 通常采用的是美国Altera公司的MAX+PLUS2II开发软件, 经该软件中的Compiler编译器编译后, 若有任何信息、错误和警告, 都将在VHDL编译器窗口上提示, 可根据提示对设计进行修改。当程序编译通过时, 建网表、逻辑综合、适配、划分、时域分析、装配等均已自动完成, 并生成多个后续工作要用的文件。编译的成功表明已为所设计的项目建立了一个编程文件, 但还不能保证该设计在各种可能的情况下都有正确的响应, 因而编译通过后, 还必须用MAX+PLUSII的Sim ulator仿真器和Tim ing Analyze r工具分别进行功能仿真和时序仿真, 仿真是为了验证所编写的VHDL语言程序的功能是否正确。在MUX+PLUS的工具中仿真输入信号是通过波形编辑器生成*.s cf文件的。*.scf文件和编译生成的文件连接就可以实现程序的仿真。VHDL语言程序的仿真过程大致可以分生成仿真波形文件、仿真和定时分析3个步骤。若发现有问题, 则必须返回原设计进行修改。
在电子技术快速发展的今天, 电子产品越来越复杂, 设计周期越来越短。以前仅依靠个人经验进行设计已经很难满足要求, 只有进行标准化的模块设计才有可能摆脱低效率和重复性的工作, 而VHDL语言正是提供了这样一种强大有力的工具。同时CPLD器件由于其极佳的性能, 不断增加的密度以及可系统内编程等特点而不断得到发展。二者相辅相成, 必将电子设计推向一个新的时代。
参考文献
[1]卢毅.VHDL与数字电路设计[M].科学出版社, 2001.
VHDL语言 第5篇
摘要:介绍可编程逻辑器件的开发流程,叙述EDA工具QuartusII和LeonardoSpectrum在Altera公司CPLD器件开发中的应用,给出提高VHDL综合质量的几点经验。
关键词:电子设计自动化可编程逻辑器件硬件描述语言逻辑综合
引言
随着计算机与微电子技术的发展,电子设计自动化EDA(ElectronicDesignAutomation)和可编程逻辑器件PLD(ProgrammableLogicDevice)的发展都非常迅速,熟练地利用EDA软件进行PLD器件开发已成为电子工程师必须掌握的基本技能。先进的EDA工具已经从传统的自下而上的设计方法改变为自顶向下的设计方法,以硬件描述语言HDL(HardwareDescriptionLanguage)来描述系统级设计,并支持系统仿真和高层综合。ASIC(ApplicationSpecificIntegratedCircuit)的设计与制造,电子工程师在实验室就可以完成,这都得益于PLD器件的出现及功能强大的EDA软件的支持。现在应用最广泛的高密度PLD器件主要是现场可编程门阵列FPGA(FieldProgrammableGateArray)和复杂可编程逻辑器件CPLD(ComplexProgrammableLogicDevice)。
EDA软件方面,大体可以分为两类:
①PLD器件厂商提供的EDA工具。较著名的如:Altera公司的Max+plusII和QuartusII、Xilinx公司的FoundationSeries、Latice-Vantis公司的ispEXERTSystem。
②第三方专业软件公司提供的EDA工具。常用的综合工具软件有:Synopsys公司的FPGACompilerII、ExemplarLogic公司的LeonardoSpectrum、Synplicity公司的Synplify。第三方工具软件是对CPLD/FPGA生产厂家开发软件的补充和优化,如通常认为Max+plusII和QuartusII对VHDL/VerilogHDL逻辑综合能力不强,如果采用专用的HDL工具进行逻辑综合,会有效地提高综合质量。
1PLD器件的开发
CPLD/FPGA设计越来越复杂,使用硬件描述语言设计可编程逻辑电路已经成为大势所趋,目前最主要的硬件描述语言是:VHDL(VeryHighSpeedIntegratedCircuitHDL)和VerilogHDL。两种语言都已被确定为IEEE标准。
用VHDL/VerilogHDL语言开发可编程逻辑电路的完整流程为:
①文本编辑。用任何文本编辑器都可以,但通常在专用的HDL编辑环境中进行。因为专业的集成开发环境通常提供各种结构模板,并且可以自定义各种要素(例如关键字、字符串、注释等)的色彩显示,提高可读性,提高输入效率。
②功能仿真。将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确。
③逻辑优化与综合。将源文件调入逻辑综合软件进行逻辑分析处理,即将高层次描述(行为或数据流级描述)转化为低层次的网表输出(寄存器与门级描述),逻辑综合软件会生成EDIF(ElectronicDesignInterchangeFormat)格式的EDA工业标准文件。这步在PLD开发过程中最为关键,影响综合质量的因素有两个,即代码质量和综合软件性能。
④适配与分割。如果整个设计超出器件的宏单元或I/O单元资源,可以将设计划分到多片同系列的器件中。
⑤装配或布局布线。将EDIF文件调入PLD厂家提供的软件中进行装配(对于CPLD)或布局布线(对于FPGA),即将设计好的逻辑写入CPLD/FPGA器件中。
⑥时序仿真。即延时仿真,由于不同器件、不同布局布线,给延时造成的影响不同,因此对系统进行时序仿真,检验设计性能,消除竞争冒险是必不可少的步骤。
利用VHDL语言进行PLD设计开发的基本流程如图1所示。如果选用Altera公司CPLD器件作为目标器件,上述过程可以在Altera公司提供的Max+plusII或QuartusII集成开发环境中完成,但如果选用专用的`EDA综合工具作为补充,完成逻辑优化与综合,设计质量会更好。第三方综合软件的主要功能就是对HDL语言的源文件进行逻辑综合,生成.edf的EDA工业标准文件,然后在PLD厂家提供的开发软件中调入.edf文件,进行编译、仿真、器件编程等过程,最终完成整个设计。针对Altera公司CPLD器件,我们选用QuartusII+LeonardoSpectrum的EDA组合开发方式,更重要的是,广大学习爱好者可以在www.altera.com网站免费获得。下面对两款软件作简要介绍。
2QuartusII软件的应用
QuartusII是Altera公司的第四代可编程逻辑器件集成开发环境,提供从设计输入到器件编程的全部功能。
QuartusII可以产生并识别EDIF网表文件、VHDL网表文件和VerilogHDL网表文件,为其它EDA工具提供了方便的接口;可以在QuartusII集成环境中自动运行其它EDA工具。
利用QuartusII软件的开发流程可概括为以下几步:设计输入、设计编译、设计定时分析、设计仿真和器件编程。
(1)设计输入
QuartusII软件在File菜单中提供“NewProjectWizard”向导,引导设计者完成项目的创建。当设计者需要向项目中添加新的VHDL文件时,可以通过“New”选项选择添加。
(2)设计编译
QuartusII编译器完成的功能有:检查设计错误、对逻辑进行综合、提取定时信息、在指定的Altera系列器件中进行适配分割,产生的输出文件将用于设计仿真、定时分析及器件编程。
图4LeonardoSpectrum软件AdvancedFlowTabs界面
①首先确定软件处于CompileMode,可以通过Processing菜单进行选择。
②在Processing菜单中选择CompilerSettings项,如图2所示。可以进行器件选择、模式设定、综合和适配选项设定及设计验证等。
③单击Processing菜单下的“StartCompilation”项,开始编译过程。
④查看编译结果。如图3所示,我们可以得到详细的编译报告。
(3)设计定时分析
单击Project菜单下的“TimingSettings”选项,可以方便地完成时间参数的设定。QuartusII软件的定时分析功能在编译过程结束之后自动运行,并在编译报告的TimingAnalyses文件夹中显示,如图3所示。其中我们可以得到最高频率fmax、输入寄存器的建立时间tSU、引脚到引脚延迟tPD、输出寄存器时钟到输出的延迟tCO和输入保持时间tH等时间参数的详细报告,从中可以清楚地判定是否达到系统的定时要求。
(4)设计仿真
QuartusII软件允许设计者使用基于文本的向量文件(.vec)作为仿真器的激励,也可以在QuartusII软件的波形编辑器中产生向量波形文件(.vwf)作为仿真器的激励。波形编辑方式与MAX+PLUSII软件的操作相似。在Processing菜单下选择“SimulateMode”选项进入仿真模式,选择“SimulatorSettings”对话框进行仿真设置。在这里可以选择激励文件、仿真模式(功能仿真或时序仿真)等,单击“RunSimulator”即开始仿真过程。
(5)器件编程
设计者可以将配置数据通过MasterBlaster或ByteBlasterMV通信电缆下载到器件当中,通过被动串行配置模式或JTAG模式对器件进行配置编程,还可以在JTAG模式下给多个器件进行编程。利用QuartusII软件给器件编程或配置时,首先需要打开编程器(在New菜单选项中选择打开ChainDescriptionFile),在编程器中可以进行编程模式设置(Mode下拉框)、硬件配置(ProgrammingHardware对话框)及编程文件选择(AddFile按钮),将以上配置存盘产生.cdf文件,其中存储了器件的名称、器件的设计及硬件设置等编程信息。当以上过程正确无误后,单击Start按钮即可开始对器件进行编程配置。
3LeonardoSpectrum软件的应用
LeonardoSpectrum是MentorGraphics的子公司ExemplarLogic的专业VHDL/VerilogHDL综合软件,简单易用,可控性较强,可以在LeonardoSpectrum中综合优化并产生EDIF文件,作为QuartusII的编译输入。该软件有三种逻辑综合方式:SynthesisWizard(综合向导)、QuickSetup(快速完成)、AdvancedFlowTabs(详细流程)方式。三种方式完成的功能基本相同。SynthesisWizard方式最简单,AdvancedFlowTabs方式则最全面,该方式有六个选项单,如图4所示,分别完成以下功能:器件选择、设计文件输入、约束条件指定、优化选择、输出网表文件设置及选择调用布局布线工具。
以上每步操作都提供相应的帮助,简单明了。需要注意的是,在输入设计文件时要正确排列文件的次序,将底层文件放在前面,顶层文件放到后面,这样LeonardoSpectrum软件才能正确地建立数据信息库。综合完成后,可以将输出网表文件(.EDF)作为MAX+PLUSII或QuartusII的设计输入文件,再完成编译、仿真、定时分析和器件编程等步骤,完成整个系统的设计过程。
(A)(B)(C)(D)
4VHDL编码方式对综合质量的影响
VHDL语言支持全部的仿真功能,但并不是全部可综合的。VHDL程序的许多硬件描述和仿真结构没有对应的数字电路来实现,还有些描述在理论上可以映射为对应的数字电路,但是却不能保证其精确性,比如延时模型。随着综合算法技术水平的提高,针对某些寄存器传输级RTL(RegisterTransferLevel)电路描述可以进行有效的优化,但是对于更普遍的电路描述这还不够,因此综合结果是否满足给定的时间约束条件和面积约束条件,还取决于VHDL编码方式。下面给出几点经验,相信对提高综合质量有所帮助与启发。
(1)资源共享
例如下面的两段代码中,(A)需要2个加法器,而完成同样的功能,略做修改;(B)只需要1个加法器,有效地减少了使用面积。
适当地利用圆括号进行重新组合,有时也可以实现资源的共享。如下面两段代码(C)和(D),(D)中输入信号b和c即可实现加法器的共享。
(2)使用带范围限制的整数
在VHDL中无约束整数的范围是-2147483647~+2147483647。这意味着至少需要32位来表示,但通常这会造成资源的浪费,有些综合软件会自动优化,但所消耗的时间是相当可观的。因此,如果不需要全范围的整型数据,最好指定范围,例如:
signalsmall_int:integerrange255downto0;
small_int在本例中只需要8位,而不是32位,有效地节约了
器件面积。
(3)使用宏模块
当在VHDL中使用算术逻辑、关系逻辑等通用逻辑结构时,多数EDA开发软件及专用综合工具通常包含针对特定工艺的优化宏模块供我们选择,从功能上可分为时序电路宏模块、运算电路宏模块和存储器宏模块,具有很高的执行效率,使得综合结果面积更小、频率更高、所需编译时间更短。当然,它们是针对特定工艺的,这将使VHDL程序依赖于具体的器件系列,影响移植性。
(E)(F)
(4)高级设计优化
上述几种方法是在没有改变其功能性的情况下进行综合优化的,有时候我们可以在不妨碍设计规格约束的前提下,稍微改变其功能,来提高综合效率,参考下面两个例子(E)和(F)。
在(E)中,综合工具建立递增计数器和完整的比较器;在(F)中,综合工具建立递减计数器和对于常数零的比较器。由于和常数作比较更易于实现,且占用逻辑单元更少,因此(F)程序更高效。
另外,由于综合工具只能支持VHDL的子集,为保证在综合前后的仿真保持相同,以下语句在综合中应该避免使用:
◇避免使用waitforxxns,这种语句不会被综合为实际的电路元件;
◇避免使用afterxxns,在综合工具进行综合时,会忽略after语句;
◇避免在信号和变量声明时赋初值,因为大部分综合工具会忽略初始化语句,如果使用初始化语句,那么综合的结果和仿真的结果将会产生差异。
结语
VHDL语言 第6篇
IP核将一些在数字电路中常用。IP核的重用是设计人员赢得迅速上市时间的主要策略。随着CPLD/FPGA的规模越来越大, 设计越来越复杂 (IC的复杂度以每年55%的速率递增, 而设计能力每年仅提高21%) , 设计者的主要任务是在规定的时间周期内完成复杂的设计。调用IP核能避免重复劳动, 大大减轻工程师的负担, 因此使用IP核是一个发展趋势。以下提出了以8031内核为基础的IP Core的设计, 在设计过程中MCU的体系结构、指令完全与8031相同。通过分析把数据处理单元、数据采集单元、数据传输单元、控制信号单元完全集成在一个IP Core中。本论文主要完成了8031 IP Core数据处理单元中各子模块的VHDL代码的实现。最后, 使用quartus进行了仿真验证。
1 系统各功能模块设计实现
本设计共实现了控制单元、算术逻辑单元、RAM和特殊功能寄存器控制单元、外部存储器与程序存储器控制单元、输入输出接口单元、定时器单元、中断服务单元、时钟控制单元八个模块。1.1控制单元。控制逻辑单元主要功能是实现指令的译码、执行指令的控制、读取指令信号的生成、中断信号的处理、程序计数器的控制。1.2算术逻辑单元。算术逻辑单元主要负责算术运算、逻辑运算、布尔运算, 以及对ACC、B与PSW寄存器的读写控制。RAM和特殊功能寄存器控制单元。完成对RAM和特殊功能寄存器的读写信号和地址的生成, 以及对堆栈的控制。本模块主要完成对RAM和特殊功能寄存器的读写信号和地址的生成, 以及对堆栈的控制。在RAM和特殊功能寄存器控制单元中定义的输出信号有:内部数据总线databus;RAM和特殊功能寄存器地址总线ramsfraddr;数据文件接口ramdatao, ramwe, ramoe;特殊功能寄存器接口信息输出信号有特殊动能寄存器的写使能sfrwe, 特殊功能寄存器输出使能sfroe[1];
定义的输入信号有:
CPU输入信号instr, cycle, phase;
RAM和SFR输入信号regsbank, sfrdatai;
程序控制单元的输入信号pclreg, pchreg;
外部内部ROM存储器接口memdatai;
数据存储器接口ramdatai。
特殊功能寄存器接口输入信号有sfrdataalu, sfrdataclk, sfrdataisr, sfrdatamcu, sfrdataports, sfr-
dataser, sfrdatatim, sfrdataext[2];
当要从RAM中读取数据, 并且RAM的地址小于7F时
ram_oe<='0'
否则
sfr_oe<='1'
然后ramdatai寄存器的内容送入data_bus寄存器, 即RAM和特殊功能寄存器送到数据总线上;
RAM和特殊功能寄的写信号ram_we和sfr_we, 当要写RAM并且ram_sfr_address (7) ='0'时
ram_we<='1'
否则
sfr_we<='1'
RAM和特殊功能寄存器控制单元对堆栈的操作中定义了堆栈指针寄存器sp、sp_inc保存sp+'1'、sp_dec保存sp-'1', sp_nxt保存sp变化后的的值。通过堆栈控制信号spince, spdece实现。当指令寄存器中的指令为调用指令和PUSH指令并在相应的时序时
spince<='1'
置位后则使sp_inc寄存器的内容送入sp_nxt寄存器;当指令寄存器中的内容为返回指令和POP指令时
spdece<='1'
置位后sp_dec寄存器的内容送入sp_nx寄存器, 如果sfr_we='1'并且ram_sfr_address (6downto 0) 等于堆栈的地址则sfrdatai值送入sp_nxt。当sfr_we='1'并且ram_sfr_address (6downto 0) 等于堆栈地址则sfrdatai的值送入堆栈否则sp_nxt寄存器的内容送入sp。
RAM和特殊功能寄存器控制单元对RAM和特殊功能寄存器地址的控制过程:首先定义RAM和特殊功能寄存器地址寄存器ram_sfr_address, 特殊功能寄存器地址寄存器sfr_address和特殊功能寄存器总线sfr_bus。当指令寄存器中的指令包含寄存器IR0和IR1时
ram_sfr_address<="000"®sbank&"00"&instr (0)
当指令中的指令为寄存器直接寻址时
ram_sfr_address<="000"®sbank&instr (2 downto 0) [3]
当需要操作堆栈时
ram_sfr_address<=sp_nxt
当要从RAM取地址时
ram_sfr_address<=ramdatai
当要从ROM取地址时
ram_sfr_address<=memdatai
如果指令寄存器中是位操作指令并且memdatai (7) ='0'则
ram_sfr_address<="0010"&memdatai (6downto 3)
如果memdatai (7) ='1'则
ram_sfr_address<='1'&memdatai (6 downto 3) &"000"[4]
外部存储器与程序存储器控制单元
生成PC的值, 生成程序存储器的控制信号, 生成外部数据存储器地址信号, 输出PSEN与ALE信号。
输入输出接口单元
根据控制信号确定输入输出端口的数据。
中断服务单元
检测外部中断与定时器中断, 响应中断请求, 生成中断矢量地址, 控制IE与IP的读写。
该模块的功能有:检测外部中断与定时器中断, 响应中断请求, 生成中断矢量地址, 控制IE与IP的读写[5]。
定时器单元
实现了定时器的内部寄存器定义和定时器模式的设置, 计数方法的实现, TMOD、TCON、T0、T1的读写和一些控制信号的生成。
时钟控制单元
实现对PCON寄存器的读写管理, 输出SMOD信号 (PCON.7) , 生成并输出复位信号使系统复位。
2 仿真结果
由于仿真过程比较复杂, 现只给出部分指令的仿真结果。
如图1, romaddr为片内ROM地址输出信号, 此时EA为1, 先访问片内程序存储器。romdatai是片内ROM数据输入信号。romdatai一直是'00000000'则取到的是NOP指令。仿真波形如图1。
当EA为0时, 只访问片外ROM, 此时指令字节从PO口读入。对上述两条指令的片外ROM的仿真如图2。
图2是对中断的仿真波形图。为了便于仿真, 在程序中将IE设为一直是'11111111'即一直开启所有中断, TCON初始值为全0, 即电平触发方式。在P3.2引脚持续输入高电平, P3.3引脚开始输入高电平, 一段时间后输入低电平, 此时, TCON.3即IE1位变为1, 即外部中断1请求, 一段时间后, CPU响应中断, PC指向013H, 此时EA为低电平, P0口输出地址信号变为从013H即'00010011'开始增加。
结束语
所设计的8031 IP Core采用VHDL语言编写, 可读性好, 易于扩展使用, 易于升级, 更可复用于多种芯片中, 非常适于基于IP核复用技术的So C设计。采用EDA工具对整个微控制器内核进行了较完整的软件仿真验证。验证结果表明:所设计的微处理器核在最高时钟频率和最高指令执行速度方面均优于传统典型微控制器MCS-8031内核。
摘要:以VHDL语言为手段, 设计实现8031 IP Core的部分功能, 使用quartus完成仿真验证工作。论文的MCU逻辑设计中提供IP Core, 具有广泛的应用价值。本设计完全满足标准的8031的功能、时序要求, 实现了8031内部特殊功能寄存器、程序存储器、数据存储器、指令译码单元、算术逻辑运算单元、控制单元、数据总线、地址总线、程序地址总线等功能。该方法具有传统逻辑设计方法所无法比拟的优越性。
关键词:超高速集成电路硬件描述语言,8031 IP Core,仿真,微控制器
参考文献
[1]吴静, 李树荣, 姚素英等.基于一种RISC结构单片机的数字乘法器的设计[J].微电子学, 2004, 5.
[2]张振荣, 晋明武, 王毅平.MSS-51单片机原理及实用技术[M].北京:人民邮电出版社, 2000.
[3]黄鹤, 杜永强.VHDL在CPLD和FPGA设计中的应用[J].雷达与对抗, 2000.
[4]李广军, 孟宪元.可编程ASIC设计及应用[M].成都:电子科技大学出版社, 2004.
VHDL语言 第7篇
关键词:VHDL语言,视频图像,FPGA
高速视频图像的帧频一般为50帧/秒。每一帧图像的数据量都很大, 像素级的图像处理算法的计算量也很大, 通常情况下一秒钟内很难完成对50帧图像的处理计算工作。目前的高速图像处理技术通常使用软件或是硬件实现, 软件方案的特点是:图像处理运算在通用CPU上通过运行程序实现;成本低使用灵活, 但其处理速度往往达不到高速处理的要求。硬件方案的特点是:图像处理运算大多采用专用的ASIC器件实现的, 虽然在速度及并行处理方面得到提升, 但存在开发成本高、修改不方便等不足。现场可编程门阵列 (FPGA) 是一种特殊的VLSI器件, 它恰好兼顾了软硬件方案的优点。设计者可以先设计出实现某一图像处理运算算法的专用逻辑电路, 然后用VHDL语言编程并在FPGA上实现。FPGA在技术要求改变时可以重新编程重新配置, 其不仅在嵌入式系统得到了良好的应用, 也越来越多的应用于高速图像处理。
一、图像处理的方案选择[1]
高速的视频图像处理, 在速度和并行运算方面要求都很高。通常的软件系统可以迅速开发出图像处理软件, 具有很好的调试和测试功能, 但是无法满足实时性要求。由于通用PC机是单指令流的串行通用设备, 不支持并行运算, 速度慢资源, 利用率低, 因此可以用作离线处理而不适于用做高速实时图像处理。
ASIC是定制的专用器件, 虽然性能很好, 但用ASIC也比较难于实现复杂的运算, 而且技术要求的改变和设计修改都意味着要推倒重来, 开发的成本高、周期长。因此, ASIC适用于产品而不适用于研发。
数字信号处理器 (DSP) 是单指令流的串行器件, 不支持并行运算, 其数据吞吐率和资源利用率都比较低, 因此对于大数据量高计算量的视频图像处理, DSP的实时性并不理想。
应用FPGA可以解决高速视频图像处理必须满足实时性的问题。目前F P G A主要有两个系列, 一个是Xilinx公司的VIRTEX系列, 器件的密度达5万到1兆门, 工作频率高达200MHZ, 且PCI兼容。另一个是Altera公司的Cyclone系列, 器件密度从20万到2兆等效门, 本身含有查找表、乘积项逻辑和嵌入式存储器。而且市场上越来越多的IP (Intellectual Property) 核、电路图、用硬件描述语言VHDL写成的软件包, 也可以缩短开发周期。
硬件系统开发通常要使用硬件描述语言比如VHDL、Verilog等。Model Sim是著名的硬件描述语言仿真软件, 可以实现VHDL、Verilog以及VHDL-Verilog混合设计, 还能够与C/C++语言一起实现对HDL设计文件的协同仿真。同时, 相对于大多数仿真软件来说, Model Sim在速度上也有明显优势。这些特点尤其受到EDA设计者的青睐。
二、图像处理运算的算法实现
本文以视频图像处理中常用的图像重心计算和Hough变换为例, 设计基于FPGA的算法。
1. 图像重心的计算[2,3]
令W和H是一幅灰度图像的宽和高, 而函数值g (x, y) 是点 (x, y) 处的像素值。那么图像的重心坐标 (Cx, Cy) 满足公式:
计算图像重心需要作三次加法两次除法。值得注意的是加法运算Wx, Wv, W可以与图像采集同时进行。虽然两次除法必须在图像采集之后才能进行, 但是除法运算可以并行完成。因此图像重心计算可以在图像采集之后完成一次除法运算所需要的时间内完成。图1是重心计算的逻辑电路图。该电路有4个输入信号, START, X, Y, G, 三个输出信号, COG_X, COG_Y, 和COMPLETE。信号START触发计算开始, X, Y表示像素坐标, 信号G表示点 (x, y) 的像素值。COG_X, COG_Y表示重心坐标, 信号OK用于通知计算完成。模块SUM与图像采集一起按上述方程计算Wx, Wv, W。在加法运算完成后由信号div_start触发模块div进行除法运算。
2. Hough变换[3,4]
Hough变换是一种应用广泛的基本视频图像运算。比如用它可以确定平面运动物体的位置和方向, 并且具有良好的抗干扰特性。Hough变换花费时间虽然很长, 但是却具有良好的并行特性, 这意味着借用FPGA的并行运算的特点实现Hough变换可以大大提高运算速度。Hough变换是从离散图像g (x, y) 到Hough空间H (ρ, θ) 之间的一种映射。首先我们计算满足下列条件的ρ, θ:
对满足上述条件的ρ和θ使H (ρ, θ) 增加像素值g (x, y) , 这一运算称为投票运算 (voting) 。对离散图像的所有网格点进行投票就得到了离散图像的Hough变换。上述方程代表一组相交于点 (x, y) 的直线。ρ表示直线上一点到原点的距离, 而θ表示直线与x轴的夹角。
图2是Hough变换的原理电路。将区间[0, 2]分为K段, 令△θ=2/K。则角度θ取离散值k△θ (k=0, 1, …, K-1) 。模块voting (k) 完成对应kθ的计算, 如图3所示。角度k△θ的Hough变换的结果存在缓冲存储器hough_buf (k) 中。模块voting (k) 含有数值Ck=cos (k△θ) 和Sk=sin (k△θ) 。模块calc_rho计算ρk=Cky-Skx, 即信号RHO_k。在完成计算ρk之后, 缓存hough_buf (k) 被修改。首先把信号RHO_k与距离ρk相应的积分值从缓存中读出, 积分值增加信号G给出的g (x, y) 。然后被修改的积分值又被存入缓存。对应角度k△θ (k=0, 1, …, K-1) 上述计算可以并行地完成。因此, Hough变换可以用并行连接的电路voting (0) 到voting (K-1) 和缓存hough_buf (0) 到hough (K-1) 完成。
3. VHDL实现
实验过程中对磨损钢轨的断面轮廓进行了仿真。如图5所示, 图中白亮光带表示原始图像即为要处理的目标, 细点轮廓即为处理完的结果显示。下面用Verilog语言实现图像文件dat.txt的目标定位、处理、投票算法及坐标转换等功能。图4所示为投票计算的中间过程。
`timescale 1 ns/100 ps
module fpgatest;
parameter T=200;
parameter Amin=144;
parameter Amax=301;
parameter Xmax=768;
parameter Ymax=576;
parameter HW=80;
parameter VW=40;
reg ck, HB, VB;
reg[9:0]x, y;
reg[7:0]mem[0:307199];
reg[7:0]gray;
wire[31:0]Nx, Ny, De;
integer cntx, cnty;
vlgfpga tkvlg (ck, x, y, gray, HB, VB, Nx, Ny, De) ;
initialfork
ck=0;
HB=0;
VB=0;
cntx=0;
cnty=0;
x=0;
y=0;
$readmemh ("dat.txt", mem) ;
join
always#20 ck=~ck;
always@ (negedge ck)
begin
if ( (x<640) && (y<480) )
gray=mem[y*640+x];
else gray=0;
end
always@ (ck)
begin
if ( (cntx> (Xmax-HW) ) && (HB==0) ) HB=1;
else if (ck==0)
begin
x=cntx;
cntx=cntx+1;
end
if ( (cntx> (Xmax-1) ) && (HB==1) )
begin
HB=0;
cntx=0;
end
end
always@ (HB)
begin
y=cnty;
if (HB==1) cnty=cnty+1;
if (cnty> (Ymax-VW) ) VB=1;
if (cnty> (Ymax-1) )
begin
VB=0;
cnty=0;
end
end
endmodule
三、仿真
由于图像数据量大、计算复杂, 用VC++软件仿真测试单帧图像的处理速度在140~210毫秒范围, 无法实时地处理50帧/s的高速视频图像。将软件仿真后的图像处理算法用Verilog语言实现, 使用Altera公司的Cyclone II芯片, 并在Modelsim5.6下仿真, 测试结果显示单帧图像处理速度达到15毫秒左右, 满足了实时性要求。
参考文献
[1]鲁欣, 赵亦工, 徐秀红.数字电路设计方案的比较与选择[J].电子技术应用, 2002
[2]Shinichi Hirai, Masakazu Zakouji, Tat suhiko Tsuboi.Implementing Image Process ing Algorithms on FPGA-based Real-time Visi on System[J].Ritsumeikan University Kusatsu, 2002.
[3]Anthony Edward Nelson.Implemnetation Image Processing Algorithms on FPGA Hardwa re[J].Electrical Engineering, May2000.
VHDL语言 第8篇
关键词:VHDL,数字电路,设计
1 引言
近年来,随着数字集成电路技术的发展,用以前传统的方法进行芯片或系统设计已不能满足要求,迫切需要提高设计效率。能大大降低设计难度的VHDL设计方法正在被越来越广泛的采用。VHDL即超高速集成电路硬件描述语言,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订。从更高的抽象层次和系统描述能力上扩展VHDL的内容。公布了新版本的VHDL,即IEEE标准的1076-1993版本。现在,VHDL作为IEEE的工业标准硬件描述语言,已成为通用硬件描述语言。
以下详细介绍了利用VHDL语言设计数字系统的方法,并给出了设计实例。
2 VHDL的特点及其设计方法
VHDL语言主要用于描述数字系统的结构、行为、功能和接口,与其他硬件描述语言相比,VHDL语言有如下优越之处:
(1)VHDL语言支持自上而下(Top Down)和基于库(Library-Base)的设计方法,还支持同步电路、异步电路、FPGA以及其他随机电路的设计;
(2)VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路,其高层次的行为描述可以与低层次的RTL描述和结构描述混合使用,还可以自定义数据类型,给编程人员带来较大的自由和方便;
(3)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必关心最终设计实现的目标器件是什么;
(4)VHDL具有电路仿真与验证功能,可以保证设计的正确性,用户甚至不必编写如何测试相量便可以进行源代码级的调试,而且设计者可以非常方便地比较各种方案之间的可行性及其优劣,不需做任何实际的电路实验;
(5)VHDI语言可以与工艺无关编程;
(6)VHDL语言标准、规范,易于共享和复用。
VHDL语言的设计方法是一种高层次的设计方法,也称为系统级的设计方法,其设计步骤如下:
2.1 按照“自顶向下”的设计方法进行系统划分。
2.2 输入VHDL语言代码。
2.3 将以上的设计输入编译成标准的VHDL文件。
2.4 用综合器对VHDL源代码进行综合优化处理,生成门级描述的网表文件。
2.5 利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作。
2.6 将适配器产生的器件编成文件通过编程器或下载电缆到目标芯片FPGA或CPLD中。
3 设计实例分析
下面我们就用数字电路中的常见的4选1数据选择器作为设计目标。4选l数据选择器:输入信号4路,控制信号2路,输出信号l路,4选l数据选择器的VHDL程序设计如下:
可见程序是相当简单而且逻辑清晰的,这种自顶向下的设计方法使一个大型的系统设计分解为若干个可操做的模块,易于分工合作,并且可以对这些模块分别进行模拟仿真。由于设计的主要模拟仿真是在高层上实现的.所以能及早地发现系统中的错误并改正,提高设计的效率。
我们再用VHDL语言设计空调机控制器。空调机控制器原理如图1所示,它的两个输入来自温度传感器,用于监测室内温度。如果室内温度正常,则temp_high和temp_low均为'0';如果室内温度过高,则temp_high为'1',图1空调机控制器原理图temp_low为'0';如果室内温度过低,则temp_high为'0',temp_low为'1'。根据temp_high和temp_low的值来决定当前的工作状态,并给出相应的制冷(coo1)和制热(heat)输出信号。
利用Max+plusⅡ软件工具对所编程序进行编译、仿真。仿真结果如图2所示,当temp_low为“1”,即温度过低,则heat为“1”(制热);当temp_high为“1”,即温度过高,则cool为“1”(制冷)。经综合后的仿真分析表明,该方案是合理可行的。通过仿真后,即可编程下载。
通过对空调器控制器电路的VHDL的仿真实现,表明VHDL在数字电子电路的设计中具有硬件描述能力强、设计方法灵活、易于修改等特点。
结论
随着信息技术、计算机技术、大规模集成电路的发展和硬件描述语言的出现,数字系统的硬件设计作用于软件设计完全可以实现。VHDL语言具有与具体硬件无关和与设计平台无关的特性,并具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。作为一种重要的高层次设计技术,VHDL已成为当代电子设计师设计数字硬件时必须掌握的一种方法。
参考文献
[1]康华光.电子技术基础[M].北京:高等教育出版社,1998.
[2]江冰.电子技术基础及应用[M].北京:机械工业出版社,2001.
[3]陈耀和.VHDL语言设计技术[M].北京:电子工业出版社.
VHDL语言 第9篇
关键词:VHDL,自顶向下,频率计
相比传统的电路系统的设计方法,EDA技术采用硬件描述语言描述电路系统,包括电路的结构、行为方式、逻辑功能及接口。VHDL具有多层次描述系统硬件功能的能力,支持自顶向下和基于库的设计特点。设计者不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的ASIC的设计[1]。
运用现代电子设计工具,采用VHDL语言在CPLD器件上实现频率计的设计,能够进行4位十进制数字显示,其频率测量范围为10~9999k Hz,测量单位为k Hz。量程能够自动转换(即测几十到几百千赫兹(k Hz)时有小数点显示,前者显示小数点后2位,后者显示小数点后1位)。具有体积小、可靠性高、功耗低的特点。
1 设计原理
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1s。闸门时间也可以大于或小于1s。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长[2]。闸门时间越短,测得频率值刷新就越快,但测得的频率精度就受影响。
根据频率计的原理,考虑到频率计设计的要求,频率计设计的总体框图如图1所示。
2 设计思路
在设计考虑中将时钟分到5Hz,形成一个固定的0.2s的闸门时间,被测信号通过0.1s的闸门进入计数器进行计数,而在0.1s的低电平内不计数,将计数器清零,以便下一次计数。为满足题意,被测信号为几十千赫兹(KHZ)时,显示##.##k Hz;被测信号为几百千赫兹(k Hz)时,显示###.#k Hz;被测信号为几千千赫兹(k HZ)时,显示####k Hz。采用时分复用的方法控制4个数码管的显示。
该系统共有5个模块组成,分别为分频模块DIVIDEFRE4、防抖电路DEBOUNCE、计数模块FRETEST、锁存器模块FRELATCH和DISPLAY。其系统方块图如图2所示。
2.1 防抖电路
在此电路中,令时钟周期大于欲滤去的窄脉冲宽度,经过电路处理,只有宽脉冲被识别,窄脉冲滤去。
2.2 显示模块
显示模块采用分时复用的方式逐个扫描,对几个显示模块逐个扫描进行显示,显示模块的选择信号通过模四计数器来实现。
2.3 分频模块
由于所选时钟信号为20MHz时钟信号,通过分频电路产生片选信号,防抖动电路周期信号,闸门信号。所谓的分频器实际上就是一个计数器,计数器对20MHz信号进行计数,每当计数到49999时输出一个脉冲信号,从而得到400Hz时钟信号,又以400Hz时钟信号作为脉冲信号,经过一个2分频电路得到200Hz时钟信号作为显示模块的片选信号。以200Hz时钟信号作为脉冲信号,经过一个8分频电路得到25Hz时钟信号作为防抖动电路的周期信号。以200Hz时钟信号作为脉冲信号,经过一个40分频电路得到5Hz时钟信号作为闸门信号。
2.4 锁存器模块
锁存器模块的主要作用是将计数模块的各项输出值锁存,设置锁存器的好处是显示的数据稳定。复位信号有效时对锁存器清零,闸门信号到来时对数据进行锁存。
2.5 计数模块
计数模块用于对被测信号进行计数,以被测信号作为计数脉冲,通过计数器实现其对被测信号的计数功能。
3 仿真波形
仿真波形图如图3所示。
4 FPGA实现
本设计选用Altera公司的EPM7128SLC84-6 FPGA芯片实现,频率计只占该芯片部分资源,其余资源作为它用。
结语
本设计实现了频率计的设计,在EDA试验开发平台上,利用EPM7128SLC84-6 FPGA芯片产生所需的数据,再通过数码管显示输出,试验表明其性能良好。采用这样的设计可以简化硬件的开发和制造过程,而且使硬件体积大大减小,并提高了系统的可靠性。同时在基本电路模块基础上,不必修改硬件电路,通过修改VHDL源程序,增加一些新功能,满足不同用户的需要,实现数字系统硬件的软件化。
参考文献
[1]顾斌,赵明忠,姜志鹏.数字电路EDA设计[M].西安:西安电子科技大学出版社,2004:6-7.
VHDL语言 第10篇
数字锁相环是一种相位反馈控制系统。在数字锁相环中,由于误差控制信号是离散的数字信号而不是模拟信号,与之相对应,受控的输出相位的改变是离散的而不是连续的;此外,环路组成的部件也全由数字电路实现,故名“数字锁相环”[1]。常用的数字锁相环原理如图1所示。
1 数字锁相环的结构及工作原理
如图1所示,数字锁相环主要由鉴相器、K变模可逆计数器、脉冲加减器、N分频器构成。
鉴相器其实就是一个异或门,它将输入信号Din与位同步脉冲输出信号Dout相异或,比较它们之间的相位差,并输出相位误差信号作为K变模可逆计数器的计数方向的控制信号CS。当环路锁定时,这个控制信号为占空比是50%的方波。
K变模可逆计数器根据相差信号CS的变化,向不同的方向计数。当CS为逻辑“1”时,计数器向下计数,如果计到0,则输出一个借位脉冲给脉冲加减器;当CS为逻辑“0”时,计数器向上计数,如果计到模值,则输出一个进位脉冲给脉冲加减器。
脉冲加减器是根据K变模可逆计数器输出的进位、借位脉冲来不断地对本地时钟进行调整。当有进位脉冲时,脉冲加减器就在本地时钟上加入一个周期的时钟信号;当有借位脉冲时,脉冲加减器就在本地时钟上扣除一个周期的时钟信号。如此反复不断地对本地时钟进行调整,最终达到准确确定出输入信号时钟的目的,从而实现位同步[2]。
N分频器是将脉冲加减器输出的经过调整以后的时钟信号进行分频,以减小同步误差。N值越大得到的同步误差越小。
2 数字锁相环各部分的VHDL实现
K变模可逆计数器根据预设模值Kmode来设置对应的模值寄存器的值,也即当预设模值范围在0~15变化时,与之相对应的Ktop的变化范围为20~215。模值的大小直接决定了数字锁相环锁定时间的长短,模值越大锁定时间越长,反之越小。但锁定时间越长,锁定时的相位误差越小,反之越大。这部分的VHDL设计程序[3]如下:
有了K变模可逆计数器产生的进位、借位脉冲,脉冲加减器就可以按照这两种脉冲对本地高频时钟进行不断地调整,如图2所示。
N分频器的设计相对简单,其功能是将脉冲加减器输出的经过了调整的本地时钟进行N分频,以减小同步脉冲输出误差。本例暂时用32分频代替,其VHDL设计程序如下:
按照图1数字锁相环原理框图的设计理念,设计出各个主要的功能块,并将它们各自进行仿真。在确认无误后再连接起来进行综合仿真,以验证设计的正确性。在综合仿真的过程中一个最关键的问题就是分析各个功能块的时序关系、频率关系。
3 频率关系、时序分析
假设输入信号的频率为fi=1 200 Hz,则位同步输出信号频率fo=1 200 Hz,脉冲加减器输出信号频率fm2=Nfo,则其时钟频率fm1=2fm2;K变模可逆计数器工作时钟可设为M fo。这里的M、N值一般均为2的整数次幂,他们之间的具体关系需根据fi确定。综合仿真的时序图如图3所示。
由图3可以看出,CS控制信号逐渐变成了占空比为50%的方波,这也从侧面反映出了锁定过程。当锁相环锁定后,信号CODEIN出现连“0”和连“1”时,也能准确实现位同步。锁定时间约为15.8 ms。通过以上仿真,验证了设计的正确性。对于不同的设计,只需要计算好频率关系、修改一下N分频器的N值,就可以实现不同输入信号的同步。
本文介绍的这种以VHDL语言实现的全数字锁相环,是在ALTERA公司的Cyclone系列FPGAEP1C12Q240C8上实现的。它仅仅需要FPGA的95个逻辑单元,对于拥有12 060个逻辑单元的EP1C12来说,消耗的资源微乎其微,但却是信号的差分相干解调过程中不可或缺的重要部分。通过以上方法介绍、仿真的实现,再一次体现了用硬件描述语言在可编程器件中实现数字电路的优越性。
摘要:介绍一种基于VHDL语言的全数字锁相环实现方法,并用这种方法在FPGA中实现了全数字锁相环,作为信号解调的位同步模块。
关键词:VHDL,全数字锁相环,位同步,FPGA
参考文献
[1]胡春华.数字锁相环路原理与应用[M].上海:上海科技出版社,1990.
[2]Phase Locked Loop(PLL)in High Speed Designs.Lattice Semiconductor Corporation[J],AN8017~01,1997.