DDR官方例程读写仿真记录

这篇具有很好参考价值的文章主要介绍了DDR官方例程读写仿真记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、配置MIG控制器,理解MIG核的输入输出信号

1、配置MIG控制器

  a、在 IP Catalog里搜索MIG,点击下方的Memory Interface Generator核

DDR官方例程读写仿真记录,FPGA学习,fpga开发

b、接下来是查看FPGA的器件,速度等级,语言等等,全部和工程一致
c、接下来勾选 Creat Design ,设计名称保持默认 mig_7series_0 ,底部勾选使用AXI4接口

DDR官方例程读写仿真记录,FPGA学习,fpga开发

d、之后是 兼容的FPGA型号选择(默认不选) 和 存储器类型选择DDR3
e、Controller Option

DDR时钟:(外部时钟)

             选择400M----2500ps,这个时钟是输出给DDR储存器的驱动时钟,DDR芯片的IO时钟频率

             表现是MIG的输出信号  ddr_ck_p和ddr_ck_n

             由于是双沿采样,800M是实际的工作频率

用户时钟:(内部时钟)

            400 / 4 =100M     

            表现是MIG的输出信号       ui_clk = DDR的IO时钟  / (PHY to Controller Clock Ratio)

            DDR3 是8倍预读取,所以 ui_clk = 工作频率 / 8

        此外MIG核还有 参考时钟ref_clk系统时钟sys_clk_i

            系统时钟一般为sys_clk_i=200M(工作频率大于666M时),即给MIG使用的

            参考时钟一般选择使用系统时钟(use system clock),给MIG中的IEDELAY使用

存储器类型(Memory Type)选择 :Components

然后选择相应的DDR型号,Create Custom Part,电压为1.5V

DDR的数据位宽:16--128bit

ECC和数据掩码保持默认

Bank Machine 数量,这里默认 4 个

命令排序方式选择 strict,即不对命令重新排序

DDR官方例程读写仿真记录,FPGA学习,fpga开发

DDR官方例程读写仿真记录,FPGA学习,fpga开发

f、AXI4接口配置

AXI4数据位宽  128 = 16 * 8

TMD表示读写优先级相同,因为MIG只有一组地址线,DDR的读写两组地址线不能发挥作用

地址位宽  2Gb = 256MB = 2^28B       所以地址位为29位宽

AXI ID的位宽 4 ,AXI读写的通道号

DDR官方例程读写仿真记录,FPGA学习,fpga开发

g、MEMORY OPTION

200M的系统时钟 sys_clk_i,FPGA晶振上只有125M,使用PLL生成

                        后续参考时钟也使用这个时钟

顺序读写Sequential

输出驱动阻抗 R ZQ/7

片上终端  R ZQ/4

片选信号:要注意硬件原理图,连接即使能,否则不使能

AXI和DDR的地址映射关系选择后者

DDR官方例程读写仿真记录,FPGA学习,fpga开发

h、FPGA Option

系统时钟  no buffer

参考时钟使用系统时钟

低电平复位

勾选 Internal Vref

DDR官方例程读写仿真记录,FPGA学习,fpga开发

i、IO Selecting

设置内部阻抗:50hom

下面只要仿真的话,选择第一个选项;因为我们要上板,所以选第二个,配置引脚

配置引脚时,可以根据原理图选择 pin number 和 IO standard;也可以读取.ucf约束文件

验证后进入下一步

后面就不需要更改选项了,全部默认,最后选择 accept 即可

2、MIG信号说明

打开MIG的例化文件(.veo)

DDR官方例程读写仿真记录,FPGA学习,fpga开发

a、DDR接口

DDR官方例程读写仿真记录,FPGA学习,fpga开发

其中,init_calib_complete 信号表示MIG对DDR存储器初始化完成信号

init_calib_complete  :(仿真时要先等该信号拉高,然后才能进行读写测试);

带有 ddr3 的信号:通引脚(.ucf文件)连到外部,与DDR存储器相连的,满足DDR传输的协议

b、用户接口

DDR官方例程读写仿真记录,FPGA学习,fpga开发

其中

ui_clk 和 ui_clk_sync_rst :输出给用户的时钟复位,具体频率多少与前面Controller Option设置的                                              相关;ui_clk = Clock period / (PHY to Controller Clock Ratio)

                                            即 DDR的 IO 时钟频率 除以 设置的速率比 

mmcm_locked 和 aresetn:是MIG内部 PLL,MMCM的锁定(高有效)和复位信号(低有效)

带有 app 的信号是 用户接口维护命令信号:不使用,输入给0,输出不用

c、系统信号

DDR官方例程读写仿真记录,FPGA学习,fpga开发

即 输入给MIG控制器IP的信号,时钟是前面配置的200M,低电平复位;控制MIG的

d、AXI接口信号
写地址信号

DDR官方例程读写仿真记录,FPGA学习,fpga开发

s_axi_awid :  写入的通道 ID tag;

                        可以不按照通道ID tag读写,但是必须完成一个ID tag才能进入下一个ID tag

s_axi_awaddr :写入数据的地址

