0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Xilinx FPGA AXI-EMC IP的EMIF通信测试

CHANBAEK 来源: FPGA Zone 作者: FPGA Zone 2023-08-31 11:25 次阅读

概述

外部存储器接口EMIF通信常用于FPGADSP之间的数据传输,即将FPGA作为DSP的外部SRAM、或者协同处理器等。Xilinx提供了AXI-EMC IP核,将其挂载到AXI总线用于EMIF通信,也可方便地实现 PL (FPGA)和 PS (MicroBlaze或者ARM)之间的数据交互功能。

本文主要介绍一下该IP核的使用,以及创建Vivado工程对EMIF通信功能进行板上测试。

硬件平台

软件平台 :Vivado 2017.4;

硬件平台 :xc7a35tftg256-1;

AXI-EMC

功能特性

AXI-EMC IP核是一种可以支持各种型号内存的控制器,和EMIF接口类似,利用它可以实现数据的交互和通信。该IP核有以下功能特性:

  • 接口采用AXI4 Slave Memory Map,位宽支持32、64bits;
  • 支持AXI4增量和包传输,支持窄带和非对其传输;
  • 最多支持4个外部存储器;
  • 支持奇偶校验和流水线级同步SRAM等;

参数配置

图片

  • AXI Data Width:AXI总线位宽选择32位;
  • Number of Memory Banks:存储器个数这里选择1即可;
  • AXI ID位宽和存储空间地址选择默认配置;

图片

  • Memory Type:内存型号选择异步SRAM;
  • Data Width:数据位宽选择32位,与AXI总线位宽保持一致;
  • Timing Parameters参数默认是100MHZ AXI时钟下的配置;

图片

  • Advanced Configuration:高级配置选项保持默认,不用配置IP核内部寄存器;

Vivado工程创建

本工程是在MicroBlaze最小系统工程基础上进行创建,利用AXI-EMC在MicroBlaze软核端对FPGA端进行EMIF数据读写,进而实现PS和PL端数据交互功能。

搭建Block Design

  • 在MicroBlaze最小系统的Block Design工程中添加AXI-EMC IP核,并对参数进行配置;
  • 将IP核的 rdclk 接口以及 s_axi_aclk 接口与MIG IP提供的100MHZ用户时钟接口 ui_clk 进行连接;
  • mem_a (地址)、 mem_cen (片选)、 mem_dq_o (输出数据)、 mem_dq_i (输入数据)、 mem_oen (读使能)、 mem_wen (写使能)接口引出,在顶层文件中会进行调用。

最终搭建完成的Block Design如下图所示:

图片

修改顶层文件

在生成的顶层文件中添加以下代码,用于实现FPGA端基本的EMIF通信功能,以及添加ILA模块实现对EMIF接口信号的实时观察。

reg             [31:0]                  data_reg,mem_dq_i_reg;
reg             [2:0]                   mem_wen_r,mem_oen_r;


assign          mem_dq_i            =   mem_dq_i_reg; 


always@(posedge ui_clk) begin
    mem_wen_r <= {mem_wen_r[1:0],mem_wen};
    mem_oen_r <= {mem_oen_r[1:0],mem_oen};
end




