进阶设计一(DDR3)——FPGA学习笔记<?>

news2025/2/24 2:41:09

一.简介        

        DDR3 SDRAM,以其单位存储量大、高数据带宽、读写速度快、价格相对便宜等优点 吸引了大批客户,占领市场较大份额。同时,作为内存条中不可缺少的一部分,DDR3 SDRAM 在计算机领域也占有一席之地。

        要掌握 DDR3 SDRAM 的基本概念、数据存取原理、操作命令以及操作时序等相关知识。在掌 握 DDR3 SDRAM 的相关理论知识后,讲解 AXI4 接口,并且使用该接口配置 Xilinx 的 MIG IP 核,设计一个可进行读写操作的 DDR3 SDRAM 控制器,并上板验证。

1.DDR3 SDRAM基础概念

        DDR3 SDRAM 英 文 全 称 “ Double-Data-Rate Three Synchronous Dynamic Random Access Memory”,译为“第三代双倍速率同步动态随机存取内存”或“同步动态随机存储 器”,是动态随机存储器(Dynamic Random Access Memory,简称 DRAM)的一类。 同步、动态、随机是其性能特点的外在说明。

        双倍速率(Double-Data-Rate):DDR3 SDRAM 存储器与 SDRAM 有一个很大的不同, DDR3 SDRAM 或者说带 DDR 开头的。包括 DDR1、DDR2、DDR3、DDR4、DDR4,他们都有一个很大的相似点,就是双边沿输出输入数据,通俗来讲就是在一个周期内输出 2 次 数据,上升沿输出一次数据,下降沿输出一次数据。而 SDRAM 则是在一个周期内的上升 沿输出一次数据,下降沿不输出,所以同频率的 DDR3 SDRAM 与 SDRAM 相比速度快一 倍。

        同步(Synchronous):与通常的异步 DRAM 不同,DDR3 SDRAM 存在一个同步接口, 其工作时钟的时钟频率与对应控制器(CPU/FPGA)的时钟频率相同,并且 SDRAM 内部的命 令发送与数据传输均以此时钟为基准,实现指令或数据的同步操作;

        动态(Dynamic):DDR3 SDRAM 需要不断的刷新来保证存储阵列内数据不丢失;

        随机(Random):数据在 DDR3 SDRAM 中并不是按照线性依次存储,而是可以自由指定地址进行数据的读写。

        第一代 SDR SDRAM 采用单端时钟信号,SDRAM 只在时钟的上升沿进行数据采样; 而后面的四代 SDRAM 由于工作频率比较快,所以采用可降低干扰的差分时钟信号作为同步时钟,双沿采样,速度更快,且功耗更低。同时技术的不断发展、制造工艺的不断提 高,使得五代 SDRAM 的更新过程中,集成度越来越高、内核电压越来越低(SDR:3.3V、 DDR:2.5V、DDR2:1.8V、DDR3:1.5V、DDR4:1.2V),这也是 SDRAM 速度提高、功耗降低的重要原因。

        由于 DDR3 SDRAM 需要不断刷新来保证数据的可靠性,以及行列地址线分时复用等原因,使其对操作时序的 要求较为严格,进而导致控制逻辑较为复杂。

2.DDR3 SDRAM存取原理

        对于 DDR3 SDRAM,我们将类比于单元格的存储空间称之为存储单元,N(行列个数乘积)个存储单元构成一个存储阵列,这个存储阵列我们称之为一个逻辑Bank(LogicalBank)简称 L-Bank、Bank)。DDR3 SDRAM 内部并不是一个全容量的 L-Bank,而是分割为若干个 L-Bank,目前大多为 4 个。若干 L-Bank 的分割,原因有二,一是技术、成本等诸多因素;二是由于 DDR3 SDRAM 的工作原理限制,单一 L-Bank 可能会造成非常严重的寻址冲突,大幅度降低内存效率。

        这样一来,在对 DDR3 SDRAM 进行数据存取时,要先确定 L-Bank 地址,定位到指定 逻辑 Bank,再依次确定行地址和列地址,选中存储单元,进而进行数据的存取操作,而且 一次只能对一个 L-Bank 的一个存储单元进行操作。

        DDR3 SDRAM 的基本存储单位是存储单元,而一个存储单元的容量为若干个 Bit,对 于 DDR3 SDRAM 而言就是芯片的位宽,每个 Bit 存放于一个单独的存储体中,存储体是利 用电容能够保持电荷以及可充放电的特性制成,主要由行选通三极管、列选通三极管、存 储电容以及刷新放大器构成。电容所存储的电荷会随时间慢慢释放,这就需要不断刷新为 电容充电,以保证存储数据可靠性。

        将每个存储单元简化为单 Bit 的存储体,再将若干存储体排列为矩阵,同一行将行地 址线相连,同一列将列地址线相连,就构成了一个存储阵列的简化模型。

