采用Stratix系列FPGA器件实现可访问三口RAM操作的SDRAM控制器设计

引言
sdram 具有存储容量大、速度快、成本低的特点,因此广泛应用于雷达信号处理等需 要海量高速存储的场合,但是sdram 的操作相对复杂,需要有专门的控制器配合处理器 工作完成数据的存取操作。随着fpga 技术的快速发展及其应用的普及,用fpga 实现 sdram 控制器是目前最流行的技术手段。虽然现在fpga 的生产商提供了一些通用的 sdram 控制器,但是在雷达信号处理等一些专用领域内这些通用的sdram 控制器难以满 足需要,需要开发适合的专用的sdram 控制器。
本文以一个典型的雷达信号存储与预处理系统为应用背景,用 altera 公司的stratix 系 列fpga 实现了一个三端口非透明型的sdram 控制器,该控制器内部具有灵活准确的优 先级仲裁功能,在保证多个端口平均分配sdram 带宽的同时不影响数据传输的带宽,采 用乒乓的dma 传输机制大大提高了数据传输的带宽和效率。
2 sdram 的特点及其基本操作
sdram 是在现有的标准动态存储器中加入同步控制逻辑(一个状态机),利用一个单一的系统时钟同步所有的地址数据和控制信号,它具有如下一些特点:
结构特点:存储容量大,受输出管脚数量限制,其存储单元设计成矩阵形存储结构,因此地址分为行地址和列地址,首先给出行地址选通一行(或一页),然后给出列地址选中要访问的地址单元;
采用电容存储信息,因此需要定时充电(刷新);
同步访问:所有信号都在时钟上升沿采样有效才认为有效;
基于猝发(burst)方式访问:在发出一次读写命令之后,sdram 自动访问长度为猝发 长度的地址空间,非burst 访问的效率很低;
速度快:只要 sdram 控制器合理设计时序,可以实现单周期访问一个地址单元。 sdram 的基本操作包括:初始化、激活、预充电、刷新等等。
初始化:sdram 上电之后必须按照确定的程式进行初始化之后才能正常工作,最主要 的操作是模式寄存器的设置;
激活:选中所要访问的行列地址单元;
刷新:sdram 存储单元载体为容量很小的电容并存在漏电流。需要定时读取回填各 个单元才能保证数据不丢。在片内有自动刷新控制器,记录了刷新行地址,每执行一次自 动刷新命令,刷新一行;
预充电:每次读写操作是通过传感放大器对存储单元电容的充放电过程,在读操作时对 选中整行单元的原始数据可能产生破坏。这就需要在每次读取操作后立即对该行原内容 与阈值比较再回写,并且对传感放大器参考阈值电压复位准备下一次做读写操作。所以 总是在执行换行读写或刷新之前执行预充电操作。
3 sdram 控制器的基本功能
三端口非透明型 sdram 控制器是指控制器面向用户端有三个端口而不是通常情况下 的一个端口,三个端口的功能完全一致,依靠仲裁控制切换端口与sdram 之间交换数据, 数据交换采用dma 的方式,流经sdram 的数据流如图1 所示。数据由c 端口输入,a 端 口输出,b 端口作为与dsp 的数传通道。
图 1 三端口sdram 控制器的数据流向
这里透明型是指外部设备访问 sdram 时,只需简单读写而不需要进行其它复杂的管 理操作,外部设备可以通过sdram 控制器将sdram 空间视为一个普通的同步三口ram 操作。但是这种结构不能灵活的实现地址跳变的访问,随机访问的带宽很低,三个端口再次 平均分配sdram 的带宽会进一步降低吞吐性能。所以,系统设计中采用了非透明型的设 计,非透明的意思是指:外部设备为了访问sdram 的数据,不但要进行数据的读写操作,而且需要进行寄存器设置、控制信号调整等其它操作。非透明型设计的灵活性较差,但是可 以根据具体的使用环境对功能进行简化,并且将一部分控制操作转交给软件完成,所以实现 相对比较简单,而且更加稳定可靠。
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 的访问,具有访问简 单、控制灵活、传输带宽大等特点。已在某雷达信号存储与预处理系统中成功应用。

激光雷达到底是不是自动驾驶系统的核心组成部分?
球栅阵列BGA封装和PCB设计指南
Wi-SUN无线通信模组特性
京东:苏宁,你杀气太重了…… 苏宁侯掌门,出关了
这些华为智慧屏即将升级HarmonyOS 3,快来看看!
采用Stratix系列FPGA器件实现可访问三口RAM操作的SDRAM控制器设计
工业平板电脑可以给工厂生产带来哪些益处
兆易创新精彩亮相ICCAD,以存储技术赋能新一代智能可穿戴应用
安防行业大变局!安防技术派的胜利!
智能技术打造农业机器人,助力农业智能化转型
振华重工成功研发智能铺路机器人 首批半固体锂电池将用于无人机
工业互联网+VR,打破企业发展局限
诺瓦助力LED显示迈入万亿级大市场
食品成分检测仪器的作用是什么
深度解析:马云的无人超市正式推出,新零售能否取代传统超市人工?杭州无人超市能走多远?
小米宣布:为40款小米设备推送MIUI9稳定版升级
几款直流升压电路
宁德时代携手国内锂电两轮车龙头涉足快充服务
新款海马M3 1.5L CVT上手体验评测
基于TMS320F2812实现数字式闪变仪的应用方案