SRAM控制器的设计与验证.docx
- 文档编号:4706689
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:65
- 大小:231.16KB
SRAM控制器的设计与验证.docx
《SRAM控制器的设计与验证.docx》由会员分享,可在线阅读,更多相关《SRAM控制器的设计与验证.docx(65页珍藏版)》请在冰豆网上搜索。
SRAM控制器的设计与验证
电子信息与电气工程学院2014届本科毕业论文(设计)
SRAM控制器的设计与验证
专业电子信息科学与技术
姓名
学号10033143
指导教师
完成时间2014.6
陕西商洛
独创性声明
本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包括其他人已经发表或撰写过的研究成果,也不包含为获得商洛学院或其他教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
学位论文作者签名:
_________________日期:
_________________
关于论文使用授权的说明
本人完全了解商洛学院有关保留、使用学位论文的规定,即:
学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。
□公开□保密(____年____月)(保密的学位论文在解密后应遵守此协议)
签名:
导师签名:
日期:
SRAM控制器的设计与验证
摘要:
内存控制器是计算机内部控制内存并通过内存控制器使之与CPU交换数据的重要里部分,影响计算机内存和CPU数据交换的部件之一。
内存控制器决定了计算机所能使用的最大内存容量、内存BANK数、内存类型和内存速度、内存颗粒数据深度以及数据宽度等参数,并自动化处理CPU对存储器的访问。
SRAM控制器是制约内存控制器的重要因素。
故也就决定了计算机的内存性能,从而对计算机整体性能有较大的影响。
SRAM(StaticRAM)即静态随机存储器。
它具有静止存取功能,无需刷新电路便能保存内部数据。
所以速度快,工作效率高,当代主要用于高速缓存。
SRAM控制器的设计目前是通过FPGA设计流程完成。
本文首先对SRAM控制器的主要功能做了研究和验证,重点分析了控制器内部处理访问命令的功能划分和子电路的工作过程,接着研究了FPGA设计验证的基本思想与流程,然后选取一款IS61WV102416ALL型号的SRAM存储器为研究对象,重点描述了其时序图形,以硬件语言(VerilogHDL)描述所完成电路设计,目的是设计出符合该时序图的SRAM控制器。
同时,ModelSim软件又是进行FPGA设计首选的仿真软件。
本文正是利用ModelSim软件进行SRAM控制器的编写设计,仿真与测试。
最终利用顶层文件仿真得到波形,对SRAM控制器的功能进行验证,得到结果与设计规范一致。
关键词:
FPGA;SRAM控制器;ModelSim;Verilog
DesignandverificationofaSRAMcontroller
Abstract:
ThememorycontrollerisacomputersysteminternalcontrolmemoryandthroughbetweenthememoryandtheCPUmemorycontrollerisanimportantpartofdataexchange,oneoftheimportantcomponentsofdataexchangebetweencomputerandCPU.Thememorycontrollerdeterminestheimportantparameterswhichcanbeusedincomputersystemmaximummemorycapacity,memoryBANK,memorytypeandspeed,memorygraindepthofdataanddatawidthandsoon,andtheautomationofprocessingCPUaccesstothememory.Butwiththedevelopmentofnetwork,theSRAMcontrollerhasbecomeanimportantfactorrestrictingthememorycontrollerdesign.Inotherwords,willdeterminethememoryperformanceofthecomputersystem,thustheoverallperformanceofthecomputersystemhasagreatinfluence.
SRAMisEnglishStaticRAMabbreviation,namelystaticrandomaccessmemory.Itisakindofstaticaccessmemory,donotneedtorefreshthecircuitwhichcansaveitinternallystoreddata.Sohastheadvantagesoffastspeed,highworkingefficiency,mainlyusedforcache.DesignoftheSRAMcontrollermainlythroughFPGAtocompletethedesignprocess.
Firstly,themainfunctionsoftheSRAMcontrollerisinvestigatedandverified,focusesontheanalysisoftheinternalprocessingaccesscontrollercommandfunctionpartitionandthesubcircuit'sworkprocess,thebasicideaandprocessandthenstudytheFPGAdesignverification,SRAMmemoryandthenchooseaIS61WV102416ALLmodelastheresearchobject,describesitsfocusonsequentialpatterninthehardwaredescriptionlanguage(Verilog,HDL)descriptionofthecompletecircuitdesign,thepurposeistodesigntheSRAMcontrollerofthesequencediagram.Atthesametime,ModelSimsoftwareandFPGAsoftwareispreferred.ThisarticleiswrittenfortheSRAMcontrollerdesignusingModelSimsoftware,thesimulationandtest.Thetopofthedocumentthesimulationwaveform,theSRAMcontrollerisverified,theresultsanddesignspecifications.
Keywords:
FPGA;SRAMcontroller;VerilogHDL;ModelSim
1绪论
1.1研究背景
SRAM存储器自近几十年来以来以具有高速度和低功耗的特点在世界上得到了飞速发展与广泛应用。
而随着半导体技术的飞跃,SRAM被越来越多地集成到电脑主板的CPU中。
现如今SRAM控制器的应用目前主要分为两个领域:
一是主要应用于网络设备的高性能,,二是主要应用于电子产品的低功耗低成本SRAM。
因为SRAM在数据传输与存储中有重要的位置,所以人们努力来研究更高性能,更大容量的SRAM以满足人们需要。
1.2存储器概念和类型
1.2.1存储器概念
存储器(Memory)是计算机中的记忆设备,用于存放程序和数据。
计算机中信息,包括输入的数据、程序、中间运行结果和最终结果都在存储器中。
根据控制器位置存入、取出。
有了存储器以后,计算机方有记忆功能。
按用途存储器有主存储器和辅助存储器。
内存指存储部件,存放执行的数据,离开电源,数据会丢失[1]。
外存是磁性介质等,能长久保存。
1.2.2存储器分类
存储器基本分类方式有以下几种:
按存储方式:
随机存储器:
存储单元的内容能被随机存取,存取时间和存储单元的位置无关。
顺序存储器:
按某种顺序存取,存取时间与存储单元按读写功能:
按信息保存性:
非永久记忆的存储器:
断电后信息即消失。
永久记忆的存储器:
断电后仍能保存信息。
1.2.3RAM存储器的发展
RAM(RandomAccessMemory)通过指令随机地对每个存储单元访问、基本固定访问时间、与存储单元地址无关的存储器。
RAM是仅次于CPU的器件之一。
而CPU也把中间数据暂时放置在RAM中,所以RAM和CPU之间的速度保持匹配。
如今随着网络的发展高速数据通信系统所面临的压力越来越大,各大系统架构因此也必须考虑到高速数据通信所产生的一系列算法、结构、组成部件方面的问题,其中存储器就是高速通信系统的瓶颈[2]。
随着外部存储器接口的速度不断提升,保证信号传输的完整性和准确性在越来越难的同时也显得越来越重要[2]。
因此在选择外部存储器时,需要从以下几个方面考虑:
1.带宽与速度
2.成本
3.存储数据的大小与容量
4.延迟
5.功耗
1.3本课题的内容和意义
本文的主要内容是设计一款满足HINOC外挂需求的SRAM控制器,并根据制定的测试例搭建基于HIMAC的仿真验证平台及进行FPGA验证。
设计的SRAM控制器简单而且具有很高的灵活性,具体工作内容包括:
i.SRAM控制器的原理研究
想要做好SRAM控制器的设计首先应对SRAM控制器深刻的理解,对其工作方式与原理有全面的认识,了解其各个管脚的作用并且熟悉其时序关系。
这样才能在进行控制器的设计时有一个清晰准确的思路。
ii.熟悉VerilogHDL的基本编程
该控制器的设计是通过硬件语言VerilogHDL实现的,所以在了解SRAM控制器原理之后就是要掌握VerilogHDL语言的描述,了解其作为硬件语言与软件语言的相同点与不同点。
这样我们就有了进行设计的基本工具。
iii.FPGA设计的基本理念研究
由于本课题是基于FPGA进行设计、仿真与验证,所以在学习硬件语言的同时也要熟悉FPGA设计的一般流程与思想,然后我们对整个设计就有了明确的方向与步骤。
iv.ModelSim软件的应用
本论文主要应用ModelSim软件,运行VerilogHDL代码及后期FPGA验证都在这个平台上进行,在学习了上述知识以后就在ModelSim软件上进行SRAM控制器的设计,编码,运行,仿真以及验证等多项工作。
✧本课题研究的意义:
随着高速数据的发展,传统SRAM根本不能很好地满足如今的社会。
外挂SRAM的灵活性与适应性使得其有着很好的应用前景,特别是HINOC系统的普及使得符合该系统的外挂SRAM控制器有极大发展空间,本文就致力于设计一个满足HINOC系统的外挂SRAM控制器并且在仿真平台上基于HIMAC功能进行FPGA验证。
[3]
2SRAM简介
2.1基本介绍
2.1.1基本简介
SRAM(StaticRAM)是指静态随机存储器。
它具备静止和存取的功能,无需刷新便能保存存储数据。
故SRAM有较高性能,同时SRAM也一些缺点,即集成度较低,SRAM体积大,功耗大。
主板上SRAM存储器面积较大。
2.1.2主要规格
一种是置于cpu与主存间的高速缓存,另一种是插在卡槽上的扩充用的高速缓存。
SRAM速度快,不需要刷新操作,但是价格高,体积大,所以还不能作用量较大的主存。
2.1.3主要特点
现将它的特点归纳如下:
优点,速度快,不必配合内存刷新,提高整体工作效率。
缺点,掉电不保存数据,集成度低,体积较大,很少用在关键性系统上边。
2.1.4主要用途
SRAM主要用于二级高速缓存用晶体管存储数据,无需刷新便能保存存储数据。
但是
SRAM的速度快但昂贵,一般用小容量SRAM作为高速CPU和较低速DRAM之间的缓存。
图2.1SRAM结构图
SRAM的架构如图2.1所示,SRAM一般可分为五大部分:
存储单元阵列,行/列地址译码器,灵敏放大器,控制电路,缓冲/驱动电路。
SRAM是静态存储方式,以双稳态为存储单元,而且工作速度较快[4].
2.2基本原理
2.2.1结构原理
SRAM即静态RAM.由晶体管组成。
断开表示0,接通代表1,状态能保持到改变信号为止。
晶体管可以不刷新,断电的时候,就会和DRAM一样,失去信息。
SRAM的速度快。
每个SRAM单元由其他零件和四到六个晶体管组成。
因此,它的价格贵,外形大,由于形状的差别,DRAM和SRAM不能互换[5]。
SRAM一般由五大部分组成,即存储单元阵列、地址译码器(包括行译码器和列译码器)、灵敏放大器、控制电路和缓冲/驱动电路[6]。
3FPGA设计介绍
3.1FPGA简介
FPGA是现场可编程门阵列的英文缩写,是一种半定制电路,它既解决了定制电路不足,又解决了可编程器件门电路数有限的缺点。
硬件描述语言完成的电路设计,可以简单的综合与布局,快速的烧录到FPGA测试。
这些可编辑元件被用来实现一些逻辑门电路。
FPGA比专用集成芯片速度慢,功耗较低。
因为芯片较差的可编辑能力,所以开发往往在普通FPGA上做成[7]。
3.2工作原理
FPGA采用了逻辑单元阵列LCA,内部包括可配置逻辑模块CLB输出输入模块IOB和内部连线三个部分。
现场可编程门阵列是可编程器件,具有不同的结构。
FPGA用查找表来实现组合逻辑,每个查找表连接到D触发器输入端,触发器驱动逻辑电路或驱动I/O,构成了既可组合逻辑功能又可时序逻辑功能的基本逻辑单元,这些模块利用连线互相连接或连接到I/O模块。
FPGA的逻辑通过内部静态存储单元加载编程数据来实现,存储器单元的值决定了逻辑单元的逻辑功能、各模块之间或模块与I/O间联接方式,决定了FPGA所能实现的功能,FPGA可以无限次的编程。
3.3芯片结构
主流的FPGA基于查找表技术,并且整合了常用模块。
,FPGA芯片主要由7部分完成,分别为:
丰富的布线资源、内嵌入块式RAM、完整的时钟管理基本可编程逻辑单元、可编程输入输出单元、嵌的底层功能单元和内嵌、专用硬件模块。
3.4FPGA设计的基本流程
如图3.1所示,FPGA的设计可分为两个阶段:
即设计阶段和设计检验阶段,首先根据所需器件要求进行设计,包括编程与输入,然后进行检验,包括在相应平台上进行运行与仿真。
具体步骤又可主要分为以下几步:
设计输入,功能仿真,综合,装配布线,在线验证等[8]。
图3.1FPGA设计流程图
4关于VerilogHDL语言与ModelSim软件
4.1VerilogHDL语言
4.1.1语言简介
VerilogHDL是种硬件描述语言,用于多种抽象设计层次的数字系统建模。
数字系统能够按层次描述,并可在相同描述中进行时序建模。
VerilogHDL不仅定义了语法,而且对语法都有模拟、仿真语义。
所以,这种语言编写能够使用仿真器验证。
4.1.2模块
模块是Verilog语言的基本单位,用于描述某一功能或结构与其他模块端口。
一个结构可用开关级、门级的原语描述;设计使用连续赋值语句来描述;一个模块能在另一个模块中调用。
一个模块的基本语法如下:
modulemodule_name(port_list);
Declarations:
reg,wire,parameter,
input,output,inout,
function,task,...
Statements:
Initialstatement
Alwaysstatement
Moduleinstantiation
Gateinstantiation
UDPinstantiation
Continuousassignment
endmodule
模块的定义从module开始,到endmodule结束,每条语句以“;”结束(块语句、编译向导、endmodule等少数除外)。
完整的Verilog模块由五部分构成:
1.模块定义:
modulemodule_name(port_list)等等;
2.说明部分,例如模块描述中使用的寄存器和参数。
说明部分包括:
函数、任务:
task,function等
端口类型说明:
output,inout,input等
寄存器,线网,参数:
wire,parameter,reg,等
3.描述体部分:
这是模块最重要的,在这里描述模块的行为和功能,always块,逻辑门的调用,用户自定义部件的调用,子模块的调用和连接,初始态赋值,连续赋值语句等。
4.结束行,以endmodule结束。
半加器电路的模块。
moduleHalfAdder(A,B,Sum,Carry);
inputA,B;
outputSum,Carry;
assign#2Sum=A^B;
assign#3Carry=A&B;
endmodule
在这模块的名字是HalfAdder。
有4个端口:
两个输出端口Sum和Carry,两个输入端口A和B。
无定义端口的位数端口大小都为1位;没端口数据类型说明的四个端口都是线网数据类型。
模块包含 assign#2Sum=A^B和assign#3Carry=A&B两条连续赋值语句。
这些语句在模块中出现的顺序无关紧要。
每条语句的执行顺序取决于在变量A和B[9]。
4.2ModelSim软件
ModelSim软件是目前最好的HDL语言仿真软件,它提供的仿真环境,是唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
采用直接优化的编译技术、仿真速度快、编译的代码与平台无关,便于保护IP核,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的第一仿真软件。
主要特点:
·编译仿真速度很快,跨平台跨版本仿真;
·Verilog和VHDL单内核混合仿真;
·源码窗口显示信号值、虚拟对象VirtualObject、Assertion窗口、集成了性能分析、代码覆盖、波形比较、信号条件断点等众多调试功能;
·对SystemC的直接支持,和HDL任意混合;
·支持SystemVerilog的设计功能;
·对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;
5SRAM控制器的设计
5.1SRAM控制器功能
SRAM主要用来存储查找表等需要高速访问的数据。
在SRAM中进行的查找结果能够指向SDRAM存储更大数据结构。
而SRAM控制器主要作用是为存储查找表提供高带宽以及存储微引擎处理数据包所用数据。
文中需要验证的是SRAM控制器,该控制器提供了三种接口:
SRAM、BootROM和外部设备地址空间。
SRAM控制器包含一个8入口的Push/Pop寄存器列表,用于快速队列操作、比特位的测试、设置和清除指令,SRAM的工作频率为访问SRAM的微引擎的核心频率的
图5.1SRAM控制器的结构
图5.1描述的是SRAM控制器的简化的模块结构。
它的主要功能是接受不同的访问请求,并以高效的方式执行该访问。
当一个线程对SRAM控制器发出访问时,在指令的结尾可以附加optionaltoken项,比如:
sram[write,SxFer1,tempa,tempb,4],optimize_mem
该指令的主要操作意图是:
将微引擎中SRAM传输寄存器的内容写入存储器中,目的地址为tempa和tempb的和。
并通过此访问加入SRAM控制器的顺序写队列来对存储器来优化。
指令末尾的optimize_mem项说明了SRAM控制器用来存放访问命令的队列。
SRAM队列仲裁器以周期循环作为基础工作,如果前一个SRAM的工作周期为读周期,则SRAM控制器会在总线反转周期之前尽多地安排读操作执行。
该特性能够节约SRAM带宽。
由于线程对SRAM的访问命令将在SRAM控制器中重新排序所以必须为编程者提供一种让访问命令按照其指定的顺序执行的途径。
SRAM控制器还提供了优先级队列。
存放在此队列中的访问命令比其他任何队列中的访问命令有更高的优先级。
要使用此队列只需将optionaltoken项置为priority。
SRAM控制器还提供了一个按内容访问存储器来共享存储资源。
当使用传统的旗语来限制对共享资源的访问时,很多被浪费了。
使用CAM可以改变这种状况。
配合SRAM控制器中的读锁失败队列,使用读锁治疗和读解锁指令,微引擎能够节省很多原先用在发送和检查旗语的时钟周期,取而代之的是执行后续的操作直到存储器中读锁的区域被解锁。
这一特性同时也节省了SRAM的周期[10]。
5.2SRAM控制器的硬件结构
5.2.1总线结构
SRAM控制器可以通过一个公用的总线接口对3种外部命令进行访问:
○SSRAM:
最大8M的同步设备;
○BootROM;Flash或EPROM
○SlowPort;其他设备。
这三种设备分别映射到不同的地址空间,并且通过SRAM配置寄存器为每个地址空间配置时序。
所有微引擎可以访问SRAM总线上设备。
外部接口包括19位地址总线,32位数据总线,还有控制信号。
总线的时钟频率为微引擎的核心频率的一半。
5.2.2同步SRAM地址空间
同步的SRAM存储器具有较小的访问延时。
一般主要用来存储查找表和微引擎使用的空闲列表。
SRAM控制器提供了32位的接口,可以与8M的同步SRAM相连,并且支持FlowThru设备和PipelinedBurstSSRAM设备。
外部地址管脚A[18:
0]反映了内部长字地址的低19位状态。
5.2.3高级SRAM访问命令
SSRAM地址空间提供了比简单的读和写更高级的功能,这些功能被设计用来让微引擎能够执行需要额外指令进行的复杂的存储器访问操作。
这些访问命令减少了微引擎管理公用操作的负担。
如果没有这些高级命令,就需要用软件来实现这些功能,因而需要更多的存储器操作。
这些命令提供了以下功能:
a)8个Push-Pop寄存器可提供缓冲器管理。
b)Bit检查、置位和清除命令可提供位元操作。
c)8项按内容访问存储器可供8个独立的存储器地址读锁功能。
5.3SRAM地址映射和队列功能
5.3.1SRAM映射
表5.2列出了SRAM地址空间的内存分配情况。
表5.2SRAM地址印象
物理设备
功能
微引擎SRAM指令
微引擎地址空间(长字寻址)
慢速端口
慢速端门
Read\write
70000-7FFFFF
SRAMCSR
SRAMCSR
Read\write
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SRAM 控制器 设计 验证