国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[FPGA IP系列] BRAM IP參數(shù)配置與使用示例

這篇具有很好參考價(jià)值的文章主要介紹了[FPGA IP系列] BRAM IP參數(shù)配置與使用示例。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

FPGA開發(fā)中使用頻率非常高的兩個(gè)IP就是FIFO和BRAM,上一篇文章中已經(jīng)詳細(xì)介紹了Vivado FIFO IP,今天我們來聊一聊BRAM IP。

本文將詳細(xì)介紹Vivado中BRAM IP的配置方式和使用技巧。

一、BRAM IP核的配置

1、打開BRAM IP核

在Vivado的IP Catalog中找到Block Memory Generator IP核,雙擊打開參數(shù)配置界面。

bram ip核,FPGA IP,fpga開發(fā),bram,Vivado,FPGA,xilinx

2、配置BRAM IP基本參數(shù)

bram ip核,FPGA IP,fpga開發(fā),bram,Vivado,FPGA,xilinx

?(1)IP名

定制的IP的名字只能在定制時(shí)設(shè)定好,后續(xù)不能修改。

IP名設(shè)定,簡單易懂即可,按照功能或數(shù)據(jù)寬度和深度來設(shè)定即可,例如BRAM_8x256,即表示數(shù)據(jù)寬度為8bit,數(shù)據(jù)深度為256bit。

(2)接口類型(Interface Type)

Native:最基本的接口,包括數(shù)據(jù)寫入、數(shù)據(jù)讀取等信號。

AXI4:AXI4總線通信協(xié)議接口

(3)存儲(chǔ)類型(Memory Type)

Single Port RAM:單端口RAM

Simple Dual Port RAM:簡單雙端口RAM,可選同步時(shí)鐘和異步時(shí)鐘,A端口只支持寫數(shù)據(jù),B端口只支持讀數(shù)據(jù)。

True Dual Port RAM:真雙端口RAM,可選同步時(shí)鐘和異步時(shí)鐘,A端口和B端口都支持寫數(shù)據(jù)和讀數(shù)據(jù)。

Single Port ROM:單端口ROM

Dual Port ROM:雙端口ROM,A端口和B端口都可以讀取數(shù)據(jù)

3、配置A端口或B端口參數(shù)

A端口和B端口參數(shù)配置界面基本一致,這里只介紹A端口的參數(shù)配置。

bram ip核,FPGA IP,fpga開發(fā),bram,Vivado,FPGA,xilinx

(1)存儲(chǔ)大小設(shè)置(Memory Size)

設(shè)置讀數(shù)據(jù)或?qū)憯?shù)據(jù)端的數(shù)據(jù)位寬和深度,數(shù)據(jù)位寬范圍為1~4608bit,數(shù)存儲(chǔ)深度為2~1048576。

operating mode:讀寫同一個(gè)地址時(shí),操作模式設(shè)定:寫優(yōu)先、讀優(yōu)先、不變,建議在實(shí)際應(yīng)用時(shí)不出現(xiàn)這種情況。

Enable Port Type:設(shè)定是否開放端口使能控制信號。

(2)輸出數(shù)據(jù)寄存設(shè)置

Primitives Output Register:輸出數(shù)據(jù)是否插入一個(gè)寄存器,如果不選中這個(gè),則讀數(shù)據(jù)延時(shí)只有1個(gè)周期,否則讀數(shù)據(jù)延時(shí)有2個(gè)周期。

建議選中這個(gè)輸出寄存器,可以改善時(shí)序。

(3)復(fù)位參數(shù)設(shè)置

RSTA Pin (setreset pin):復(fù)位端口選擇,如果選中,則開放復(fù)位端口。

Output Reset Value (Hex):設(shè)定復(fù)位生效后,輸出數(shù)據(jù)值,默認(rèn)為0

4、Other Options

這部分初始化值,對于RAM來說可能用處不大,但對于ROM來說很重要。