s_axi_awlen :突发写的长度,数据写入长度 = s_axi_len + 1

s_axi_awsize :写入数据的位宽大小,以字节为单位;s_axi_awsize = 4,即 2^4 = 16Byte

s_axi_awburst :突发类型,一般是01;

s_axi_awlock ,s_axi_awcache ,s_axi_awprot ,s_axi_awqos :一般全输入为 0

s_axi_awvalid :由信息源端发送给目的端,代表信息源端的写入地址有效(主机发送)

s_axi_awready :由目的端发送给信息源端,代表目的端准备接受(从机发送)

当 s_axi_awvalid 和 s_axi_awready 同时为高时,才将地址信息和控制信息传给设备

写数据信号

DDR官方例程读写仿真记录,FPGA学习,fpga开发

s_axi_wdata : 要写入的数据

s_axi_wstrb : 数据有效码;每一位拉高代表一个字节的数据有效

s_axi_wlast :最后一位传输时拉高

s_axi_wvalid :由信息源端发送给目的端,代表信息源端的写入数据有效(主机发送)

s_axi_wready :由目的端发送给信息源端,代表目的端准备接受(从机发送)

当 s_axi_wvalid 和 s_axi_wready 同时为高时,才将数据信息传给设备

写响应信号

DDR官方例程读写仿真记录,FPGA学习,fpga开发s_axi_bid   :写响应通道,与awid相同

s_axi_bresp  :写响应状态;2'b00表示OK,写入正常

(valid 和 ready 方向相反)

s_axi_bvalid :由目的端发送给信息源端,代表目的端的写入响应有效(从机发送)

s_axi_bready :由信息源端发送给目的端,代表信息源端准备接受(主机发送)

当 s_axi_bvalid 和 s_axi_bready 同时为高时,才将写入响应信息传给主机

读地址信号

DDR官方例程读写仿真记录,FPGA学习,fpga开发

s_axi_arid :读取地址的 ID tag

s_axi_araddr :读取数据的地址

s_axi_arlen : 读取数据的突发长度;数据读取长度 = s_axi_arlen + 1;

s_axi_arsize :读取数据的位宽,以字节为单位;s_axi_arsize = 4,2^4 = 16Byte

s_axi_arburst :读突发的类型,一般为 2'b01

s_axi_arlock,s_axi_arcache,s_axi_arprot,s_axi_arqos  :一般全为0;

s_axi_arvalid :由信息源端发送给目的端,代表信息源端的读取地址有效(主机发送)

s_axi_arready :由目的端发送给信息源端,代表目的端准备接受(从机发送)

当 s_axi_arvalid 和 s_axi_arready 同时为高时,才将地址信息和控制信息传给设备

读数据信号

DDR官方例程读写仿真记录,FPGA学习,fpga开发

s_axi_rid :读取数据的 ID tag,与s_axi_arid相同

s_axi_rdata :读取的数据

s_axi_rresp :读响应状态;2'b00表示OK,读取正常

s_axi_rlast :最后一次读取时拉高

s_axi_rvalid :由目的端发送给信息源端,代表目的端的读取数据和响应有效(从机发送)

s_axi_rready :由信息源端发送给目的端,代表信息源端准备接受(主机发送)

当 s_axi_rvalid 和 s_axi_rready 同时为高时,才将读取数据和响应信息传给主机

二、仿真DDR,对照AXI4协议查看波形

前面配置完成之后,直接右击MIG核,打开官方例程进行仿真( open ip example design )

直接simulation

等待一段时间,init_calib_complete信号拉高后,DDR初始化完成

DDR官方例程读写仿真记录,FPGA学习,fpga开发

添加 AXI4 信号,重新仿真

这里要注意的是显示的系统时钟 sys_clk 是输入给MIG核的(200M)

而AXI4的时序时钟是MIG输出的用户时钟 ui_clk (100M),查看时要留意

DDR官方例程读写仿真记录,FPGA学习,fpga开发

DDR官方例程读写仿真记录,FPGA学习,fpga开发

黄色线 awvalid 和 awready 同时拉高时

写入的 ID tag 是 4'b0

写入的地址是 29'd0

写入的数据长度是 2+1 = 3

写入的数据位宽是 2^4 = 16Byte

粉色的线在 wvalid 和 wready 拉高时,确实保持3个 ui_clk(100M)

wlast 最后一个周期拉高

wstrb 为 16'hffff,数据全部有效

              128'h5a_5a_a5_a5_5a_5a_a5_a5_5a_5a_a5_a5_5a_5a_a5_a5确实是16Byte

橙色线在 bvalid 和 bready 同时拉高时,bresp 为 2'd0 写入状态正常

符合AXI4写时序

写入状态响应正常之后,过一段时间开始读

DDR官方例程读写仿真记录,FPGA学习,fpga开发

DDR官方例程读写仿真记录,FPGA学习,fpga开发

蓝色线 rrvalid 和 rrready 同时拉高时

读取的 ID tag 是 4'b0

读取的地址是 29'd0

读取的数据长度是 2+1 = 3

读取的数据位宽是 2^4 = 16Byte

