一种基于FPGA的SDRAM数据读取方法设计

2013-03-05 09:53陈荣军钟秀媚谭洪舟丁颜玉
电脑知识与技术 2012年36期

陈荣军 钟秀媚 谭洪舟 丁颜玉

摘要:SDRAM是一种广泛应用于移动、手持设备的存储芯片,它一次只能允许一个外设对其进行读写,对其正确的控制关系到整个系统的正常工作,因此,如何合理地分配外设对SDRAM的读写控制权至关重要。该文在图像拍摄显示基础上进行改进,添加串口对SDRAM的控制模块,用verilog硬件描述语言设计一个串口传送模块,将SDRAM中存储的数据通过串口传送到PC机上,协议简单,所需资源少,可以实现较高速传送。

关键词:FPGA;verilog;SDRAM;UART

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)36-8796-03

该文描述了一种基于FPGA的SDRAM读写改进方法。本设计以摄像头从外界获取图像数据存储在SDRAM中为例,如果仅通过VGA控制模块读取该图像数据显示到屏幕上,则每次拍照得到的图像只能预览而无法对其进行处理,并且会被下一次拍的图像覆盖,因此就需要添加一个传送模块,将该图像传送到PC上,进行后续必要的处理。

在数据通信、计算机网络以及分布式工业控制系统中,串行通信时用来交换数据和信息的常用方式,具有占用资源少、工作稳定可靠、可以灵活潜入到一些通信系统中[1]。

1 总体方案设计

2 系统模块设计

FPGA(现场可编程门阵列)作为可编程逻辑器件,是在PAL等逻辑器件的基础上发展而来,其规模比较大,可以代替几百块通用IC芯片[2]。采用verilog硬件描述语言设计串口和SDRAM控制模块。

2.1 UART控制模块设计

2.2 SDRAM控制器模块设计

SDRAM是Synchronous Dynamic Random Access Memory(同步动态随机存储器)的简称。SDRAM具有容量大、传输速度快、价格低廉、支持突发传输等优点,其单片容量可达256 Mb或更高,工作速度可达100~200 MHz,目前,许多嵌入式设备的大容量存储器都采用SDRAM来实现。但由于SDRAM靠电容存储信息,存在泄漏电流问题,因此需要不停的动态刷新。另外SDRAM本身在某一时刻的访问操作只能是单向的,即不能同时进行读写,因此需要建立一个合理的握手机制,避免同一时刻对同一个SDRAM进行读写[5]。

在通常的设计中一般采用SDRAM存储器时,通常都是搭建一个Nios系统,用Altera提供的SDRAM控制器的IP核完成其控制电路。但是,采用其IP核需要花费更多的硬件资源,因此可以自己设计SDRAM控制电路。

由于三个模块:图像采集、VGA控制、串口传送模块要对SDRAM的同一段存储空间进行读写,而且每个模块的读写速度不尽相同,因此,合理分配其读写时序非常重要。SDRAM控制器模块中包括了三个FIFO:一个用于D5M模块对SDRAM进行写操作的缓冲FIFO,另外两个分别是用于VGA和UART模块对SDRAM进行读操作的缓冲FIFO。每个FIFO的输入输出数据宽度均为32位。3个FIFO轮流对SDRAM进行读/写一定数量的数据,当某个FIFO“满”则跳过对SDRAM的操作。

3 调试

5 结束语

要实现SDRAM到PC的直接数据传输可以有多种方式:串口、USB、Ethernet。该文描述的是一种通过串口进行传送的方式,其协议简单,占用资源少,可以实现较高速有效的传送。在原有的设计中,摄像头模块与VGA控制模块对SDRAM进行读写,但每次拍照得到的图像只能存储在SDRAM中,无法对其进行处理,并且会被下一次拍的图像覆盖,因此添加了一个传送模块将该图像传送到PC上。经验证,图像获取模块、VGA控制模块与UART各自有序地掌握SDRAM的读写控制权,实现了图像获取、存储、显示和传输的完整过程。

参考文献:

[1] 贾子申,李淑清,王冠雅. 基于FPGA的UART控制器设计[J].电子测量技术,2008(3):82-83 90.

[2] 钟秀媚,陈荣军,李伟健.一种基于FPGA和超声波的虚拟电子琴设计[J].电子设计工程,2012(10):142-144.

[3] 张靖武,周灵彬. 单片机原理、应用于PROTEUS仿真[M].北京:电子工业出版社,2010.

[4] 郝立兵. 基于FPGA技术的RS232接口时序电路设计[J].现代电子技术,2012(6):175-176 .

[5] 陆军,高乐,刘涛,等. 基于FPGA的全景图像处理系统SDRAM控制器设计与实现[J].应用科技,2012(2):55-60.