- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
开放式CPU设计.doc
石家庄经济学院
信息工程学院
开放式CPU设计报告
姓名: xxxxxxxxxx
班级: xxxxxxxxxx__________
学号: xxxxxxxxxxxx _
学院: 信息工程学院 _
专业: 计算机科学与技术 __
成绩:_________________________
2015年1月
目 录
1 设计简介 1
2 拟定指令系统 2
2.1 格式和字长 2
2.2 寻址方式 2
2.3 指令类型 3
2.4 指令集 3
3 操作时间表 11
4 状态图 13
5 确定总体结构 15
6 微命令序列 20
7 设计实现 21
8 测试与分析 22
8.1 仿真说明 22
8.2 仿真结果 23
9 总结与体会 27
10 参考文献 28
设计简介
本CPU字长为32位,指令系统的设计采用精简指令系统(RISC),指令系统的具体设计参照MIPS指令系统以及80X86相关指令,指令系统分为算术逻辑指令、分支指令、传送指令和跳转指令等。
本CPU可以实现顺序程序结构、分支程序结构、循环程序结构以及子程序等主要结构的程序设计,另外本CPU加入了中断处理机制,可以处理内部中断中的溢出中断,专门设寄存器EPC保存断点。
本CPU采用非总线结构,CU的设计采用组合逻辑控制器。
本CPU是多周期CPU,执行一条指令需要在多个周期内才能完成,具体周期可划分为取指令周期IF、指令译码\寄存器堆读取周期ID、指令执行周期EXE、存储器访问周期MEM、结果写回周期WB以及中断周期INT,多周期的控制用有限状态机进行描述,不同的阶段发出不同的信号,用暂存器暂存结果。
存储结构为非冯氏结构,采用程序指令存储和数据存储分开的存储器结构uartus 5.0下进行,语言为VHDL。
拟定指令系统
指令系统的拟定需要考虑指令的字长、指令的格式、指令的操作类型以及指令的寻址方式,最终得出本CPU的指令系统。
格式和字长
本CPU的指令系统主要参考MIPS指令系统,指令字长为32位,指令的格式有R型、I型和J型这三种类型,如图2-1所示,R类型指令的op为0,具体操作由func指定。rs和rt是源寄存器号,rd是目的寄存器号。只有移位指令使用sa来指定移位位数。I类型指令的低16位是立即数,计算时要把它扩展到32位。依指令的不同,有零扩展和符号扩展两种。零扩展是把32位的高16位置成0,符号扩展是把高16位的每一位置成与立即数最高位相同的值,即保持立即数的正负符号不变。J类型的指令格式最简单,右边的26位是字地址,用于产生跳转的目标地址。
图2-1指令系统格式
寻址方式
寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令功能。
本CPU指令系统中指令的寻址方式有立即寻址、寄存器间接寻址、相对寻址、基址寻址。
指令类型
1. 算术运算类型
算术运算类型通常是指对整数的运算。基本的运算包括加(add),减(sub)等。
2. 逻辑运算类型
基本的逻辑运算只有3种:与(and)、或(or)和非(not)。
3. 移位操作类型
移位操作分左移和右移两种。逻辑左移(sll)是把操作数向左移若干位,右边空出的位填0,算术左移(sla) 是把操作数向左移若干位, 算术左移在左边空出的位填左移前的操作数的最高位,相当于符号扩展。右移分为逻辑右移(srl)和算术右移(sra)。逻辑右移在左边空出的位填0,算术右移在左边空出的位填右移前的操作数的最高位,相当于符号扩展。除了以上四种移位指令,还有循环左右移位等。
4. 存储器访问类型
存储器访问指令只有取存储器数据(load)和存存储器数据(store)两种。load指令根据计算出的存储器地址从存储器读出数据,然后把数据写人CPU内部的寄存器。store指令则相反,把寄存器中的数据写人存储器。
5. 转移控制类型
转移控制类型的指令有以下几种。条件转移(je, jne等)指令判断条件是否成立。若成立,则转移到目标地址去执行。对C语言程序中的if语句进行编译时会用到这些指令。目标地址可以通过计算得出,比如PC加上一个带符号的偏移员。跳转(jmp)指令无条件地转移到目标地址去执行。目标地址可以在指令中明确给出,也可以是寄存器中的内容。子程序调用(call)指令跳转到子程序去执行。跳转的同时要把返回地址保存在某个地方,以便从子程序返回时使用。返回(return)指令把call指令保存的返回地址写人PC,实现从子程序的返回。
指令集
本小节是参照MIPS以及80X86指令,确定本CPU能够执行的指令。表2.1列出了所设计的指令系统以及他们的格式和意义,其中黑色标注的为R/I
原创力文档


文档评论(0)