ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:500.95KB ,
资源ID:15983033      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15983033.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单周期CPU设计Word下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单周期CPU设计Word下载.docx

1、开始时间:2016年9月15日结束时间:2016年11月15日摘 要一、 设计目的与目标 设计目的 设计目标二、 课程设计器材 硬件平台 软件平台三、CPU逻辑设计总体方案 指令模块 部件模块四、模块详细设计 指令设计模块 部件设计模块五、实验数据 初始数据 指令数据六、结论和体会七、参考文献摘 要本CPU设计实验以Quartus II 为软件设计平台,以Cyclone采III型号EP3C16F484C6为FPGA实测板。此CPU设计采用模块化设计方案,首先设计指令格式模块,此模块决定CPU各个部件的接口数据容量及数量,再对CPU各个部件独立设计实现,主要涉及的部件有:寄存器组、控制器、存储器

2、、PC计数器、数据选择器、ALU单元以及扩展单元。分部件的设计通过软件平台模拟仿真各部件的功能,在确保各部件功能正确的情况下,将所有部件模块整合在一起实现16位指令的CPU功能。再按照指令格式设计的要求,设计出一套能完整运行的指令,加载到指令存储器中,最终通过在FPGA实测板上实现了加2减1的循环运算效果,若要实现其他效果,也可更改指令存储器或数据存储器的数据而不需要对内部部件进行更改元件。关键词:CPU设计、16位指令格式、模块化设计、Quartus软件、CPU各部件1.1 设计目的1) 了解Quartus II软件的使用,学习软件环境下设计CPU的基本过程;2) 在Quartus II平台

3、上完成各个单元的设计,加深对每个单元(控制器、寄存器、存储器等)工作原理的理解;3) 对各个单元组合而成的CPU进行指令测试,配合使用模拟仿真,了解指令和数据在各个单元中的传输过程及方向。1.2 设计目标1) 设计一个单周期CPU,能实现基本的指令功能,如ADD,SUB指令实现对操作数加减功能,LW,SW指令实现从存储器取数和存数,J指令实现指令间的跳转。2) 采用模块化设计CPU,通过模拟仿真保证各模块的正确性,以保证最终CPU功能的正确性,能正确地在FPGA板上完成指令设计的效果。3) 通过设计合理的16位指令,实现从存储器取初始数和存数,对初始数进行加减操作,通过修改存储器初始数据,实现

4、FPGA上LED显示无限加n减m的效果。本实验所需的硬件主要有:PC微型计算机和FPGA板-Cyclone III系列,型号EP3C16U484C6实验开发板以及USB连接线。1) 操作系统:Win 7;2) 开发平台:Quartus II 集成开发软件;3) 编程语言:VerilogHDL硬件描述语言。三、 CPU逻辑设计总体方案单周期CPU设计方案从宏观上把握主要分为器件模块和指令/数据模块这两大模块,器件模块是指令模块的载体,指令数据在器件上流动,指令数据的格式是器件模块的主宰。所以当设计CPU时,我们采用模块化设计,单独对着两模块进行设计,考虑到指令数据模块的格式决定指令器件模块接口的

5、数据容量大小,所以应先完成指令数据模块的格式设计。图1 CPU宏观设计方案3.1 指令模块指令格式简要设计 本CPU实验是针对16位指令数据设计的,所以应当合理划分指令数据区间段的指令相应的功能。从下图2可以看出,16位指令数据划分为5个区间段,指令的15-12位作为控制位传入控制器产生控制信号,指令11-9位作为地址1从寄存器取数输出数据到寄存器1号输出口,指令8-6位作为地址2从寄存器取数输出数据到寄存器2号输出口,指令5-3位与指令8-6位作为数据选择器选择地址输入寄存器写地址口,指令5-0位作为扩展单元输入,扩展数据成16位。另外指令11-0位作为扩展输入,扩展成16位数据作为PC计数

6、器的选择器一端。图2 指令格式简要设计图 器件单元模块此模块的设计是CPU设计的核心部分,它主要涉及到CPU中多个器件的设计。我们依然采用模块设计方案,把总体设计拆分成多个相互独立的器件,再对每部分器件单独设计。在此模块中包括:寄存器组、控制器、存储器、PC计数器、数据选择器、ALU单元这六大主要单元。如下图2所示,展示出六大单元的设计方案以及六大单元之间的联系。图3 器件模块设计方案图从上图我们可以看出各单元之间的联系:初始数据从数据存储器RAM中取出,通过两种数据传入方式:一种是不经过数据选择器,另一种是经过数据选择器,数据传入到寄存器组中作为寄存器数据。而后当传入的是地址 数据时,就从寄

7、存器取出,经过ALU运算单元,将数据传入寄存器组中保存或传入数据存储器中保存。在整个过程中,PC计数器自动加1作为地址去指令存储器ROM中取指令作为此轮执行的指令数据,而控制器在整个过程中依据指令数据的指令码产生相应的控制信号(操作码)控制器件的运作,从而完成整个CPU的执行功能。下面我们将对主要的单元进行简要概述。3.1.1 寄存器组寄存器组是作为保存数据的器件,故应使用时钟触发的D触发器(DFFE),等待一个时钟到来将数据传出去。本实验设计为16位CPU,故每个寄存器应为16位,即每个寄存器是由16个D触发器扩展而成。考虑到指令从寄存器取数位数为3位,所以可以设置8个寄存器用于保存数据,如

