目录
前言:
本人使用的是野火家Xilinx Spartan6系列开发板及配套教程,写博客记录自己的学习。
开发软件:ise14.7 仿真:modelsim 10.5
一、ROM IP核
1.简介
ROM 是只读存储器(Read-Only Memory)的简称,是一种只能读出预先锁存数据的固态半导体存储器。其特性是一旦储存资料就无法再改变或删除,且资料不会因为电源关闭而消失。
ROM IP核是在 FPGA 中通过 IP 核生成的,调用的都是 FPGA 内部的 RAM 资源,掉电内容都会丢失(因为FPGA 芯片内部没有掉电非易失存储器单元)。所以要让 ROM 模块像个掉电非易失存储器要提前添加了数据文件(.coe 格式),让其上电就可以初始化。需注意不同的FPGA生产厂商后缀名是不一样的,Xilinx系列开发板是 .coe而Altera是 .mif。
Xilinx 推出的 ROM IP 核分为两种类型:单端口 ROM(Single-Port Rom)和双端口ROM(Dual-Port ROM),常用的是单端口。单端口 ROM 提供一个读地址端口和一个读数据端口,只能进行读操作;双端口 ROM 与单端口 ROM 类似,区别是其提供两个读地址端口和两个读数据端口,可看做两个单口 RAM 拼接而成。在使用ADDDRA与CLKA并使能ENA的情况下,ROM模块可以工作。
2.创建立初始化文件
第一行MEMORY_INITIALIZATION_RADIX=10; 是定义数据的格式,其中 10表示数据格式为 10进制,也可将数据格式定义为二、八、十六进制。 后面 MEMORY_INITIALIZATION_VECTOR= 是ROM 的初始化数据。
将文本格式(.txt)改为.coe就完成了初始化文件的创建。
3.配置
由于我已经配置完了,方便大家看我把教程提供的配置过程贴出来。
1.新建工程后,添加ROM IP核
2.选择我们需要生成的 IP 核
3.对前面过程 IP 核存储空间等信息的确认
4. 其中1 显示的是配置的 IP 核的输入输出接口框图; 2 框中是配置接口类型选择“本地”即可;3 框的“Datasheet”是下载 Xilinx 的官方 ROM & RAM 核数据手册,这个感兴趣可以看看。
5. 其中1选择 IP 核类型,选择“Single Port Rom”单端口 ROM。
在2中选择用于实现内存的算法,其中 Minimum Area 为最小面积算法; Low Power 为低功耗算法; Fixed Primitives 为固定单元算法;这里按默认选择Minimum Area 即可。
6. 1框中可设置存储数据的位宽和深度, “Read Width”是设置数据位宽,设置为 8 位; Read Depth 是设置数据深度,设置为 256;这样我们设置的 ROM ip核最大能存储的数据即为 256 x 8bit。