FPGA内部m4k资源使用
http://blog.sina.com.cn/s/blog_6db275da01016xan.html
m4k就是一个存储单元,具体点就是以4kbits,4k为一块
RAM fifo ROM等可以由M4K等块存储单元组成也可以用LUT组成,按设计需要选择相应的组成方式;
CYCLONE II系列器件的一个M4K最多可以配置36bit的位宽,如果再大了,那么就会占用其它的M4K块。
CYCLONE II系列器件中的M4K配置
CYCLONE II系列器件中的M4K配置为以下模式:单口RAM模式、移位寄存器模式、只读存储器(ROM)模式和先入先出(fifo)模式。方法如下:
一、 单口RAM模式
单口RAM模式是最简单的工作模式,在单口RAM模式下,存储器不能同时进行读写操作,一个M4K存储块在单口模式下可以被配置为以下规格:4K×1、2K×2、1K×4、512×8、512×9、256×16、256×18、128×32、128×36。单口RAM配置接口定义与描述如下表:
信号名称 |
方向 |
描述 |
clk |
input |
时钟信号 |
ram_wr |
input |
RAM写入使能信号,高表示写入 |
ram_addr[11:0] |
input |
RAM地址总线(不一定是12位) |
ram_din[7:0] |
input |
8位RAM写入数据总线 |
ram_dout[7:0] |
output |
8位RAM读出数据总线 |
配置步骤 假设已在Quartus II9.0建好一工程m4k_ram,选择Tools—>megawizard—>next,出现下图,在which device family will you be using?选项中选择所有器件的家族系列;在which type of output file do you want to create?选择输出文件的描述语言;在what name do you want for the output file?填上输出文件的文件名;在左边memory compiler下选择RAM:1-PORT,点击NEXT,弹出megawizard plug-in manager-RAM进行单口RAM的详细配置。
图1
图2
二、 只读存储器(ROM)模式
利用CYCLONE II系列器件中的M4K生成单口ROM,配置步骤如下:
步骤1 先生成一个 .mif原始数据文件,用于配置ROM时引用,初始化ROM。假设已建好一个工程,在Quartus II选择File—>new—>memory initialization file,如图3所示,单击OK,在弹出的对话框里words填上数据个数,size填上数据的位宽,单击OK,弹出如图4所示,将数据依次填充到文件中,保存并命名为XX.Mif。
步骤2 进入megawizard界面,如图5所示,选择ROM:1-PORT,在which type of output file do you want to create?选择输出文件的描述语言;在what name do you want for the output file?填上输出文件的文件名,单击NEXT。
步骤3 弹出新的对话框如图6所示,进行详细的配置。
图3
图4
图5
图6
三、 先入先出(fifo)模式
先入先出(fifo)存储器在各种数字系统中被普遍的应用,经常用做数据缓冲、时钟域变换、多路数据对齐等。先入先出(fifo)存储器分为单时钟和双时钟,单时钟指的是读写使用相同的时钟,因而又称同步FIFO,双时钟指的是读写采用不同的时钟,又称为异步FIFO。
同步FIFO的端口列表
端口名称 |
输入/输出 |
说明 |
data |
input |
写入数据,位宽可设定 |
wrreq |
input |
写使能 |
rdreq |
input |
读请求/读应答 |
clock |
input |
时钟信号 |
sclr |
input |
同步复位 |
aclr |
input |
异步复位 |
q |
output |
读出数据,位宽可设定 |
full |
output |
满标志 |
almost-full |
output |
接近满标志 |
empty |
output |
空标志 |
almost-empty |
output |
接近空标志 |
usedw |
output |
使用量 |
异步FIFO的端口列表
端口名称 |
输入/输出 |
说明 |
wrclock |
input |
写入时钟 |
wrreq |
input |
写使能,高有效 |
data |
input |
数据输入,位宽可设定 |
wrfull |
output |
FIFO满标志,和写时钟同步,高电平有效 |
wrempty |
output |
FIFO空标志,和写时钟同步,高电平有效 |
wrusedw |
output |
FIFO使用量,和写时钟同步 |
rdclock |
input |
读时钟 |
rdreq |
input |
读请求/读应答,高电平有效 |
q |
output |
数据输出,位宽可设定 |
rdfull |
output |
FIFO满标志,和读时钟同步,高电平有效 |
rdempty |
output |
FIFO空标志,和读时钟同步,高电平有效 |
rdusedw |
output |
FIFO使用量,和读时钟同步 |
aclr |
input |
异步复位信号,高有效 |
配置步骤 进入megawizard界面,如图7所示,选择FIFO,在which type of output file do you want to create?选择输出文件的描述语言;在what name do you want for the output file?填上输出文件的文件名,单击NEXT。弹出新的对话框如图8所示,进行详细的配置。
图7
图8
四、 移位寄存器模式
CYCLONE II的m4k可以配置的移位寄存器参数不多,包括:一个位宽为W的移们输入数据和相同位宽的移位输出数据;一个输入时钟信号作为数据移入或者移出的锁存信号、可选的时钟使能输入信号和异步清除输入信号;还有一个寄存器深度taps,它可以是一组信号,也可以是好多个小信号。
简单配置步骤如下:
图9
图10