DDR3(AXI接口例程)知识点笔记

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

本文以7035开发板中的DDR3master例程对DDR3中所涉及的知识点梳理下笔记。

DDR支持的突发长度是2,4,8。即如果芯片的数据位宽是16bit的话那么接口数据位宽是32bit,64bit以及128bit。因为 L-Bank一次就存取两倍于芯片位宽的数据,所以芯片至少也要进行两次传输才可以。我认为芯片位宽就是DDR3中bank中每个地址存储的数据的位宽,这个是芯片型号以及确定的,是DDR3存储的最小单位位宽。而根据突发长度,其外部接口位宽可以有3种。

②根据DDR突发传输类型的选择,当选择类型是INCR(没传输一次地址增加一次)其突发长度在1-256之间(AXI中规定)但是DDR是2,4,8。

每次突发传输一次都要握手。握手成功后将要传输的数据放在数据通道的总线上。根据7035例程17_1。

---------------------------------------------------------------------------------------------------------------------------------文章来源地址https://www.toymoban.com/news/detail-540944.html

assign M_AXI_AWLEN[7:0]   = reg_w_len[7:0];

assign WR_FIFO_RE  = rd_first_data | (reg_wvalid & ~WR_FIFO_EMPTY & M_AXI_WREADY & rd_fifo_enable);

 S_WD_PROC: begin
          if(M_AXI_WREADY & ~WR_FIFO_EMPTY) begin
            if(reg_w_len[7:0] == 8'd0) begin
              wr_state        <= S_WR_WAIT;
              reg_wvalid      <= 1'b0;
              reg_w_stb[7:0]  <= 8'h00;
            end else begin
              reg_w_len[7:0]  <= reg_w_len[7:0] -8'd1;
            end
          end
        end
  • reg_w_len连在AXI的AWLEN上表示突发长度。master程序控制的情况下递减,要一定注意的是这里的突发长度一定不要DDR的突发长度混淆,这里的突发长度单纯是对我们的ip核而言,而ip核的传输是遵循AXI总线的而不是DDR。所以这里的突发长度设置最大是256。而根据例程中的程序,即使wr_len大于256状态机也会把他分成很多个256然后多循环几次。当然如果小于256,就直接传输一次,传输长度就按我们要求的长度就可以。
  • 如上图伪代码可以看出:每次握手成功就从外部fifo中读取一个64bit(程序中将接口数据位宽设置成64bit也可以设置成32bit,64bit,128bit)数据。共需要读reg_w_len次数据。
.WR_ADRS ({wr_burst_addr,3'd0}     ),
reg_wr_adrs[31:0] <= WR_ADRS[31:0];

assign M_AXI_AWADDR[31:0] = reg_wr_adrs[31:0];

 S_WR_WAIT: begin
          if(M_AXI_BVALID) begin
            reg_wr_status[1:0]  <= reg_wr_status[1:0] | M_AXI_BRESP[1:0];
            if(reg_w_last) begin
              wr_state          <= S_WR_DONE;
            end else begin
              wr_state          <= S_WA_WAIT;
              reg_wr_adrs[31:0] <= reg_wr_adrs[31:0] + 32'd2048;
            end
          end
        end
  • 外部的地址值左移3位后直接赋给M_AXI_AWADDR。如果wr_burst_addr每次递增128(和write_leb==128对应)——当给定地址wr_burst_addr==0,M_AXI_AWADDR==wr_burst_addr*8赋给ddr3的ip核;之后wr_burst_addr==128,M_AXI_AWADDR==128*8。
  • 关于左移3位我的理解:因为DDR3的突发长度固定是8。所以每次突发传输8次16位数据。所以两次初始地址之间相差8。而我们的master程序在一个状态机中会读fifo128次64位数据【注意8次16位对应ddr3的突发传输,128次64位对应axi的突发传输】。也就说不管我们设置的忌口位宽是32bit还是64bit还是128bit,ddr3都会突发读写8次放在自己16bit的bank中。所以没传输一次64bit给ddr3的ip核,对应的DDR3地址都会增加8,而我们传输了128次。那么就需要增加128*8地址。所以当设置的write_len是128时,完成一次给DDR3ip核的传输后的下一次,其其实地址应该从128*8开始。
  • 上面伪代码最后一行 reg_wr_adrs[31:0] <= reg_wr_adrs[31:0] + 32'd2048;是因为前面提到过INCR类型的AXI突发传输其突发长度最大是256。因此较上一次传输首地址而言新的一次的传输首地址应该从256*8开始。

到了这里,关于DDR3(AXI接口例程)知识点笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 紫光FPGA DDR3 IP使用和注意事项(axi4协议)

    紫光DDR3 IP使用 对于紫光ddr3 IP核的使用需要注意事情。 阅读ddr ip手册: 1、注意:对于写地址通道,axi_awvalid要一直拉高,axi_awready才会拉高。使用的芯片型号时PG2L100H-6FBG676,不同的型号IP核接口和axi的握手协议也不一样(一定要注意),这点要注意,这也给我挖了一个很大的

    2024年04月12日
    浏览(39)
  • DDR3 控制器 MIG IP 详解完整版 (AXI4&VIVADO&Verilog)

    DDR系列文章分类地址: (1)DDR3 基础知识分享 (2)DDR3 控制器 MIG IP 详解完整版 (AXI4VivadoVerilog) (3)DDR3 控制器 MIG IP 详解完整版 (nativeVivadoVerilog) (4)基于 DDR3 的串口传图帧缓存系统设计实现 (5)基于 DDR3 的native接口串口局部传图缓存系统设计实现 (6)基于 DDR3 的

    2024年02月11日
    浏览(34)
  • 接口测试基本知识点

    系统与系统之间、组件与组件之间、数据传递交换的通道 按协议:http、tcp、ip 按语言:C++、java、php 按范围:系统与系统、内部系统与内部系统、外部系统与外部系统之间 程序划分:多个内部程序、内部系统与外部系统、模块与模块 责任划分清晰、缩短研发周期、可拓性强

    2024年02月11日
    浏览(28)
  • DDR3 基础知识分享

    DDR系列文章分类地址: (1)DDR3 基础知识分享 (2)DDR3 控制器 MIG IP 详解完整版 (AXI4VivadoVerilog) (3)DDR3 控制器 MIG IP 详解完整版 (nativeVivadoVerilog) (4)基于 DDR3 的串口传图帧缓存系统设计实现 (5)基于 DDR3 的native接口串口局部传图缓存系统设计实现 (6)基于 DDR3 的

    2024年02月13日
    浏览(27)
  • 单片机原理及接口技术期末复习知识点

    什么是单片机:单片机是由 CPU 、 存储器 、I/O接口及 总线 集成在一个芯片上。 简单了解AT89S51单片机简介。 相当于MCS-51系列中的87C51,AT89S51芯片内4KB的Flash存储取代了87C51片内的4K的EPROM。 MCS-51单片机具有几个并口,其中哪个口具有外部中断、串行通信等第二功能。 有4个并

    2024年02月01日
    浏览(35)
  • get√接口自动化核心知识点浓缩,为面试加分

    日常接触到的接口自动化从实际目标可以划分为两大类: 1、为模拟测试数据而开展的接口自动化 这种接口自动化大多是单次执行,目的很明确是为了功能测试创造测试数据,节约人工造数据的时间和人工成本,提高功能测试人员的测试效率。 2、在功能测试之前提前发现错

    2024年02月11日
    浏览(31)
  • 5分钟掌握接口自动化测试,4个知识点简单易学!

    接口测试是一种软件测试方法,用于验证不同软件组件之间的通信接口是否按预期工作。在接口测试中,测试人员会发送请求并检查接收到的响应,以确保接口在不同场景下都能正常工作。 就工具而言,常见的测试工具有Jmeter、Postman等。但这类工具往往更是做接口调试,对

    2024年02月05日
    浏览(43)
  • 微机原理 || 8253接口芯片知识点+4道经典例题+手写解题过程

      【例1】 :  设825 3 端口地址为3 00H~303H, 要求计数器2工作在方式5,二进制计数, CLK2=2MHz , OUT2=1KHz。 试按上述要求完成825 3 的 初始化 。   【例2】: 选择计数器 0 工作于方式 3 ,计数初值为 1234 ,十进制计数方式;计数器 2 工作于方式 2 ,计数初值为 61H ,采用二进制

    2024年02月10日
    浏览(42)
  • 每个.NET开发都应掌握的C#接口知识点

    作为.NET开发者,接口是C#必须掌握的知识点,接口是C#中实现多态和组件间互操作性的关键机制之一。 接口是一种抽象的类型,它定义了一组成员(方法、属性、事件等)的规范,但没有实现代码。类可以实现一个或多个接口,以表明它们提供了特定的功能。 以下是每个.N

    2024年02月13日
    浏览(36)
  • redis核心知识点简略笔记

    value数据类型 string 二进制安全 list 有序、可重复 set 无序、不重复 hash field-value的map sorted set 不重复、通过double类型score分数排序 场景 string 计数器 缓存 分布式锁 访问频率控制 分布式session hash 购物车等对象属性灵活修改 list 定时排行榜 set 收藏 sorted set 实时排行榜 持久化

    2024年02月13日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包