CORE Generator里有很多的IP核,適合用于各方面的設(shè)計。一般來說,它包括了:基本模塊,通信與網(wǎng)絡(luò)模塊,數(shù)字信號處理模塊,數(shù)字功能設(shè)計模塊,存儲器模塊,微處理器,控制器與外設(shè),標(biāo)準(zhǔn)與協(xié)議設(shè)計模塊,語音處理模塊,標(biāo)準(zhǔn)總線模塊,視頻與圖像處理模塊等。
在Xilinx的IP核里有xilinx core generator 里面的memory interface generator 和block ram,使用這兩個可以使用FPGA內(nèi)部和外部的RAM。memory interface generator 是 ddr2/ddr3/qdr2 這些外部存儲器的接口,block ram 是 fpga 芯片內(nèi)部片上的存儲器。接下來介紹一下block ram。
block ram有三種:單口RAm、簡化雙口RAM和真雙口RAM。
單口:
簡化雙口,A寫入,B讀出:
真雙口,A和B都可以讀寫:
使用IP核,確定數(shù)據(jù)位寬和深度:(超出地址范圍將返回?zé)o效數(shù)據(jù),在對超出地址范圍的數(shù)據(jù)進行操作的時候,不能夠set或者reset)。這里我選擇的是16位的位寬,128的深度。
設(shè)置操作模式:(寫優(yōu)先,讀優(yōu)先,不改變)
這里的寫優(yōu)先的意思就是你寫入的數(shù)據(jù),會出現(xiàn)在輸出端口,不管你給的地址是什么。這種好處就是保證了你讀出的數(shù)據(jù)是最新的。
讀優(yōu)先指的就是:不管你寫入的數(shù)據(jù),是先把你要讀的數(shù)據(jù)讀出。
不改變模式就是正常的模式,該讀的時候讀,改寫的時候?qū)懀海ㄒ话銢]有特殊要求就是選這個)
接著寫coe文件,打開txt,輸入:
MEMORY_INITIALIZATION_RADIX=10;
MEMORY_INITIALIZATION_VECTOR=
512,515,518,522,525,528,531,535,538,54,......12,23;
保存之后為coe格式。
這個如果很少就自己輸入,如果比較大,比如一幅圖片,那就使用matlab吧!
舉個例子,你要生成ROM:
% 生成 ROM 的 .coe文件
clc clear all close all x = linspace(0, pi/2 ,1024); % 在區(qū)間[0,2pi]之間等間隔地取1024個點 y_cos = cos(x); y_sin = sin(x); y_cos = y_cos * 2^16; y_sin = y_sin * 2^16; fid = fopen('D:/cos_coe.txt','wt'); fprintf(fid, ' .0f ' , y_cos); fclose(fid); fid = fopen('D:/sin_coe.txt','wt'); fprintf(fid, ' .0f ' , y_sin); fclose(fid);
比特寫功能(byte_write):
當(dāng)使用8bit一字節(jié)的時候沒有優(yōu)先級,而存儲在寬度限定為8bit的倍數(shù)。當(dāng)使用9bit一字節(jié)的時候,每一個字節(jié)都包含一個優(yōu)先級位,存儲限定為9bit的倍數(shù)。9bit的一般不用于NO_CHANGE模式。對于雙口的RAM,只能是讀優(yōu)先或者寫優(yōu)先。
我們要設(shè)置為primitive原語的模式,還可以選擇增加復(fù)位等功能,但是復(fù)位不能異步,只能同步實現(xiàn)。
最后生成了IP核之后,點擊你的IP核的下方,然后可以看到你的instance,你就知道怎么用這個IP核了。另外對于IP核的使用,其實你看datasheet那就更好了。
原文標(biāo)題:FPGA開發(fā)之RAM IP的使用
文章出處:【微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21972瀏覽量
614325 -
Xilinx
+關(guān)注
關(guān)注
73文章
2182瀏覽量
124389 -
generator
+關(guān)注
關(guān)注
0文章
57瀏覽量
33359 -
Block
+關(guān)注
關(guān)注
0文章
26瀏覽量
14896
原文標(biāo)題:FPGA開發(fā)之RAM IP的使用
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Xilinx FPGA IP之Block Memory Generator功能概述

Xilinx FPGA IP之Block Memory Generator AXI接口說明

下載Xilinx IP Core
Xilinx FPGA入門連載48:FPGA片內(nèi)RAM實例之RAM配置
Spartan 3E XC3S250E中的100Kbit RAM模塊使用問題
Xilinx Block RAM能否在一個時鐘周期內(nèi)始終如一地返回數(shù)據(jù)?
請幫助我解決Block RAM問題?
創(chuàng)建Block RAM IP不起作用
請問9K Block RAM設(shè)計中那些2 9K Block RAM在哪里?
為什么為spartan6生成fifo ip_core時會出現(xiàn)警告?
XILINX BMG介紹
FPGA的RAM存儲資源詳細資料說明

評論