开放式CPU设计与测试实验报告_第1页
开放式CPU设计与测试实验报告_第2页
开放式CPU设计与测试实验报告_第3页
开放式CPU设计与测试实验报告_第4页
开放式CPU设计与测试实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、河北大学2007级系统结构学年论文(课程设计)第 页共14页第 页共14页1引言实验目的我们做实验的要求和任务:学会使用先进的硬件设计工具和超大规模集成电路FPGA设计并实现一个CPU芯片。采用先进的工具软件进行模拟和测试,测试通过后再下载到FPGA中制成CPU芯片。在过程中需要掌握的主要就是CPU的设计、验证和测试方法,以及学会相关工具软件的使用方法。其中本实验以计算机硬件为主,兼顾计算机软件和计算机应用技术。在过程中需要自己设计指令系统、指令格式、寻址方式、寄存器结构、数据表示方式、存储器系统,自己设计运算器、控制器和流水线结构等。用VHDL硬件语言进行逻辑设计,采用先进的工具软件进行模拟

2、和测试,测试通过之后下载到FPGA芯片中,并在测试平台上通过规定测试程序的测试。并且通过实验锻炼和提高实际动手能力、创新思维、团队合作精神等方面的能力。国内外研究现状CPU在全球半导体工业中扮演着一个举足轻重的角色。大大小小,林林总总的CPU被应用到从电子表到航天飞机等各式各样的系统产品中。从功能粗分,CPU可以被分为通用型CPU、嵌入式CPU与专用型CPU三类。下边就先讲一下国际上这几类CPU的现状:通用型CPU通用型CPU是指用于PC的X86系列(Intel,AMD)等,及最尖端用于工作站、伺服器的UltraSparcCSUNMicrosystem),Alpha(DEC),Itanium(

3、HP+Intel)系列等。这些CPU通常采用32位或64位指令,由宠大的研发团队(500人至2000人)设计,采用了全球最尖端的微处理器体系结构与电路设计技术,使用最先进的半导体工艺(如0.13微米一0.18微米)制成,工作时钟频率可达1GHZ2GHZ。嵌入式CPU嵌入式CPU是指那些用于非计算机类产品(如通讯产品,消费类产品及军用产品)的CPU。它们以独立集成电路芯片的形式存在,或作为内核被集成到系统级芯片(SOC)中。与通用型CPU相比,它们并非追求最高的性能,而是“够用就行”。它们通常使用主流的半导体工艺(如0.25微米一0.5微米)制成。指令在4位到64位之间,工作时钟频率在几KHZ到

4、几百MHZ之间。这类CPU所含盖的范围非常之广,如广泛用于工业控制家用电路的Z80,8051,6502等;用于手机的ARM等;用于游戏机的MIPS等;都是其典型代表。这类CPU通常采用传统的指令集。专用型CPU专用型CPU是指那些为了某种特定的应用而设计的并为这些特殊应用而将内部体系结构与指令集作了专门优化的CPU,如用于多媒体应用的媒体CPUCMediaProcessor)用于路由器等网络通讯产品的网络CPU(NetworkProcessor或称NPU),及用于网络安全保障,数据加密解密的安防CPU(SecurityCPU)等。时钟频率为几百MHZ。在最近两年多的时间里,国产CPU如雨后春笋

5、,2001年3月,中星微系统公司开发出数码影像处理芯片星光1号;2001年7月,方舟公司的方舟1号嵌入式CPU问世;2002年9月,中科院计算所研制成功我国首款通用高性能CPU龙芯1号;2002年11月,上海复旦微电子公司推出高性能嵌入式32位微处理神威1号;2002年12月,北京大学众志1号面世;2003年2月,上海交通大学的汉芯1号面世最值得一提的是我们清华大学于2003年7月成功研制出了自己的CPUTHUMP107,它拥有自主知识产权,是一款32位高频、低功耗的嵌入式CPU芯片,它基于MIPS4KC架构,采用0.18微米CMOS工艺,定点字长32位,主频典型频率400兆赫兹,最高主频可达

