云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于MIPS指令集的32位RISC处理器逻辑设计 - 图文

基于MIPS指令集的32位RISC处理器逻辑设计 - 图文

  • 62 次阅读
  • 3 次下载
  • 2026/1/27 7:14:45

SRAV SRL SRLV B BAL BEQ BGEZ BGEZAL BGTZ BLEZ BLTZ BLTZAL BNE J JAL JALR JR NOP SSNOP LW SW MFHI MFLO MOVN MOVZ MTHI MTLO 000000 S 000000 S 000000 S 000100 BEQ 000001 REGIMM 000100 BEQ 000001 REGIMM 000001 REGIMM 000111 000110 000001 REGIMM 000001 REGIMM 000101 000010 000011 000000 S 000000 S 000000 S 000000 S 100011 101011 000000 S 000000 S 000000 S 000000 S 000000 S 000000 S rs 00000 rs 00000 00000 rs rs rs rs rs rs rs rs rt rt rt 00000 10001 rt 00001 10001 00000 00000 00000 10000 rt rd rd rd 00000 sa 00000 offset offset offset offset offset offset offset offset offset offset 000111 000010 000110 instr_index instr_index rs 00000 rd hint rs 00 0000 0000 hint 00000 00000 00000 00000 00000 00000 00000 00001 base rt offset base rt offset 00 0000 0000 rd 00000 00 0000 0000 rd 00000 rs rt rd 00000 rs rt rd 00000 rs 000 0000 0000 0000 rs 000 0000 0000 0000 001001 001000 000000 000000 010000 010010 001011 001010 010001 010011

表2-2:本设计实现的59条指令的功能说明

指令 ADD ADDI ADDIU ADDU CLO CLZ DIV DIVU MADD MADDU MSUB MSUBU MUL MULT MULTU SLT SLTI SLTIU 格式 ADD rd, rs, rt ADDI rt, rs, immediate ADDIU rt, rs, immediate ADDU rd, rs, rt CLO rd, rs CLZ rd, rs DIV rs, rt DIVU rs, rt MADD rs, rt MADDU rs, rt MSUB rs, rt MSUBU rs, rt MUL rd, rs, rt MULT rs, rt MULTU rs, rt SLT rd, rs, rt SLTI rt, rs, immediate SLTIU rt, rs, immediate 说明 rd <- rs + rt;有符号加 rt <- rs + immediate;有符号加 rt <- rs + immediate;无符号加 rd <- rs + rt;无符号加 rd <- rs 首1计数 rd <- rs 首0计数 (HI, LO) <- rs / rt;有符号除 (HI, LO) <- rs / rt;无符号除 (HI,LO) <- (HI,LO) + (rs × rt);有符号运算 (HI,LO) <- (HI,LO) + (rs × rt);无符号运算 (HI,LO) <- (HI,LO) - (rs × rt);有符号 (HI,LO) <- (HI,LO) - (rs × rt);无符号 rd <- rs × rt (只存储结果低位) (HI, LO) <- rs × rt;有符号 (HI, LO) <- rs × rt;无符号 rd <- (rs < rt);判断结果为真,则rt置1,否则rt置0;有符号比较 rt <- (rs < immediate);判断结果为真,则rt置1,否则rt置0;有符号比较 rd <- (rs < rt);判断结果为真,则rt置1,否则rt置0;无符号比较 - 14 -

