Distributed Memory Generator IP 核采用 LUT RAM 資源創(chuàng)建各種不同的存儲器結(jié)構(gòu)。IP可用來創(chuàng)建只讀存儲器 (ROM)、單端口隨機(jī)存取存儲器 (RAM) 和簡單雙/雙端口 RAM 以及基于 SRL16 的 RAM。該IP的靈活的特性配置方式,使用戶能針對存儲器類型、數(shù)據(jù)寬度、存儲器大小、輸入/輸出選項(xiàng)和復(fù)位選項(xiàng)進(jìn)行定制。
Distributed Memory Generator IP GUI界面如下:
該IP的主要特性為:
- 生成只讀存儲器 (ROM)、單、簡單雙和雙端口隨機(jī)存取存儲器 (RAM)以及基于SRL16 的 RAM;
- 支持 16 到 65536 的數(shù)據(jù)深度;
- 支持1 到 1024 之間的數(shù)據(jù)寬度;
- 可選的寄存輸入和輸出;
這個IP的端口如下圖所示:
輸入:
a:地址輸入;
Dpra:雙端口時的讀地址;
d:數(shù)據(jù)輸入;
Clk:時鐘
Qdpo_clk:雙端口模式下的第二個時鐘
We:寫使能
i_ce:輸入時鐘使能;
Qspo_ce:輸出時鐘使能;
Qdpo_ce:第二個端口的輸出時鐘使能;
輸出:
Spo:非寄存器模式下第一個端口的輸出數(shù)據(jù)
Dpo:非寄存器模式下第二個端口的輸出數(shù)據(jù)
Qspo:寄存器模式下第一個端口的輸出數(shù)據(jù)
Qdpo:寄存器模式下第二個端口的輸出數(shù)據(jù)
復(fù)位:
qspo_rst :寄存器模式下第一個端口的異步復(fù)位
qdpo_rst :寄存器模式下第二個端口的異步復(fù)位
qspo_srst:寄存器模式下第一個端口的同步復(fù)位
qdpo_srst :寄存器模式下第二個端口的同步復(fù)位
Distributed Memory在不同工作模式下的內(nèi)部情況如下圖所示:
ROM模式:
單端口RAM模式:
雙端口RAM模式:
簡單雙端口模式:
一般情況下常用簡單雙端口模式進(jìn)行跨時鐘域,簡單緩存的操作。用簡單雙端口實(shí)現(xiàn)一個簡單的跨時鐘域代碼如下:
// ============================================================
// File Name: tb_dist_mem_gen
// VERSION : V1.0
// DATA : 2023/8/18
// Author : FPGA干貨分享
// ============================================================
// 功能:xilinx Distributed Memory Generator ip 代碼仿真
// 使用簡單雙端口實(shí)現(xiàn)一個簡單的跨時鐘域
// delay :
// ============================================================
`timescale 1ns/100ps
module tb_dist_mem_gen ;
reg clka = 'd0 ;
reg ena = 'd1 ;
reg [0 : 0] wea = 'd1 ;
reg [5 : 0] addra = 'd0 ;
reg [15 : 0] dina = 'd0 ;
reg clkb = 'd1 ;
reg enb = 'd1 ;
reg [5 : 0] addrb = 'd0 ;
wire [15 : 0] doutb ;
reg [2:0] S_addr_a_flag ='d0 ;
reg S_a_flag ='d0 ;
reg [2:0] S_a_flag_2_b ='d0 ;
reg S_b_flag ='d0 ;
reg [2:0] S_clk_cnt8 ='d3 ;
always #1 clka = ~clka;
always #1 clkb = ~clkb;
//----------- clk_a ---//
always @(posedge clka)
if(ena && wea)
begin
addra <= addra + 'd1;
dina <= dina + 'd1;
end
always @(posedge clka)
S_addr_a_flag[0] <= (addra == 6'd10);
always @(posedge clka)
S_addr_a_flag[2:1] <= S_addr_a_flag[1:0] ;
always @(posedge clka)
S_a_flag <= |S_addr_a_flag ;
//----------- clk_b ---//
always @(posedge clkb)
S_a_flag_2_b <= {S_a_flag_2_b[1:0],S_a_flag} ;
always @(posedge clkb)
S_b_flag <= (!S_a_flag_2_b[2])&& S_a_flag_2_b[1] ;
always @(posedge clkb)
if((S_clk_cnt8 > 3'd2)&&S_b_flag)
S_clk_cnt8 <= 3'd2;
else
S_clk_cnt8 <= S_clk_cnt8 + 'd1;
always @(posedge clkb)
if(S_clk_cnt8 == 3'd1)
addrb <= 'd0;
else
addrb <= addrb + 'd1;
dist_mem_gen_0 dist_mem_gen_0 (
.a (addra ), // input wire [5 : 0] a
.d (dina ), // input wire [15 : 0] d
.dpra (addrb ), // input wire [5 : 0] dpra
.clk (clka ), // input wire clk
.we (wea ), // input wire we
.qdpo_clk (clkb ), // input wire qdpo_clk
.qdpo (doutb ) // output wire [15 : 0] dpo
);
endmodule
-
FPGA
+關(guān)注
關(guān)注
1630文章
21799瀏覽量
606198 -
存儲器
+關(guān)注
關(guān)注
38文章
7529瀏覽量
164372 -
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
115044 -
Xilinx
+關(guān)注
關(guān)注
71文章
2171瀏覽量
122191 -
IP核
+關(guān)注
關(guān)注
4文章
331瀏覽量
49655
發(fā)布評論請先 登錄
相關(guān)推薦
Xilinx FPGA IP之Block Memory Generator功能概述
![Xilinx FPGA <b class='flag-5'>IP</b>之Block <b class='flag-5'>Memory</b> <b class='flag-5'>Generator</b>功能概述](https://file1.elecfans.com/web2/M00/AE/2C/wKgaomVTPx6AJ3TDAAMEn4WUaQM773.jpg)
Xilinx FPGA IP之Block Memory Generator AXI接口說明
![Xilinx FPGA <b class='flag-5'>IP</b>之Block <b class='flag-5'>Memory</b> <b class='flag-5'>Generator</b> AXI接口說明](https://file1.elecfans.com/web2/M00/AF/FD/wKgZomVTQwWAbSvmAAIqJdCzs9g116.jpg)
IP核簡介
IP核簡介
ISE不能生成IP核
新手求助,Nexys3開發(fā)板如何讀寫數(shù)據(jù)到Flash
ARM embedded memory ip的產(chǎn)生,couldn't run spreadsheet generator to fetch results
如何使用System Generator來創(chuàng)建自己的IP核
使用Vivado調(diào)用ROM IP核
ARM memory_compiler sram ip生成問題怎么解決呢
如何在ISE中更新老版本的IP核
![如何在ISE中更新老版本的<b class='flag-5'>IP</b><b class='flag-5'>核</b>](https://file1.elecfans.com//web2/M00/A6/AC/wKgZomUMP4eAcTLgAABJR4tZavE807.png)
AXI接口簡介_AXI IP核的創(chuàng)建流程及讀寫邏輯分析
![AXI接口<b class='flag-5'>簡介</b>_AXI <b class='flag-5'>IP</b><b class='flag-5'>核</b>的創(chuàng)建流程及讀寫邏輯分析](https://file1.elecfans.com//web2/M00/A7/0C/wKgZomUMQguASBiJAAAqQnJWhtM334.png)
如何將IP模塊整合到System Generator for DSP中
Vivado中xilinx_BRAM IP核使用
![Vivado中xilinx_BRAM <b class='flag-5'>IP</b><b class='flag-5'>核</b>使用](https://file.elecfans.com/web1/M00/DB/B2/o4YBAGAKMh6AS-0qAAC1_P4vOEo126.png)
評論