在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于AXI BRAM控制器的相關(guān)內(nèi)容

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-11-16 11:33 ? 次閱讀

學(xué)習(xí)內(nèi)容

本文介紹關(guān)于AXI BRAM控制器的相關(guān)內(nèi)容,針對(duì)數(shù)據(jù)量較少、地址不連續(xù)、長(zhǎng)度不規(guī)則的情況,通過 BRAM 來進(jìn)行數(shù)據(jù)的交互。

開發(fā)環(huán)境

vivado 18.3&SDK,PYNQ-Z2開發(fā)板。

AXI BRAM控制器

簡(jiǎn)介

BRAM控制器可以用于與 AXI 互連和系統(tǒng)主設(shè)備的集成,以與本地塊 RAM 進(jìn)行通信。內(nèi)核支持到塊 RAM 的單次和突發(fā)傳輸,并針對(duì)性能進(jìn)行了優(yōu)化。AX14或AX14- lite控制器配置中,可以配置到BRAM塊的單個(gè)端口或到BRAM塊的兩個(gè)端口。通過第二個(gè)AX14-Lite控制端口連接,AXI BRAM控制器IP可以在數(shù)據(jù)路徑上配置ECC功能,并通過可用的外部ECC寄存器設(shè)置。AXI BRAM Controller IP核的頂級(jí)端口連接和主模塊如下圖所示。展示了AX14-Lite模式下,AXI BRAM核心與BRAM塊的連接??梢岳肂RAM塊的單端口利用率或BRAM塊的雙端口模式(通過參數(shù)設(shè)置)。

f7d009e8-6541-11ed-8abf-dac502259ad0.png



下圖展示了為支持AX14接口而生成的HDL核心。對(duì)BRAM塊的單端口使用可以配置在雙端口配置中增強(qiáng)的性能設(shè)置。,詳細(xì)結(jié)構(gòu)框圖如下:

f7dfac90-6541-11ed-8abf-dac502259ad0.png




所有與axis主設(shè)備的通信都是通過一個(gè)5通道的axis接口進(jìn)行的。所有寫操作都在AXI總線的寫地址通道(AW)上啟動(dòng),該通道指定了寫事務(wù)的類型和相應(yīng)的地址信息。寫數(shù)據(jù)通道(W)為單個(gè)或突發(fā)寫操作通信所有寫數(shù)據(jù)。寫響應(yīng)通道(B)用作寫操作的握手或響應(yīng)。

在讀操作上,當(dāng)AXI主程序請(qǐng)求讀傳輸時(shí),讀地址通道(AR)通信所有地址和控制信息。當(dāng)可以處理讀操作時(shí),AXI從AXI BRAM控制器IP響應(yīng)讀地址通道(AR)。當(dāng)讀取數(shù)據(jù)可用時(shí),讀數(shù)據(jù)通道(R)將轉(zhuǎn)換操作的數(shù)據(jù)和狀態(tài)。

支持內(nèi)存大小

AXI BRAM Controller支持的內(nèi)存最大為2mbytes(字節(jié)大小為8或9),支持的內(nèi)存寬度和深度如表1-1所示。

f7f3d1de-6541-11ed-8abf-dac502259ad0.png




AXI BRAM Controller IP支持的最小深度為512字節(jié)。任何小于512的深度都被調(diào)整為512字節(jié)。

系統(tǒng)框圖與工程設(shè)計(jì)

工程功能設(shè)計(jì)為PS 將串口接收到的數(shù)據(jù)寫入 BRAM,然后從 BRAM 中讀出數(shù)據(jù),并通過串口打印出來;與此同時(shí), PL 從 BRAM 中同樣讀出數(shù)據(jù),并通過 ILA 來觀察讀出的數(shù)據(jù)與串口打印的數(shù)據(jù)是否一致。系統(tǒng)框圖如下:

f8115f7e-6541-11ed-8abf-dac502259ad0.png

硬件平臺(tái)搭建

新建工程,創(chuàng)建 block design。

配置ZYNQ7

添加ZYNQ7 IP,對(duì)zynq進(jìn)行初始化配置,勾選配置uart資源,

f81fc60e-6541-11ed-8abf-dac502259ad0.png

使能clock復(fù)位和 M_GP0接口,

