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...