ISE中VHDL test bench模板的错误及修改

Xilinx的FPGA设计有一套自己的开发工具——ISE。ISE功能强大,其中最重要一个就是它里面自带了大量的程序模板,使得设计人员不需要自己手动敲一些重复的代码。但本人在使用ISE时偶然发现了其中VHDL testbench模板中的一个错误,这也是一般设计人员在编写VHDL代码时容易犯的错误。当我们对模板进行修改后,进行仿真,会发现出现错误,如下图:

c7f14e3b-59a1-43be-b3fe-42b1dcc0b1b3.jpg 

可见,在CONSTANT常量的定义处出现错误!

74a8f638-8fa5-4e36-84b3-9f86e42fb676.jpg 

这是ISE中VHDL testbench模板自动生成的部分代码,其中红框部分——这句代码的目的在于定义一个TIME类型的常量<clock>_period,也就是将时钟周期定义为一个常量。但很明显,此处有两个错误:

1、常量的定义不能在ARCHITECTURE内部,应该在BEGIN之前。这是很常见的错误。这个错误类似于C语言与C++之间的区别一般,C++中的变量定义可随时定义,即不需要统统都定义在函数开头,而C语言只允许变量在开头定义。VHDL中也一样,信号量、变量、常量等都定义在结构体开始前,所以此处<clock>_period应该定义在结构体的BEGIN前面。

2、<clock>_period的定义没有指定数据类型。因为TIME类型与其它数据类型之间的转换是比较麻烦的,所以此处应该对<clock>_period这个常量指定数据类型。如下:

constant <clock>_period : time := 1ns;

这样修改后再进行语法检查便不再有错误了。

6e01fcc0-7098-4abe-9834-c20e8a46da11.jpg

永不止步步 发表于11-04 11:25 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:345327个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号