f83c9874-6541-11ed-8abf-dac502259ad0.png

配置時(shí)鐘,

f84859b6-6541-11ed-8abf-dac502259ad0.png

配置BRAM控制器和BRAM

接著配置BRAM控制器,基本是默認(rèn)配置。

f876b220-6541-11ed-8abf-dac502259ad0.png

配置BRAM

f8db58b0-6541-11ed-8abf-dac502259ad0.png

連接連線后系統(tǒng)如下,

f8fc8b7a-6541-11ed-8abf-dac502259ad0.png

設(shè)計(jì)讀取控制模塊

首先點(diǎn)擊tools創(chuàng)建一個(gè)新的IP,

f906ef52-6541-11ed-8abf-dac502259ad0.png

選擇創(chuàng)建一個(gè)AXI4接口的IP。

f9168958-6541-11ed-8abf-dac502259ad0.png

編輯IP名稱等信息,設(shè)計(jì)IP的接口信息,

f92241d0-6541-11ed-8abf-dac502259ad0.png

點(diǎn)擊finish,完成IP創(chuàng)建。

f9593fa0-6541-11ed-8abf-dac502259ad0.png

在IP目錄下找到自己創(chuàng)建好的IP,右鍵進(jìn)行IP的編輯。

f96b0c1c-6541-11ed-8abf-dac502259ad0.png

在頂層進(jìn)行例化ram接口。

f97c0a26-6541-11ed-8abf-dac502259ad0.png

在AXI總線協(xié)議實(shí)現(xiàn)的文件中添加IP的例化,實(shí)現(xiàn)AXI-Lite接口的功能進(jìn)行參數(shù)的傳遞。

f98d11ae-6541-11ed-8abf-dac502259ad0.png

這里引用正點(diǎn)原子的BRAM的讀取模塊,bram_rd.v


		
module bram_rd(
    input                clk        , //時(shí)鐘信號(hào)
    input                rst_n      , //復(fù)位信號(hào)
    input                start_rd   , //讀開始信號(hào)
    input        [31:0]  start_addr , //讀開始地址  
    input        [31:0]  rd_len     , //讀數(shù)據(jù)的長(zhǎng)度
    //RAM端口
    output               ram_clk    , //RAM時(shí)鐘
    input        [31:0]  ram_rd_data, //RAM中讀出的數(shù)據(jù)
    output  reg          ram_en     , //RAM使能信號(hào)
    output  reg  [31:0]  ram_addr   , //RAM地址
    output  reg  [3:0]   ram_we     , //RAM讀寫控制信號(hào)
    output  reg  [31:0]  ram_wr_data, //RAM寫數(shù)據(jù)
    output               ram_rst      //RAM復(fù)位信號(hào),高電平有效
);


//reg define
reg  [1:0]   flow_cnt;
reg          start_rd_d0;
reg          start_rd_d1;


//wire define
wire         pos_start_rd;


//*****************************************************
//**                  main code
//*****************************************************


assign  ram_rst = 1'b0;
assign  ram_clk = clk ;
assign pos_start_rd = ~start_rd_d1 & start_rd_d0;


//延時(shí)兩拍,采start_rd信號(hào)的上升沿
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        start_rd_d0 <= 1'b0;   
        start_rd_d1 <= 1'b0; 
    end
    else begin
        start_rd_d0 <= start_rd;   
        start_rd_d1 <= start_rd_d0;     
    end
end


//根據(jù)讀開始信號(hào),從RAM中讀出數(shù)據(jù)
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        flow_cnt <= 2'd0;
        ram_en <= 1'b0;
        ram_addr <= 32'd0;
        ram_we <= 4'd0;
    end
    else begin
        case(flow_cnt)
            2'd0 : begin
                if(pos_start_rd) begin
                    ram_en <= 1'b1;
                    ram_addr <= start_addr;
                    flow_cnt <= flow_cnt + 2'd1;
                end
            end
            2'd1 : begin
                if(ram_addr - start_addr == rd_len - 4) begin  //數(shù)據(jù)讀完
                    ram_en <= 1'b0;
                    flow_cnt <= flow_cnt + 2'd1;
                end
                else
                    ram_addr <= ram_addr + 32'd4;              //地址累加4
            end
            2'd2 : begin
                ram_addr <= 32'd0; 
                flow_cnt <= 2'd0;
            end
        endcase    
    end