SLTU SUB SUBU AND ANDI LUI NOR OR ORI XOR XORI SLL SLLV SRA SRAV SRL SRLV B BAL BEQ BGEZ BGEZAL BGTZ BLEZ BLTZ BLTZAL BNE J JAL JALR JR NOP SSNOP LW SW MFHI MFLO MOVN MOVZ MTHI MTLO SLTU rd, rs, rt SUB rd, rs, rt SUBU rd, rs, rt AND rd, rs, rt ANDI rt, rs, immediate LUI rt, immediate NOR rd, rs, rt OR rd, rs, rt ORI rt, rs, immediate XOR rd, rs, rt XORI rt, rs, immediate SLL rd, rt, sa SLLV rd, rt, rs SRA rd, rt, sa SRAV rd, rt, rs SRL rd, rt, sa SRLV rd, rt, rs B offset BAL rs, offset BEQ rs, rt, offset BGEZ rs, offset BGEZAL rs, offset BGTZ rs, offset BLEZ rs, offset BLTZ rs, offset BLTZAL rs, offset BNE rs, rt, offset J target JAL target rd <- (rs < rt);判断结果为真,则rt置1,否则rt置0;无符号比较 rd <- rs - rt;有符号减 rd <- rs - rt;无符号减 rd <- rs AND rt rt <- rs AND immediate;0扩展立即数 rt <- immediate || 0^16;低位串接16个0 rd <- rs NOR rt rd <- rs or rt rt <- rs or immediate;0扩展立即数 rd <- rs XOR rt rt <- rs XOR immediate;0扩展立即数 rd <- rt << sa;逻辑左移sa位 rd <- rt << rs;逻辑左移rs位 rd <- rt >> sa (算术右移sa位) rd <- rt >> rs (算术右移rs位) rd <- rt >> sa (逻辑右移sa位) rd <- rt >> rs (逻辑右移rs位) 无条件转移到PC + sign_extend(offset||00) 无条件转移到PC + sign_extend(offset||00);GPR[31] <- PC + 8 if rs = rt then branch if rs >= 0 then branch if rs >= 0 then branch;GPR[31] <- PC + 8 if rs > 0 then branch if rs <= 0 then branch if rs < 0 then branch if rs < 0 then branch;GPR[31] <- PC + 8 if rs != rt then branch 在当前指令附近256MB的范围内跳转 在当前指令附近256MB的范围内跳转;GPR[31] <- PC + 8 JALR rd, rs 或 JALR rd(默认rs rd <- return_addr;PC <- rs =GPR[31]) JR rs PC <- rs NOP SSNOP LW rt, offset(base) SW rt, offset(base) MFHI rd MFLO rd MOVN rd, rs, rt MOVZ rd, rs, rt MTHI rs MTLO rs 空操作 空操作 rt <- memory[base+offset];Load全字 memory[base+offset] <- rt rd <- HI rd <- LO if rt != 0 then rd <- rs if rt = 0 then rd <- rs HI <- rs LO <- rs

- 15 -

第三章 处理器独立功能模块的设计

在CPU中,主要的算术运算和逻辑运算都要在算术逻辑单元ALU(Arithmetic Logic Unit)中完成,例如加法、减法、逻辑与、逻辑或等等。

本章主要介绍包括ALU在内的处理器主要独立功能模块的设计实现方法。在本文中,各种算术运算(加、减、乘、除、算术移位等)使用的操作数都用补码表示。本文讨论的处理器设计的开发环境是Quartus II 7.2 sp3。

3.1 辅助逻辑模块的设计

处理器中数据通路的构建、逻辑功能组合等设计,离不开一些基本的辅助逻辑模块,例如译码器、数据选择器、触发器、节拍发生器等。本节介绍本文用到的几种重要辅助逻辑模块的实现方式。

3.1.1 译码器

译码器的功能是接受一个二进制数值,然后将该数值进行译码,把二进制代码转换成特定的信号输出。若译码器有n位2进制数值,则有2n个输出。每一个输出对应一个二进制编码。

在本文所描述的处理器设计中,译码器主要用于寄存器堆的写入。在写寄存器时,要根据目的寄存器编号生成译码信号,置相应触发器的写使能端,在寄存器时钟上升沿将数据写入制定的寄存器。

由于MIPS寄存器堆中有25=32个通用寄存器,因此要设计一个5位译码器。本设计采用了Quartus II中提供的参数化解码器模块LPM_DECODE定义了5位译码器lpm_decode5,图3-1给出了lpm_decode5的逻辑设计图。

- 16 -

图3-1:5位译码器lpm_decode5的逻辑设计图

3.1.2 数据选择器

数据选择器又称多路选择器或多路器。数据选择器的功能是从多个输入数据中选择一个为输出。

在本文描述的处理器设计中,应用数据选择器的地方很多,例如寄存器堆的设计就要用到2个32路32位数据选择器,供寄存器堆的两个读端口选择指定寄存器输出。现以该32路32位数据选择器为例,介绍数据选择器的设计。

本设计采用了Quartus II中提供的参数化数据选择器模块LPM_MUX定义了32路32位数据选择器lpm_mux32x32,图3-2给出了lpm_mux32x32的逻辑设计图。

- 17 -

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

SRAV SRL SRLV B BAL BEQ BGEZ BGEZAL BGTZ BLEZ BLTZ BLTZAL BNE J JAL JALR JR NOP SSNOP LW SW MFHI MFLO MOVN MOVZ MTHI MTLO 000000 S 000000 S 000000 S 000100 BEQ 000001 REGIMM 000100 BEQ 000001 REGIMM 000001 REGIMM 000111 000110 000001 REGIMM 000001 REGIMM 000101 000010 000011 000000 S 000000 S 000000 S 000000 S 100011 101011 000000 S 000000 S 000000 S 000000 S 000000 S 000000 S rs 00000

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com