没有合适的资源?快使用搜索试试~ 我知道了~
介绍D 级和 E 级间的流水线寄存器,同时产生 E 级的控制信号。端口定义端口输入/输出位宽描述下一个指令。下一个 RD1 值。下一个 RD2 值。下一个 PC
资源详情
资源评论
资源推荐
端口 输入/输出 位宽 描述
nPC I 32 设置下一个 PC 值。
WE I 1 使能端。
clk I 1 时钟信号。
reset I 1 同步复位信号。
I O 32 当前指令。
PC O 32 当前 PC 值。
序号 功能名称 功能描述
1 同步复位 当时钟上升沿到来且同步复位信号有效时,将 PC 设置为 0x00003000。
2 取指令 当时钟上升沿到来时,I 输出当前 PC 对应的指令。
3 取PC值 当时钟上升沿到来时,PC 输出当前 PC 值。
4 设置PC值 当时钟上升沿到来且使能端有效时,将 nPC 设置为当前 PC 值。
微系统设计方案综述
总体设计概述
本微系统为 Verilog 实现的 MIPS 微系统,包括流水线 CPU、Bridge、计时器,CPU 支持的指令集包括
lb, lbu, lh, lhu, lw, sb, sh, sw, add, addu, sub, subu, mult, multu, div, divu,
sll, srl, sra, sllv, srlv, srav, and, or, xor, nor, addi, addiu, andi, ori, xori,
lui, slt, slti, sltiu, sltu, beq, bne, blez, bgtz, bltz, bgez, j, jal, jalr, jr,
mfhi, mflo, mthi, mtlo, mfc0, mtc0, eret 。为了实现这些功能,CPU 主要包含了 IFU, GRF,
CP0, DM, ALU, MDU, IF_ID, ID_EX, EX_MEM, MEM_WB, SFU, DEC, CTRL 这些模块。
关键模块定义
1.IFU
介绍
取指令单元,内部包括 PC(程序计数器)、IM(指令存储器)及相关逻辑,其中 PC 具有同步复位功能,IM
的容量为 容量为 32bit * 4096,起始地址为 0x00003000。
端口定义
功能定义
端口 输入/输出 位宽 描述
PC I 32 当前指令的 PC 值。
A1 I 5 指定 32 个寄存器中的一个,将其存储的数据读出到 RD1。
A2 I 5 指定 32 个寄存器中的一个,将其存储的数据读出到 RD2。
A3 I 5 指定 32 个寄存器中的一个,作为写入的目标寄存器。
WD I 32 写入寄存器的数据信号。
WE I 1 写使能信号,高电平有效。
clk I 1 时钟信号。
reset I 1 同步复位信号。
RD1 O 32 输出 A1 指定的寄存器中的数据。
RD2 O 32 输出 A2 指定的寄存器中的数据。
序
号
功
能
名
称
功能描述
1
同
步
复
位
当时钟上升沿到来且同步复位信号有效时,将所有寄存器的值设置为
0x00000000。
2
读
数
据
读出 A1 和 A2 地址对应寄存器中存储的数据到 RD1 和 RD2;当 WE 有效时会将
WD 的值会实时反馈到对应的 RD1 或 RD2,即内部转发。
3
写
数
据
当 WE 有效且时钟上升沿到来时,将 WD 的数据写入 A3 对应的寄存器中。
2.GRF
介绍
通用寄存器组,也称为寄存器文件、寄存器堆,可以存取 32 位数据,具有同步复位功能。寄存器标号
为 0 到 31,其中 0 号寄存器读取的结果恒为 0。
端口定义
功能定义
端口 输入/输出 位宽 描述
A1 I 5 指定 4 个寄存器中的一个,将其存储的数据读出到 RD。
A2 I 5 指定 4 个寄存器中的一个,作为写入的目标寄存器。
WD I 32 写入寄存器的数据信号。
nEPC I 32 目前传入的下一个 EPC 值。
nExc I 5 目前传入的下一个 ExcCode 值。
nBD I 32 目前传入的下一个 BD 值。
HWInt I 6 外部硬件中断信号。
WE I 1 写使能信号,高电平有效。
ERET I 1 eret 指令信号,高电平有效。
clk I 1 时钟信号。
reset I 1 同步复位信号。
IntReq O 1 输出当前的中断请求。
RD O 32 输出 A 指定的寄存器中的数据。
3.CP0
介绍
协处理器 0,包含 4 个 32 位寄存器,用于支持中断和异常。
端口定义
功能定义
序
号
功
能
名
称
功能描述
1
同
步
复
位
当时钟上升沿到来且同步复位信号有效时,将所有寄存器的值设置为
0x00000000。
2
读
数
据
读出 A1 地址对应寄存器中存储的数据到 RD;当 WE 有效时会将 WD 的值会实时反
馈到对应的 RD,当 ERET 有效时会将 EXL 置 0,即内部转发。
3
写
数
据
当 WE 有效且时钟上升沿到来时,将 WD 的数据写入 A2 对应的寄存器中。
4
中
断
处
理
根据各种传入信号和寄存器的值判断当前是否要进行中断,将结果输出到 IntReq。
端口 输入/输出 位宽 描述
A I 32 参与 ALU 计算的第一个值。
B I 32 参与 ALU 计算的第二个值。
Op I 4 ALU 功能的选择信号,具体见功能定义。
AO O 32 ALU 的计算结果。
Exc O 1 计算过程中是否产生溢出。
4.ALU
介绍
算术逻辑单元,提供 32 位的多种运算功能。
端口定义
功能定义
序号 功能名称 功能描述
1 按位与 当 Op = 0 时,AO = A & B。
2 按位或 当 Op = 1 时,AO = A | B。
3 加法,忽略溢出 当 Op = 2 时,AO = A + B。
4 减法,忽略溢出 当 Op = 3 时,AO = A - B。
5 左移 16 位 当 Op = 4 时,AO = A << 16。
6 有符号比大小 当 Op = 5 时,AO = A < B。
7 无符号比大小 当 Op = 6 时,AO = A < B。(有符号)
8 逻辑左移 当 Op = 7 时,AO = A << B[4:0]。
9 逻辑右移 当 Op = 8 时,AO = A >> B[4:0]。
10 算术右移 当 Op = 9 时,AO = A >>> B[4:0]。
11 异或 当 Op = 10 时,AO = A ^ B。
12 或非 当 Op = 11 时,AO = ~(A | B)。
13 加法,不忽略溢出 当 Op = 12 时,AO = A + B,如果产生溢出 Exc = 1。
14 减法,不忽略溢出 当 Op = 13 时,AO = A - B,如果产生溢出 Exc = 1。
端口 输入/输出 位宽 描述
A I 32 参与乘除运算的第一个值。
B I 32 参与乘除运算的第二个值。
Op I 4 MDU 功能的选择信号,具体见功能定义。
clk I 1 时钟信号。
reset I 1 同步复位信号。
Busy O 1 当前是否正在进行乘除运算。
hi O 32 hi 寄存器的值。
lo O 32 lo 寄存器的值。
5.MDU
介绍
乘除块,内有 hi 和 lo 两个寄存器,可以进行乘除运算,完成相关乘除指令,并模拟乘除运算的延时。
端口定义
剩余28页未读,继续阅读
永远的12
- 粉丝: 65
- 资源: 321
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0