6、500兆赫兹,功耗小于0.5瓦,实测定点运算速度可达每秒4.44亿次。1.3实验环境1总体描述FPGA-CPU设计平台能够支持下载到FPGA中的CPU的单步调试和连续运行。用户用VHDL编写的CPU代码通过编译之后,可以下载到设计平台上的FPGA芯片中。FPGA-CPU的运行通过执行预先写到外部存储器中的程序来实现。使用DebugController程序对外部存储器进行读写操作,并能监控FPGA-CPU的状态和通过设置断点调试FPGA-CPU正在执行的程序。这套实验环境为实验者提供了最大的自由度来写出具有自己风格的CPU软核,并在测试运行平台上调试和运行。2硬件环境整个硬件平台主要有PC监控系

7、统、外部程序存储器、FPGA-CPU及其下载相关电路,以及控制电路组成。其中PC监控系统主要是由监控软件DebugController及相关通信接口等构成,提供一整套的运行和调试功能。见图1:3软件环境监控程序DebugController使用该软件对外部存储器进行读写操作,并能监控FPGA-CPU的状态和通过设置断点调试FPGA-CPU正在执行的程序。Active-HDL4.2我们用该软件做功能仿真。该软件编译时间短,并可以查看中间信号,因此模拟、调试十分方便。这对于检测并纠正逻辑错误是很有利的。美中不足的是,它无法进行有效的时序模拟。Quartus-4.1我们使用该软件完成编码工作,并在a

8、ctive-hdl功能模拟通过后,进行有效的时序模拟。最终烧片等都用该软件。1.4主要成果我们按照由简单到复杂的开发顺序开发五级流水CPU。从设计到编码都遵循“简单的就是最好的”的原则。在这个原则的指导下,结构设计都非常简单清晰。由此而来,我们的代码编写也极为简洁。实验开发的CPU支持丰富的指令集,而且有着良好的可扩展性。我们的创新性成果散布在开发的各个过程中,在解决一个个问题的过程中,很多方法都是我们独创的。河北大学2007级系统结构学年论文(课程设计)第 页共14页2设计报告实验方法我们遵循的基本原则是从简单到复杂,在没有任何经验的时候,先从模拟计算机组成原理实验(也就是最初那个串行指令版

9、本)入手,增长经验值,让我们对整个流程先有一个体验和认识。然后再做带流水的复杂版本,具体实现时,我们最后完成了五级流水CPU的设计。在做设计时,我们都是遵循自顶向下(Top-Down)原则,具体而言是按如下的抽象级别设计的:指令系统模块结构逻辑餐.图2结构级2.里-吧芒计流程逻辑屯路乂一流程完成的。其中逻辑级,也就是用硬件描述语言描述的部分以及物理级都属实现部分。物理芯片系统各个方面的性能。正如李兆麟博士所讲,现存的指令系统都是经过数十年沉淀留下来,整个行业界也仅有屈指可数的那么几套指令系统。因此,我们在短短几个星期之内不大可能设计出一套优秀的指令系统出来。基于此,我们采用清华设计CPU时走的

10、路线走兼容路线。下边就是我们两级流水中的指令系统:表2-1两级流水指令系统汇编语句操作码功能描述指令类型ADDDR,SR00000000DR+SRTDR算术逻辑指令SUBDR,SR00000001DR-SRTDRDECDR00000010DR-1TDRINCDR00000011DR+1TDRCMPDR,SR00000110DR-SR比较ANDDR,SR00000111DRandSRTDR逻辑与ORDR,SR00001000DRorSRTDR逻辑或NOTDR00001001/DRTDR逻辑非XORDR,SR00001010DRxorSRTDR异或TESTDR,SR00001011DRandSR,

11、测试SHLDR00001100逻辑左移,最低位补0,最高位移入CSHRDR00001101逻辑右移,最高位补0,最低位移入CSARDR00001110算术右移,最高位右移,冋时再用自身的值填入MOVDR,SR00001111SRTDR数据传送LOADDR,SR01000001SRTDR指令STOREDR,SR01000010SRTDRMOVIDR,IMM01000011IMMTDR(双字指令)LOADHIMM00100000IMMTR15高8位LOADLIMM00100001IMMTR15低8位PUSHSR01000110SR入栈POPDR01000111出栈TDRJRADR00010000无

