简单计算机系统的数据通路与控制器设计.docx

简单计算机系统的数据通路与控制器设计.docx

简单计算机系统的数据通路与控制器设计

简单计算机系统的数据通路和控制器设计 一、实验目的 1.掌握执行 R 型、I 型、J 型指令的数据通路 2.掌握控制器模块的设计方法 3.掌握简单计算机系统的集成和仿真 二、实验任务 1.掌握 R 型、I 型、J 型指令的数据通路(datapath) 根据计算机的工作原理,其组成包括 ROM、寄存器组、ALU、RAM、控制单元、I/O 端口及其映射、输入/输出设备、输入/输出接口等模块。在从 ROM 中取指令时需要一个程序指针寄存器(指令地址生成模块)提供出要读取的 ROM 单元地址。指令系统分为 R 型、 I 型和 J 型 3 种指令,不同的指令类型需要通过控制器单元进行译码,然后送出相应的控制信号。 2.设计控制单元 控制器单元的模块封装图见 2-1,控制器单元输出控制信号及其产生条件见表 2-1,控制器单元的输入信号为指令中的操作码 OP 和 ALU 的 zero 零标志信号,输出为各种控制信号。请结合数据通路的理解,根据表 2-1 写出各控制信号的逻辑表达式,设计控制器单元的逻辑电路。 图 2-1 控制器单元封装结构图 表 2-1 控制器单元输出的控制信号及其产生条件 控制信号 产生条件 JUMP 直接跳转控制信号,如果该信号为 1,则 PC 直接跳转到 imm 立即数。当且仅当为 JMP 指令时,该信号为 1。 BRANCH 分支跳转控制信号,由 BNE,BEQ 引起。 该信号为 1 时执行跳转,将指令中立即数 imm+PC+1 作为下一个 PC 值,否则将 PC+1 作为下一个 PC 值。 当指令为 BEQ 且零标志 Z 为 1,或者指令为 BNE 且 Z 为 0 时,BRANCH 信号为 1,否则为 0。 ALUC[2..0] (控制ALU中 CS[2..0]值,决定 ALU 进行何种操作) 当指令为 slt 时,ALU 执行“比较”操作 当指令为 or 或 ori 时,ALU 执行“或”操作 当指令为 add 或 addi 或 lw 或 sw 时,ALU 执行“加”操作 当指令为 sub 或 bne 或 beq 时,ALU 执行“减”操作 当指令为 and 或 andi 时,ALU 执行“与”操作 当指令为 subc 时,ALU 执行“带进位减” 当指令为 addc 时,ALU 执行“带进位加” ALUSRCB 立即数控制信号 为 1 时表示 ALU 第二个操作数来自立即数,否则来自寄存器 rt。 当为 I 型指令???的 addi、andi、ori、lw、sw 时为 1,否则为 0。 WRITEMEM 写存储器控制信号 为 1 时表示需要向 RAM 存储器写入数据, 当且仅当指令为 sw 时为 1,否则为 0。 WRITEREG 写寄存器控制信号 为 1 时表示需要向寄存器堆写入数据。 当指令为 and、or、sub、add、addc、subc、slt、lw、addi、andi、ori 时需要写寄存器, 为 1,否则为 0。 MEMTOREG 写入寄存器数据的来源标识 为 1 时表示数据来自 RAM(或 IO 口),否则来源为 ALU 的输出 当且仅当指令为 lw 时为 1,否则为 0。该信号可用作 RAM 的读控制信号。REGDES 目的寄存器标识 为 1,rd 为目的寄存器,为 0 时,rt 为目的寄存器 当指令为 R 型指令时,目的寄存器为 rd,此时标识为 1,其他指令时为 0 WRFLAG 写标志寄存器控制信号 为 1 时表示需要向标志寄存器写入数据。 当指令为 ADD、SUB、ADDI、ADDC、SUBC 时需要写标志寄存器, 为 1,否则为 0。  3.设计程序指针计数器 PC 模块(指令地址形成电路) 计算机指令保存在程序存储器 ROM 中。CPU 执行指令时,首先要把指令从指令存储器中取出来。为了取指令,在计算机中除了有保存指令的存储器外,还需要有保存计算机指令地址的器件。计算机程序地址保存在专用的寄存器中,该寄存器称为程序指针计数器 PC。在取出当前指令后,还需要为下一个周期的指令计算出指令地址。所以,除了保存指令的存储器和保存指令地址的程序计数器 PC 之外,还要有计算下一个指令地址的逻辑电路。 在计算下一条指令地址时,有如下几种情况: 如果当前指令不是分支或者跳转指令,则可以简单地在当前指令地址的基础上加 1 (PC+1),就得到下一条指令地址。 若当前指令为分支或者跳转指令时,则需要根据实际情况计算得出跳转地址。根据指令的不同,计算跳转地址的方法也不一样,具体计算方法如下: 如果是直接跳转指令 JMP,则在下一个时钟周期将指

文档评论(0)

1亿VIP精品文档

相关文档