基于FPGA技术的计算机组成原理课程的实验教学.docx
《基于FPGA技术的计算机组成原理课程的实验教学.docx》由会员分享,可在线阅读,更多相关《基于FPGA技术的计算机组成原理课程的实验教学.docx(16页珍藏版)》请在冰点文库上搜索。
基于FPGA技术的计算机组成原理课程的实验教学
基于FPGA技术的计算机组成原理课程的实验教学
祝毅
摘要:
“计算机组成原理”是计算机专业的一门核心课程。
它涉及的知识面非常广,内容包括中央处理器、指令系统、存储系统、总线和输入输出系统等方面,学生在学习该课程时,普遍觉得内容抽象难于理解。
借助于“计算机组成原理”实验系统,学生通过实验环节,可以进一步融会贯通学习内容,掌握计算机各模块的工作原理,相互关系的来龙去脉。
为了增强实验系统的功能,提高系统的灵活性,降低实验成本,我们采用FPGA芯片技术,FPGA是目前电子设计中的热点之一。
培养学生的工程实践能力,计算机组成原理与FPGA结合而出现计算机仿真教学大为广纳。
学生在进行电子设计时可跳过大量繁琐的电路芯片器材,直接运用计算机与FPGA结合进行设计、仿真。
根据目前计算机组成原理课程实验教学的现状,提出并利用FPGA及Quartus软件设计计算机组成原理课程实验,给出了实施方案。
实践证明:
学生利用该软件,FPGA芯片下载以及相关的硬件资源,能够很快的理解课堂讲授的理论。
本文对FPGA技术和计算机组成原理两者的结合特点进行发掘,提出一些浅显的建议和看法以及发展其特点。
关键词:
FPGAQuartus计算机组成原理现状特点
FPGA-basedcomputerarchitecturecourseExperiment
ZhuYi
Abstract:
"ComputerOrganization"isacomputersystemforallstudentsofacorecurriculum.Itinvolvesaverywiderangeofknowledge,includingCPU,instructionset,storagesystems,busandinput-outputsystem,thestudentslearnthecurriculum,generallyfeelthatthecontentoftheabstractisdifficulttounderstand.With"ComputerOrganization"experimentalsystem,thestudentsthroughtheexperimentsthatcanfurtherstudyanddigestthecontentsofeachmoduletomasterthecomputerworks,theinsandoutsofmutualrelations.Experimentalsysteminordertoenhancefunction,increasesystemflexibility,lowercostofexperiments,weuseFPGAchip,FPGAisoneofthehotelectronicdesign.Currentlystudentsinelectronicdesign-relatedcoursesorexperimentsareusedtoconnectthetraditionalcircuitchipdesignmethodincreases,sothatistime-consumingbutalsousealotofequipment,althoughthereareresults,buthavebeenbehindthedesignofelectronicsystemsinmodernsocietyrequirements.Practicalabilityofstudentsinengineering,computerorganizationandFPGAcombinationofcomputersimulationappearmuchaccommodateteaching.Studentsinelectronicdesigncanskipalotofcomplicatedcircuitchipequipment,combinedwiththedirectuseofcomputerandFPGAdesign,simulation.UnderthecurrentexperimentalteachingofcomputerarchitecturecoursethepresentsituationofanduseofFPGAandQuartussoftwaredesignofcomputerarchitecturecourseexperiment,givenimplementation.Practiceshowsthat:
studentsusethesoftware,FPGAchipsandrelatedhardwaretodownloadandcanquicklyunderstandtheclassroomtheory.Inthispaper,FPGAtechnologyandcomputerorganizationtoexplorethecombinationofcharacteristics,someplainandthedevelopmentoftheirproposalsandviewsonthecharacteristics.
KeyWords:
FPGAQuartusComputerOrganizationActualityCharacter
目录
引言4
1.课程实验教学4
1.1引入EDA技术的实验教学4
1.2Quartus软件简介5
1.3关于FPGA简介6
1.4FPGA的基本结构7
2关于FPGA的设计流程8
2.1完整流程8
2.2基于QuartusII的FPGA系统设计流程说明9
3基于FPGA的实验设计——CPU的设计与实现10
4结语11
成果申明12
参考文献:
12
引言
“计算机组成原理”是计算机专业的一门核心课程。
它涉及的知识面非常广,内容包括中央处理器、指令系统、存储系统、总线和输入输出系统等方面,本课程以计算机组成结构为中心阐述基本概念和原理,具体介绍了计算机硬件系统中各大部件的组成原理,逻辑实现,设计方法及互连构成整机(CPU)的技术。
目的在于培养学生在硬件系统分析、设计、开发、使用和维护诸方面的能力。
该课程涉及的知识面广,内容多,难度大,在基础课与专业课之间起着重要的承上启下的作用。
为了本课程的理论教学,需要有些实验来帮助学生理解课堂上所学的理论。
目前高校开展本课程实验教学的形式有两种。
一种是利用现有的计算机组成原理实验仪,该实验仪已将CPU的各个组成部件全部做好,学生只需按书中要求拨动相应开关就能完成实验,有时结果出来还不知道是怎么回事?
这种方法局限性大,只能按单一的结构模式完成,学生在学习该课程时,普遍觉得内容抽象难于理解。
另一种方法是利用已有的软件生产商提供的MAX+PLUSII,FOUN—DATION等软件工具进行模拟仿真并通过可编程器件及相应硬件资源来直观的观察实验结果,加深对理论的理解。
随着计算机和大规模集成电路制造技术的迅速发展,现代电子系统设计技术发生了很大的变化。
采用传统的小规模集成电路芯片加连线的设计方法,既费时又消耗大量器材,已经不能满足现代电子系统设计的要求。
计算机仿真教学已成为培养学生工程实践能力的重要手段。
在“计算机组成原理”课程的实践教学过程中,我们利用FPGA实验仪和Quartus软件平台设计了一套系统的“计算机组成原理”课程的实验。
基于Quartus软件平台和FPGA实验仪的实验教学,对于学生巩固计算机组成原理课程的理论,CPU各个功能部件是如何工作,促进学生的感性认识,培养学生计算机应用能力和创新能力等方面起了积极的作用。
1.课程实验教学
1.1引入EDA技术的实验教学
EDA技术是以计算机软、硬件为工作平台,通过使用硬件描述语言或原理图完成相应的设计文件,并对特定的目标芯片编程下载,实现既定的电子线路功能和现代电子设计技术。
EDA技术为硬件课程的验证型实验转换到创新设计型实验提供了良好的实验平台,利用EDA技术进行计算机这一典型复杂数字系统的设计已成为计算机组成原理实验课程发展的方向。
EDA的技术基础是软件设计工具和可编程逻辑器件(PLD)。
FPGA作为一种新型高密度PLD,是一种可由用户自定义并进行配置的大规模集成电路器件,具有更高集成度和更强大的逻辑实现能力,使得设计更加灵活的容易实现,并可重复编程使用,是设计数字系统的主要硬件基础。
前者使传统的硬件设计与调试问题变为一个由各种EDA软件实现的“软件”问题,二者结合采用硬件描述语言或电气原理图等方法来描述硬件的行为、功能,通过综合形成FPGA内部阵列间的连接关系。
这种实验系统对加深理论知识理解、提高学生动手实践能力、节约实验课时.了解国内外系统设计的一流设计理念和方法,拓展就业层次有不可忽视的作用。
1.2Quartus软件简介
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
较早的FPGA试验仪一般是以MAX+PLUSII为软件环境,平台上为用户提供2万个(FLEXl0K20)可用逻辑门,12288bit的RAM/ROM,24个电平指示灯,8个七段LED数码管,16个带状态显示的电平开关/电平指示,10个脉冲按键开关,4个频率从0.5-16MHZ可选的时钟信号,还有32个可扩充的I/O资源,JTAG标准的下载装置。
该实验仪设计简捷明了,每个资源旁都标注了与FLEXl0K20相对应的管脚,使用户很快就能掌握它的使用。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
支持MAX7000/MAX3000等乘积项器件。
QuartusII软件7.0支持低成本、低功耗CycloneIII器件系列,依然在性能和效能上首屈一指。
和竞争低成本器件相比,QuartusII软件7.0在性能上平均高出三个速率等级;和前一代低成本FPGA相比,功耗低50%。
而且,7.0版支持经过改进的PowerPlay功耗分析和优化技术,扩展了TimeQuest时序分析器功能。
QuartusII软件现在支持业界密度最高、成本最低的FPGA—CycloneIII器件系列。
支持下面的CycloneIIIFPGA:
EP3C10、EP3C16、EP3C25、EP3C40、EP3C55、EP3C80、EP3C120
QuartusII为CycloneIIIFPGA提供完整的设计流程支持,包括:
1)TimeQuest时序分析器——迅速简捷地实现时序逼近
2)渐进式编译——帮助您尽快完成设计
3)PowerPlay功耗分析和优化工具——降低功耗
4)SOPCBuilder和DSPBuilder——进行系统级设计
增强的PowerPlay功耗分析和优化技术
PowerPlay功耗分析和优化技术提供对StratixIII可编程功耗技术的支持。
QuartusII软件自动对高性能通路进行布线,然后将性能不关键的通路设置为低功耗。
此外,QuartusII软件自动将没有使用的逻辑进行关断。
采用QuartusII软件和StratixIII可编程逻辑技术,结果大大降低了总功耗。
TimeQuest时序分析器
TimeQuest时序分析器,这一使用方便的ASIC功能时序分析工具能够自然地支持SDC,包括StratixIIIFPGA扩展支持。
它包括以下增强功能:
-进一步提高了65nm器件的性能(更精确的时序模型)。
1.3关于FPGA简介
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
1.4FPGA的基本结构
FPGA由6部分组成,分别为可编程I/O单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。
每个单元简介如下:
1)可编程输入/输出单元(I/O单元)
目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可适应不同的电器标准与I/O物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。
两个最重要的参数是电气标准和频率。
2)基本可编程逻辑单元
FPGA的基本可编程逻辑单元是由查找表(LUT)和寄存器(Register)组成的,查找表完成纯组合逻辑功能。
FPGA内部寄存器可配置为带同步/异步复位和置位、时钟使能的触发器,也可以配置成为锁存器。
FPGA一般依赖寄存器完成同步时序逻辑设计。
一般来说,比较经典的基本可编程单元的配置是一个寄存器加一个查找表,但不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同。
学习底层配置单元的LUT和Register比率的一个重要意义在于器件选型和规模估算。
由于FPGA内部除了基本可编程逻辑单元外,还有嵌入式的RAM、PLL或者是DLL,专用的HardIPCore等,这些模块也能等效出一定规模的系统门,所以简单科学的方法是用器件的Register或LUT的数量衡量。
3)嵌入式块RAM
目前大多数FPGA都有内嵌的块RAM。
嵌入式块RAM可以配置为单端口RAM(SARAM)、双端口RAM(DARAM)、伪双端口RAM、CAM、FIFO等存储结构。
CAM,即为内容地址存储器。
写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。
简单的说,RAM是一种写地址,读数据的存储单元;CAM与RAM恰恰相反。
除了块RAM,Xilinx和Lattice的FPGA还可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构。
4)丰富的布线资源
布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。
布线资源的划分:
(1)全局性的专用布线资源:
以完成器件内部的全局时钟和全局复位/置位的布线;
(2)长线资源:
用以完成器件Bank间的一些高速信号和一些第二全局时钟信号的布线;
(3)短线资源:
用来完成基本逻辑单元间的逻辑互连与布线;
(4)其他:
在逻辑单元内部还有着各种布线资源和专用时钟、复位等控制信号线。
由于在设计过程中,往往由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以常常忽略布线资源。
其实布线资源的优化与使用和实现结果有直接关系。
5)底层嵌入功能单元
指通用的程度较高的嵌入式功能模块,如PLL,DLL,DSP,CPU等
6)内嵌专用硬核
指高端应用的可编程逻辑器件内部嵌入的专用硬核。
与“底层嵌入单元”是有区别的,这里指的硬核主要是那些通用性相对较弱,不是所有FPGA器件都包含硬核。
2关于FPGA的设计流程
2.1完整流程
完整的FPGA设计流程包括电路设计与输人、功能仿真、综合优化、综合后仿真、实现与布局布线、时序仿真、板级仿真与验证、调试与加载配置等主要步骤。
参考FPGA设计流程图
电路设计完成后,要用专用的仿真工具对设计进行功能仿真(FunctionalSimulation),验证电路功能是否符合设计要求。
功能仿真又称前仿真(Per-Simulation)。
通过仿真能及时发现设计中的错误,加快设计进度,提高设计的可靠性。
综合(Synthesis)优化是指将HDL语言、原理图等设计输人翻译成由基本门、RAM、触发器等基本逻辑单元组成的逻辑网表,并根据目标与要求(约束条件)优化所生成的逻辑网表,输出标准格式的网表文件,供FPGA厂商的布局布线器进行实现。
综合后仿真(PostSynthesisSimulation)的作用是检查综合出的结果与原设计是否一致。
作综合后仿真时,要把综合生成的标准延时格式SDF(StandardDelaFormat)文件反标注到综合仿真模型中去,可估计门延时带来的影响。
综合后仿真虽然比功能仿真精确一些,但是只能估计门延时,不能估计线延时,仿真结果与布线后的实际情况还有一定差距,并不是十分准确。
目前主流综合工具日益成熟,对于一般性设计,如果设计者确信自己表述明确,没有综合歧义发生,则可以省略综合后仿真步骤。
综合结果的本质是一些由基本门、触发器、RAM等基本逻辑单元组成的逻辑网表,它与芯片实际的配置情况还有较大差距,此时应该使用FPGA厂商提供的软件工具,将综合输出的逻辑网表适配到具体FPGA器件上,这个过程叫做实现(Implementation)。
在实现过程中最主要的过程是布局布线(P&R),所谓布局(Place)是指将逻辑网表中的硬件原语或底层单元合理地适配到FPGA内部的固有硬件结构上,布局的优劣对设计的最终实现结果(包括速度和面积两个方面)影响很大;所谓布线(Route)是指根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理正确地连接各个元件的过程。
一般情况下,用户可以通过设置参数指定布局布线的优化准则。
总体来说,优化目标主要有两个方面-面积和速度。
一般根据设计的主要矛盾,选择面积或速度或平衡两者等优化目标,但是当两者冲突时,一般满足时序约束要求更重要一些,此时选择速度或时序优化目标效果更佳。
将布局布线的时延信息反标注到设计网表中,所进行的仿真就叫时序仿真(TimingSimulation)或布局布线后仿真,简称后仿真。
布局布线后生成的OF文件包含的时延信息最全,不仅包含门延时,还包含实际布线延时,所以布局布线后仿真最准确,能较好地反映出芯片的实际工作情况。
一般来说,布局布线后仿真步骤必须进行,通过布局布线后仿真能检查设计时序与FPGA的实际运行情况是否一致,确保设计的可靠性与稳定性。
在有些高速设计情况下、还需要使用第三方的板级验证工具进行仿真与验证,这些工具通过对设计的IBIS,HSPICE等模型的仿真,能较好地分析高速设计的信号完整性、电磁干扰等电路特性等。
FPGA设计开发流程的最后步骤就是在线调试或将生成的配置文件写入芯片中进行测试。
2.2基于QuartusII的FPGA系统设计流程说明
1)建立新工程
首先将所设计工程项目划分为若干子模块,将每个子模块单独存放在一个文件夹中,并分别进行编译,验证通过后,将每个子模块的VHDL文本文件添加到总工程文件夹中,并建立图元(建立图元block,右键点击.V文件,选择createsymbolfilesforcurrentfiles),将各个图元(亦即子模块)连接起来构成总体设计项目。
2)设计各子模块
编写各子模块相应的代码,并分别进行编译,验证通过后将各子模块VHDL文件添加到顶层设计中,创建图元,进行连接以完成总体项目的设计。
这部分就是将管脚连好。
注意:
在原理图编辑中,英文的大小写代表相同的含义,只要器件连接线的节点名称相同就会默认为是连接的,总线(Bus)在图形编辑窗口显示的是一条粗线,总线必须在名称的后面加上“[a..b]”,表示一条总线内所含有的节点编号,原理