欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

基于vivado2019的FDMA及DDR3仿真(AXI接口)

程序员文章站 2022-04-02 20:12:49
基于vivado2019的FDMA及DDR3仿真(AXI接口)前言一、VIVADO自带example建立二、FDMA介绍三、顶层文件的替换及仿真前言之前每次调试内存的代码都要直接下板调试,随着工程越来越大,综合时间太长,十分影响工程进度,所以希望搭建一个能够直接仿真的DDR平台。用VIVADO自带的MIG 的 example案例来修改,完成了米联客的FDMA的仿真平台。一、VIVADO自带example建立首先按照各自开发板上的DDR建立对应的MIG核,这里以米联客的XC7K325tffg9...

前言

之前每次调试内存的代码都要直接下板调试,随着工程越来越大,综合时间太长,十分影响工程进度,所以希望搭建一个能够直接仿真的DDR平台。 用VIVADO自带的MIG 的 example案例来修改,完成了米联客的FDMA的仿真平台。

一、VIVADO自带example建立

首先按照各自开发板上的DDR建立对应的MIG核,这里以米联客的XC7K325tffg900为例。
基于vivado2019的FDMA及DDR3仿真(AXI接口)

  • 在建立MIG核的时候需要注意,对应的memory type要选对,否则例化的MIG、DDR
    modle和后续顶层将无法对应。
  • 目前网上博客中大部分mig案例都是APP用户模式,而在工程中常用axi接口的模式,资料并不多,所以博主选择axi接口的mig核。

基于vivado2019的FDMA及DDR3仿真(AXI接口)

  • 生成MIG核后,右键IP,选择open IP Example Design后即可自动生成官方的MIG控制DDR3 model的工程。我们后续只需要在上面进行修改即可。

二、FDMA介绍

  • 这里可能很多初学者会有疑问,为什么有MIG核来控制DDR3,还需要FDMA来在外面包一层。因为用户直接操作AXI接口将很麻烦,如果能够只操作少量的信号就能完成AXI接口层的读写操作,那么将大大减少用户的工作量,所以FDMA就显的十分有必要。
  • 下面是各关键信号波形变化,和具体表述

基于vivado2019的FDMA及DDR3仿真(AXI接口)

信号 作用 备注
w_fdma_locked 表示开始一个package写时的状态 这里指发送1024个数据之间
axi_awvalid 表示主机允许刷新地址线上的地址 这里只保持一个周期的脉冲
w_cycle_flag 表示axi在进行写的时候 这里除去了last信号拉高的时间
axi_awaddr 表示写地址 ——
axi_wvalid 表示写数据有效 只在w_cycle_flag高且last为低时有效
w_word_cnt 以一次突发长度为最大值记写数据个数 ——
wr_data_cnt 以一个package为最大值记写数据个数 ——
axi_wlast 表示每一个突发结束的最后一个数据 ——
w_next 代表能成功读写的时候 ——

三、顶层文件的替换及仿真

  • 有了FDMA的顶层和官网实例模板后就可以开始移植了,只需要将example_top换成FDMA的顶层即可,这里需要注意FDMA的复位信号需要从MIG核的ui_clk_sync_rst端口出来,其表示ui_clk稳定状态,否则会影响FDMA一直无法正常工作。
  • 除此之外,还需要注意每个MIG核对应的tb的顶层是一一对应的,两者需要同步修改。

本文地址:https://blog.csdn.net/sz_woshishazi/article/details/109236162

相关标签: FPGA