毕业设计(论文)-基于fpga的sdram控制器的实现(软件部分)[管理资料]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业设计(论文)
机械与电气工程学院电气工程及其自动化专业
毕业设计(论文)题目基于FPGA的SDRAM控制器的实现
(软件部分)
学生姓名
班级电气工程及其自动化
学号
指导教师
完成日期2012 年 6 月 6 日
基于FPGA的SDRAM控制器的实现(软件部分)The realization of SDRAM controller based on FPGA (software)
总计毕业设计(论文) 41 页
表格 6 个
插图 21 幅
摘要
文中介绍了FPGA的开发流程、硬件开发语言及其开发环境QuartusII和SDRAM的结构特点和工作原理,根据SDRAM的工作原理、控制时序和指令特点,设计一种基于FPGA的SDRAM控制器的方案。
SDRAM控制器的设计主要由主控制模块、信号产生模块、数据路径模块和参数模块组成。
本设计解决SDRAM控制复杂、不方便的问题,并用Verilog给予仿真结果。
仿真结果表明使用该方法设计实现的控制器能够使系统方便,可靠的对SDRAM进行操作。
关键字:SDRAM控制器FPGA 控制模块软件仿真
Abstract
This paper introduces the development process and FPGA hardware development language and the development environment of SDRAM QuartusII and structural characteristics and working principle, according to the working principle of SDRAM, sequence control and instruction characteristics, a scheme based on FPGA SDRAM controller is designed. SDRAM controller design mainly by the master control module, signal module, data path module and parameter module composition. This design solved a problem about the controlling complexity of SDRAM controller, and gives the simulation results by using Verilog. The simulation results show that using this method to design the controller can realize the system is convenient, reliable operation of SDRAM.
Key words: SDRAM controller FPGA Control module Software simulation
目录
摘要 (I)
Abstract (II)
第一章绪论 (1)
课题背景 (1)
课题研究的意义 (1)
第二章FPGA与Quartus II软件简介 (2)
FPGA简介 (2)
FPGA背景 (2)
FGPA结构原理 (2)
Quartus II软件简介 (3)
硬件描述语言Verilog (4)
FPGA开发过程 (5)
第三章SDRAM的技术介绍 (6)
(6)
SDRAM简介 (6)
SRAM和DRAM (6)
SDRAM发展过程 (7)
SDRAM工作原理和基本操作 (8)
SDRAM存储的工作原理 (9)
SDRAM 的引脚信号 (9)
SDRAM基本命令 (10)
SDRAM初始化 (10)
SDRAM读、写操作 (11)
终止操作 (12)
第四章 SDRAM控制器设计 (12)
SDRAM控制器 (13)
主控制模块 (14)
信号产生模块 (16)
参数模块 (18)
数据通路模块 (19)
第五章SDRAM的读、写仿真 (19)
SDRAM控制器时序仿真 (20)
Quartus II (20)
读仿真时序 (20)
写仿真时序 (21)
仿真结果分析 (22)
结论 (24)
参考文献 (25)
致谢 (26)
附录 (27)
第一章绪论
课题背景
伴随着电子信息技术的飞速发展和其在通讯、工业、商业、医疗等方面的广泛应用,人们对信息的需求逐渐向着更快、更多、更准确发展。
一般的传统单片机电子器件已经难以满足这种高速数据传输的要求。
因此,现场可编程门阵列FPGA(Field-Programmable Gate Array)以它的集成度高,可完成极其复杂的时序与组合逻辑电路功能,更适用于高速、高密度的高端数字逻辑电路设计领域等众多优点成为了现今以致未来的数字系统现场集成技术的领军代表。
与之相同,由于单片机,DSP(Digital Signal Processing)等微处理器的内部RAM (Random access memory)有限,所以在处理器外部扩展储存器成了有效的手段。
同步动态随机存取存储器SDRAM(Synchronous Dynamic RAM)有着密度高、数据读写速度快、价格低廉的优势,从而成为数据缓存的首选存储器,在数据采集与分析系统和图像处理系统中有着重要和广泛的应用。
本设计就是在这两者的突出优势下,根据SDRAM的工作原理、控制时序和指令特点,设计一种基于FPGA的SDRAM控制器的方案并利用QuartusII对FPGA访问SDRAM的读/写过程进行功能仿真验证。
课题研究的意义
数据采集处理技术是现代信号处理技术的基础,广泛应用于声纳,雷达,瞬态信号测试,软件无线电等领域。
伴随信息科技的飞速发展,人们面临的信号处理任务越来越繁重,对数据采集处理系统水平的要求也越来越高。
随着内存SDRAM的技术广泛应用,如何更好地控制SDRAM的读与写,使其达到最大的带宽利用率,如何更好地降低读写数据的延迟时间,已经成为各大芯片厂家和FPGA供应商研究的热点项目。
本课题采用FPGA来进行系统设计。
因为使用传统的单片机编程方式来实现算法虽然灵活性较高,但是在复杂的工作面前处理的速度远远达不到要求,而且单片机的时序性也较差。
为了改善这一问题,FPGA就成了很好的选择。
可编程逻辑器件FPGA凭借其强大的功能,开发过程投资少、周期短,开发工具智能化,可反复编程修改等特点,成为了当今硬件设计的潮流。
选择FPGA是借助它集成度高,可完成极其复杂的时序和逻辑组合电路功能,更适用于高速、高密度的高端数字逻辑电路设计的特点。
由此可见,采用FPGA来完成SDRAM控制器的实现可将其内存上升到一个新级别。
这对SDRAM控制器的设计和研究有着重要的意义。
第二章FPGA与Quartus II软件简介
FPGA简介
FPGA背景
FPGA,即现场可编程门阵列。
它是现代IC设计验证的技术主流,通过硬件描述语言Verilog设计的电路都可以在它之上进行测试。
FPGA可编程元件是在以前的PAL (Programmable Array Logic)、GAL(Generic Array Logic)、CPLD(Complex Programmable Logic Device)等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC,Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,一般来说,FPGA 比ASIC的速度要慢,无法完成复杂的设计,且对电能的消耗也大。
但它拥有着能快速成品,编辑程序可修改利用和造价低廉等优点。
因此,FPGA普遍成为了设计开发者的选择。
FGPA芯片
FGPA结构原理
现场可编程门阵列(FPGA)是可编程器件。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,其主要包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分,FPGA芯片主要由7部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
与传统的逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA的可编程逻辑单元是利用小型查找表(16×1RAM)和触发器来实现组合逻辑。
查找表(Look-Up-Table)简称为LUT,其本质上就是一个静态存储器SRAM。
查找表实现方法是先计算逻辑电路的所有可能结果,然后把结果写入查找表中,当FPGA工作时,信号的逻辑运算就等同于输入一个地址进行查表,找出地址对应的内容后输出,也就实现了逻辑功能。
如果是时序电路的话,需要的触发器会配置在查找表后面,实现逻辑时触发器旁路掉。
FPGA允许无限次的编程.。
FPGA芯片逻辑单元构成图
Quartus II软件简介
Quartus II 是Altera公司继Max+plus II之后开发的一种针对其公司生产的系列PLD/PGFA综合性开发软件,其支持原理图编辑、VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)以及AHDL(Altera Hardware Description Language)等多种设计形式,能够完整的完成数据输入到硬件配置的设计流程。
Quartus II软件的优点显著,主要有以下几点:
一、该软件有良好的界面,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。
该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持编辑原理图、VerilogHDL以及AHDL等多种设计输入形式。
Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
二、Quartus II拥有多方面的支持功能,对Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,MAX7000/MAX3000等乘积项器件,MAX II 的CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。
它还支持IP核,包含了LPM/MegaFunction宏功能模块库,简化了设计的复杂性、加快了设计速度,用户可以充分利用成熟的模块。
此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink 相结合,可以方便地实现各种DSP应用系统,支持Altera的片上可编程系统(SOPC)
开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
三、Quartus II也支持第三方EDA(Electronic Design Automation)工具,使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。
本设计采用Quartus II软件作为FPGA的开发环境。
Quartus II软件
硬件描述语言Verilog
Verilog HDL(HDL:Hardware Discription Language)是一种硬件描述语言,它具有描述硬件的结构和逻辑行为的功能。
当今世界上,Verilog HDL和VHDL是最流行的两种硬件描述语言。
Verilog HDL 语言最初是于1983 年由Gateway Design Automation 公司为其模拟器产品开发的硬件建模语言。
那时它只是一种专用语言。
由于他们的模拟、仿真器产品的广泛使用,Verilog HDL作为一种便于使用且实用的语言逐渐为众多设计者所接受。
在一次努力增加语言普及性的活动中,Verilog HDL 语言于1990 年被推向公众领域。
Open Verilog International(OVI)是促进Verilog 发展的国际性组织。
1992 年,OVI 决定致力于推广Verilog OVI 标准成为IEEE 标准。
这一努力最后获得成功,Verilog 语言于1995 年成为IEEE 标准,称为IEEE Std1364-1995 。
完整的标准在Verilog 硬件描述语言参考手册中有详细描述。
Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言。
Verilog HDL以其简单易学的特点已成为业界标准,一个复杂电路系统的完整Verilog HDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。
其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信号源。
Verilog HDL它支持多级建模方式:算法、行为级建模;寄存器传输(RTL)级建模;门级建模;
开关级建模和支持多种建模方式:行为功能建模方式;结构建模方式;数据流建模方式。
作为集成电路设计的初学者的我,比起使用更专业、更复杂难学的VHDL,使用Verilog HDL 只要有C语言的编程基础,通过二十学时的学习,再加上一段时间的实际操作,可在二~三个月内掌握这种设计技术。
而掌握VHDL设计技术就比较困难。
这是因为VHDL不很直观,还需要有Ada编程基础。
FPGA开发过程
FPGA的开发过程主要有两部分组成,分别是模块原理图和硬件描述语言编程HDL (Hardware Description Language)。
本次设计是从软件方面进行FPGA的开发,所以采用硬件描述语言Verilog HDL设计法。
HDL可以描述数字电路或系统,并通过仿真的手段来验证设计的正确性,大大的减少设计的设计失败可能,缩短设计时间。
HDL的设计过程图
基于HDL的FPGA的设计流程主要在于用Verilog HDL描述集成电路,具体可以分成以下几个过程步骤:1、设计定义与HDL实现;2、功能仿真;3、逻辑综合;4、前仿真;5、布局布线;6、后仿真;7、系统测试。
第三章SDRAM的技术介绍
存储器是拥有记忆功能的能力,用来保存信息,比如数据、指令与运行结果等并能根据需要存取的电气器件。
为了实现自动计算,各种信息必须预先存放在计算机内的某个地方,这个地方就是存储器。
构成存储器的存储介质,目前主要采用半导体器件和磁性材料。
如今,存储器在这信息世界的影响力是举足轻重的,按用途分类它主要可以分为外存储器和内存储器两类。
1)外存储器
外存储器是在外部用于扩充存储容量的存储器。
它的特点是储存容量大、价格低,但储存速度慢,一般用来存放大量暂时不用的程序、数据和中间结果,并可成批的与内存进行信息交换。
外存只能与内存交换信息,不能被计算机系统的其他部件直接访问。
外存储器分为很多种类,例如硬盘(Hard drive)、软盘(Floppy disk)CD光盘、CD-R可拷贝光盘、CD-ROM 只读光盘、CD-RW读写光盘、有些大型计算机会用读写磁带来储存网络进程的庞大数据。
2)内存储器
内存储器,即RAM是能直接与CPU联系的使用二进制数据储存单元。
他的特点是大大减少了读取数据的时间,但RAM上所存数据在关机断电时或计算机异常时是会自动清除,所以人们才需要将数据保存在硬盘等外存储器上。
构成存储器的主要存储介质,目前主要采用半导体器件和磁性材料。
它是由多个存储单元组成起来的,每个存储单元由若干个存储元,每个存储元可以存储一个二进制代码,然而存储单元的位置都由一个编号标示,这既是地址,一般为十六进制。
存储器中的全部存储单元可存放的数据大小称之为存储容量。
假设一个存储器的地址码由20位二进制数(即5位十六进制数)组成,则可表示2的20次方,即1K个存储单元地址。
每个存储单元存放一个字节,则该存储器的存储容量为1KB。
随着信息量的逐渐增加,存储器的存储容量也随之增大,用户对RAM的系统性能的提高的要求也愈演愈烈。
本设计课题涉及储存器SDRAM和其FPGA方式的控制实现,能较好的解决这一问题,就让我们先来了解一下SDRAM控制器情况。
SDRAM简介
了解SDRAM之前,我们先看看SRAM存储器和DRAM存储器的差别。
SRAM和DRAM
SRAM(Static RAM)即静态随机存储器。
它是一种具有静止存取功能的内存,不需要刷
新电路即能保存它内部存储的数据,而且也不是行列地址复用的,但集成度比较低是它的缺点,不适合做容量大的内存。
一般情况下SRAM是用在处理器的缓存里面。
SRAM是一种非常重要的存储器,它的用途广泛,主要用于二级高速缓存(Level2 C ache)。
它利用晶体管来存储数据。
与DRAM相比,SRAM的速度快,但在相同面积中SRAM的容量要比其他类型的内存小。
SRAM内部采用的是双稳态电路的形式来存储数据。
所以SRAM 的电路结构非常复杂,制造相同容量的SRAM比DRAM的成本高的多。
正因为如此,才使得其发展受到了限制。
DRAM(Dynamic RAM)即动态随机存取存储器。
DRAM 只能将数据保持很短的时间,为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新一次,如果存储单元没有被刷新,存储的信息就会丢失,也就是所谓的关机就会丢失数据。
SDRAM发展过程
SDRAM(Synchronous DRAM)即同步动态随机存储器,属于DRAM中的一种。
同步动态随机存储器的意思是其内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准,其存储阵列需要不断的刷新来保证数据不丢失其,其数据不是线性依次存储,而是自由指定地址进行数据读写。
DRAM和SDRAM由于实现工艺问题,容量较SRAM大。
但是读写速度不如SRAM。
一般的嵌入式产品里面的内存和电脑的内存都是用的SDRAM,其集成度非常高,因为是
动态的,所以必须有刷新电路,每隔一段时间必须得刷新数据。
同步动态随机存取存储器芯片为168脚,带宽为64位,其中RAM和CPU由于锁在同一个时钟内,因此共享着一个时钟的周期,以相同的速度进行同步工作,。
在一段不短的时间内,SDRAM曾经是市场的主流内存,不管事430TX芯片组还是845芯片组都支持SDRAM的使用。
但伴随着新推出的DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM,SDRAM也渐渐退出了人们的视线范围。
第一代SDRAM 内存为PC66 规范,但很快由于Intel 和AMD的频率之争将CPU外频提升到了100MHz,所以PC66内存很快就被PC100内存取代,接着133MHz 外频的PIII以及K7时代的来临,PC133规范也以相同的方式进一步提升SDRAM 的整体性能,带宽提高到1GB/sec 以上。
由于SDRAM 的带宽为64位,正好对应CPU 的64位数据总线宽度,因此它只需要一条内存便可工作,便捷性进一步提高。
在性能方面,由于其输入输出信号保持与系统外频同步,因此速度明显超越EDO(Extended Data Out DRAM)内存。
新一代DDR SDRAM(Double Data Rate SDRAM)简称DDR,也就是“双倍速率SDRAM”的意思。
DDR可以说是SDRAM的升级版本, DDR在时钟信号上升沿与下降沿各传输一次数据,这使得DDR的数据传输速度为传统SDRAM的两倍。
由于仅多采用了下降缘信号,因此并不会造成能耗增加。
至于定址与控制信号则与传统SDRAM相同,仅在时钟上升缘传输。
伴随着信息量的增加,DDR2 SDRAM的出现也无可厚非,与DDR相比,DDR2最主要的改进是在内存模块速度相同的情况下,可以提供相当于DDR内存两倍的带宽。
这主要是通过在每个设备上高效率使用两个DRAM核心来实现的。
作为对比,在每个设备上DDR内存只能够使用一个DRAM核心。
技术上讲,DDR2内存上仍然只有一个DRAM核心,但是它可以并行存取,在每次存取中处理4个数据而不是两个数据。
DDR3 SDRAM也是现时流行的内存产品,相比DDR2有着更低的工作电压,,性能更好更为省电;DDR2的4位预读升级为8位预读。
DDR3目前最高能够达到2000Mhz的速度,尽管目前最为快速的DDR2内存速度已经提升到800Mhz/1066Mhz的速度,但是DDR3内存模组仍会从1066Mhz起跳。
SDRAM工作原理和基本操作
SDRAM是DRAM的一种,和DRAM一样它需要周期性的刷新操作,访问之前必须要依序给出行列地址,不同的是SDRAM的输入信号都用系统时钟的上升沿锁存,必须在外部同步时钟控制下才可完成数据的读入和写出。
SDRAM中内嵌有一个同步控制逻辑电路,它使得SDRAM 支持突发方式进行连续读写,能够达到数倍于传统DRAM的传输速度,而且只要有首地址就可
以对存储器进行访问。
再加上它具有可编程同步时序模式和突发长度更加使其使用方法灵活多变。
SDRAM存储的工作原理
SDRAM的工作原理是以电荷的形式,把信息存储在MOS管栅极和源极之间的极间电容或专门集成的电容上。
单管动态存储元中电荷存储在电容Cs上,行选通三极管T的导通条件为高电平,当T 导通时,数据线上的信号才能通过T进入Cs或从Cs上读出。
读出操作时,根据读出电压在数据线上的增量决定读出的数据是0还是1,再通过高灵敏的读出放大器输出数据。
读出结束后,必须进行重写,三极管T信号为低电平截止,Cs上电荷不断流出,一段时间后电荷消失,动态存储器就刷新了一次,一般在2ms左右。
SDRAM 的引脚信号
SDRAM读写操作的引脚信号分为控制信号、地址选择信号、数据信号等,其中控制信号包括片选信号、同步时针信号、时钟使能信号、读写使能信号,地址信号包括行地址选通信号、列地址选通信号、行列地址线、Bank地址线,数据信号包括双向数据端口和接收数据有效信号。
SDRAM是多个逻辑存储库(Bank)结构,在一个具有两个逻辑存储库的SDRAM的模组中,其中一个逻辑存储库在进行预充电期间,另一个逻辑存储库却马上可以被读取,这样当进行一次读取后,又马上去读取已经预充电逻辑存储库的数据时,就无需等待而是可以直接读取了,这也就大大提高了存储器的访问速度。
为了实现这个功能,SDRAM需要增加对多个逻辑存储库的管理,实现控制其中的逻辑存储库进行预充电。
在一个具有2个以上逻辑存储库的SDRAM中,一般会多一根叫做BAn的引脚,用来实现在多个逻辑存储库之间的选择。
引脚信号表
名称引脚符
号
备注
控制信号
片选信号CS
输入信号,低电平有效。
只有当片选信号有效后,SDRAM才能识别控制
器发送来的命令
同步时针信
号
CLK
输入信号,SDRAM所有输入信号的逻辑状态都需要通过CLK的上升沿采
样确定。
时钟使能信
号
CKE
输入信号,高电平有效。
CKE信号的用途有两个,即关闭时钟以进入省
电模式和进入自刷新状态。
CKE无效时,SDRAM内部所有与输入相关的
功能模块停止工作。
读写使能信
号
WE输入信号,低电平有效。
地址选择信号行地址选通
信号
RAS输入信号,低电平有效。
列地址选通
信号
CAS输入信号,低电平有效。
行/列地址
线
SA0-
SA12
分时复用
Bank 块地
址线
BA0-
BA1
分时复用
数据信号双向数据端
口
DQ0-
DQ15
一个信号输入,一个信号输出接收数据有
效信号
DQM接收数据有效
SDRAM基本命令
对SDRAM的操作要通过指令命令来执行,指令命令到达控制RAS、CAS、WE实现操作。
SDRAM操作命令
SDRAM初始化
如同大多数电子器件一样,SDRAM在通电后要进行初始化操作才可以用于工作。
初始化操作可分为四步:首先,,大约100-200 us,之后至少执行一个空操作;然后对所以页执行预充电命令,并接着执行一个空操作,使所有阵列中器件处于待机状态;待机后SDRAM要执行两条自刷新命令并每条后执行一个空操作,使芯片内部刷新且让计数器进入正常运行状
态;之后执行加载模式寄存器(LOAD MODE REGISTER)命令,完成对SDRAM 工作模式寄存器的设定。
模式设置命令使用地址线A10~A0作为模式数据输入线。
其中A2~A0作为突发长度,A3为突发类型,A6~A4为CAS延迟,A8~A7为操作模式,A9为写突发模式。
模式寄存器的设置值必须与器件的延迟参数以及读写操作的控制时序一致。
模式寄存器的设置值如下表所示。
完成以上步骤后,SDRAM 就可进入正常工作状态。
SDRAM工作模式寄存器
A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Reserve Write burst mode Operating mode Latency mode Burst type Burst length
模式设置值
SDRAM初始化
SDRAM读、写操作
SDRAM的读写操作是在控制线路和地址线路配合发出的一系列命令完成的,分为突发
模式和非突发式模式两种。
SDRAM的读操作只有突发模式,而写操作则有突发和非突发两种模式,其中带有预充电的突发读、写模式一次能够访问的列地址最大数据周期数为1,2,4,8,并且突发模式可配置为顺序或间隔型,不带充电的读写模式可任意控制一次访问的列地址的最大数。
对于SDRAM的访问操作,最主要的是读、写操作。
SDRAM在进行读、写操作前,必须先进行页激活ACT操作是存储单元打开。
当SDRAM进行读操作时,内部的地址被寄存,等到大约1-3个时钟周期的延迟后,读出的数据就会进入数据总线上;当SDRAM 进行写操作时,其内部的列地址和数据都会被记录到寄存器中等待下一次的写出操作。
终止操作
SDRAM的操作终止满足两个条件就可以触发。
首先,当SDRAM接收到读、写操作指令后,开始进行顺次的读写操作,直到操作指令达到突发长度时终止操作;其次,当SDRAM 接收到突发终止指令BT时,操作终止。
第四章 SDRAM控制器设计
SDRAM控制器
通过上述介绍可知,同步动态随机存储器SDRAM是一个具有存储容量大、速度快、价格低廉、体积小等优点的理想型存储器。
但相对其他存储器,SDRAM的控制逻辑复杂,使用起来很不方便。
为了解决这个问题,通常采用的方法是设计SDRAM控制器,然而这使得很多人不得不放弃SDRAM选择更昂贵的SRAM。
为此,本设计采用FPGA来控制数据的时序和指令实现对SDRAM的读、写操作的控制器。
由于SDRAM的控制时序很复杂,为了完成对SDRAM的读、写操作且减少开发难度,笔者设计的SDRAM控制器必须要有初始化、自动刷新、读写操作和其优先级仲裁机制和转换机制等功能。
SDRAM控制器接口原理图
控制器接口信号由两部分组成,分别为主机对SDRAM控制器信号和控制器对SDRAM信号。
1、主机对SDRAM信号
系统时钟信号(CLK),系统复位信号(RESET)。
CMD[2:0]:译码指令,模式设置值。
CMDACK:指令应答信号,回馈主机SDRAM命令已执行。
ADDR:地址线,A0-A7为列地址, A8-A19 为行地址,A20-A22为页地址。
DARAIN/DARAOUT:输入/输出数据总线。
DM:数据掩码。
1、控制器对SDRAM信号
CLK:系统时钟信号。
SADDR:12位地址线,在读、写操作时,地址线为行、列地址分时复用。
BA:页地址。
CS:片选信号。
CKE:时钟使能信号。
RAS/CAS/WE:命令控制信号。
DQM:数据掩码。
DQ:双向数据线。
综上所述,本设计中SDRAM控制器主要分成四个模块设计。
四个模块分别为:主控制模块、信号产生模块、数据路径模块和参数模块。
SDRAM控制器结构框图
主控制模块
主控制模块是SDRAM控制器的主体,包含控制工作模式的各种寄存器,。
控制寄存器主要包括两类:一是初始化模式控制寄存器,作用于控制SDRAM初始化指令的产生方式;二是SDRAM 模式控制寄存器,用于SDRAM的刷新及其它操作指令参数的控制。
主控制模块包含两个状态机和一个时钟计数器,它的功能是依据系统接口控制信号,产生正确的初始化状态和命令状态输出。
(INIT_FSM)是用于描述SDRAM在初始化过程涉及的初始化状态。
SDRAM上电后必须初始化才能正常工作, 复位时, SDRAM工作在空闲状态(i_NOP);复位后, 在琐相环时钟周期的上升沿采样信号(sys_100μs), 判断电源和时钟稳定所需的100μs延迟是否完成。
在电源和时钟稳定后,SDRAM初始化时序开始,这段时间实际是个自检过程。
接着,INIT_FSM由空闲状态(i_NOP)进入预充电状态(i_PRE),执行预充电命令(PRECHARGE),然后,两次进入刷新状态(i_AR1),执行自刷新命令(AUTO REFRESH),最后,执行装载模式寄存器命令(LOAD MODE REGISTER),完成对SDRAM工作模式的设定,INIT_FSM进入初始化的准备状态(i_ready )。
信号(sys_INIT_DONE)此时为高电平,表示初始化完成,SDRAM进入正常工作状态,等待控。