AL3 系列器件支持嵌入式存储器模块(Embedded Memory Block)。 AL3-10 中包括
两类 EMB: EMB9K 和 EMB32K。
EMB9K 每块容量 9Kbits,多个 EMB9K 模块排成一列,按列分布在可编程功能块
(Programmable Function Block, PFB)的阵列中。 EMB32K 每块容量 32Kbits,分布在 IO 空
隙中。
3.5.1 创建 BRAM 模块
4. 选择 Tools → IP Generator, 选择“Create an IP core”
5. 输入模块名称并选择存储路径。 此处,若是在有工程的基础上创建 BRAM 模块,
存储路径和器件名称将与工程保持一致。若在没有工程的基础上创建 BRAM 模
块,用户需手动设置保存路径和器件名称。
6. 在 Function 窗口 Primitive IP 展开 Memory → RAM, 双击 RAM 打开配置界
面
7. 填写 “Component Name”并设置相应参数
本手册以 EMB9K 为例介绍 AL3 系列器件 BRAM 模块的使用。
EMB9K 可实现:
单口 RAM (Single Port RAM)
双口 RAM (Dual Port RAM)
简单双口 RAM(Simple Dual Port RAM, 也称为伪双口)
EMB9K 模块支持的功能特色有:
9216 (9K) bits / 每块
A/B 口时钟独立
可单独配置 A/B 口数据位宽,真双口从 x1 到 x9,支持 x18 简单双口(一写一
读)
9 或 18 位写操作时带有字节使能(Byte Enable)控制
输出锁存器可选择(支持 1 级流水线)
支持 RAM 模式下数据初始化(通过初始化文件在配置过程中对 EMB9K 进行
数据初始化)
支持多种写操作模式。可选择只写(No Change),先读后写(Read First),先写
后读(Write First)三种模式
支持 Byte Enable 功能。
若勾选“Debug Enable”前面的复选框, TD 会默认 EMB 的模式为 Single Port RAM,
在这种情况下, 端口 B 将被占用, 端口 A 的数据可进行回读,方便用户通过 BramEditor
进行 Debug。 其中, EMB9k 以面积优化为主, EMB9k(fast)以时序优化为主。
Byte Enable 是指 BRAM 的输入数据 port 位宽为多个 byte 时,在读数据时用一组
byte enable 信号来分别控制每个 byte 写入与否。在界面上可选择 Byte Write Enable
的值为 None 或 8 或 9。当 byte-write 为 None 时,表示不启动 byte enable 功能;当
byte-write 为 8 时, A 口与 B 口(若有 B 口)的数据宽度必须为 8 的整数倍,倍数的
值被用作 wea 与 web 的宽度;当 byte-write 为 9 时, A 口与 B 口(若有 B 口)的数据
宽度必须为 9 的倍数,倍数被用作 wea 与 web 的宽度。当启动 byte enable 功能时,
不建议使用 BRAM32K, 原因是当 BRAM 的深度比较小时,会浪费很多内存。
8. 添加初始化文件
TD 的初始化文件支持用户用第三方 mif(memory initialization file)格式描述,或者用
verilog 存储空间初始化 dat 格式来描述。
mif 格式描述如下:
mif 格式的初始化文件包含每一个初始化地址和数据,并且必须定义内存数据的深
度和宽度。 用户可以将数据和地址格式定义为二进制 BIN 、 十六进制 HEX 、 八
进制 OCT 、 无符号十进制 UNS 等。数据的值必须和数据格式相匹配。
dat 格式描述如下:
内存数据可以存储在一个以十六进制为地址的文件中, 其中, 地址以 “@”表示。 起
始地址由用户自己定义, 根据内存数据的深度可以相应的确定结束地址。 为了能够
使数据和地址清晰对应,通常会给文件添加可识别的地址标志。若初始化文件很大
时,也可直接省略地址。
为 BRAM 模块添加初始化文件时, 可勾选“Load Init File”前面的复选框, 并选择需
要添加的文件, 当在右下角的下拉框中选择.mif 格式时,在文件夹中只提供.mif 文件供
用户选择,如下图所示。
若选择.dat 格式时,在文件夹中则只提供.dat 文件供用户选择,如下图所示。
点击按钮“Show”可以看到添加文件的内容, 此处给出的是 mif 文件和 dat 文件的格
式范例。
点击“OK”完成 BRAM 的创建, TD 给出生成文件的路径如下:
而在工程目录下可以看到如下文件:
其中, demo_bram.ipc 为 IP Generator 生成的工程文件,可通过如下方式打开:
选择 Tools → IP Generator, 选择“Edit an exist IP core”。
demo_bram.v 为 BRAM 模块创建供用户进行例化的文件。
demo_bram_sim.v 描述了 BRAM 的划分方式,供用户仿真和 Debug,但不可将其添
加为工程的源文件,否则将与 demo_bram.v 中的模块产生冲突。
没有回复内容