CA-模块体系
IMEM模块用于指令存储器的读取,将PC地址传递给存储器,读取当前指令到IRin。PC模块用于管理程序计数器,包括在时钟上升沿时选择下一条指令的地址,以及处理复位信号。ADD模块用于计算下一条指令的地址,将当前PC地址传递给PC模块。NPC模块用于存储下一条指令的地址。IR模块用于指令寄存器的加载,将当前指令传递给IRout。
ID (Instruction Decode) 模块:
Regfile模块用于管理寄存器堆的读和写操作,根据指令选择寄存器读取和写入。CU模块用于控制单元,解析指令并生成相应的控制信号,例如ALU操作码、写寄存器使能等。A和B模块用于选择和加载寄存器A和B的数据。Extender模块用于符号扩展立即数。Imm模块用于加载立即数。
EX (Execution) 模块:
A_MUX和B_MUX模块用于选择ALU的输入数据,可以选择寄存器数据、NPC、基址或立即数。ALU模块执行ALU操作,并生成结果和零标志。
MEM (Memory) 模块:
ALU_out模块用于加载ALU的结果。PC_MUX模块用于选择下一个PC地址,可以选择NPC、ALU结果或分支指令的目标地址。WB_Reg_MUX模块用于选择写回数据,可以选择ALU结果、内存读取结果或寄存器A的数据。WB_Reg_Addr_MUX模块用于选择写回寄存器的地址。DMEM模块用于数据存储器的读写操作。LDM模块用于加载内存数据。
其他:
debug_wb_pc、debug_wb_rf_wen、debug_wb_rf_addr、debug_wb_rf_wdata用于调试目的,输出当前执行指令的信息。
这个CPU的基本架构是一个五级流水线,包括IF、ID、EX、MEM和WB(写回)阶段。每个阶段由不同的模块负责执行特定的任务,并在时钟上升沿进行数据传递。各个模块之间通过信号进行通信,根据指令的不同,选择不同的数据路径和操作。
以下是在前面的叙述中添加了原始Verilog代码的版本:
IF (Instruction Fetch) 模块:
IMEM模块用于指令存储器的读取,将PC地址传递给存储器,读取当前指令到IRin。
verilog
1 | IMEM U_IMEM ( |
PC模块用于管理程序计数器,包括在时钟上升沿时选择下一条指令的地址,以及处理复位信号。
verilog
1 | PC U_PC ( |
ADD模块用于计算下一条指令的地址,将当前PC地址传递给PC模块。
verilog
1 | ADD U_ADD ( |
NPC模块用于存储下一条指令的地址。
verilog
1 | NPC U_NPC ( |
IR模块用于指令寄存器的加载,将当前指令传递给IRout。
verilog
1 | IR U_IR ( |
ID (Instruction Decode) 模块:
Regfile模块用于管理寄存器堆的读和写操作,根据指令选择寄存器读取和写入。
verilog
1 | Regfile U_regfile ( |
CU模块用于控制单元,解析指令并生成相应的控制信号,例如ALU操作码、写寄存器使能等。
verilog
1 | CU U_CU ( |
A和B模块用于选择和加载寄存器A和B的数据。
verilog
1 | A U_A ( |
Extender模块用于符号扩展立即数。
verilog
1 | Extender U_Extender ( |
Imm模块用于加载立即数。
verilog
1 | Imm U_Imm ( |
这些Verilog模块构成了IF和ID阶段的核心逻辑,负责指令的获取、寄存器堆的读写、控制信号的生成等任务。
EX (Execution) 模块:
A_MUX和B_MUX模块用于选择ALU的输入数据,可以选择寄存器数据、NPC、基址或立即数。
verilog
1 | A_MUX A_MUX ( |
这些模块构成了EX阶段的核心逻辑,负责执行ALU操作、选择ALU输入数据等任务。
MEM (Memory) 模块:
ALU_out模块用于加载ALU的结果。
verilog
1 | ALU_out U_ALU_output ( |
PC_MUX模块用于选择下一个PC地址,可以选择NPC、ALU结果或分支指令的目标地址。
verilog
1 | PC_MUX PC_MUX ( |
WB_Reg_MUX模块用于选择写回数据,可以选择ALU结果、内存读取结果或寄存器A的数据。
verilog
1 | WB_DATA_MUX WB_Reg_MUX ( |
WB_Reg_Addr_MUX模块用于选择写回寄存器的地址。
verilog
1 | WB_ADDR_MUX WB_Reg_Addr_MUX ( |
DMEM模块用于数据存储器的读写操作。
verilog
1 | DMEM U_DMEM ( |
LDM模块用于加载内存数据。
verilog
1 | LDM LDM ( |
这些模块构成了MEM阶段的核心逻辑,负责执行内存操作、选择写回数据和地址等任务。
- 标题: CA-模块体系
- 作者: Molaters
- 创建于 : 2023-11-24 11:30:49
- 更新于 : 2023-10-12 17:02:26
- 链接: https://molaters.github.io/2023/11/24/计算机体系结构/CA-模块体系/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。