end


endmodule

創(chuàng)建引腳接口,選擇任意一個(gè)BRAM引腳,創(chuàng)建封裝

f9a00d54-6541-11ed-8abf-dac502259ad0.png

設(shè)置接口和名稱,

f9d1e1f8-6541-11ed-8abf-dac502259ad0.png

完成接口映射。

f9eb52be-6541-11ed-8abf-dac502259ad0.png

然后點(diǎn)擊完成IP封裝。

f9fc7f30-6541-11ed-8abf-dac502259ad0.png

完成系統(tǒng)設(shè)計(jì)

完成IP的創(chuàng)建后,添加IP,完成連線,整體設(shè)計(jì)如下圖所示:

fa0a4886-6541-11ed-8abf-dac502259ad0.png

然后在完成綜合后進(jìn)行setup debug ,抓取b端口有關(guān)的信號(hào)。

fa15ba54-6541-11ed-8abf-dac502259ad0.png

完成添加DEDUG信號(hào)后,進(jìn)行綜合生成bit流,然后導(dǎo)出硬件,launch SDK。

SDK軟件部分

新建應(yīng)用工程,main.c中輸入以下代碼:


		
#include "xil_printf.h"
#include "stdio.h"
#include "xbram_hw.h"
#include "ps_pl_rd_ip.h"
#include "xparameters.h"


#define PL_BRAM_START  PS_PL_RD_IP_S00_AXI_SLV_REG0_OFFSET
#define PL_BRAM_START_ADDR PS_PL_RD_IP_S00_AXI_SLV_REG1_OFFSET
#define PL_BRAM_LEN PS_PL_RD_IP_S00_AXI_SLV_REG2_OFFSET
#define PS_PL_BASEADDR XPAR_PS_PL_RD_IP_0_S00_AXI_BASEADDR


