刘文君
摘要:文章介绍了VHDL语言及其基本特点,讨论了VHDL语言在数字电路设计中的诸多优点,通过十位计数器的实例介绍了在MAX+plusⅡ环境下运用VHDL语言设计实际电路的具体方法和步骤。结果表明VHDL语言应用于数字电路仿真的灵活性及直观性。
关键词: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.
[5]潘松,王国栋编著.VHDL实用教程.清华大学出版社.2000.