3.DDR3 SDRAM器件引脚

注:x4、x8、x16 分别表示位宽 4bit、8bit、16bit;#符号表示信号为低电平有效;短 划线-表示 x8 和 x4 引脚功能相同,x16 引脚功能相同与前者不同,我们的是 x16。

        我们以镁光公司生产的、容量为 4Megx16x4Banks 的 DDR3 SDRAM 芯片为例,对其做一下功能介绍。

        注:表格中某些信号只介绍了后文设计实验中所涉及到的功能,更多功能介绍请查阅 芯片对应数据手册。

SDRAM 内部功能框图:

        DDR3 SDRAM 内部包含一个逻辑控制单元,内部包含模式寄存器和 命令解码器。外部通过 CS_N、RAC_N、CAS_N、WE_N 以及地址总线向逻辑控制单元输 入命令,命令经过命令解码器进行译码后,将控制参数保存到模式寄存器中,逻辑控制单 元进而控制逻辑运行。

        外部通过地址总线输入地址信息,地址信息在逻辑控制单元进行逻辑控制时起到辅助 作用,除此之外,复用的地址总线与 Bank 控制逻辑、行地址复用器、列地址计数锁存 器、列地址解码器等内部器件共同作用,精确选定存储阵列中与行列地址相对应的存储单 元,进而进行数据存取操作。

容量计算方法可简化为: 存储容量(Bit)=L-Bank 存储单元数×数据位宽(Bit)×L-Bank 个数

SDRAM 芯片的另一个概念:速度等级。DDR3 SDRAM 速度等级相关参数截图,具体见图

        包括速度等级在内的 6 个相关参数。时钟频率(Clock Frequency),单位 MHz,所列举的具体参数为 SDRAM 正常工作的最高时钟频率,SDRAM 工作时只能等于 或低于这一时钟频率;tRCD 表示写入自激活命令到开始进行数据读写,中间所需的等待时 间,列举的数值表示等待时间的最小值,单位为 ns;tRP 表示自预充电指令写入到预充电完成 所 需 的 等 待 时 间 , 列 举 的 数 值 表 示 等 待 时 间 的 最 小 值 , 单 位 为 ns ; CL(CAS(READ)latency)列选通潜伏期,表示自数据读指令写入到第一个有效数据输出所需 等待时间,单位 ns;TargettRCD-tRP-CL 表示最大工作频率下,tRCD、tRP、CL 等待的最小时 钟周期数。

4.AXI 接口概述

        Advancede Xtensible Interface,即高级可扩展接口,它是 ARM 公司 所提出的 AMBA(Advanced Microcontroller Bus Architecture)协议的一部分。之所以要采 用 AXI4 接口对 ddr 进行读写是因为 Xilinx 的 mig ddr Ip 核,无论是 6 系列还是 7 系列还是 最新的 FPGA,都集成了 AXI4 接口,为了采用 AXI4 接口进行读写,后续可以兼容 xilinx 的其他 fpga,可复用性更强。

AXI 协议是一种高性能、高带宽、低延迟的片内总线,具有如下特点:

1、总线的地址/控制和数据通道是分离的;

2、支持不对齐的数据传输;

3、支持突发传输,突发传输过程中只需要首地址;

4、具有分离的读/写数据通道;

5、支持显著传输访问和乱序访问;

6、更加容易进行时序收敛。

AXI4 协议支持以下三种类型的接口:

1、AXI4:高性能存储映射接口。

2、AXI4-Lite:简化版的 AXI4 接口,用于较少数据量的存储映射通信。

3、AXI4-Stream:用于高速数据流传输,非存储映射接口。

        在这里我们首先解释一下存储映射(MeamoryMap)这一概念。如果一个协议是存储 映射的,那么主机所发出的会话(无论读或写)就会标明一个地址。这个地址对应于系统 存储空间中的一个地址,表明是针对该存储空间的读写操作。AXI4 协议支持突发传输,主 要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI-Lite 为外设提供单个 数据传输,主要用于访问一些低速外设中的寄存器。而 AXI-Stream 接口则像 FIFO 一样, 数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速 AD、PCIe、DMA 接口等需要高速数据传输的场合。

5.AXI4 接口讲解

在本章我们重点介绍 AXI4 接口,它由五个独立的通道构成:

1、读地址 2、读数据 3、写地址 4、写数据 5、写响应

