您可以添加到网摘 让更多人关注此文章:
摘要:本文介绍了Active-HDL 软件的设计流程和设计过程中的有关仿真,以RAM实例说明该软件的特点及内存的描述和仿真方法,以交通灯控制器为例介绍状态机的描述方法,以数码管动态扫描显示为例介绍测试文件(test bench) 的编写方法,以计数器为例介绍模拟波形显示功能。
关键词:Active - HDL;FPGA ;CPLD;Verilog-HDL; 仿真;模拟显示;状态机
1 引 言
Aldec公司推出的Active - HDL软件,是一个功能强大的FPGA/CPLD 设计和仿真软件, 它可以嵌入很多公司的第三方综合工具和布局布线工具,当嵌入相应的综合工具和布局布线工具,就可以完成时序仿真和程序下载。
Active - HDL是专用的FPGA/ CPLD 设计软件,具有很强的设计和仿真功能,但关于该软件使用方法的资料很少,一般只能根据软件提供的帮助文件来学习和使用该软件,鉴于此,本文通过举例来说明Active - HDL 软件的使用方法和该软件具有的特点。
2 Active - HDL 软件的设计流程和设计过程中的有关仿真
Active - HDL 软件的设计流程如图1所示。当启动Active - HDL 软件,开始进行设计的第一个界面就是设计流程管理(Design Flow Manager) ,从该界面的第一行可以了解到,该软件共有三种主要的输入方法———硬件描述语言输入( HDE) , 状态机输入( FSM) 和原理图输入(BDE) 。从整个界面可以看出,Active - HDL 软件可以进行三种仿真- - 功能仿真、综合后仿真和时序仿真。
 图1 Active - HDL 软件的设计流程(Design Flow Manager 界面)
功能仿真是将采用硬件描述语言设计的程序直接送入仿真器所进行的仿真,该仿真只是根据VHDL 或Verilog 语法进行的,与具体电路没有关系,可以充分发挥仿真控制语句和预定义函数及库文件的作用。综合后仿真是将综合后的网表文件再送到仿真器中所进行的仿真,对描述的逻辑功能进行测试模拟,但不涉及具体器件的硬件特性,如延时特性,描述的电路与生成的EDIF/ XNF 等网表文件一致。
时序仿真,就是将布线器/ 适配器所产生的网表文件送到仿真器中所进行的仿真,该仿真已经将器件的特性考虑进去了,因此可以得到精确的时序仿真结果。
功能仿真与综合后仿真的区别是:功能仿真几乎可以编译所有的VHDL 或Verilog 语句,只是不同的软件支持的语句多少不同而已,而综合后仿真不能编译电路无法实现的行为描述语句,即综合器不能综合这类语句,比如我们在程序中设定第一个门到第二个门的延迟为5ns就不能综合,因为门延迟由器件的工艺参数决定的,在实际中不能由人为定义,但在功能仿真中却可以做到这一点,所以说功能仿真是理想化的仿真。
综合后仿真与时序仿真的区别是,综合后仿真仍然属于对设计中逻辑功能的模拟测试,仿真的结果不包括器件的硬件特性,如延时特性,而时序仿真是对硬件特性的仿真,不仅包括逻辑功能的模拟测试,还包括门的延迟信息,与实际硬件运行的结果非常接近,可以得到精确的时序仿真结果。
在Active-HDL软件中这三种仿真均可以进行,Active-HDL软件本身提供的是功能仿真,当Active-HDL调用指定的逻辑综合工具,把设计进行综合后,就可以进行综合后仿真,当Active-HDL 调用指定的布局布线工具,把设计进行布局布线后,就可以进行时序仿真。
3 以RAM 为例说明Active - HDL软件的特点及内存的描述和仿真方法
RAM的设计我们采用Active - HDL 软件的第一种输入方法- - 硬件描述语言输入(HDE) 来实现,图2 为RAM的Verilog HDL 源程序。此RAM 的Verilog HDL 源程序描述的硬件电路的端口定义为: data为8 位三态数据总线, addr为8 位地址总线输入, read为RAM读信号输入,write为RAM 写信号输入。
 图2 RAM 的Verilog HDL 源程序
此RAM 的读写控制时序为: 当read (读信号) 为低电平时,在write (写信号) 的上升沿到来时,数据总线( data) 上的数据按地址线(addr) 给出的地址写入相应的RAM 单元,当read (读信号) 为高电平,且write (写信号) 保持不变(低电平或高电平均可) 时,在地址总线上送入不同的地址,就可以把RAM 中相应地址的数据读到数据总线上,这样就完成了RAM 的读写操作。当硬件描述程序编写完成且编译通过后,就要进行仿真,以验证程序的正确性,测试程序的初始化定义和调用可由软件自动生成(Active -HDL 软件仿真提供的特有功能,在后面有详细介绍) ,我们只需要填写激励向量就可以,图3 为RAM 的测试程序( test bench) 中的激励向量部分,我们将在后面的例子中详细介绍整个测试程序的编写法。
 图3 RAM 的测试程序(test bench)
此测试程序的激励向量是用initial (初始化语句) 语句来编写的,第一个repeat 循环向RAM 中写入32 组数据,第二个repeat 循环从RAM 的相应地址读32 组数据到数据总线上。图4 为RAM 的仿真波形,可以看到当read(读信号) 为低电平时,在write (写信号) 的上升沿把数据总线的数据按addr 给出的相应地址写入RAM ;当read (读信号) 为高电平,write (写信号) 保持不变(低电平或高电平均可,这里设定为低电平) ,在地址线送入不同的地址,把RAM 中相应 地址的数据读到数据总线上。
 图4 RAM 的仿真波形
Active - HDL 软件还可以很方便的查看模拟内存(RAM) 的读写情况,在仿真时,计算机分配实际的内存来模拟RAM ,分配内存的大小与所定义RAM 的大小相同。图5为查看模拟内存中写入数据的情况,并且地址和数据可以选择以十进制、十六进制、十进制、二进制显示,这给调试程序带来很大方便。本设计的仿真中,只写入了32 组数据,并且写入的数据值和存入的地址值相同,即在00~1F地址中,相应写入了00~1F数据。
 图5 查看模拟内存中写入的数据
[1] [2] 下一页
|