FPGA之zynq_DDR(1)

学习一下关于DDR的知识和vivado操作吧。

用PS控制DDR内存读写

【ZYNQ-7000开发之六】使用PS控制DDR3的读写_xil_in32读取ddr数据-CSDN博客

在新建block design时,选择DDR,选择UART(为什么要用uart?

找到DDR的地址:

在工程目录.sdk --> _bsp --> ps7_cortexa9_0 --> include中找到xparameter_ps.h文件。

这个文件是CortexA9可以直接控制外设的宏定义。

在里面找到了DDR的地址。

/* Canonical definitions for DDR MEMORY */

#define XPAR_DDR_MEM_BASEADDR 0x00000000U

#define XPAR_DDR_MEM_HIGHADDR 0x3FFFFFFFU

需要用这个地址,对DDR3进行读写操作。

相同目录下,有xil_io.h文件,这个头文件是CortexA9可以直接控制的内存映射或者映射到了地址空间的IO(看不懂)。

翻到最下面,看到如下代码:

/* The following functions allow the software to be transportable across

* processors which may use memory mapped I/O or I/O which is mapped into a

* seperate address space.

*/

u8 Xil_In8(INTPTR Addr); //从某个地址读数据

u16 Xil_In16(INTPTR Addr);

u32 Xil_In32(INTPTR Addr);

void Xil_Out8(INTPTR Addr, u8 Value); //向某个地址写数据

void Xil_Out16(INTPTR Addr, u16 Value);

void Xil_Out32(INTPTR Addr, u32 Value);

参考的csdn博客中,看到了宏定义:

#define DDR_BASEARDDR XPAR_DDR_MEM_BASEADDR + 0x10000000

用xil_printf()函数打印。

用Xil_Out32(地址, 数据); 写入

用ref = Xil_In32(地址); 读取

记得在main函数的开头和结尾协商init_platform();和cleanup_platform(); 、return 0。

这样就实现了对DDR地址的读写操作了!

然后在串口终端就可以看到打印的DDR地址的数据了。所以选择UART是为了串口调试。

DDR简介

Zynq处理器的DDR控制器详解_zynq ddr-CSDN博客

Zynq上的存储器接口与差分时钟与DDR3_zynq ddr3-CSDN博客

  1. DDR2、DDR3等是DDR控制器的不同的接口类型。

  2. DDR控制器实现的功能:初始化,读写数据,管理控制信号。

  3. 初始化:设置相关参数,如时序和地址映射等。

  4. 读写时:控制器需要与DDR存储器进行数据交换,并且确保数据的完整性。【时序控制】

DDR存储器控制器主要包括3个主要的模块:

DDRC------核心存储控制器和调度器

DDRI------AXI存储器端口接口

DDRP------数字PHY以及控制器

  1. DDR存储器可以被配置为16bit或32bit,能在配置为8、16、32bit的单个块的DRAM存储器中访问1GB地址空间。

DDR3支持最大1333Mb/s的速度。

  1. PS和PL 的共享存储器的共享访问是通过多端口DDRI来支持的。它具有4个AXI从机端口:

PL通过两个专用的64bit端口(AXI_HP)来访问;

一个64bit端口通过L2 Cache控制器专用于ARM CPU,这个端口可以被配置为低延迟;

所有其他AXI主机通过中央互联共享剩下的端口。

(每个AXI接口配备有专用的事务FIFO)

  1. DDRP PHY处理从控制器来的读写请求,并在DDR存储器的时序约束下,把请求翻译为信号。(看不懂这里)

大概理解为:DDRI是PS/PL于DDR通信的接口,DDRP传递请求给DDR芯片,DDRC是存储器的读写。

关于DDR的参数和差分时钟等,下次再学吧。

相关推荐
我爱C编程43 分钟前
【3.5】固定旋转因子系数乘法模块的FPGA实现1——45°旋转因子和高阶蝶形修正因子
fpga开发·固定旋转因子·旋转因子
Terasic友晶科技11 小时前
答疑解惑 | DE25-Nano开发板串口在访问FPGA端外设LED时卡死,无任何反应
fpga开发·串口·led·de25-nano
尤老师FPGA15 小时前
LVDS系列46:Xilinx Ultrascale系 ADC LVDS接口参考方法(八)
fpga开发
何如呢20 小时前
uw_inserter
fpga开发
何如呢21 小时前
SC-FDE_tx_comb_part
fpga开发
LCMICRO-133108477461 天前
长芯微LCMDC8588完全P2P替代ADS8588,是一款16位、8通道同步采样的逐次逼近型(SAR)模数转换器
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换器
云端码字人1 天前
007、PCIE数据链路层:可靠传输的保障
fpga开发
nuoxin1142 天前
CH6001FN/BW-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
LCMICRO-133108477462 天前
长芯微LCMDC8685完全P2P替代ADS8685,16位模数转换器(ADC)
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·模数转换器adc
szxinmai主板定制专家2 天前
基于ARM+FPGA高性能MPSOC 多轴伺服设计方案
arm开发·人工智能·嵌入式硬件·fpga开发·架构