#define START_ADDR  0
#define BRAM_DATA_BYTE 4
char input_data[1024];
int len_input_data;
int main(){
  while(1){
    int i=0;
    int wr_cnt=0;
    printf("ps_pl_bram test
");
    scanf("%s",input_data);
    len_input_data= strlen(input_data);
    for(i = START_ADDR*BRAM_DATA_BYTE;i<(START_ADDR + len_input_data)*BRAM_DATA_BYTE;i+=BRAM_DATA_BYTE)
    {
      PS_PL_RD_IP_mWriteReg(XPAR_BRAM_0_BASEADDR,i,input_data[wr_cnt]);
      wr_cnt++;
    }
    //配置起始地址
    PS_PL_RD_IP_mWriteReg(PS_PL_BASEADDR,PL_BRAM_START_ADDR,START_ADDR*BRAM_DATA_BYTE);
    //配置讀取長(zhǎng)度
    PS_PL_RD_IP_mWriteReg(PS_PL_BASEADDR,PL_BRAM_LEN,len_input_data*BRAM_DATA_BYTE);
    //使能脈沖
    PS_PL_RD_IP_mWriteReg(PS_PL_BASEADDR,PL_BRAM_START,1);
    PS_PL_RD_IP_mWriteReg(PS_PL_BASEADDR,PL_BRAM_START,0);
    for(i = START_ADDR*BRAM_DATA_BYTE;i<(START_ADDR + len_input_data)*BRAM_DATA_BYTE;i+=BRAM_DATA_BYTE)
    {
      printf("bram address : %d ,read data : %c
",i/BRAM_DATA_BYTE,PS_PL_RD_IP_mReadReg(XPAR_BRAM_0_BASEADDR,i));
    }
  }
}

部分代碼講解

本次工程比較簡(jiǎn)單,在while循環(huán)中實(shí)現(xiàn)了對(duì)串口輸入的存儲(chǔ)和顯示打印。

運(yùn)行效果

fa348cd6-6541-11ed-8abf-dac502259ad0.png

在這里插入圖片描述

ila抓取數(shù)據(jù)

通過ILA抓取的讀取數(shù)據(jù)和發(fā)送寫入的數(shù)據(jù)一致。

fa46e156-6541-11ed-8abf-dac502259ad0.png



審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16448

    瀏覽量

    179480
  • BRAM
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    11016

原文標(biāo)題:SDK軟件部分

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電機(jī)控制器EMC測(cè)試整改:確保電磁兼容性有效手段

    EMC性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。因此,對(duì)電機(jī)控制器進(jìn)行EMC測(cè)試整改,確保其能在復(fù)雜的電磁環(huán)境中穩(wěn)定運(yùn)行,顯得尤為重要。本文深圳南柯電子小編將探討電機(jī)控制器EMC測(cè)試整改的相關(guān)內(nèi)容,大家一起來看看吧。
    的頭像 發(fā)表于 01-07 15:40 ?202次閱讀

    晶體生長(zhǎng)相關(guān)內(nèi)容——晶型控制與襯底缺陷

    晶體生長(zhǎng)在分析晶體生長(zhǎng)時(shí),我們需要考慮多個(gè)關(guān)鍵因素,這些因素共同影響著晶體生長(zhǎng)的質(zhì)量和進(jìn)程。本文介紹了晶體生長(zhǎng)相關(guān)內(nèi)容,包括:雜對(duì)晶格硬度變化影響、碳化硅晶型控制、襯底缺陷控制和電氣特性控制
    的頭像 發(fā)表于 12-30 11:40 ?162次閱讀

    EMC電機(jī)控制器測(cè)試整改:性能提升的完整路徑

    在當(dāng)今電子設(shè)備高度集成和復(fù)雜化的背景下,電磁兼容性(EMC)問題日益凸顯。作為電動(dòng)機(jī)控制系統(tǒng)的核心部件,電機(jī)控制器的EMC性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行和電磁環(huán)境的和諧共存。本文深圳南柯電子小編將探討EMC電機(jī)控制器測(cè)試整改的
    的頭像 發(fā)表于 12-17 17:22 ?465次閱讀

    電機(jī)控制器原理是什么?類型有哪些?

    電機(jī)控制器是用于控制電機(jī)運(yùn)行的設(shè)備,其主要功能是將電能轉(zhuǎn)換為機(jī)械能,同時(shí)根據(jù)需要調(diào)節(jié)電機(jī)的速度、轉(zhuǎn)矩和方向。電機(jī)控制器的原理主要基于電力電子技術(shù)、自動(dòng)控制理論和電機(jī)理論。以下是
    的頭像 發(fā)表于 10-21 13:48 ?546次閱讀

    TAS6424(L)-Q1 Fault腳如何控制拉低?

    請(qǐng)問是否有TAS6424(L)-Q1的相關(guān)應(yīng)用文檔,介紹以下相關(guān)內(nèi)容: Fault腳如何控制拉低?當(dāng)過壓多少伏之后產(chǎn)生Fault信號(hào),恢復(fù)后沒有聲音輸出,如何控制其恢復(fù)正常?
    發(fā)表于 10-11 06:13

    求助,關(guān)于LM331 F/V轉(zhuǎn)換電路輸入電容選擇的問題求解

    數(shù)據(jù)手冊(cè)中F/V轉(zhuǎn)換電路的輸入電容都是470pF,請(qǐng)問下這個(gè)電容的選擇依據(jù)或者改變這個(gè)值的影響都有什么,在手冊(cè)中沒有找到相關(guān)內(nèi)容,請(qǐng)大神幫忙解答一下
    發(fā)表于 07-31 06:14

    Xilinx NVMe AXI4主機(jī)控制器,AXI4接口高性能版本介紹

    NVMe AXI4 Host Controller IP可以連接高速存儲(chǔ)PCIe SSD,無需CPU,自動(dòng)加速處理所有的NVMe協(xié)議命令,具備獨(dú)立的數(shù)據(jù)寫入和讀取AXI4接口,不但適用高性能、順序
    的頭像 發(fā)表于 07-18 09:17 ?646次閱讀
    Xilinx NVMe <b class='flag-5'>AXI</b>4主機(jī)<b class='flag-5'>控制器</b>,<b class='flag-5'>AXI</b>4接口高性能版本介紹

    如何在psoc 4控制器 (CY8C4245AXI-483) 中實(shí)現(xiàn)RC5協(xié)議?

    如何在 psoc 4 控制器 (CY8C4245AXI-483) 中實(shí)現(xiàn) RC5 協(xié)議
    發(fā)表于 07-04 07:38

    移動(dòng)機(jī)械控制器 車載智能控制器 CAN總線控制器

    控制器機(jī)械
    長(zhǎng)沙碩博電子科技股份有限公司
    發(fā)布于 :2024年06月13日 17:02:51

    基于FPGA設(shè)計(jì)的BRAM內(nèi)部結(jié)構(gòu)

    再看末級(jí)觸發(fā)對(duì)BRAM時(shí)序性能的影響,下圖依次展示了7系列FPGA、UltraScale+和Versal芯片在未使用和使用末級(jí)觸發(fā)兩種情形下時(shí)鐘到輸出的延遲。
    發(fā)表于 04-25 10:42 ?450次閱讀
    基于FPGA設(shè)計(jì)的<b class='flag-5'>BRAM</b>內(nèi)部結(jié)構(gòu)

    FPGA通過AXI總線讀寫DDR3實(shí)現(xiàn)方式

    AXI總線由一些核心組成,包括AXI主處理接口(AXI4)、AXI處理到協(xié)處理
    發(fā)表于 04-18 11:41 ?1345次閱讀

    STM32F407+CUBEMX+DP83848K,LED_speed黃燈上電常亮,LED_Link綠燈一直不亮為什么?

    如題,用CUBEMX配置好RCC,ETH,LWIP相關(guān)內(nèi)容后,直接生成代碼編譯下載,LED_Link綠燈一直不亮,MAC端網(wǎng)口也顯示未連接
    發(fā)表于 03-19 07:02

    PCIe-AXI-Cont用戶手冊(cè)

    Transaction layer的所有功能特性,不僅內(nèi)置DMA控制器,而且具備AXI4用戶接口,提供一個(gè)高性能,易于使用,可定制化的PCIe-AXI互連解決方案,同時(shí)適用于ASIC和FPGA。
    發(fā)表于 02-22 09:15 ?3次下載

    PCIe控制器(FPGA或ASIC),PCIe-AXI-Controller

    Transaction Layer的所有功能特性,不僅內(nèi)置DMA控制器,而且具備AXI4用戶接口,提供一個(gè)高性能,易于使用,可定制化的PCIe-AXI互連解決方案,同時(shí)適用于ASIC和FPGA。
    的頭像 發(fā)表于 02-21 15:15 ?1007次閱讀
    PCIe<b class='flag-5'>控制器</b>(FPGA或ASIC),PCIe-<b class='flag-5'>AXI</b>-Controller

     海外云服務(wù)搭建pi節(jié)點(diǎn)詳細(xì)步驟

     海外云服務(wù)搭建pi節(jié)點(diǎn)簡(jiǎn)單嗎?海外云服務(wù)搭建pi節(jié)點(diǎn)步驟有哪些?小編為您整理發(fā)布海外云服務(wù)搭建pi節(jié)點(diǎn)相關(guān)內(nèi)容。
    的頭像 發(fā)表于 02-21 10:16 ?1213次閱讀
    主站蜘蛛池模板: 午夜精品久久久久久 | 日本高清视频在线www色 | 四虎音影| 亚洲网站色| 午夜视频网址 | 亚洲 欧洲 日韩 | 国产午夜不卡在线观看视频666 | 黄色网免费 | aaa亚洲| 国产美女视频一区二区三区 | 福利视频一区二区三区 | 国产精品夜夜春夜夜 | 日本视频www| 天堂网一区 | 一区卡二区卡三区卡视频 | 五月天福利视频 | 日韩三级中文 | 亚洲天堂手机在线 | 亚洲一区二区三区在线 | 国产五月婷婷 | 狼人 成人 综合 亚洲 | 四虎影院观看视频 | 视频在线欧美 | 免费亚洲成人 | 五月婷婷在线视频 | 天堂最新版免费观看 | 一本到午夜92版免费福利 | 丁香婷婷色综合 | 碰免费人人人视频 | 亚洲天堂三级 | 国产一级做a爰片久久毛片 国产一级做a爰片久久毛片男 | 日韩欧美在线中文字幕 | 男女爱爱免费 | 伊人成人在线观看 | 欧美日韩精品乱国产 | 伊人久久大香线蕉综合7 | 国产盗摄女厕美女嘘嘘 | 五月激情在线 | a级黄视频| 夜夜bb| 日本xxxx色视频在线观看免费 |