BRAM對應的IP核呼叫和使用

2021-10-02 13:47:52 字數 2479 閱讀 4836

vivado軟體中包含有三種型別的 ip核,包括資料處理類ip核、驅動類ip核、儲存類ip核。

與bram對應的儲存型ip核是block memory generator(bmg)

我們常用的是單口bram,單口寫,單口讀。

(3)inte***ce type表示bmg ip核的介面型別,如果用pl呼叫 bram,選擇native。如果用ps通過pl來呼叫bram,則選擇axi4。這裡選擇native。

(4)ecc options表示糾錯編碼選項,主要調整bmg支援的軟錯誤糾正控制(軟ecc)模組的實現和使用,一般不會使用,除非對系統可靠性要求很高的場景中才會考慮使用。這裡不進行調整。

(5)寫使能和演算法選項同樣不做任何修改。

在other options選項中,有乙個load init file選項,即載入初始化檔案,在這裡勾上後,即可載入已儲存好資料的.coe檔案。

memory_initialization_radix=16; //表示資料的進製型別

memory_initialization_vector= //表示儲存的資料

7adb,bdb2,5646,88d5,74e9,d990,481d,69a9,2da4,e097,…

.coe檔案可以借助matlab來得到。部分關鍵**如下:

r = dec2hex(x2);

fid = fopen('text.coe','w');

fprintf(fid,'memory_initialization_radix=16;\n');

fprintf(fid,'memory_initialization_vector=\n');

for i = 1:3191

fprintf(fid,r(i,:));

if i==3191

fprintf(fid,';');

else

fprintf(fid,',');

endif mod(i,15)==0

fprintf(fid,'\n');

endend

(1)在ip sources資料夾中找到.veo檔案,開啟

.veo是verilog

.vho是vhdl

(2)複製bram0的例化verilog**(下圖選中區域);

(3)在工程中新建**檔案,即testbenc**件;

(4)讀懂bram「寫優先模式」的時序圖,並編寫testbench。

`timescale 1ns / 1ps

//// company:

// engineer:

// // create date:

// design name:

// module name:

// project name:

// target devices:

// tool versions:

// description:

// // dependencies:

// // revision:

// revision 0.01 - file created

// additional comments:

// //

module bram_test();

//testbench時鐘訊號

parameter size = 100;

reg clka = 0;

reg wea = 0;

reg [11:0] addra = 12'h000;

wire [15:0] douta; //輸出訊號設定為wire垿

always #10 clka <= ~clka;

initial

begin

#45 wea = 1;

repeat(size)

begin

#20 addra=addra+1;

endwea = 0;

end

bram0 my_bram (

.clka(clka), // input wire clka

.wea(wea), // input wire [0 : 0] wea

.addra(addra), // input wire [11 : 0] addra

.douta(douta), // output wire [15 : 0] douta

.dina()

);endmodule

(5)將testbenc**件設為頂層檔案,並進行行為**;

(6)輸出波形**結果

ref

關於fifo的ip核的使用筆記

fifo 在每個時鐘上公升沿之後的幾ns內發出使能訊號 讀或寫 後,才能正確地在下乙個時鐘的上公升沿讀到或寫進資料。我做過測試,在連續的讀任務下,每次讀訊號在時鐘上公升沿之前幾ns內 系統時鐘是20ns 寫入的資料會有丟棄的現象產生,當寫n個 最多n個字 資料後,full不會為1,當寫n 1個時,f...

VIO和ILA ip核的使用

學習fpga已經半個學期過去了,從茫然無措到找各種部落格尋求答案 到看官方文件自己摸索,這一路或多或少有一點進步,利用這個寒假,我會分享過去學習到的一些零散知識,希望在總結知識之餘,可以給新的學習者一些借鑑和參考。最初學習verilog程式設計是比較容易上手的,因為它和c語言的語言風格非常類似,且自...

Maltab相機的呼叫和使用

maltab相機的使用的主要函式有campos,camtarget,camup,camva,camproj等可以設定引數和檢視引數的函式,在matlab相機的應用中的很重要的一點是理解影象中心即光軸中心。圖1a正投影模式下的人臉 圖1b透視投影模式下的人臉 close all clc clear a...