毕业设计(论文)-基于FPGA的SDRAM控制器的实现(软件部分) .doc_第1页
毕业设计(论文)-基于FPGA的SDRAM控制器的实现(软件部分) .doc_第2页
毕业设计(论文)-基于FPGA的SDRAM控制器的实现(软件部分) .doc_第3页
毕业设计(论文)-基于FPGA的SDRAM控制器的实现(软件部分) .doc_第4页
毕业设计(论文)-基于FPGA的SDRAM控制器的实现(软件部分) .doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕毕 业业 设设 计计 (论论 文文) 机械与电气工程 学院 电气工程及其自动化 专业 毕业设计(论文)题目 基于 fpga 的 sdram 控制器的实现 (软件部分) 学生姓名 班 级 电气工程及其自动化 学 号 指导教师 完成日期 2012 年 6 月 6 日 基于基于 fpgafpga 的的 sdramsdram 控制器的实现(软件部分)控制器的实现(软件部分) the realization of sdram controller based on fpga (software) 总计 毕业设计(论文) 41 页 表 格 6 个 插 图 21 幅 i 摘要摘要 文中介绍了 fpga 的开发流程、硬件开发语言及其开发环境 quartusii 和 sdram 的结 构特点和工作原理,根据 sdram 的工作原理、控制时序和指令特点,设计一种基于 fpga 的 sdram 控制器的方案。sdram 控制器的设计主要由主控制模块、信号产生模块、数据 路径模块和参数模块组成。本设计解决 sdram 控制复杂、不方便的问题,并用 verilog 给 予仿真结果。仿真结果表明使用该方法设计实现的控制器能够使系统方便,可靠的对 sdram 进行操作。 关键字关键字:sdram 控制器 fpga 控制模块 软件仿真 ii abstractabstract 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 iii 目录目录 摘要摘要.i abstract ii 第一章第一章 绪论绪论1 1.1 课题背景 .1 1.2 课题研究的意义 .1 第二章第二章 fpga 与与 quartus ii 软件简介软件简介2 2.1 fpga 简介.2 2.1.1 fpga 背景.2 2.1.2 fgpa 结构原理.2 2.2 quartus ii 软件简介 3 2.3 硬件描述语言 verilog4 2.4 fpga 开发过程.5 第三章第三章 sdram 的技术介绍的技术介绍 6 3.1 存储器概况 6 3.2 sdram 简介.6 3.2.1 sram 和 dram.6 3.2.2 sdram 发展过程7 3.3 sdram 工作原理和基本操作 .8 3.3.1 sdram 存储的工作原理9 3.3.2 sdram 的引脚信号.9 3.3.3 sdram 基本命令10 3.3.4 sdram 初始化.10 3.3.5 sdram 读、写操作.11 3.3.6 终止操作.12 第四章第四章 sdramsdram 控制器设计控制器设计.13 4.1 sdram 控制器 .13 4.2 主控制模块 14 iv 4.3 信号产生模块 16 4.4 参数模块 18 4.5 数据通路模块 19 第五章第五章 sdram 的读、写仿真的读、写仿真 20 5.1 sdram 控制器时序仿真.20 5.1.1 quartus ii 8.0 时序仿真20 5.1.2 读仿真时序.21 5.1.3 写仿真时序.21 5.2 仿真结果分析 .22 结论结论24 参考文献参考文献25 致谢致谢26 附录附录27 南昌工程学院本科毕业设计(论文) 1 第一章 绪论 1.1 课题背景课题背景 伴随着电子信息技术的飞速发展和其在通讯、工业、商业、医疗等方面的广泛应用,人 们对信息的需求逐渐向着更快、更多、更准确发展。一般的传统单片机电子器件已经难以满 足这种高速数据传输的要求。因此,现场可编程门阵列 fpga(fieldprogrammable gate array)以它的集成度高,可完成极其复杂的时序与组合逻辑电路功能,更适用于高速、高 密度的高端数字逻辑电路设计领域等众多优点成为了现今以致未来的数字系统现场集成技术 的领军代表。与之相同,由于单片机,dsp(digital signal processing)等微处理器的内部 ram(random access memory)有限,所以在处理器外部扩展储存器成了有效的手段。同步 动态随机存取存储器 sdram(synchronous dynamic ram)有着密度高、数据读写速度快、 价格低廉的优势,从而成为数据缓存的首选存储器,在数据采集与分析系统和图像处理系统 中有着重要和广泛的应用。 本设计就是在这两者的突出优势下,根据 sdram 的工作原理、控制时序和指令特点, 设计一种基于 fpga 的 sdram 控制器的方案并利用 quartusii 对 fpga 访问 sdram 的读/ 写过程进行功能仿真验证。 1.2 课题研究的意义课题研究的意义 数据采集处理技术是现代信号处理技术的基础,广泛应用于声纳,雷达,瞬态信号测试, 软件无线电等领域。伴随信息科技的飞速发展,人们面临的信号处理任务越来越繁重,对数 据采集处理系统水平的要求也越来越高。随着内存 sdram 的技术广泛应用,如何更好地控 制 sdram 的读与写,使其达到最大的带宽利用率,如何更好地降低读写数据的延迟时间, 已经成为各大芯片厂家和 fpga 供应商研究的热点项目。 本课题采用 fpga 来进行系统设计。因为使用传统的单片机编程方式来实现算法虽然灵 活性较高,但是在复杂的工作面前处理的速度远远达不到要求,而且单片机的时序性也较差。 为了改善这一问题,fpga 就成了很好的选择。可编程逻辑器件 fpga 凭借其强大的功能, 开发过程投资少、周期短,开发工具智能化,可反复编程修改等特点,成为了当今硬件设计 的潮流。选择 fpga 是借助它集成度高,可完成极其复杂的时序和逻辑组合电路功能,更适 用于高速、高密度的高端数字逻辑电路设计的特点。 由此可见,采用 fpga 来完成 sdram 控制器的实现可将其内存上升到一个新级别。这 对 sdram 控制器的设计和研究有着重要的意义。 南昌工程学院本科毕业设计(论文) 2 第二章 fpga 与 quartus ii 软件简介 2.1 fpga 简介简介 2.1.1 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 普遍成为了设计开 发者的选择。图 2.1 为几款 fpga 芯片。 图 2.1 fgpa 芯片 2.1.2 fgpa 结构原理 现场可编程门阵列(fpga)是可编程器件。fpga 采用了逻辑单元阵列 lca(logic cell array)这样一个概念,其主要包括可配置逻辑模块 clb(configurable logic block) 、 输出输入模块 iob(input output block)和内部连线(interconnect)三个部分,fpga 芯片 主要由 7 部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、 嵌入块式 ram、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。与传统的逻 辑电路和门阵列(如 pal,gal 及 cpld 器件)相比,fpga 具有不同的结构,fpga 的可 编程逻辑单元是利用小型查找表(161ram)和触发器来实现组合逻辑。查找表(look- up-table)简称为 lut,其本质上就是一个静态存储器 sram。查找表实现方法是先计算逻 辑电路的所有可能结果,然后把结果写入查找表中,当 fpga 工作时,信号的逻辑运算就等 同于输入一个地址进行查表,找出地址对应的内容后输出,也就实现了逻辑功能。如果是时 序电路的话,需要的触发器会配置在查找表后面,实现逻辑时触发器旁路掉。fpga 允许无 南昌工程学院本科毕业设计(论文) 3 限次的编程.。图 2.2 为 fpga 芯片逻辑单元构成图。 图 2.2 fpga 芯片逻辑单元构成图 2 2. .2 2 q qu ua ar rt tu us s i ii i 软软件件简简介介 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 工具与 南昌工程学院本科毕业设计(论文) 4 matlab/simulink 相结合,可以方便地实现各种 dsp 应用系统, 支持 altera 的片上可 编程系统(sopc)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是 一种综合性的开发平台。 三、quartus ii 也支持第三方 eda(electronic design automation)工具,使用户可 以在设计流程的各个阶段使用熟悉的第三放eda 工具。 本设计采用 quartus ii 软件作为 fpga 的开发环境。 图 2.3 quartus ii 软件 2.3 硬件描述语言硬件描述语言 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 std13641995 。完整的标准在 verilog 硬件描述语言参考手册中 有详细描述。 verilog hdl 就是在用途最广泛的 c 语言的基础上发展起来的一种硬件描述语言。 verilog hdl 以其简单易学的特点已成为业界标准,一个复杂电路系统的完整 verilog hdl 模型是由若干个 verilog hdl 模块构成的,每一个模块又可以由若干个子模块构成。其中有 些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信 南昌工程学院本科毕业设计(论文) 5 号源。verilog hdl 它支持多级建模方式:算法、行为级建模;寄存器传输(rtl)级建模; 门级建模;开关级建模和支持多种建模方式:行为功能建模方式;结构建模方式;数据流建 模方式。 作为集成电路设计的初学者的我,比起使用更专业、更复杂难学的 vhdl,使用 verilog hdl 只要有 c 语言的编程基础,通过二十学时的学习,再加上一段时间的实际操作,可在 二三个月内掌握这种设计技术。而掌握 vhdl 设计技术就比较困难。这是因为 vhdl 不很直 观,还需要有 ada 编程基础。 2.4 fpga 开发过程开发过程 fpga 的开发过程主要有两部分组成,分别是模块原理图和硬件描述语言编程 hdl(hardware description language) 。本次设计是从软件方面进行 fpga 的开发,所以采 用硬件描述语言 verilog hdl 设计法。 hdl 可以描述数字电路或系统,并通过仿真的手段来验证设计的正确性,大大的减少 设计的设计失败可能,缩短设计时间。hdl 的设计过程见图 2.4。 功能设计 用 verilog hdl, 描述电路 软件模拟仿真 结果 逻辑综合 搭建硬件电路 完成 图 2.4 hdl 的设计过程图 基于 hdl 的 fpga 的设计流程主要在于用 verilog hdl 描述集成电路,具体可以分成以 下几个过程步骤:1、设计定义与 hdl 实现;2、功能仿真;3、逻辑综合;4、前仿真;5、 布局布线;6、后仿真;7、系统测试。 南昌工程学院本科毕业设计(论文) 6 第三章 sdram 的技术介绍 3.1 存储器概况存储器概况 存储器是拥有记忆功能的能力,用来保存信息,比如数据、指令与运行结果等并能根据 需要存取的电气器件。为了实现自动计算,各种信息必须预先存放在计算机内的某个地方, 这个地方就是存储器。构成存储器的存储介质,目前主要采用半导体器件和磁性材料。如今, 存储器在这信息世界的影响力是举足轻重的,按用途分类它主要可以分为外存储器和内存储 器两类。 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 控制器情况。 3.2 sdram 简介简介 南昌工程学院本科毕业设计(论文) 7 了解 sdram 之前,我们先看看 sram 存储器和 dram 存储器的差别。 3.2.1 sram 和 dram sram(static ram)即静态随机存储器。它是一种具有静止存取功能的内存,不需要 刷新电路即能保存它内部存储的数据,而且也不是行列地址复用的,但集成度比较低是它的 缺点,不适合做容量大的内存。一般情况下 sram 是用在处理器的缓存里面。 。 sram 是一种非常重要的存储器,它的用途广泛,主要用于二级高速缓存(level2 c ache)。它利用晶体管来存储数据。与 dram 相比,sram 的速度快,但在相同面积中 sram 的容量要比其他类型的内存小。sram 内部采用的是双稳态电路的形式来存储数据。 所以 sram 的电路结构非常复杂,制造相同容量的 sram 比 dram 的成本高的多。正因 为如此,才使得其发展受到了限制。 dram(dynamic ram)即动态随机存取存储器。dram 只能将数据保持很短的时间, 为了保持数据,dram 使用电容存储,所以 必须隔一段时间刷新一次,如果存储单元没有 被刷新,存储的信息就会丢失,也就是所谓的关机就会丢失数据。 3.2.2 sdram 发展过程 sdram(synchronous dram)即同步动态随机存储器,属于 dram 中的一种。同步动态随 机存储器的意思是其内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准, 其存储阵列需要不断的刷新来保证数据不丢失其,其数据不是线性依次存储,而是自由指定 南昌工程学院本科毕业设计(论文) 8 地址进行数据读写。dram 和 sdram 由于实现工艺问题,容量较 sram 大。但是读写速度不如 sram。 一般的嵌入式产品里面的内存和电脑的内存都是用的 sdram,其集成度非常高,因为是 动态的,所以必须有刷新电路,每隔一段时间必须得刷新数据。同步动态随机存取存储器芯 片为 168 脚,带宽为 64 位,其中 ram 和 cpu 由于锁在同一个时钟内,因此共享着一个时钟 的周期,以相同的速度进行同步工作,在 3.3v 工作电压下其运行速度高出 edo 内存一半。 在一段不短的时间内,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 的 1.8v 降落到 1.5v,性能更好更为省电;ddr2 的 4 位预读升级为 8 位预读。ddr3 目前最高能够达 到 2000mhz 的速度,尽管目前最为快速的 ddr2 内存速度已经提升到 800mhz/1066mhz 的速度, 但是 ddr3 内存模组仍会从 1066mhz 起跳。 3.33.3 sdramsdram 工作原理和基本操作工作原理和基本操作 南昌工程学院本科毕业设计(论文) 9 sdram 是 dram 的一种,和 dram 一样它需要周期性的刷新操作,访问之前必须要依序给 出行列地址,不同的是 sdram 的输入信号都用系统时钟的上升沿锁存,必须在外部同步时钟 控制下才可完成数据的读入和写出。sdram 中内嵌有一个同步控制逻辑电路,它使得 sdram 支持突发方式进行连续读写,能够达到数倍于传统 dram 的传输速度,而且只要有首地址就 可以对存储器进行访问。再加上它具有可编程同步时序模式和突发长度更加使其使用方法灵 活多变。 3.3.1 sdram 存储的工作原理 sdram 的工作原理是以电荷的形式,把信息存储在 mos 管栅极和源极之间的极间电 容或专门集成的电容上。如图 3.3 为单管式动态存储元。 刷新 放大器 行选通 三极管 存储电容cs 列选通 三极管 位线(数据i/o)列地址线 行地址线 co t 图 3.3 单管动态存储元 单管动态存储元中电荷存储在电容 cs 上,行选通三极管 t 的导通条件为高电平,当 t 导通时,数据线上的信号才能通过 t 进入 cs 或从 cs 上读出。读出操作时,根据读出电压 在数据线上的增量决定读出的数据是 0 还是 1,再通过高灵敏的读出放大器输出数据。读出 结束后,必须进行重写,三极管 t 信号为低电平截止,cs 上电荷不断流出,一段时间后电 荷消失,动态存储器就刷新了一次,一般在 2ms 左右。 3.3.2 sdram 的引脚信号 sdram 读写操作的引脚信号分为控制信号、地址选择信号、数据信号等,其中控制信号 包括片选信号、同步时针信号、时钟使能信号、读写使能信号,地址信号包括行地址选通信 号、列地址选通信号、行列地址线、bank 地址线,数据信号包括双向数据端口和接收数据 有效信号。 sdram 是多个逻辑存储库(bank)结构,在一个具有两个逻辑存储库的 sdram 的模组中, 其中一个逻辑存储库在进行预充电期间,另一个逻辑存储库却马上可以被读取,这样当进行 一次读取后,又马上去读取已经预充电逻辑存储库的数据时,就无需等待而是可以直接读取 了,这也就大大提高了存储器的访问速度。为了实现这个功能,sdram 需要增加对多个逻辑 存储库的管理,实现控制其中的逻辑存储库进行预充电。在一个具有 2 个以上逻辑存储库的 南昌工程学院本科毕业设计(论文) 10 sdram 中,一般会多一根叫做 ban 的引脚,用来实现在多个逻辑存储库之间的选择。 sdram 信号引脚接口功能如表 3.1。 表 3.1 引脚信号表 名称 引脚符 号 备注 片选信号 cs 输入信号,低电平有效。只有当片选信号有效后,sdram 才能识别控 制器发送来的命令 同步时针信 号 clk 输入信号,sdram 所有输入信号的逻辑状态都需要通过 clk 的上升沿 采样确定。 时钟使能信 号 cke 输入信号,高电平有效。cke 信号的用途有两个,即关闭时钟以进入 省电模式和进入自刷新状态。cke 无效时,sdram 内部所有与输入相关 的功能模块停止工作。 控制 信号 读写使能信 号 we 输入信号,低电平有效。 行地址选通 信号 ras 输入信号,低电平有效。 列地址选通 信号 cas 输入信号,低电平有效。 行/列地址 线 sa0s a12 分时复用 地址 选择 信号 bank 块地 址线 ba0b a1 分时复用 双向数据端 口 dq0d q15 一个信号输入,一个信号输出 数据 信号接收数据有 效信号 dqm 接收数据有效 3.3.3 sdram 基本命令 对 sdram 的操作要通过指令命令来执行,指令命令到达控制 ras、cas、we 实现操作。 具体见表 3.2。 表 3.2 sdram 操作命令 南昌工程学院本科毕业设计(论文) 11 3.3.4 sdram 初始化 如同大多数电子器件一样,sdram 在通电后要进行初始化操作才可以用于工作。初始 化操作可分为四步:首先,在加上不超过标称值 0.3v 的电压后要等待一下,大约 100-200 us,之后至少执行一个空操作;然后对所以页执行预充电命令,并接着执行一个空操作,使 所有阵列中器件处于待机状态;待机后 sdram 要执行两条自刷新命令并每条后执行一个空 操作,使芯片内部刷新且让计数器进入正常运行状态;之后执行加载模式寄存器(load mode register)命令,完成对 sdram 工作模式寄存器的设定。 模式设置命令使用地址线 a10a0 作为模式数据输入线。其中 a2a0 作为突发长度, a3 为突发类型,a6a4 为 cas 延迟,a8a7 为操作模式,a9 为写突发模式。模式寄存器 的设置值必须与器件的延迟参数以及读写操作的控制时序一致。模式寄存器的设置值如下表 所示。完成以上步骤后,sdram 就可进入正常工作状态。sdram 初始化过程图如图 3.4。 表 3.3 sdram 工作模式寄存器 a11a10a9a8a7a6a5a4a3a2a1a0 reservewrite burst modeoperating modelatency modeburst typeburst length 表 3.4 模式设置值 南昌工程学院本科毕业设计(论文) 12 图 3.4 sdram 初始化 3.3.5 sdram 读、写操作 sdram 的读写操作是在控制线路和地址线路配合发出的一系列命令完成的,分为突发 模式和非突发式模式两种。sdram 的读操作只有突发模式,而写操作则有突发和非突发两 种模式,其中带有预充电的突发读、写模式一次能够访问的列地址最大数据周期数为 1,2,4,8,并且突发模式可配置为顺序或间隔型,不带充电的读写模式可任意控制一次访 问的列地址的最大数。对于 sdram 的访问操作,最主要的是读、写操作。sdram 在进行 读、写操作前,必须先进行页激活 act 操作是存储单元打开。当 sdram 进行读操作时, 内部的地址被寄存,等到大约 1-3 个时钟周期的延迟后,读出的数据就会进入数据总线上; 当 sdram 进行写操作时,其内部的列地址和数据都会被记录到寄存器中等待下一次的写出 操作。 3.3.6 终止操作 sdram 的操作终止满足两个条件就可以触发。首先,当 sdram 接收到读、写操作指 令后,开始进行顺次的读写操作,直到操作指令达到突发长度时终止操作;其次,当 sdram 接收到突发终止指令 bt 时,操作终止。 南昌工程学院本科毕业设计(论文) 13 第四章 sdram 控制器设计 4.14.1 sdramsdram 控制器控制器 通过上述介绍可知,同步动态随机存储器 sdram 是一个具有存储容量大、速度快、价格 低廉、体积小等优点的理想型存储器。但相对其他存储器,sdram 的控制逻辑复杂,使用起 来很不方便。为了解决这个问题,通常采用的方法是设计 sdram 控制器,然而这使得很多人 不得不放弃 sdram 选择更昂贵的 sram。为此,本设计采用 fpga 来控制数据的时序和指令实 现对 sdram 的读、写操作的控制器。 由于 sdram 的控制时序很复杂,为了完成对 sdram 的读、写操作且减少开发难度,笔者 设计的 sdram 控制器必须要有初始化、自动刷新、读写操作和其优先级仲裁机制和转换机制 等功能。sdram 控制器接口原理图如下图 4.1。 图 4.1 sdram 控制器接口原理图 控制器接口信号由两部分组成,分别为主机对 sdram 控制器信号和控制器对 sdram 信号。 1、主机对 sdram 信号 南昌工程学院本科毕业设计(论文) 14 系统时钟信号(clk),系统复位信号(reset) 。 cmd2:0:译码指令,详见表 3.4 模式设置值。 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 控制器主要分成四个模块设计。四个模块分别为:主控制模 块、信号产生模块、数据路径模块和参数模块。图 4.2 为 sdram 控制器总体结构框图。 图 4.2 sdram 控制器结构框图 4.24.2 主控制模块主控制模块 主控制模块是 sdram 控制器的主体,包含控制工作模式的各种寄存器,如图 4.2 中的控 南昌工程学院本科毕业设计(论文) 15 制寄存器就是主控制模块。控制寄存器主要包括两类:一是初始化模式控制寄存器,作用于 控制 sdram 初始化指令的产生方式;二是 sdram 模式控制寄存器,用于 sdram 的刷新及其它 操作指令参数的控制。主控制模块包含两个状态机和一个时钟计数器,它的功能是依据系统 接口控制信号,产生正确的初始化状态和命令状态输出。 如图 4.3 所示的命令状态机(init_fsm)是用于描述 sdram 在初始化过程涉及的初始化 状态。sdram 上电后必须初始化才能正常工作, 复位时, sdram 工作在空闲状态(i_nop);复 位后, 在琐相环时钟周期的上升沿采样信号(sys_100s), 判断电源和时钟稳定所需的 100s 延迟是否完成。在电源和时钟稳定后,sdram 初始化时序开始,这段时间实际是个自 检过程。接着,init_fsm 由空闲状态(i_nop)进入预充电状态(i_pre),执行预充电命令 (precharge),然后,两次进入刷新状态(i_ar1),执行自刷新命令(auto refresh), 最后,执行装载模式寄存器命令(load mode register),完成对 sdram 工作模式的设定, init_fsm 进入初始化的准备状态(i_ready )。信号(sys_init_done)此时为高电平,表 示初始化完成,sdram 进入正常工作状态,等待控制器对其进行读、写和刷新等操作。状态 i_trp、i_trfc1、i_trfc2、i_tmrd 是等待各命令响应的延迟态。 i_nopi_pre i_ar1 i_ar2 i_mrs i_ready i_trp i_trfc1 i_trfc2 i_tmrd sys_dly_100us endof_trp endof_trfc endof_trfc endof_tmrd sys_dly_100us endof_trp endof_trfc endof_trfc endof_tmrd 图 4.3 初始化状态机 如图 4.4 所示命令状态机(cmd_fsm)是用于描述 sdram 在读、写、刷新过程涉及的命 令状态。本次设计中,sdram 的读写操作采用的突发模式是连续型(sequential)的全页模式,因 此,在读写操作中,必须用突发中断命令(burst terminate)结束。 命令状态机(cmd_fsm) 中涉及的命令状态有空闲状态(c_idle) 、激活状态(c_active) 、读地址状态(c_reada) 、 读数据状态(c_rdata) 、写地址状态 (c_writea) 、写数据状态(c_wdata)、突发中断状态 南昌工程学院本科毕业设计(论文) 16 (c_bt)和自动刷新状态(c_ar)。状态 c_trcd、 c_cl 、c_tbt 和 c_trfc 为等待各命令响应 的延迟态。 时钟计数器原理:当计数器复位控制 syncresetclkcnt 为 1 时,立刻复位计数,否则计数 等待设置的时间。具体代码如下: always (posedge sys_clk) if (syncresetclkcnt) clkcnt = #tdly 0; else begin clkcnt = #tdly clkcnt + 1b1; end c_idle c_trcd c_reada c_cl c_rdata c_writea c_wdata c_bt c_tbt c_ar c_trfc (sys_rwop+ sys_vrwop) * sys_init_done sys_ref_req * sys_init_done (vram_wren_1+vram_wren_2) *endof_trcd+endof_trcd*int_r_wn endof_trcd*int_r_wn endof_cas_latency endof_read_burst endof_write_burst endof_trfc c_active endof_tbt 图 4.4 命令状态机 4.34.3 信号产生模块信号产生模块 信号产生模块是产生请求信号的计数器,由如图 4.2 中的初始化请求产生模块和刷新请 求产生模块两部分组成。信号产生模块根据命令真值表对实际引脚信号进行操作,产生初始 化状态和命令状态中各状态对应的命令信号。状态机中的各状态的命令信号见表 4.1,各命 令真值表见表 4.2。 初始化请求产生模块是上电后初始化请求信号的产生延迟控制,由于控制器系统上电 南昌工程学院本科毕业设计(论文) 17 100us以后时钟才能稳定,这之后 sdram 才可以开始初始化操作,为防止译码出错,采用计 数器实现了延迟的控制,系统复位结束后才启动计数器,当计数器计到设定的值后计数值保 持,同时译码产生初始化的请求信号,在 sdram 初始化完成后请求信号变为无效。刷新请求 产生模块是根据模式寄存器的配置的频率产生 sdram 的刷新请求信号。这部分电路是采用计 数器实现的。计数器计到设定的值后产生刷新请求信号,同时返回到初值继续计数。图 4.5 为信号产生模块。 图 4.5 信号产生模块 表 4.1 各状态的命令信号表 表 4.2 各命令真值表 命令csnrasncasnwensdr_ckesdr_aa10/apsdr_ba load_mode_register0000任意操作代码 init_fsm 的各状态命令cmd_fsm 的各状 态 命令 i_trpc_idle i_trfc1c_trcd i_trfc2c_trfc i_tmrdc_cl i_nop nop c_tbt i_preprechargec_rdata i_ar1c_wdata nop i_ar2 auto_refresh c_btburst_terminat e c_activeactive c_readaread c_writeawrite i_mrsload_mode_regi ster c_arauto_refresh 南昌工程学院本科毕业设计(论文) 18 auto_refresh00011任意 precharge0010任意任意1任意 active0011任意行地址指定的 bank write with autoprecharge 0100任意列地址1指定的 bank read with autoprecharge 0101任意列地址1指定的 bank burst_terminate0110任意任意 nop0111任意任意 inhibit11110任意 表 4.2 标注: a.各命令的含义 load_mode_register:装载模式寄存器,auto_refresh:自动刷新,precharge:预充 电,active:激活,write with autoprecharge:带自动刷新功能的写,read with autoprecharge:带自动刷新功能的读,burst_terminate:突发中断,nop:空操作, inhibit:禁止操作。 b.引脚的功能 csn:芯片选择(chip select),除了 clk,cke,udqm 和 ldqm 引脚外,能使所有的输 入引脚有效或无效;rasn:行地址脉冲选通器,该引脚控制的行地址门闩线路;casn:列地 址脉冲选通器,该引脚控制的列地址门闩线路;wen:写使能;cken:时钟使能;addr:行 列地址复用,行地址(a0a12),列地址(a0a8);a10:自动预充电标志(auto- precharge flag);ba:bank 地址,在 rasn 有效期间,选择的 bank 将被激活。在 casn 选 通时,选择的 bank 将被读/写。 c. 模式寄存器中操作代码的设置 a11a10 是用户保留位;a9 用来配置写突发模式;a8a7 是操作模式,通常为“00”,代 表标准操作模式;a6a4 设置 cas 延迟时间(一般为 2 或 3 个时钟周期);a3 决定突发操 作模式是顺序还是间隔型;最后的三位 a2a0 用来配置突发长度。 4.44.4 参数模块参数模块 参数模块是 sdram 控制器中指令翻译和处理的模块,包括指令译码器模块和指令仲裁器 南昌工程学院本科毕业设计(论文) 19 模块。图 4.6 为参数模块。参数模块的功能是实现各项参数的设置,其中包括总线宽度设置、 sdram 模式寄存器的定义和设置、sdram 交流特性说明、sdram ac 时间的时钟计数的定义、 初始化状态变量的编码、命令状态变量码的编码和 sdram commands 的定义。 图 4.6 参数模块 指令译码器模块是根据指令仲裁器的结果和 sdram 控制器模式寄存器对工作模式参数的 设置,分别对初始化指令、刷新指令、读写指令进行译码。译码结果为 sdram 需要的 ras、cas 等信号,从而实现对 sdram 的控制;指令仲裁器模块是对初始化请求、刷新请求 和系统的读写请求等信号进行优先级仲裁,从而判断产生初始化响应、刷新响应和读写响应 的顺序。因为初始化操作只在上电时进行一次,它是 sdram 正常工作的基础,所以它的优先 级最高。其次是刷新请求,读写请求的优先级最低。当某一种操作正在执行时不会响应后来 的请求。 4.54.5 数据通路模块数据通路模块 数据通路模块是根据寄存器的设置及指令译码的结果对把系统非复用的地址处理为 sdram 复用的地址,使得 sdram 的地址及数据和相应的操作指令在时序上同步。数据路径模 块如图 4.7。当数据读出或是写入时,oe 一直处于有效的高电平状态,dm 中的主机输出的 数据掩码,经由 dqm 传输到 sdram 的 ldqm 与 udqm 引脚上,达到控制 sdram 存储器上 i/o 缓 冲的高、低字节表征。 南昌工程学院本科毕业设计(论文) 20 图 4.7 数据路径模块 综上所述,以上四个模块的功能实现是本设计的重点。通过 fpga 实现这四个模块的运 作要建立在 verilog hdl 语言编程上,具体程序见附录。 第五章 sdram 的读、写仿真 5.1 sdram 控制器时序仿真控制器时序仿真 通过以上对 sdram 控制器的四大模块组织的硬件描述语言编程,能得到具有 sdram 控制 器基本功能的编程代码组合。为了验证这些硬件描述语言编程代码是否真能实现 sdram 控制 器的功能,本设计采取计算机仿真软件 quartus ii 8.0 来进行仿真和验证。 5.1.1 quartus ii 8.0 时序仿真 为了进行仿真验证,我们要借用 quartus ii 8.0 软件的仿真功能实现。 首先,进入 quartus ii 8.0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论