单周期CPU设计详解:模块功能与接口

需积分: 0 0 下载量 21 浏览量 更新于2024-06-30 收藏 1.99MB DOCX 举报
"17373176-叶静波-CPU单周期设计文档(Verilog)1" 本文档详细介绍了基于Verilog语言的CPU单周期设计,涵盖了IFU(指令 fetch unit)、GRF(通用寄存器文件)、ALU(算术逻辑单元)、DM(数据存储器)和EXT(扩展器)五个主要模块,以及顶层模块mips的整合。每个模块都具有特定的功能和端口定义,并通过控制器进行协调。 1. IFU(指令预取单元) IFU主要包括PC(程序计数器)、IM(指令存储器)、Adder、选择器和beq跳转值。PC是一个带复位功能的寄存器,受时钟信号控制。IM使用ROM来存储指令,其地址宽度与PC的中间部分匹配。选择器根据beq跳转信号选择指令。此外,IFU还支持J、Jal、Jr指令,这些指令需要额外的输出端口。IFU内部集成一个ROM块,通过readmemh函数加载指令码。 2. GRF(通用寄存器文件) GRF由32个带有写使能和复位信号的寄存器组成,第一个寄存器初始化为0,其余默认为0。它接收地址和数据输入,提供两个数据输出,并从IFU接收PC值。 3. ALU(算术逻辑单元) ALU执行32位无符号加法、减法、或运算以及大小比较。大小比较通过无符号数相减后的结果与0比较实现。ALU操作码(ALUOp)使用独热编码表示不同的操作。 4. DM(数据存储器) DM是32位*1024容量的RAM,起始于地址0x00000000。它接收地址和32位数据输入,输出相应数据。同时,它也接收IFU的PC值。 5. EXT(扩展器) EXT负责处理跳转指令中的立即数扩展,提供了扩展类型的选择信号。 6. 顶层模块(mips) mips是整个CPU的顶层结构,通过wire型变量连接各个模块,并通过assign语句分配信号。控制器在此处定义了ALU操作、DM的读写控制以及扩展器的选择信号。 7. 控制器 控制器使用ALUOp来指定ALU的操作,如无符号加、减、或运算等。对于DM,添加了MW和MR信号控制写入和读取。EXTOp决定立即数扩展方式。此外,控制器还包括J、Jal、Jr的跳转信号,以处理不同类型的跳转指令。 这个CPU单周期设计文档全面展示了Verilog实现CPU的基本架构和各组件间的交互,是理解处理器工作原理和设计过程的重要参考资料。