12、条件跳转到ADR,ADR=原PC值+OFFSET控制转移JRCADR00010001当C=1时,跳转到ADR,ADR=原PC值+OFFSET指令JRNCADR00010010当C=0时,跳转到ADR,ADR=原PC值+OFFSETJRZADR00010011当Z=1时,跳转到ADR,ADR=原PC值+OFFSETJRNZADR00010100当Z=0时,跳转到ADR,ADR=原PC值+OFFSETNOP11000000空操作其他HALT0001000011111111停机(JR0XFFFF)五级流水CPU的指令系统基本上沿用了两级流水的指令系统。在此基础上增加了一些特色指令:ADDIDR,IM

13、M(立即数和寄存器相加),SUBDR,IMM(寄存器和立即数相减),ST0RE2DR,OFFSET,SR(SRTDR+OFFSET),LOAD2DR,SR,OFFSET(SR+OFFSETTDR)2.3概念设计指令流水的基本思路是把每条指令划分为几个执行步骤,这些步骤在执行过程中使用不同的资源从而在时间上能重叠起来,提高了整体工作负载的吞吐率。我们将每条指令划分为“取指”、“译码”、“执行”、“访存”、“写回”这五个执行步骤。五级流水概念图I执行访存I(Ex)(MA)图22五级流水概念图2.4总体逻辑结构计五级流水CPU结构图ID_EXRegJPCo*fset1/IMM指令寄存器IRSAReg

14、ArrayAoutSBBoutw_wRegEnw_SBWritdataRegSelRegOutREGISTERSMEM_WBRegMemOuterDReaddataWritePC|m_AqUOutw_图23五级流水整体结构图整个CPU由以下几个模块组成:取指模块(IF):给出内存地址,读取指令并送入指令寄存器,为下一级准备数据。由于PC控制模块处于取指模块中,因此控制相关的检测也置于取指模块。译码模块(ID):读取寄存器值和指令译码。我们采取一次译码,逐级传递的方式,译出后几级流水所需的控制信号和数据(如立即数等),在每次时钟上升沿到来时送入下一级。实际上,结构相关、控制相关、数据相关的检测都

15、可归入译码部分。考虑到“相关检测”涉及到的信号分属不同阶段以及整体结构的清晰性,我们将“相关检测”独立出来。执行模块(Ex):完成算术逻辑运算、计算有效地址和提供数据通道。访存模块(Ma):选择地址线的数据来源和数据线的流向。访存和取指在功能上是独立的,但CPU对外只有一条地址线和数据线的事实决定了访存和取指是相互联系的。当执行LOAD/STORE指令时,地址线由ALU送入“访存段”的值提供;取指时,则由PC提供。当写内存时,CPU内部数据送数据线;当需要读内存时,CPU往数据线送高阻。回写模块(Wb):选择回写数据源和根据写使能信号wRegEn将数据回写到寄存器堆;HazardDetectU

16、nit模块:检测结构相关;ForwardingUnit模块:检测数据相关。3测试报告测试方法采取了“先软后硬”的测试方法。具体做法是:先用vhdl编写内存模块,通过元件的例化配置,将内存模块和已有的CPU模块连接起来,构成一个完整的计算机系统。这样就可以用软件模拟CPU的运行过程。我们使用了active-HDL4.2和quartus4.1进行模拟、测试。在软件测试通过后,我们将程序下载到FPGA芯片中进行硬件测试。应该说,如果软件测试通过,CPU的设计就没什么大问题了测试程序Testl8位X8位乘法运算;8bitx8bitmultiplier;所测试指令:置立即数,AND,条件跳转,左移,右移

17、,加法,自减MAIN:MOVIR0,25;被乘数MOVIR1,6;乘数MOVIR2,0;结果MOVIR3,8;循环次数LOOP:MOVIR4,1ANDR4,R1JRZ1F;r4=0时跳转ADDR2,R0;否则加到部分积1:SHLR0SHRR1DECR3;r3减1JRNZLOOPHALT;停机指令Test2内存读写测试;MEMORYCOPY;内存读写测试MAIN:MOVIR0,0XFF;源地址MOVIR1,OX1FF;目的地址MOVIR2,321:MOVR3,R0ADDR3,R2STORER3,R2;r2数据,r3地址DECR2JRNZIBMOVIR2,161:MOVR3,R0ADDR3,R2L

