当前位置: 首页 > article >正文

DDR3与MIG IP核详解(一)

一、ddr3(全称第三代双倍速率同步动态随机存储器):
    1、特点:1:掉电无法保存数据,需要周期性的刷新。2:时钟上升沿和下降沿都会传输数据。
                    3:突发传输,突发长度 Burst Length一般为8。
    2、DDR3的存储:bank、行地址和列地址

假设下图为bank 0:

    3、数据怎么存入DDR3:先指定一个Bank地址,再指定行地址,最后指定列地址。
    DDR3容量计算:bank数量 X 行数量 X 列数量 X 存储单元容量。
    比如bank address位宽为3,ROW address位宽为14,Coulmn address为10,则容量为2^3 X 2^14 X 2^10 X 16 

二、MIG IP核

MIG IP核(Memory Interface Generators)  IP 核是Xilinx公司针对DDR存储器开发的 IP,里面集成存储器控制模块,实现DDR读写操作的控制流程。通过MIG IP核,可以很容易的控制DDR3的读写操作,即只需要控制用户端的端口即可对DDR3进行操作。

基本框图如下:

写数据:用户把数据写入到MIG IP核,MIG IP核自动将数据写入到DDR3芯片

读数据:用户发送读命令给MIG IP核,MIG IP核收到命令后将数据从DDR3芯片读出来,再发送给用户端

1.时钟

MIG IP核有两个FPGA给的时钟,分别是sys_clk(系统时钟)和ref_clk(参考时钟),参考时钟频率必须为200M,DDR3芯片的时钟是由MIG IP核的sys_clk通过PL倍频输出给DDR3,且DDR3的工作时钟是由差分的形式(两条线,一条P,一条N,更稳定)。用户端也有一条时钟叫用户时钟,也是通过系统时钟倍频输出给用户端,一般叫ui_clk。

1.1.DDR3芯片工作的时钟与用户端时钟有一个比例关系:

DDR3芯片的工作频率:用户端时钟频率 = 4:1或者2:1,比如DDR3芯片时钟频率为400M的时候,用户端就只能为100M或者200M,但当DDR3芯片的工作时钟为800M时,比例只能为4:1,即用户端频率只能为200M。

2.如果是zynq系列的芯片流程有点不一样:

DDR3一般是挂在PS端这边的bank里,想往DDR3里写入数据不会例化这个IP核,可以直接往AXI_HP这个接口写数据

3:用户端接口有两种,分别是:Native接口和AXI4接口

3.1 Native接口:

3.2  AXI4接口:

 4:MIG IP核的配置

4.1 系统时钟有三个选项,Differential,Single-Ended,No Buffer。

各项配置信息网上资料很多,不再详细描述。

当系统时钟为200M时,这200M是从何而来的?

第一种:比如外面有个晶振,它产生频率为50M的时钟,时钟进入FPGA内部的倍频器(PLL),最后通过PLL产生200M时钟。这种情况选择NO Buffer

第二种:晶振产生的频率就为200M,且进入FPGA内部后未通过PLL,直接输入给MIG IP核,该种情况选择剩下的两种情况。如果外部产生的频率进入内部是通过差分的形式(双端)就选择 Differential,但外部输入时钟如果是单端的,就选择Single-Ended。如下图红框所示(绿线表示双端):

4.2 XADC作用:1.可以检测FPGA开发板的温度 2.模拟信号转化为数字信号(异核) 

XADC只能使用一次,别的模块使用了该XADC,在配置该IP核的时候就选择disabled,如果其他模块未使用XADC,就可以选择Enabled

4.3

参考:

MIG IP配置_哔哩哔哩_bilibili

MIG IP核详解-CSDN博客


http://www.kler.cn/a/419078.html

相关文章:

  • DreamCamera2相机预览变形的处理
  • phpmyadmin导出wordpress数据教程
  • 前端学习笔记之FileReader
  • Java全栈:超市购物系统实现
  • 【C语言】扫雷游戏(一)
  • 基础Web安全|SQL注入
  • ESP32-S3模组上跑通ES8388(12)
  • SpringBoot集成swagger3
  • 【Docker】部署nginx
  • 常用元器件使用方法36:USB转串口芯片CH340X
  • 【07】MySQL中的DQL(数据查询语言)详解
  • 【JavaWeb maven基础知识总结】
  • RabbitMQ rabbitmq.conf配置文件详解
  • 算法训练营day22(二叉树08:二叉搜索树的最近公共祖先,插入,删除)
  • spring boot3.3.5 logback-spring.xml 配置
  • git基本操作说明
  • 网络原理(1)(JavaEE)
  • 【leetcode100】螺旋矩阵
  • 数据资产管理是什么?为什么重要?核心组成部分(分类分级、登记追踪、质量管理、安全合规)、实施方法、未来趋势、战略意义
  • 在 Ubuntu 20.04 上使用 Lux 下载 Bilibili 视频的详细教程
  • Web API - Clipboard
  • Qt PDF 前置课
  • RTC 实时时钟实验
  • oracle RAC各版本集群总结和常用命令汇总
  • C语言——库函数
  • 最大值(Java Python JS C++ C )