8、果是写地址的3位指令通过74138(3-8译码器)译码作为寄存器的有效EN使能端输出数据;如果是读地址的3位指令数据通过8位扩展数据选择器(LPM-MUX)选择数据输出。3.1.2 控制器控制器是作为CPU控制信号产生的器件,通过产生控制信号,使其他器件有效或无效,因此控制器的设计显得尤为重要。控制器的设计主要如下:先必须自己设计好各功能指令的4位01码(指令的15-12),然后针对某个控制信号,找出使其为1的功能指令,对每个功能指令的0位上取非,然后4位相与,之后将所有为1的功能指令相或,结果作为此控制信号。对每个控制信号执行重复操作,控制器也就是这些信号的组合。3.1.3 存储器存储器分为

9、两种类型:一种是数据存储器RAM,另一种是地址存储器ROM。考虑到设计的方便,否则使用寄存器设计存储器也是可行的。数据储存器数据存储器为RAM型,表示可读可写,所以数据储存器有4个端口,当写信号有效时,应给出写的地址及数据,再加上时钟信号,这里的数据存储器采用软件封装好的RAM-1-PORT存储器。指令存储器指令存储器为ROM型,表示只读,所以地址存储器有2个端口,应给出读的地址信号以及时钟信号这里的数据存储器采用软件封装好的ROM-1-PORT存储器。3.1.4 PC计数器PC计数器主要作为执行一条指令后,地址自动加1到指令存储器中取16位指令作为此轮操作。故PC计数器应能等待一个时钟后将加

10、1后的数据送至指令存取器中,所以它应包括ALU累加器(一端为1)和寄存器(当一个时钟信号到来,将数据输出),书中还包括一个数据选择器,用于设置PC的值,以至于不会无限增长,实现J指令。3.1.5 数据选择器数据选择器主要是解决数据来源问题,通过控制信号使数据选择器选择的数据端口不同,此数据选择器可选用软件封装的2选1选择器。3.1.6 ALU单元ALU单元主要用于将输入端的两个数做加减操作,通过控制信号01的变化产生运算,该ALU可以使用软件封装的加减ALU(LPM-ADD-SUB),当控制信号为1时作加法,为0时作减法。3.1.7 符号扩展单元符号扩展单元主要用于将不够16位的指令数据扩展成

11、16位,作为输入数据的一端参与数据选择器运算,这里我们仅考虑最简单的扩展方式:将不足16位的指令数据由高位向低位依次补0直至数据长度为16位。四、 模块详细设计指令设计模块 指令处理流程一般来说,CPU在处理指令时需要经过以下几个过程:(1)取指令(IF):根据程序计数器PC中的指令地址,从指令存储器中取出一条指令,同时PC根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。?(2)指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,由指令的15-12位产生相

12、应的操作控制信号,用于驱动执行状态中的各种操作。(3)指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。(4)存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。(5)结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。图4 单周期CPU指令处理过程 指令格式详细设计本次CPU设计主要有5条功能指令,分别为ADD、SUB、LW、SW、J指令,对这5个功能指令的控制码分别设定为0101/0110

13、/1001/0001/1010,现对5条指令各自的指令格式进行设计:(1) ADD指令0101(4位)rs(3位)rt(3位)rd(3位)reserved此ADD加法指令完成的功能是:将rs3位对应的寄存器的数和rt3位对应的寄存器的数相加,结果数据存放至rd3位对应的寄存器的位置,reserved作为保留位。(2) SUB指令0110(4位)此SUB减法指令完成的功能是:将rs3位对应的寄存器的数和rt3位对应的寄存器的数相减,结果数据存放至rd3位对应的寄存器的位置,reserved作为保留位。(3) LW指令1001(4位)base(3位)offset(6位)此LW指令完成的功能是:将b

14、ase3位对应的寄存器的数和offset6位扩展成16位数据相加,结果作为数据存储器地址,取出地址对应的数据存放到rt3位对应的寄存器中。(4) SW指令0001(4位)此SW指令完成的功能是:将base3位对应的寄存器的数和offset6位扩展成16位数据相加,结果作为数据存储器地址A,将rt3位对应的寄存器的数据取出来,存放到A地址对应的存储器单元中。(5)J指令1010(4位)target(12位)此J指令完成的功能是:将12位地址零扩展成16位,作目标跳转地址。此模块的设计是CPU设计的核心部分,它是将众多模块整合在一起,在此模块中主要包括:寄存器组、控制器、存储器、PC计数器、数据选择器、ALU单元这六大单元。如下图5所示,展示出模块间整合的总体效果,可以看出,每个模块的功能还是显而易见的,各模块间通过命名一致达到数据双向传输效果。图5 CPU综合模块示意图寄存器组由上面总体设计方案中指出,每个寄存器应该由16个D触发器构成,为了避免设计复杂,我们采用迭代的设计方法,即先由单个D触发器设计成包含2个D触发器模块,图6示出了由单个D触发器构成2个D触发器模块。为了避免篇幅颇多,这仅展示由8个D触发器构成最终16个D触发器的示意图,如图7,以及最

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1