18、OADR4,R3MOVR3,R1ADDR3,R2STORER3,R4DECR2JRNZIBHALTTest3:特色扌旨令测试:MOVIR0,0ADDIRO,OXFF;立即数和R0相加SUBIRO,OXO1;R0和立即数相减MOVIR1,OX1OOSTORE2R1,OX1F,RO;RO-R1+OX1FLOAD2R2,R1,OX1F;R1+OX1F-R2HALT3.3测试结果测试环境测试程序测试结果串行两级流水五级流水单片机控制FPGA-CPU调试运行模式(设置端点,连续运行)Testi正确Test2正确Test3正确Test4正确Test5正确河北大学2007级系统结构学年论文(课程设计)测试环

19、境测试程序测试结果串行两级流水五级流水FPGA-CPUTesti正确附加外部Test2正确RAM运行Test3正确模式Test4正确Test5正确Test1测试结果:R2=0X96Test2测试结果内存单元0XFF0X120数据FileR:=jtiOperationEBuildConfitionHelpDaitai|ValueDmt已BusunknownAddrBusunknownReg0unknownReg1unknownReg2unknownReg3unknownReg4unknownReg5unknownReg6unknownReg7unknownReg8unknownReg9unkno

20、wnReg10unknownReg11unknownReg12unknownReg13unknownReg14unknownR巳口IEunknownDebugControllerMEMORYCOPY;内存读写测试MAIN:MOVIR0.01IFF;源地址MOVIRl_.01C1FF;目的地址MOVIR2.321:MOVR3.R0ADDK3.R2STORER3.R2;,2数据,地址DECR2JRNZIE:MOVIR2_.161:MOVR3.R0ADDK3.R2LOADR4.R3MOVR3.R1ADDR3.R2;address:01000001address:01010002;address:01

21、020003address:01030004address:01040005address:01050006;address:01060007address:01070008;address:01080009;address:0109000ADattaiValueDat自BusunknownAddrBusunknownReg0unknownReg1unknownReg2unknownReg3unknownReg4unknownReg5unknownReq6unknownReg7unknownReq8unknownReg9unknownReq10unknownReg11unknownReg12u

22、nknownReg13unknownReg14unknown内存单元縫FFReg17unknownReq18unknownReq19unknownReg20unknownReg21unknownReg22unknownReg23unknownReq24unknownReg25unknownReg26unknownReq27unknownReq28unknownReg29unknownReg30unknown;MEMORYCOPY;内存读写测试MAIN:MOVIMOVIRO,OXFF;源地址Rl,0X1FF;目的地址MOVIMOVADDSTOREDECJRNZMOVI1:MOVADDLOADMO

23、VX210数据:DECJRNZHALTR21B.bo231241RRRRRR23343332BRRRRRRRR1第10页共14页;address:010E00OF;address:01OF0010;address:01100011;address:01110012;address:01120013;address:01130014;address:01140015;address:01150016;address:01160017;address:01170018;address:01180019;address:0119001A;address:011A001B;address:01IE:0

24、01C;address:one00ID;address:01ID00IE;address:011E00IF;address:011F0020;address:0120河北大学2007级系统结构学年论文(课程设计)河北大学2007级系统结构学年论文(课程设计)第 页共14页第 页共14页在五级流水CPU中,指令是按二次重叠方式执行的。取指分析执行取指分析执行取指分析执行在五级流水CPU中,指令是按二次重叠方式执行的。二次重叠执行方式执行n条指令所用的时间为t=(2+n)T。五级流水较串行能够使指令的执行时间缩短近三分之二。由于流水处理使得不同指令的不同执行步骤在时间上重叠,这就可能产生相关问题,需要相应的硬件结构来检测并处理相关,因此控制过程较串行要复杂。实验测试:我们以一个“1加到N”程序五级流水CPU在N=50、N=100、N=200这三种情况下进行了测试。程序清单:MOVIR0,NMOVIR1,01:ADDR1,R0DECR0JRNZ1B测试结果:表:【说明】表中数字表示时钟周期数-版本五级流水50159100309200609测试结果显示,从运行的绝对时间来看,随着N的增大,五级流水的优势更为明显。4总结实验总结完成本实验时,遵循的基本方法原则是从

温馨提示

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

评论

0/150

提交评论