写在前面:这个内容是出于想使用赛灵思的Spartan 6系列做一个应用于激光多普勒测速仪的后端数字采样与分析。其实在DLV上我只是一个小白,FPGA我们也只是用它,并非开发它,所以好多东西都是现学。课题组有这个需求,就跟着做了。ROM核也是前期学习相关技术的一个小小的涉猎,也是看了好多资料博文才了解。后面附上代码,以便自己后期复习用,还请行业内大佬们指正。
仿真条件:ISE 14.7 ModelSim 10.4 MATLAB R2018b
代码在后面
一、基于ISE的ROM核概述
ISE提供了两种ROM核,一种是Block Memory Generator,一种是Distributed Memory Generator。两种IP核的功能都是在ROM初始化中从外部导入ROM表,数据只能读出不能写入,但是ROM具有掉电保存数据的功能。实际上调用IP核就是初始化一个(.coe)文件然后按照硬件时钟边沿触发去把数据导入到FPGA芯片与其他模块产生信息交互。下面是建立的一个例化过程。
二、调用ROM核并仿真
1、调用ROM核的核心就是产生(.coe)文件
VIVADO是产生.mif文件,ISE是产生(.coe)文件,但VIVADO最终还是会将.mif文件转换成(.coe)文件。产生ROM表的方式有两种,一种是手动按照(.coe)文件格式更改,一种是通过MATLAB产生。ROM表格式如下:
这上面的前两行那个英文不区分大小写,然后下面的向量