下面是使用读地址和读数据通道实现读传输过程的示意图:

        从上图中可以看到,在一个读传输过程中,主机首先在读地址通道给出读地址和控制 信号,然后从机由读数据通道返回读出的数据。另外我们需要注意的是,这是一次突发读操作,主机只给出一个地址,从该地址连续突发读出四个数据

写传输过程如下图所示,它用到了写地址、写数据和写响应三个通道:

        主机在写地址 通道给出写地址和控制信号,然后在写数据通道连续突发写四个数据。从机在接收数据之 后,在写响应通道给出响应信号。

 

突发写时序:

        AXI4 突发写可以分为 7 个状态,写空闲,写通道写地址等待,写通道写地址,写数据 等待,写数据循环,接受写应答,写结束这 7 种状态。之所以划分为 7 个状态是为了后续 写程序的状态机做准备。

写空闲:等待触发突发信号。

写通道写地址等待:准备好写地址 AWADDR,然后拉高 AWVALID。

写通道写地址:从机接受到 AWVALID,发出 AWREADY。

写数据等待:准备好数据 WDATA,拉高 WVALID。

写数据循环:从机接受 WVALID ,确认数据 WDATA 有 效 并 且接 受 , 发 出 WREADY,AXI 是突发传输:循环该操作到接受到 WLAST 最后一个数据标志位。

接受写应答:接受到从机发出的 BVALID,主机发出 BREADY。

写结束:拉低未拉低的信号,进入写空闲。

突发读时序:

        AXI4 突发读可以分为 6 个状态,读空闲,读通道写地址等待,读通道写地址,读数据 等待,读数据循环,读结束这 6 种状态。之所以划分为 6 个状态是为了后续写程序的状态 机做准备。

读空闲:等待触发突发信号。

读通道写地址等待:准备好写地址 ARADDR,然后拉高 ARVALID。

读通道写地址:从机接受到 ARVALID,发出 ARREADY。

读数据等待:从机器准备好数据 WDATA,从机拉高 RVALID。

读数据循环:主机接受 RVALID,确认数据 RDATA 有效并且接受,发出 RREADY 给 从机,AXI 是突发传输:循环该操作到接受到 RLAST 最后一个数据标志位。

读结束:拉低未拉低的信号,进入读空闲。

从上面的时序图与时序分析可知两种关系必须被保持:

(1)读数据必须总是跟在与其数据相关联的地址之后。

(2)写响应必须总是跟在与其相关联的写事务的最后出现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1148966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

公众号流量主项目,只需搬运,一篇文章收益2000+

最近公众号流量主火得不行,大家都想着抓住这个赚钱机会。 连培训团队都看到了商机,开起了学费最低要四位数,甚至高达9880的培训班!看来这行确实是个风口项目啊。 以前公众号是个封闭的圈子,你的阅读量和粉丝数量是成正…

Vue指令大全:深入探索Vue提供的强大指令功能

目录 v-bind指令 v-on指令 v-if和v-show指令 v-for指令 自定义指令 其他常用指令 总结 Vue.js是一款流行的JavaScript框架,具备丰富的指令系统。Vue指令允许开发者直接在模板中添加特殊属性,以实现DOM操作、事件绑定、样式控制等功能。在本文中&a…

PHP+MySQL的大学宿舍管理系统【附源码】

视频如下: PHPMySQL宿舍管理系统【】 ** 图: ** 目 录 摘 要 I Abstract II 前 言 IV 1 概述 1 1.1系统开发的目的 1 1.2国内外的研究情况 1 1.3本文主要完成的工作 2 2 开发环境以及开发工具 3 2.1开发环境 3 2.1.1 硬件的开发环境 3 2.1.2 软件的开发…

【Unity ShaderGraph】| 快速制作一个 卡通阴影色块效果

前言 【Unity ShaderGraph】| 快速制作一个 卡通阴影色块效果一、效果展示二、卡通阴影色块效果三、应用实例 前言 本文将使用ShaderGraph制作一个卡通阴影色块的效果,可以直接拿到项目中使用。对ShaderGraph还不了解的小伙伴可以参考这篇文章:【Unity …

同屏实时渲染百万级独立的3D可渲染对象

大规模渲染在游戏、家装、或者其他生产制造相关的环境下有直接的刚需,能独立渲染的3D对象越多,越容易实现复杂的场景需求。 下图是200多万(2 * 1024 * 1024)个可渲染的3D对象,的实时渲染情况截图。

API接口在电商数据采集【例如:淘宝平台商品详情SKU订单数据接口的采集 】中的接入说明及参数讲解