与之前写入的相同(aw),读写地址正确

DDR官方例程读写仿真记录,FPGA学习,fpga开发

褐色线在rvalid 和 rready同时拉高时,持续3个 ui_clk ;在最后一次读取时,rlast 拉高;

读取响应为2'd0,状态正常;读取的数剧也与之前写入的相同。

AXI4读时序正确

至此带有AXI4接口的MIG核仿真验证成功文章来源地址https://www.toymoban.com/news/detail-860173.html

到了这里,关于DDR官方例程读写仿真记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA实现Aurora 8B/10B接口(5)--官方例程学习(Framing接口)

    文章目录 1、IP核定制与官方例程的生成 1.1、第一页配置:物理层以及链路层信息选择

    2024年02月09日
    浏览(35)
  • 【正点原子FPGA连载】第三十一章DDR4读写测试实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html DDR4 SDRAM(Double-Data-Rate Fourth Generation Synchronous Dynamic Random Access Memory,简称为DDR4 SDRAM),是一种高速动态随机

    2024年01月16日
    浏览(61)
  • 【FPGA】MIG DDR3读写逻辑测试

            笔者在之前通过microblaze软核的方式实现了DDR3芯片的读写测试,当时对于Xilinx MIG DDR控制器的理解还比较肤浅。还是想通过控制用户接口时序的方式来读写DDR,扩展和加深自己对DDR的理解。 MIG IP核配置请看我的前一篇文章 【FPGA测试】Microblaze测试DDR读写_microblaze

    2024年01月22日
    浏览(41)
  • 基于紫光同创 FPGA 的 DDR3 读写实验

    此篇为专栏 《紫光同创FPGA开发笔记》 的第二篇,记录我的学习FPGA的一些开发过程和心得感悟,刚接触FPGA的朋友们可以先去此专栏置顶 《FPGA零基础入门学习路线》来做最基础的扫盲。 本篇内容基于笔者实际开发过程和正点原子资料撰写,将会详细讲解此 FPGA 实验的全流程

    2024年01月20日
    浏览(48)
  • 【Quartus FPGA】EMIF DDR3 读写带宽测试

    在通信原理中,通信系统的有效性用带宽来衡量,带宽定义为每秒传输的比特数,单位 b/s,或 bps。在 DDR3 接口的产品设计中,DDR3 读/写带宽是设计者必须考虑的指标。本文主要介绍了 Quartus FPGA 平台 EMIF 参数配置,以及测试 DDR3 读写带宽的过程,FPGA 器件型号是 Cyclone 10 GX

    2024年02月13日
    浏览(43)
  • Xilinx FPGA DDR3设计(三)DDR3 IP核详解及读写测试

    引言 :本文我们介绍下Xilinx DDR3 IP核的重要架构、IP核信号管脚定义、读写操作时序、IP核详细配置以及简单的读写测试。 7系列FPGA DDR接口解决方案如图1所示。 图1、7系列FPGA DDR3解决方案 1.1 用户FPGA逻辑(User FPGA Logic) 如图1中①所示,用户FPGA逻辑块是任何需要连接到外部

    2024年02月06日
    浏览(52)
  • FPGA-基于AXI4接口的DDR3读写顶层模块

    AXI4(Advancede Xtensible Interface 4)是一种高性能、高带宽的总线接口协议,用于在系统级芯片设计中连接不同的IP核(Intellectual Property)或模块。它是由ARM公司开发的,被广泛应用于各种SoC(System-on-Chip)设计中。 AXI4接口协议定义了一组规范,用于描述数据传输、地址传输、控

    2024年04月15日
    浏览(54)
  • 基于FPGA的SRIOIP例程及仿真实现

    一、IP 创建及相关介绍         首先创建一个工程,选择相应的FPGA器件,在左边选择IP Catalog来创建SRIO IP核,现在使用的是V4.1版本的IP核,双击进入SRIO 进行设置;         设置IP时有两种模式可以选择,一种是Advance模式,一种是Basic模式,在Advance模式下可以对几个相

    2024年02月09日
    浏览(38)
  • 基于fpga的ddr3读写控制,纯verilog实现,能实现多通道图像数据读写控制

    基于fpga的ddr3读写控制,纯verilog实现,能实现多通道图像数据读写控制,模块接口清晰,可移植性高. 基于FPGA的DDR3读写控制是一项重要的技术,它为多通道图像数据的读写提供了高效的解决方案。本文将介绍一种纯Verilog实现的DDR3读写控制模块,旨在实现模块接口清晰、可移

    2024年04月12日
    浏览(55)
  • 【Xilinx FPGA】DDR3 MIG IP 仿真

    Memory Interface Generator (MIG 7 Series)是 Xilinx 为 7 系列器件提供的 Memory 控制器 IP,使用该 IP 可以很方便地进行 DDR3 的读写操作。本文主要记录 Xilinx DDR3 MIG IP 的仿真过程,包括 IP 配置和 DDR3 读写仿真两部分内容。 目录 1 MIG IP 配置 2 DDR3 读写仿真         在 Vivado 开发平台 IP C

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包