接下来就是调用IPcore,来产生ROM的IP了。流程就不多讲了,不清楚的同学可以看书,也可以简单浏览一下。在建立IPcore的时候,选择为Block Memory Generator,就进入了块RAM的调用。Memory的类型自然选择为ROM,简单起见使用了单端口的ROM(single port ROM),如图1所示。
图1 IP调用
图1下方中间靠左的位置有个“datasheet”,点击一下就打开了该IP使用的手册,名字为《LogiCORE IP Block Memory Generator v4.2》。这个算是最全面的了,讲到了该IP使用的方方面面,还是非常实用的。接下来是配置该段存储器的宽度和深度。这个根据实际需要进行配置即可。
既然是ROM,就应该有预先“固化”的数据。在IP配置的第3步,有个内存初始化选项,这里可以调用.coe类型的文件,将事先存储的数据引用出来。.coe文件的建立也比较简单,我一般是首先新建一个记事本文件,即.txt文件,将预先计算好的数据存入,然后加上该文件头部需要的语句,即
memory_initialization_radix = 10;
memory_initialization_vector =
3535
,-15105
, -2288
,-25620
,-19906
,-19879
,-42826
……(中间数据省略)
, -7697
,-36317
,-28038;
memory_initialization_radix指的是数据的进制,10自然就是10进制了,还要注意的格式就是每个数据之前有逗号,最后一个数据以分号结束。前面提到所使用的拟合系数是浮点的,简单处理期间,这里把拟合系数都乘了10000,然后舍掉了剩余的小数位数(虽然一般情况下浮点到定点转换使用的都是乘2的幂)。
没有问题之后,点击generate,就可以产生IP的调用了。这个时间经常会有点长。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』