一、主要环境参数是:
modelsim SE 6.1b+Quartus II 5.1 SP2
HDL 是verilog。
器件是Stratix II EP2S90F1020
采用两种方法设计ROM,ROM的容量是1000×2×16bit。因为需要COS 和SIN 两种数据。
第一种采用Altera 的LPM 生成ROM,ROM 的内容也是利用Quartus 生成hex 文件,之所以不采用mif 文件的原因是因为在modelsim不支持。
第二种是使用VC 编写一个小程序,采样case 语句来生成COS.v 和SIN.v 文件。
二、modelsim环境设置。
在modelsim 的安装目录下把modelsim.ini 文件的只读属性去掉,在[vsim]字样下面添加
Veriuser = D:/Programs/altera/quartus51/eda/mentor/modelsim/convert_hex2ver.dll
有些网友说convert_hex2ver.dll 文件无法找到,是因为目录不对,不是什么dll directory,在自己quartus 的安装目录中搜索就可以找到的。另外注意要使用/代替。
新建一个名称为Altera 的库,注意名称不能是别的。至于放哪里看个人的喜好,因为这是放置Altera 仿真库的地方。然后按照下图编译quartusedasim_lib 下两个.v 文件,因为我只用verilog HDL。
下面就可以在modelsim 里面做仿真了。在编译完文件后,在命令行里面输入vsim,然后在Design 的work 选择要仿真的实体,在libraries 里面选择生成的Altera 库,如下图。
三、两种设计ROM 的方法比较。
第一种资源占用32000bit 和13ALU。这和1000×2×16bit 的设计容量一致。
第二种则占用34816bit 和13ALU,相当于每个ROM多了1024bit,如果把case 中default输入从高阻态(z)改为0,则占用32768bit,即8 个M4K。
结论,Altera 的LPM 能最大程度优化自己器件资源,但移植性很差,使用case 生成的方法移植性好,向其他平台比如xilinx 的器件上移植不需要修改代码,但多占资源。
最后说一下,在modelsim 里面仿真的时候,如果采用计数器产生地址,计数器一定要赋初值,定义的时候就可以赋,尽管综合的时候被优化,但没初值,modelsim 默认是高阻,计数器可能不动作,导致仿真无法进行。