欢迎光临散文网 会员登陆 & 注册

Xilinx DDR SDRAM IP核结构

2023-01-19 18:02 作者:开发员阿梦  | 我要投稿

Xilinx IP核接口总结。

参考文档为Xilinx官方文档,链接:

https://docs.xilinx.com/v/u/en-US/pg150-ultrascale-memory-ip

本次内容总结不是DDR接口规范的总结。DDR的规范属于照本宣科的内容。这里为DDR IP核的实践学习铺平道路,在实践之前对DDR IP核的内部结构有个充分的认识。大部分内容属于在阅读IP核内容时的笔记。现在开始总结。

本次Xilinx UltraScale Architecture-Based FPGAs Memory IP v1.4 中包含DDR3 SDRAM 1.3和DDR4 SDRAM 2.2两种IP核产品。在我们项目中使用的是DDR4 SDRAM的IP核。在我所阅读的内容中,两类产品的结构是一样的。以下统称为DDR SDRAM IP核。

IP核方案

对于DDR SDRAM IP核,有两套解决方案:

存储器控制器接口(Memory Controller)方案和物理层(physical layer)方案。

IP核内部结构

DDR SDRAM的IP核一共是三层。


与SDRAM物理介质最近的一层是物理层(Physical Layer),对我项目来说比较有用的信息是,物理层返回校准信息,这个信息最终能够被XIlinx的debug工具捕捉到。校准完成后,物理层将原始接口(raw interface)暴露给SDRAM介质。

物理层上一层是控制器层,全称应该是存储器控制器(Memory Controller)。结合文档图文,该层与物理层之间的接口应该就是上述的原始接口(raw interface)。该层从用户接口层接收接收突发事务(transaction),将发送到SDRAM的请求或者SDRAM发来的响应生成事务。结合之前看的SSD内部“事务”的概念,这个事务应该也是将请求切分或者包装为SDRAM或者用户接口约定的大小格式。此外,该层对读写事务进行优化,提高周期利用率和数据总线利用率。

面向用户逻辑的是,用户接口(User Interface, UI),或者叫应用接口(application interface)。该层提供的接口很简单,和FIFO接口的风格很像。读写数据在这层会被缓存;待读取的数据会按照请求的顺序反馈给用户逻辑。用户接口层和存储器控制器层之间的接口叫做native interface,就翻译为“本地接口”吧。用户逻辑是无法访问到本地接口的。本机接口负责通过存储器控制器层接收SDRAM返回的数据,这个数据的返回顺序可能与请求顺序不一样。因此用户接口需要缓存读取的数据并将数据重新排序(按照用户逻辑所需)。

DDR3DDR4的特征总结与区别

文档定位:[Page 16-17],对比DDR3 SDRAM,DDR4 SDRAM多了对3DS RDIMM和LRDIMM的支持。其他很多重要特征都一样,如 对8字长的突发操作的支持、存储器时钟频率与FPGA接口时钟频率为4:1、对于非AXI4的72位宽度的用户接口可选纠错码(ECC)等。

在不同负载测试下,DD3DDR4的性能测试结果对比

文档定位[Page 20-22],总的来说,这里对比了多种负载下,使用IP核对DDR SDRAM进行读写操作的数据总线利用率。明显地看到,连续写的效率比连续读要差,因为连续写操作中被插入了周期性的读操作;突发读写的工作负载,可以达到一个介于连续读性能和连续写性能之间的性能。理论上,突发的读事务的频率足够高,使得周期性读不影响到存储器控制器。但是由于读写总线的turnaround?,突发读写下的效率还是比纯粹的连续读操作低。

IP核的端口信号描述

对于一个完整的存储器控制器解决方案(Memory Controller solution)来说,IP核有三类端口,叫做“user design”。

1. 与SRAM直接交互的存储器接口信号。由JEDEC定义。(物理层与SDRAM介质之间)

2. 应用接口信号。(连接用户接口层)

3. 其他保证操作正常进行的必要信号。如时钟、复位、状态信号等。高位有效的信号init_calib_complete信号表示初始化和校准完成,接口可以接收命令。

另一套方案是只有物理层的方案(PHY Only Solution)。

存储器控制器

IP核的此部分处理来自于用户接口层的请求。

存储器控制器被设计以用于来自用户接口模块的读写事务以及read-modify-write事务;将这些事务以低时延高效地传输到存储介质,同时满足所有DRAM的协议和时序要求,并使用最少的FPGA资源。再次强调,DRAM中的时钟频率和FPGA的时钟频率比率是4:1。存储器控制器的结构框图如下图所示。

存储器控制器中命令路径的关键部分包括:

1. Group FSMs:排队事务、检查DRAM时序、决定何时请求Precharge,Activate, CAS和这些DRAM命令。

2. "Safe"逻辑和仲裁单元:基于额外的DRAM时序,重新排序Group FSMs之间的事务, 同时确保所有DRAM命令请求的处理进度。

3. Final Arbiter:最终仲裁逻辑,最终决定哪些命令被发送到物理层,并将结果反馈到先前阶段。

本地接口(用户接口层和存储器控制器之间的接口)

用户接口通过与存储器控制器相连.用户接口通过此接口向存储器控制器提供地址编码和读写数据缓存。

在写操作中,存储器控制器通过在本机接口上提供数据缓冲地址,在需要数据前一个周期请求数据。继而在下一个周期,用户接口层当提供该数据。因此,在本地接口中没有任何数据的缓存。

在读操作中,数据将在其数据有效的周期内被存储器控制器提供到本地接口。一旦读数据准备就绪,它就会和缓冲区地址一起显示在本机接口上。数据应当被用户接口层接收。

本地接口的逻辑中,会根据来自于UI层中的读写事务的解码地址的bank组和bank地址位,将读写事务映射到一个mcGroup实例中。

mcGroup是按照顺序处理I/O事务的。因此可以防止read-after-write和write-after-write操作中的地址冲突。

控制逻辑(Control Path, 控制路径)

存储器控制器中的控制逻辑始于本地接口中的mcGroup实例。SDRAM bank组和SDRAM bank地址到mcGroup实例的映射,确保了发送到同一个完整地址的事务被映射到相同的mcGroup实例。mcGroup是按照顺序处理I/O事务的。因此可以防止read-after-write和write-after-write操作中的地址冲突。

Xilinx DDR SDRAM IP核结构的评论 (共 条)

分享到微博请遵守国家法律