No.1 接口请求方式类型 常见的http请求方式包括:get(查)、post(增),除此之外还有put(改)、delete(删)等。接口所属类型是由业务决定的。比如你打开淘宝&…

【javaweb】学习日记Day13 - AOP 事务管理 切入点 连接点

目录 一、完善解散部门功能 二、spring 事务 (1)Transactional 事务管理 ① rollbackFor 控制异常类型 ② propagation 事务传播控制 1、定义解散部门操作日记 三、AOP基础 1、概述 2、快速入门 (1)案例:统…

c++拷贝构造与赋值运算符重载

目录 目录: 1:拷贝构造 2:赋值运算符重载 前言:在上一章我们已经学习过了,构造与析构这两个默认成员函数了,接下来让我们一起来学习另外两个重要的默认成员函数。 首先让我们来讲一下默认成员函数这个概念…

[架构之路-245/创业之路-76]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业资源管理计划ERP

目录 前言: 一、企业信息化的结果:常见企业信息化软件 1.1 企业资源管理计划 1.1.1 什么是ERP:企业最常用的信息管理系统 1.1.2 ERP的演进过程 1.1.3 EPR模块 1.1.4 EPR五个层级 1.1.5 企业EPR业务总体流程图 1.1.6 什么类型的企业需…

微信小程序云开发如何优雅的实现模糊查询

微信官方自从推出微信小程序云开发之后,让小程序开发的门槛再次降低,你可以不需要掌握任何后端的语言和数据库,有一些js的基本功,就可以完成一个完整带前后端交互功能的小程序项目。今天我们介绍一个日常开发中非常常见的需求&…

转化率(CVR)是什么意思,怎么计算和提高转化率?

转化率指的是在一定时间范围内,企业在线上或线下从事某项营销推广(比如竞价广告)活动时,成功完成转化行为的次数占推广信息总点击次数的百分比率。它是产品营销推广中的一个重要数据指标,转化率越高,成本越…

【教3妹学编辑-算法题】H 指数 II

3妹:2哥早啊, 新的一周开始了,奥利给!!! 2哥 :3妹,今天起的很早嘛,精神也很饱满。 3妹:昨天睡的早,早睡早起好身体! 2哥:既然离时间还…

不定长顺序表2

接下来我们看怎么完成不定长顺序表的代码实现 这里先加一个头文件,名字叫dsqlist.h,存放不定长顺序表的函数定义与声明 然后建立一个名字叫dsqlist.cpp的源文件,跟其头文件配对成一对,(也可以叫别的名字不配对)&…

Java 中的 synchronized 同步锁

导致线程安全问题的根本原因在于,存在多个线程同时操作一个共享资源,要想解决这个问题,就需要保证对共享资源访问的独占性,因此人们在Java中提供了synchronized关键字,我们称之为同步锁,它可以保证在同一时…

力扣每日一题83:删除排序数组中的重复元素

题目描述: 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2] 输出:[1,2]示例 2: 输入:head [1,1,2…

Day14力扣打卡

打卡记录 H 指数(二分) 链接 以最大值 x 为分割点的正整数数轴上,满足: 少于等于 x 的数值必然满足条件;大于 x 的数值必然不满足。 采用右边界二分查找,寻找满足条件的最大 H 指数要求。 class Soluti…

shell脚本函数(极其粗糙版)

分界点:以下内容需要更改,正常放假更改 函数: 1、把整个命令序列按照格式写在一起 2、可以方便的重复使用的命令序列 使用函数可以避免代码重复 函数可以将大的工程分割为诺干小的功能模块,可以随时调用,代码的可读…

Windows一键添加命名前缀(文件)

温馨提示:使用前建议先进行测试和原文件备份,避免引起不必要的损失。 (一)需求描述 在上班摸鱼的我正准备打开手机刷会儿CSDN论坛,老板发给我一个压缩包并要求我给里面所有的文件的名称添加一个前缀”大项目_”。我本…

协同过滤音乐推荐系统

摘 要 信息化爆炸的时代,互联网技术的指数型的增长,信息化程度的不断普及,社会节奏在加快,每天都有大量的信息扑面而来,人们正处于数字信息化世界。数字化的互联网具有便捷性,传递快,效率高&am…

windows系统命令常用命令(常看当前路径等)

打开cmd命令行终端 按下 winr 快捷键,输入cmd,点击确定 查看当前路径 输入命令 chdir 查看目录下文件 输入命令 dir //查看当前目录下的文件,类似于linux下的ls cd /d e:\software //跳转到其他硬盘的其他文件夹,注意此处…