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

一.简介        

        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.mfbz.cn/a/109258.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是 Node.js

目标 什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来编写服务器后端的应用…

能量管理系统(EMS):新能源储能行业的智能化大脑

导语:能源管理系统(EMS)是新能源储能行业中一种关键的智能化技术。它的作用类似于大脑,能够监控、控制和优化能源系统的运行,为储能设施提供高效稳定的能源管理。本文将介绍能量管理系统的基本概念、功能和应用。 一、…

51单片机晶体管数字编码

51单片机 单片机型号:STC86C52RC/LE52RC 晶体管 数字编码 数字P0P1P2P3P4P5P6P7011111100101100000211011010311110010401100110510110110610111110711100000811111110911110110 00011 11110x3F10000 01100x0620101 10110x5B30100 11110x4F40110 01100x6650110 110…

【LLM】sft和pretrain数据处理和筛选方法

note 痛点:训练垂直领域模型,sft数据和增量pretrain数据质量把控很重要 当数据不够时,通过self-instruct等方法造多样化的数据当数据很多时,需要清洗/筛选出高质量数据 文章目录 note一、sft数据的筛选策略1.1 使用self-instruc…

Arhas 常用命令

watch 函数执行数据观测: location 会有三种值 AtEnter,AtExit,AtExceptionExit。 对应函数入口,函数正常 return,函数抛出异常。 result 表示观察表达式的值: {params,returnObj,throwExp} eg: 查看是某个方法的参…

hadoop权威指南第四版

第一部分 HaDOOP基础知识 1.1 面临的问题 存储越来越大,读写跟不上。 并行读多个磁盘。 问题1 磁盘损坏 – 备份数据HDFS 问题2 读取多个磁盘用于分析,数据容易出错 --MR 编程模型 1.2 衍生品 1 在线访问的组件是hbase 。一种使用hdfs底层存储的模型。…

抓包分析DSCP字段在FTP/RSTP协议中的应用

抓包分析DSCP字段在FTP协议中的应用 简介 本文介绍DSCP字段的作用,以及抓包分析DSCP字段在FTP协议中的应用。最后通过实验证明有可能DSCP字段实际上对普通用户没啥用,原因是运营商可能会将用户设置的DSCP字段重置。 DSCP IP报文中有个TOS字段 &#…

网络协议--TCP的保活定时器

23.1 引言 许多TCP/IP的初学者会很惊奇地发现可以没有任何数据流通过一个空闲的TCP连接。也就是说,如果TCP连接的双方都没有向对方发送数据,则在两个TCP模块之间不交换任何信息。例如,没有可以在其他网络协议中发现的轮询。这意味着我们可以…

gitlab安装

centos7先更新containerd sudo yum install containerd docker pull gitlab/gitlab-ce:16.3.4-ce.0 docker-compose.yml version: 3.6 services:web:image: gitlab/gitlab-ce:16.3.4-ce.0restart: alwayshostname: node2environment:GITLAB_OMNIBUS_CONFIG: |external_url htt…

windows电脑安装系统后固态硬盘和机械硬盘的盘符号顺序显示错乱,解决方法

一、场景 由于电脑磁盘是SSD固态硬盘自己拓展的1T机械硬盘组成,固态硬盘分为C、D两个盘区,机械硬盘分为E、F两个盘区。为了提升运行速度,系统安装在C盘,安装完成后按照习惯盘区顺应该为C、D、E、F,但实际情况却是D、E…

排序算法-堆积树排序法(HeapSort)

目录 排序算法-堆积树排序法(HeapSort) 1、说明 2、算法分析 3、C代码 排序算法-堆积树排序法(HeapSort) 1、说明 堆积树排序法是选择排序法的改进版,可以减少在选择排序法中的比较次数,进而减少排序…

笔记本电脑的摄像头找不到黑屏解决办法

这种问题一般来说就是缺少驱动,就要下载驱动。 问题: 解决办法: 1.进入联想官网下载驱动 网站:https://newsupport.lenovo.com.cn/driveDownloads_index.html?v9d9bc7ad5023ef3c3d5e3cf386e2f187 2.下载主机编号检测工具 3.下…

Latex报错 “Paragraph ended before \Gin@iii was complete“

大家看看自己的模版的前面 加载的包 里面是不是有个 \usepackage{graphics} 问题就在这里,我们需要把它改成\usepackage{graphicx}

使用OBS Browser+访问华为云OBS存储【Windows】

背景 项目中使用华为云 S3 存储,java 代码中通过华为云 OBS 提供的esdk-obs-java 来访问文件。 但是,通过 JAVA SDK 方式不太方便运维,所以我们需要一款可视化的客户端软件。 华为云 OBS 自身也提供了一款客户端软件,名为 OBS Browser+。 OBS Browser+简介 OBS Browse…

【Linux】Centos yum源替换

YUM是基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 CentOS 8操作系统版本结束了生命周期(EOL)&#xff0…

一文详解汽车电子CAN总线

0.什么是CAN总线 CAN总线(控制器区域网络Controller Area Network)是一个中央网络系统,连接不同的电子控制单元(ECU)以及车辆中的其他设备。现在的汽车可以有100个ECU,因此CAN总线通信变得非常重要。 1.CAN总线流行的背景 集中式:CAN总线系统允许对连接…

Android:窗口管理器WindowManager

Android:窗口管理器WindowManager 导言 本篇文章主要是对Android中与窗口(Window)有关的知识的介绍,主要涉及到的有: WindowWindowManagerWindowManagerService 主要是为了更进一步地向下地深入Android屏幕渲染的知识(虽然窗口…

复习Animate和木疙瘩学习笔记-动画制作的回家之路

这个融媒体H5制作平台功能比较完善:包含了Flash(现在叫Animate)传统H5网页制作 720全景视频制作发布网页! 主要功能:素材导入、2D动画制作、常见交互添加、发布生成链接二维码 基本就是一个制作H5为主,但是里面的动画可以依赖4种…

力扣第738题 单调递增的数字 c++ 暴力超时 贪心优化

题目 738. 单调递增的数字 中等 相关标签 贪心 数学 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 1…

【DevChat】智能编程助手 - 使用评测

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…