基于FPGA的三端口非透明型SDRAM控制器

[09-12 18:26:14]   来源:http://www.88dzw.com  EDA/PLD   阅读:8732

文章摘要:4 SDRAM 控制器的基本结构及工作原理三端口非透明型 SDRAM 控制器的结构框图如图2 所示。A、B、C 三个端口的内部结 构完全相同,都包含一个双口RAM(作为数据乒乓缓存),一个DMA 控制器。外部设备可以 通过端口读写DPRAM 中的数据,也可以写DMA 控制寄存器。DMA 控制器的功能是根据 DMA 控制寄存器内的设置在DPRAM 和SDRAM 之间交换数据,当DSP 或者其它外部设备 设置了寄存器后,DMA 控制器向仲裁和数据分配器发出访问SDRAM 的请求,然后开始一 次DMA 操作。仲裁和数据分配器的功能是决定当前哪一个端口具有访问SDRAM 的权利。 SDRAM 时序控制

基于FPGA的三端口非透明型SDRAM控制器,标签:eda技术,eda技术实用教程,http://www.88dzw.com

  4 SDRAM 控制器的基本结构及工作原理

  三端口非透明型 SDRAM 控制器的结构框图如图2 所示。A、B、C 三个端口的内部结 构完全相同,都包含一个双口RAM(作为数据乒乓缓存),一个DMA 控制器。外部设备可以 通过端口读写DPRAM 中的数据,也可以写DMA 控制寄存器。DMA 控制器的功能是根据 DMA 控制寄存器内的设置在DPRAM 和SDRAM 之间交换数据,当DSP 或者其它外部设备 设置了寄存器后,DMA 控制器向仲裁和数据分配器发出访问SDRAM 的请求,然后开始一 次DMA 操作。仲裁和数据分配器的功能是决定当前哪一个端口具有访问SDRAM 的权利。 SDRAM 时序控制器则负责产生操作SDRAM 必须的命令码,并且传递数据。


  图 2 三端口非透明型SDRAM 控制器的结构

  外部设备与 SDRAM 之间通过一个双口RAM(DPRAM)进行隔离。外部设备可以直 接读写DPRAM 的右侧端口,也可以通过设置DMA 寄存器来启动DPRAM 左侧端口与 SDRAM 之间的DMA 操作。SDRAM 控制器的基本工作原理如下:

  (1)写操作:当外部设备需要向SDRAM 写数据时,首先将数据存入DPRAM,然后 启动一个从DPRAM 到SDRAM 的DMA。

  (2)读操作:当外部设备需要读SDRAM 时,首先启动一个从SDRAM 到DPRAM 的 DMA,等DMA 结束以后再从DPRAM 读取数据。

  (3)基于扇区的长度和地址控制:为了简化DMA 控制器以及其它的控制逻辑,DPRAM 和SDRAM 之间的DMA 传输不是任意长度任意地址的DMA 传输,而是以扇区为基本数传 单位。这里定义一个扇区的长度为SDRAM 中的一行(或者叫一个page)。每个DPRAM 则 顺序划分为2 个扇区。每次DMA 操作完成一个完整扇区数据的搬移。

  (4)仲裁控制:当两个或是三个DMA 控制器同时请求访问SDRAM 时,由仲裁控制 器根据优先级规则进行控制。设计中采用了轮换优先级的方式,即:刚刚完成了一次DMA 操作的端口具有比较低的优先级,当前具有最高优先级的端口有权占用SDRAM 直至本次 DMA 结束,这样,就可以三个端口分时占用DMA 通道,保证三个端口之间平均的分配 SDRAM 的带宽。

  5 仲裁器的设计

  仲裁及数据分配器的设计的核心问题是轮换优先级的设计。必须保证三个端口分时占用 DMA 通道,保证平均分配带宽。采用有限状态机作为仲裁器的控制逻辑,这样既可以保证 优先级设计的稳定性,又可以确保仲裁器判决的实时性,有限状态机的设计如图3 所示。


  图 3 仲裁器的有限状态机设计

  设计中最复杂的情况是:一个通道访问SDRAM 的同时(如A 通道),另外两个通道同时 申请下一次访问SDRAM(如B、C 通道),这样就需要有一个标志位,用它来记录上一次访 问过SDRAM 的通道,在下一次仲裁时把它排除在外,直到再下一次仲裁时才予以考虑。

  每次DMA 结束后,都自动返回到IDLE 的状态,通过request 标志位,上次DMA 通道记录 位来判断此次访问SDRAM 的通道。具体设计如下:

  设初始状态下,默认A 端口具有最高优先级,然后A、B、C 三个端口具有轮换优先级;

  设置一个标志位 old_request,表示上一次响应的端口,“100”A 端口响应,“010”B 端 口响应,“001”C 端口响应;

  利用一个标志位 request[2:0]作为状态翻转的标志;

  利用标志位 two_request,three_request 作为进入两个或三个端口同时请求状态的标志, two_request = ABC + ABC + ABC,three_request = ABC。

  6 结论

  本文利用 FPGA 设计并实现了一个相对专用的三端口非透明型SDRAM 控制器。本文 作者创新点在于:通过设计一个带轮换优先级设置的多端口SDRAM 控制器,采用乒乓的 DMA 传输机制,将复杂的SDRAM 访问虚拟成一个简单的三口RAM 的访问,具有访问简 单、控制灵活、传输带宽大等特点。已在某雷达信号存储与预处理系统中成功应用。


上一页  [1] [2] 


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD
分类导航
最新更新
热门排行