always@(posedge ui_clk)
    if(mem_wen_r[2:1] == 2'b10) begin
        case(mem_a[17:2])
            16'h5555:   
                    data_reg <= mem_dq_o;
            default:
                    data_reg <= data_reg;
        endcase
    end


always@(posedge ui_clk)
    if(mem_oen_r[2:1] == 2'b10) begin
        case(mem_a[17:2])
            16'haaaa:   
                    mem_dq_i_reg <= data_reg;
            default:
                    mem_dq_i_reg <= mem_dq_i_reg;
        endcase
    end

ila_0 ila_0_u0
(
    .clk            (ui_clk),

    .probe0         (mem_a),
    .probe1         (mem_cen),
    .probe2         (mem_dq_i),
    .probe3         (mem_dq_o),
    .probe4         (mem_oen),
    .probe5         (mem_wen),
    .probe6         (uart_rtl_0_txd)
    );

创建SDK工程

在SDK软件中,采用Xilinx提供的Hello World工程,在helloworld.c文件中添加以下代码,用于实现MicroBlaze软核每隔一定时间在FPGA端0x55554地址下写入32位十进制数据:111,并从0xaaaa4地址将该数据读出。

#include < stdio.h >
#include "platform.h"
#include "xil_io.h"
#include "xparameters.h"
#include "xuartlite.h"
#include "xuartlite_l.h"


int ii,data;
int main()
{
    init_platform();
    print("EMIF TESTnr");
    while(1)
        {
          Xil_Out32(XPAR_EMC_0_S_AXI_MEM0_BASEADDR+0x5555*4,111);
          data=Xil_In32(XPAR_EMC_0_S_AXI_MEM0_BASEADDR+0xaaaa*4);
            for(ii=0;ii< 100;ii++);
        }
    cleanup_platform();
    return 0;
}

功能测试

该Vivado工程利用AXI-EMC IP核实现异步SRAM接口,在MicroBlaze软核CPU和FPGA之间进行基础的EMIF通信。该工程为实现PS和PL之间的数据交互功能提供一种很好的思路。

图片

FPGA板上测试结果如上图所示,MicroBlaze软核往FPGA 0x55554地址下写入32位十进制数据111,FPGA将该数据进行寄存,供软核从0xaaaa4地址下读出。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19076

    浏览量

    228689
  • dsp
    dsp
    +关注

    关注

    552

    文章

    7955

    浏览量

    347809
  • FPGA
    +关注

    关注

    1624

    文章

    21597

    浏览量

    601013
  • 存储器
    +关注

    关注

    38

    文章

    7413

    浏览量

    163466
  • 通信
    +关注

    关注

    18

    文章

    5938

    浏览量

    135748
  • Xilinx
    +关注

    关注

    71

    文章

    2153

    浏览量

    120796
收藏 人收藏

    评论

    相关推荐

    Xilinx zynq AXI总线全面解读

    AXI (Advanced eXtensible Interface) 本是由ARM公司提出的一种总线协议, Xilinx从 6 系列的 FPGA 开始对 AXI 总线提供支持,目前使
    的头像 发表于 12-04 12:22 6974次阅读
     <b class='flag-5'>Xilinx</b> zynq <b class='flag-5'>AXI</b>总线全面解读

    ARM+FPGA开发:基于AXI总线的GPIO IP创建

    FPGA+ARM是ZYNQ的特点,那么PL部分怎么和ARM通信呢,依靠的就是AXI总线。这个实验是创建一个基于AXI总线的GPIO IP,利
    的头像 发表于 12-25 14:07 5542次阅读
    ARM+<b class='flag-5'>FPGA</b>开发:基于<b class='flag-5'>AXI</b>总线的GPIO <b class='flag-5'>IP</b>创建

    XILINX FPGA IPAXI Traffic Generator

    AXI Traffic Generator IP 用于在AXI4和AXI4-Stream互连以及其他AXI4系统外设上生成特定序列(流量)。
    的头像 发表于 11-23 16:03 2205次阅读
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>IP</b>之<b class='flag-5'>AXI</b> Traffic Generator

    请教DSP的EMIF总线和ARM的AXI总线转换的问题

    最近做的东西涉及到将原有的DSP+FPGA架构的程序移植到ZYNQ-7系列FPGA上,请问如何将原DSP程序移植到ZYNQ-7的ARM上,可不可以做一个EMIF总线和AXI总线转换的模
    发表于 05-12 21:51

    基于C66x平台DSP与FPGA通信测试

    实际电脑终端IP为准Tronlong> fpgasrio(4)DSP与FPGA EMIF16通信
    发表于 10-31 14:27

    请问KC705上的AXI EMC核心硬件测试例子哪里可以找到?

    嗨,大家好在数据表PG100 aboutLogiCORE IP AXI EMCv2.0上,第62页(硬件测试)显示如下:AXI EMC内核已
    发表于 09-10 11:35

    请问有哪些fpga板支持外部闪存与axi_emc

    所有的,请告诉我任何fpga板支持外部闪存与axi_emc
    发表于 10-09 09:08

    AXI 代码 不通过 AXI Protocol Checker IP 的检测

    Checker IP 的检测呢 ? https://www.xilinx.com/support/documentation/ip_documentation/axi_protoco
    发表于 02-28 13:44

    使用EMIFXilinx FPGA与TI DSP平台接口

    使用EMIFXilinx FPGA与TI DSP平台接口:本应用指南使用外部存储器接口 (EMIF) 实现了 Xilinx
    发表于 11-01 15:00 71次下载

    Xilinx的LogiCORE IP Video In to AXI4

    Xilinx的视频的IP CORE 一般都是 以 AXI4-Stream 接口。 先介绍一下, 这个IP的作用。 下面看一下这个IP 的接口
    发表于 02-08 08:36 594次阅读
    <b class='flag-5'>Xilinx</b>的LogiCORE <b class='flag-5'>IP</b> Video In to <b class='flag-5'>AXI</b>4

    基于TCP/IP通信技术在Xilinx FPGA上的实现

    研究了TCP/IP通信协议栈在Xilinx 公司现场可编程门阵列FPGA上的实现,介绍了其软硬件的系统组成   和原理,提出一种不需操作系统的TCP/
    发表于 09-04 09:24 9次下载
    基于TCP/<b class='flag-5'>IP</b><b class='flag-5'>通信</b>技术在<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>上的实现

    如何使用Xilinx AXI进行验证和调试

    了解如何使用Xilinx AXI验证IP有效验证和调试AXI接口。 该视频回顾了使用的好处,以及如何使用示例设计进行模拟。
    的头像 发表于 11-20 06:38 4030次阅读

    AXI总线协议简介

    用于通过使用Xilinx进行的相应的开发来做FPGA实现,它被用作FPGA 设计的IP 核之间的一种通信方式。
    发表于 10-10 09:22 9881次阅读

    简单讲解AXI Interconnect IP核的使用方法

    最近需要用到AXI接口的模块,xilinxIP核很多都用到了AXI总线进行数据和指令传输。如果有多个设备需要使用AXI协议对
    的头像 发表于 06-19 15:45 9333次阅读
    简单讲解<b class='flag-5'>AXI</b> Interconnect <b class='flag-5'>IP</b>核的使用方法

    什么是AXIAXI如何工作?

    Xilinx 从 Spartan-6 和 Virtex-6 器件开始采用高级可扩展接口 (AXI) 协议作为知识产权 (IP) 内核。Xilinx 继续将
    的头像 发表于 09-27 09:50 1617次阅读
    什么是<b class='flag-5'>AXI</b>?<b class='flag-5'>AXI</b>如何工作?