2022年2022年开放式CPU设计 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年2022年开放式CPU设计 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年开放式CPU设计 .pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、石家庄经济学院信息工程学院开放式 CPU 设计报告姓名:xxxxxxxxxx班级:xxxxxxxxxx _ 学号: xxxxxxxxxxxx _ 学院:信息工程学院 _ 专业:计算机科学与技术 _ 成绩: _ 2015年 1 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 37 页 - - - - - - - - - 目录I目 录1设计简介 12拟定指令系统 22.1格式和字长 22.2寻址方式 32.3指令类型 32.4指令集 43操作时间表 15 4状态图 17 5
2、确定总体结构 19 6微命令序列 25 7设计实现 26 8测试与分析 27 8.1仿真说明 27 8.2仿真结果 28 9总结与体会 33 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 37 页 - - - - - - - - - 目录10 参考文献 34 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 37 页 - - - - - - - -
3、- 设计简介11 设计简介本 CPU 字长为 32 位,指令系统的设计采用精简指令系统(RISC) ,指令系统的具体设计参照MIPS 指令系统以及 80X86 相关指令,指令系统分为算术逻辑指令、分支指令、传送指令和跳转指令等。本 CPU 可以实现顺序程序结构、分支程序结构、循环程序结构以及子程序等主要结构的程序设计,另外本CPU 加入了中断处理机制,可以处理内部中断中的溢出中断,专门设寄存器EPC 保存断点。本 CPU 采用非总线结构, CU 的设计采用组合逻辑控制器。本 CPU 是多周期 CPU,执行一条指令需要在多个周期内才能完成,具体周期可划分为取指令周期IF、指令译码 寄存器堆读取周
4、期ID、指令执行周期 EXE、存储器访问周期 MEM 、结果写回周期 WB 以及中断周期 INT,多周期的控制用有限状态机进行描述,不同的阶段发出不同的信号,用暂存器暂存结果。存储结构为非冯氏结构, 采用程序指令存储和数据存储分开的哈佛存储器结构。本 CPU 具体的实现在 Quartus 5.0下进行,语言为VHDL 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 37 页 - - - - - - - - - 开放式 CPU 设计2 2 拟定指令系统指令系统的拟定需要考
5、虑指令的字长、指令的格式、 指令的操作类型以及指令的寻址方式,最终得出本CPU 的指令系统。2.1 格式和字长本 CPU 的指令系统主要参考MIPS 指令系统,指令字长为32 位,指令的格式有 R 型、I 型和 J 型这三种类型,如图2-1 所示, R 类型指令的 op为 0,具体操作由 func 指定。 rs 和 rt 是源寄存器号 ,rd 是目的寄存器号。只有移位指令使用 sa来指定移位位数。 I 类型指令的低 16位是立即数,计算时要把它扩展到32位。依指令的不同, 有零扩展和符号扩展两种。 零扩展是把 32 位的高 16 位置成0,符号扩展是把高 16 位的每一位置成与立即数最高位相同
6、的值,即保持立即数的正负符号不变。 J 类型的指令格式最简单,右边的26 位是字地址,用于产生跳转的目标地址。图 2-1 指令系统格式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 37 页 - - - - - - - - - 拟定指令系统32.2 寻址方式寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令功能。本 CPU 指令系统中指令的寻址方式有立即寻址、寄存器间接寻址、相对寻址、基址寻址。2.3 指令类型1.
7、 算术运算类型算术运算类型通常是指对整数的运算。基本的运算包括加(add),减(sub)等。2. 逻辑运算类型基本的逻辑运算只有3 种:与(and)、或(or)和非(not)。3. 移位操作类型移位操作分左移和右移两种。逻辑左移(sll)是把操作数向左移若干位,右边空出的位填 0,算术左移 (sla) 是把操作数向左移若干位, 算术左移在左边空出的位填左移前的操作数的最高位,相当于符号扩展。右移分为逻辑右移(srl)和算术右移(sra)。逻辑右移在左边空出的位填0,算术右移在左边空出的位填右移前的操作数的最高位, 相当于符号扩展。 除了以上四种移位指令, 还有循环左右移位等。4. 存储器访问类
8、型存储器访问指令只有取存储器数据(load)和存存储器数据 (store)两种。load 指令根据计算出的存储器地址从存储器读出数据,然后把数据写人CPU 内部的寄存器。 store指令则相反 ,把寄存器中的数据写人存储器。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 37 页 - - - - - - - - - 开放式 CPU 设计4 5. 转移控制类型转移控制类型的指令有以下几种。条件转移(je, jne 等)指令判断条件是否成立。若成立,则转移到目标地址去执行。对
9、C 语言程序中的 if 语句进行编译时会用到这些指令。目标地址可以通过计算得出,比如PC 加上一个带符号的偏移员。跳转 (jmp)指令无条件地转移到目标地址去执行。目标地址可以在指令中明确给出,也可以是寄存器中的内容。子程序调用(call)指令跳转到子程序去执行。跳转的同时要把返回地址保存在某个地方,以便从子程序返回时使用。返回(return)指令把 call 指令保存的返回地址写人PC,实现从子程序的返回。2.4 指令集本小节是参照 MIPS 以及 80X86 指令,确定本 CPU 能够执行的指令。 表 2.1列出了所设计的指令系统以及他们的格式和意义,其中黑色标注的为 R/I 型指令,粉色
10、标注的为分支指令,橘黄色标注的为访存指令,海绿色标注的为跳转指令。表 2-1 指令集指令指令格式意义Bit # 31_26 25_21 20_16 15_11 10_6 5_0 R-typeOprsrtrdshamtFuncNOP 000000 00000 00000 00000 00000 000000 空ADD 000000 rs rt rd 00000 000001 加SUB 000000 rs rt rd 00000 000010 减CMP 000000 rs rt 00000 00000 000011 比较,只改变符号位 ZAND 000000 rs rt rd 00000 0001
11、00 与名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 37 页 - - - - - - - - - 拟定指令系统5OR 000000 rs rt rd 00000 000101 或XOR 000000 rs rt rd 00000 000110 异或NOR 000000 rs rt rd 00000 000111 或非NEG 000000 rs 00000 rd 00000 001000 取反SLT 000000 rs rt rd 00000 001001 小于置 1S
12、LTU 000000 rs rt rd 00000 001010 小于置 1(无符号数)SLL 000000 00000 rt rd shamt 001011 逻辑左移SRL 000000 00000 rt rd shamt 001100 逻辑右移SLA 000000 00000 rt rd shamt 001101 算术左移SRA 000000 00000 rt rd shamt 001110 算术右移ROL 000000 00000 rt rd shamt 001111 逻辑循环左移ROR 000000 00000 rt rd shamt 010000 逻辑循环右移SLLR 000000
13、rs rt rd 00000 010001 逻辑左移 RSRLR 000000 rs rt rd 00000 010010 逻辑右移 RJR 000000 rs 00000 00000 00000 010100 寄存器跳转I-type Op rs rt Immediate MOVR 100000 rs rt 0000000000000000 rt-rsADDI 100011 rs rt immediate 加SUBI 100100 rs rt immediate 减CMPI 100101 rs 00000 immediate 比较,只改变符号位 Z INC 100110 rs rt 00000
14、00000000000 自增 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 37 页 - - - - - - - - - 开放式 CPU 设计6 DEC 100111 rs rt 0000000000000000 自减 1 ANDI 101000 rs rt immediate 与ORI 101001 rs rt immediate 或NOT 101010 rs rt 0000000000000000 非XORI 101011 rs rt immediate 异或S
15、LTI 101100 rs rt immediate 小于置 1 SLTIU 101101 rs rt immediate 小于置 1(无符号)SLI 101110 rs rt immediate 逻辑左移SRI 101111 rs rt immediate 逻辑右移JE 110001 rs rt offset 相等跳转JNE 110010 rs rt offset 不相等跳转JA 110011 rs rt offset 大于跳转JB 110100 rs rt offset 小于跳转JAE 110101 rs rt offset 大于等于跳转JBE 110110 rs rt offset 小于
16、等于跳转LW 010111 rs rt offset 从 M 读取数据到R SW 011000 rs rt offset 将 R 的内容写到M 中J-type Op Address JMP 011001 target 绝对跳转JAL 011010 target 链接并跳转名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 37 页 - - - - - - - - - 拟定指令系统7JZ 011011 target 标志 Z=1 JNZ 011100 target 标志 Z!=
17、1 SKP 011101 00000000000000000000000000 跳过一条指令IRET 011110 00000000000000000000000000 中断返回下面对表 2-1 指令集中的具有代表性的指令进行解释说明。1.NOP(空)31.26 25.21 20.16 15.11 10.6 5.0 Op rs rt rd shamtFunc 000000 00000 00000 00000 00000 000001 指令格式: NOP作用:空操作。2.ADD(加)31.26 25.21 20.16 15.0 Op rs rt 16 bit Offset 100100 rs r
18、t offset 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 37 页 - - - - - - - - - 开放式 CPU 设计8 指令格式: ADD rd, rs, rt作用:实现两个 32 位整形数的相加。如果发生溢出,则进入溢出中断。语义: rd = rs + rt说明:32 位的寄存器 rs 和 32 位的寄存器 rt 相加,32 位的计算结果写入寄存器 rd 中(不管结果是否溢出) 。如果加法导致算术溢出,则进入溢出中断。3.SUB(减)31.26 25.
19、21 20.16 15.11 10.6 5.0 Op rs rt rd shamtFunc 000000 rs rt rd 00000 000010 指令格式: SUB rd, rs, rt作用:实现两个 32 位整形数的相减。如果发生溢出,则进入溢出中断。语义: rd = rs - rt说明:32 位的寄存器 rs 和 32 位的寄存器 rt 相减,32 位的计算结果写入寄存器 rd 中(不管结果是否溢出) 。如果加法导致算术溢出,则进入溢出中断。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
20、 - - 第 11 页,共 37 页 - - - - - - - - - 拟定指令系统94.AND(逻辑与)31.26 25.21 20.16 15.11 10.6 5.0 Op rs rt rd shamtFunc 000000 rs rt rd 00000 000100 指令格式: AND rd, rs, rt作用:实现两个 32 位数的按位逻辑与。语义: rd = rs & rt说明:寄存器 rs 和寄存器 rt 中的数按位进行逻辑与,结果写入寄存器 rd 中。5.OR(逻辑或)31.26 25.21 20.16 15.11 10.6 5.0 Op rs rt rd shamtFunc
21、000000 rs rt rd 00000 000101 指令格式: OR rd, rs, rt作用:实现两个 32 位数的按位逻辑或。语义: rd = rs | rt说明:寄存器 rs和寄存器 rt 中的数按位进行逻辑或,结果写入寄存器 rd 中。6.SLL(逻辑左移)31.26 25.21 20.16 15.11 10.6 5.0 Op rs rt rd shamtFunc 000000 00000 rt rd shamt 001011 指令格式: SLL rd, rt, shamt作用:实现对一个字左移一定的位数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
22、- - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 37 页 - - - - - - - - - 开放式 CPU 设计10 语义: rd = rt rt then branch说明:由 16 位的偏移量与 branch 指令的下一条指令地址相加,形成目标地址。如果寄存器rs 的值大于 rt 中的值,则执行目标地址的指令。11. LW(取字)31.26 25.21 20.16 15.0 Op rs rt Immediate 010111 rs rt offset 指令格式: LW rt,offset(base)名师资料总结 - - -精品资料欢迎下
23、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 37 页 - - - - - - - - - 开放式 CPU 设计12 作用:从存储器里取一个字作为有符号数。语义: rt Memorybase + offset 说明:由基址 base 寄存器中的数据和16 位符号扩展后的偏移量offset 相加,得到存储器里存放32 位字的地址。存储器里该地址中的32 位字数据取出后,存入寄存器 rt 中。12. SW(存字)31.26 25.21 20.16 15.0 Op rs rt Immediate 011000
24、rs rt offset 指令格式 :SW rt, offset(base)作用:存一个字到存储器里。语义: Memorybase + offset rt说明:由基址 base 寄存器中的数据和16 位符号扩展后的偏移量offset 相加,得到存储器里存放32 位字的地址。寄存器rt 中的 32 位数据被存入存储器的该地址中。13. JR(跳转到寄存器)31.26 25.21 20.16 15.11 10.6 5.0 Op rs rt rd shamtFunc 000000 rs 00000 00000 00000 010100 指令格式: JR rs作用:分支到一个存在寄存器中的目标地址。语
25、义: PC rs说明:给 PC 指定下一条执行指令的目标地址,这个目标地址存在寄存器rs名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 37 页 - - - - - - - - - 拟定指令系统13中。14. JMP(无条件跳转)31.26 25.0 Op target 011001 target 指令格式: JMP target作用:直接分支到目标地址。语义: PC target说明:给 PC 指定下一条执行指令的目标地址,target的高 6 位由 0 填充,构成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年开放式CPU设计 2022 开放式 CPU 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内