bram ip核,FPGA IP,fpga開發(fā),bram,Vivado,FPGA,xilinx

?選中這個(gè)Load Init File,再點(diǎn)擊“Browse”選中“coe或mif”格式文件,最后點(diǎn)擊“Edit”,在打開的界面選擇“Valide”校驗(yàn)一下,如果有問題,這部分會(huì)提示紅色文字,否則繼續(xù)下一步即可。

5、IP設(shè)置參數(shù)總覽

IP設(shè)置參數(shù)總覽,可看到資源消耗、寬度、深度、讀延遲等信息。

bram ip核,FPGA IP,fpga開發(fā),bram,Vivado,FPGA,xilinx

6、點(diǎn)擊OK生成IP核。

在IP核生成完成后,點(diǎn)擊source窗口下的“IP source”,鼠標(biāo)左鍵單擊這個(gè)IP,在“Instantiation Template”下,雙擊“veo”后綴文件,即可看到例化模板。

bram ip核,FPGA IP,fpga開發(fā),bram,Vivado,FPGA,xilinx

二、BRAM IP核的接口

1、時(shí)鐘信號和復(fù)位信號

同步時(shí)鐘 clk, 復(fù)位信號 rst

異步時(shí)鐘 clka(A端口時(shí)鐘) clkb(b端口時(shí)鐘),復(fù)位信號 rsta(A端口復(fù)位),rstb(B端口復(fù)位)

2、端口信號

A和B端口信號基本一樣,這里以A端口為例。

ena A端口使能信號

wea A端口寫使能信號

addra A端口讀寫地址

dina A端口的寫入數(shù)據(jù)

douta A端口的讀取數(shù)據(jù)

三、BRAM IP核的調(diào)用

BRAM IP核的調(diào)用很簡單,這里以同步時(shí)鐘下的簡單雙端口RAM為例:

module top (
  input clk,
  input [7:0] data_in,
  input wr_en, 
  input [7:0] wr_addr,
  input [7:0] rd_addr,
  output [7:0] data_out  
);

    BRAM_8x256 u_BRAM_8x256 (
      .clka(clk),    // input wire clka
      .ena(1'b1),      // input wire ena
      .wea(wr_en),      // input wire [0 : 0] wea
      .addra(wr_addr),  // input wire [7 : 0] addra
      .dina(data_in),    // input wire [7 : 0] dina
      .clkb(clk),    // input wire clkb
      .enb(1'b1),      // input wire enb
      .addrb(rd_addr),  // input wire [7 : 0] addrb
      .doutb(data_out)  // output wire [7 : 0] doutb
    );

endmodule

下面是BRAM IP核的一個(gè)簡單的testbench:

module test;

reg clk;  
reg [7:0] din;
reg wen;
reg [7:0] waddr;
reg [7:0] raddr;
wire [7:0] dout;

top u_top(
  .clk(clk), 
  .data_in(din),
  .wr_en(wen),
  .wr_addr(waddr),
  .rd_addr(raddr),
  .data_out(dout)  
);

initial begin
  clk = 0;
  wen = 0; waddr = 0; raddr = 0;
  #10 wen = 1; waddr = 1; din = 5; 
  #10 wen = 1; waddr = 2; din = 6; 
  #10 wen = 1; waddr = 3; din = 7; 
  #10 wen = 1; waddr = 4; din = 8;
  #10 wen = 1; waddr = 5; din = 9;
  #10 wen = 0; raddr = 1;
  #10 wen = 0; raddr = 2;
  #10 wen = 0; raddr = 3;
  #10 wen = 0; raddr = 4;
  #10 wen = 0; raddr = 5;
  #30 $finish;
end

always #5 clk = ~clk;  

endmodule

仿真測試圖:

bram ip核,FPGA IP,fpga開發(fā),bram,Vivado,FPGA,xilinx

?參考文獻(xiàn):xilinx官方手冊或網(wǎng)盤下載


本文將不斷定期更新中,碼字不易,點(diǎn)??贊,收??藏一下,不走丟哦

本文由FPGA狂飆原創(chuàng),有任何問題,都可以在評論區(qū)和我交流哦。

您的支持是我持續(xù)創(chuàng)作的最大動(dòng)力!如果本文對您有幫助,請給一個(gè)鼓勵(lì),謝謝。文章來源地址http://www.zghlxwxcb.cn/news/detail-767713.html

到了這里,關(guān)于[FPGA IP系列] BRAM IP參數(shù)配置與使用示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • FPGA | BRAM和DRAM

    Block ram 由一定數(shù)量固定大小的存儲(chǔ)塊構(gòu)成的,使用 BLOCK RAM 資源不占用額外的邏輯資源,并且速度快。 但是 使用的時(shí)候消耗的 BLOCK RAM 資源是其塊大小的整數(shù)倍 。如?Xilinx公司的結(jié)構(gòu)中每個(gè) BRAM 有 36Kbit 的容量,既可以作為一個(gè) 36Kbit 的存儲(chǔ)器使用,也可以拆分為兩個(gè)獨(dú)立的

    2024年02月12日
    瀏覽(24)
  • FPGA — BRAM學(xué)習(xí)筆記—讀寫操作

    FPGA — BRAM學(xué)習(xí)筆記—讀寫操作

    使用軟件: Vivado 開發(fā)板: EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA BRAM 即塊 RAM, 是 FPGA 的固有硬件資源。 另一種形式的 RAM 是分布RAM(Distribution RAM), 是由 FPGA 邏輯資源查找表 LUT 拼起來的 。這兩種 RAM 最本質(zhì)的區(qū)別是 塊RAM 默認(rèn)輸入有寄存器 ,所以它在讀、寫使能信號后的 下個(gè)

    2024年02月01日
    瀏覽(55)
  • 【FPGA/數(shù)字IC】Multiport RAM,多讀多寫寄存器-——基于FPGA BRAM的多端口地址查找表與FPGA BRAM的資源分析

    【FPGA/數(shù)字IC】Multiport RAM,多讀多寫寄存器-——基于FPGA BRAM的多端口地址查找表與FPGA BRAM的資源分析

    目錄 背景 手寫Multiport Ram Multiport RAM 代碼方案 資源評估 Multiport RAM 資源利用的優(yōu)化 資源評估 防止讀寫沖突的組合邏輯設(shè)計(jì)(寫優(yōu)先) 仿真和時(shí)序 單口寫數(shù)據(jù) 單端口讀數(shù)據(jù) 多口讀相同數(shù)據(jù) 多口同時(shí)讀不同數(shù)據(jù) 背景 ????????在多端口交換機(jī)的設(shè)計(jì)中,交換機(jī)的每個(gè)端口

    2024年04月26日
    瀏覽(38)
  • 【FPGA】AXI4-Lite總線讀寫B(tài)RAM

    【FPGA】AXI4-Lite總線讀寫B(tài)RAM

    AXI協(xié)議基礎(chǔ)知識 。這篇博客比較詳細(xì)地介紹了AXI總線,并且羅列了所有的通道和端口,寫代碼的時(shí)候可以方便地進(jìn)行查表。 AXI總線,AXI_BRAM讀寫仿真測試 。 這篇文章為代碼的書寫提供大致的思路,比如狀態(tài)機(jī)和時(shí)序的控制問題,可以參考。 雙向握手機(jī)制的實(shí)質(zhì)是: 數(shù)據(jù)接

    2024年02月15日
    瀏覽(17)
  • FPGA原理與結(jié)構(gòu)(8)——塊RAM(Block RAM,BRAM)

    FPGA原理與結(jié)構(gòu)(8)——塊RAM(Block RAM,BRAM)

    系列文章目錄:FPGA原理與結(jié)構(gòu)(0)——目錄與傳送門 ? ? ? ? 大家對于RAM應(yīng)該并不陌生,RAM就是一張可讀可寫的存儲(chǔ)表,它經(jīng)常被拿來與ROM進(jìn)行對比,相比之下,ROM只可讀。而在FPGA中,RAM一般可以分成兩種,一種是使用LUT資源組成的分布式RAM(DRAM),另一種就是塊RAM(B

    2024年02月08日
    瀏覽(27)
  • vivado中bram簡單使用

    vivado中bram簡單使用

    bram設(shè)置為簡單雙口 建議取消勾選這個(gè),這樣讀出來的數(shù)據(jù)是差一個(gè)時(shí)鐘周期的 vivado中的bram,寫的時(shí)候,寫使能,寫地址,寫數(shù)據(jù)一起賦值 讀的時(shí)候,讀使能,讀地址可以一起賦值,數(shù)據(jù)為下一時(shí)鐘周期才會(huì)來 邏輯為在地址1寫入了數(shù)據(jù)2。 讀的邏輯,地址1的數(shù)據(jù)2在一個(gè)時(shí)

    2024年02月13日
    瀏覽(24)
  • 如何創(chuàng)建 Xilinx BRAM 或 ROM 初始化文件(.COE)并實(shí)現(xiàn)初始化數(shù)據(jù)在 FPGA 上的載入

    如何創(chuàng)建 Xilinx BRAM 或 ROM 初始化文件(.COE)并實(shí)現(xiàn)初始化數(shù)據(jù)在 FPGA 上的載入 在 FPGA 開發(fā)中,初始化數(shù)據(jù)是一個(gè)非常重要的內(nèi)容,它決定了電路從上電開始的初始狀態(tài),對于保證正確性和可靠性有著至關(guān)重要的作用。其中,BRAM(Block RAM)和 ROM(Read-Only Memory)是兩種常見的

    2024年02月09日
    瀏覽(189)
  • PS和PL使用BRAM進(jìn)行數(shù)據(jù)交互

    PS和PL使用BRAM進(jìn)行數(shù)據(jù)交互

    BRAM(Block RAM)是 PL 部分的存儲(chǔ)器陣列,PS 和 PL 通過對 BRAM 進(jìn)行讀寫操作,來實(shí)現(xiàn)數(shù)據(jù)的交互。在 PL 中,通過輸出時(shí)鐘、地址、讀寫控制等信號來對 BRAM 進(jìn)行讀寫操作。而在 PS 中,處理器并不需要直接驅(qū)動(dòng) BRAM 的端口,而是通過 AXI BRAM 控制器來對 BRAM 進(jìn)行讀寫操作。AXI BR

    2024年02月02日
    瀏覽(25)
  • VIM 編輯器: Bram Moolenaar

    VIM 編輯器: Bram Moolenaar

    ??? VIM 用了很長時(shí)間, 個(gè)人的 VIM 配置文件差不多10年沒有更新了。以前寫程序的時(shí)候, 編輯都用這個(gè)。 linux kernel, boost規(guī)模的代碼都不在話下?,F(xiàn)在雖然代碼寫的少了,依然是我打開文件的首選。 ??? 現(xiàn)在用手機(jī)了,配個(gè)藍(lán)牙鍵盤就可以隨時(shí)隨地?cái)]代碼。 ??? 紀(jì)念下

    2024年02月13日
    瀏覽(21)
  • Vivado綜合生成BRAM及與LUTRAM的區(qū)別

    Vivado綜合生成BRAM及與LUTRAM的區(qū)別

    使用vivado中的BRAM可以通過例化 Block Memory Generator 這一ip并進(jìn)行相關(guān)的設(shè)定。 另外可以通過直接編寫符合BRAM規(guī)范的代碼,借助綜合工具直接將其綜合為BRAM。這時(shí)需要通過 (*ram_style=\\\"block\\\"*) 對 array 進(jìn)行修飾。 下面給出一種看似可以綜合為BRAM的示例。 上述代碼雖然用 (*ram_style

    2024年02月15日
    瀏覽(65)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包