中山大学单周期CPU设计实验报告

版权申诉
5星 · 超过95%的资源 20 下载量 121 浏览量 更新于2024-07-02 7 收藏 1.76MB DOCX 举报
"中山大学计算机组成原理实验报告,主要涵盖了单周期CPU的设计与实现,包括算术和逻辑运算指令的处理。" 在计算机科学中,单周期CPU是一种基本的处理器设计,它在一个时钟周期内完成一条指令的全部操作,包括取指、译码、执行和写回等步骤。这个实验的目的是让学生深入理解单周期CPU的工作原理,掌握其数据通路设计,以及如何通过编程实现这些功能。 实验内容主要涉及以下几点: 1. **数据通路设计**:单周期CPU的数据通路通常包含ALU(算术逻辑单元)、寄存器堆、控制单元、数据存储器等组件。ALU执行算术和逻辑运算,寄存器堆用于临时存储数据,控制单元生成并分配控制信号,而数据存储器则用于存储程序和数据。 2. **指令集**:实验要求设计的CPU至少支持六种基本指令,包括加法(addrd, subrd)、带立即数的加法(addiurt, addirt)、逻辑与(andirt, andrd)和或(orirt)。每条指令都有特定的格式,如地址字段(rs, rt, rd)和立即数字段(immediate),这些字段用于指定操作数和操作结果的寄存器。 3. **指令执行**: - **addrd** 和 **subrd** 指令用于进行两个寄存器间的加法和减法运算,结果存入第三个寄存器。 - **addiurt** 和 **addirt** 指令是加法的变体,它们接受一个立即数并将其扩展为与寄存器同样宽度的值,然后与寄存器中的值相加,扩展方式根据立即数的符号进行。 - **andirt** 和 **andrd** 用于执行逻辑与操作,与立即数或另一个寄存器中的值进行。 - **orirt** 类似地执行逻辑或操作。 4. **实现方法**:实验中需要实现这些指令的硬件逻辑和控制逻辑,这可能涉及到组合逻辑和时序逻辑的设计。同时,还需要编写代码来模拟CPU的行为,这通常使用硬件描述语言(如VHDL或Verilog)完成。 5. **测试方法**:设计完成后,需要编写测试用例,通过输入不同的指令和数据,检查CPU是否能正确执行预期的运算,并将结果写回到正确的寄存器中。 通过这个实验,学生不仅能够了解单周期CPU的基本构造,还能实际动手构建一个简单的处理器,从而对计算机底层工作原理有更直观的认识。这将对理解计算机系统的整体运作,以及未来在系统设计、编译器优化等领域的工作都具有重要的基础作用。
2019-05-03 上传
一、 设计目标 设计目的: 设计一个含有36条指令的MIPS单周期处理器,并能将指令准确的执行并烧写到试验箱上来验证 设计初衷 1、理解MIPS指令结构,理解MIPS指令集中常用指令的功能和编码,学会对这些指令进行归纳分类。 2、了解熟悉MIPS体系中的处理器结构 3、熟悉并掌握单周期处理器CPU的原理和设计 4、进一步加强Verilog语言进行电路设计的能力 二、实验设备 1、装有xilinx ISE的计算机一台 2、LS-CPU-EXB-002教学系统实验箱一台 三、实验任务 1.、学习 MIPS 指令集,深入理解常用指令的功能和编码,并进行归纳确定处理器各部件的控制码,比如使用何种 ALU 运算,是否写寄存器堆等。 2、单周期 CPU 是指一条指令的所有操作在一个时钟周期内执行完。设计中所有寄存器和存储器都是异步读同步写的,即读出数据不需要时钟控制,但写入数据需时钟控制。 故单周期 CPU 的运作即:在一个时钟周期内,根据 PC 值从指令 ROM 中读出相应的指令,将指令译码后从寄存器堆中读出需要的操作数,送往 ALU 模块,ALU 模块运算得到结果。 如果是 store 指令,则 ALU 运算结果为数据存储的地址,就向数据 RAM 发出写请求,在下一个时钟上升沿真正写入到数据存储器。 如果是 load 指令,则 ALU 运算结果为数据存储的地址,根据该值从数据存 RAM 中读出数据,送往寄存器堆根据目的寄存器发出写请求,在下一个时钟上升沿真正写入到寄存器堆中。 如果非 load/store 操作,若有写寄存器堆的操作,则直接将 ALU 运算结果送往寄存器堆根据目的寄存器发出写请求,在下一个时钟上升沿真正写入到寄存器堆中。 如果是分支跳转指令,则是需要将结果写入到 pc 寄存器中的。