设计,设计最大为64个存储单元,每个存储单元数据宽度为32bit。
4.1.2 接口定义 序号 1 2 3 4 5 6
4.1.3 模块仿真验证
接口信号名称 clk rst ExtMem_Adr [5:0] ExtMem_WR ExtMem_Din [31:0] ExtMem32 [31:0]
方向(I/O) I I I I I O 说明 存储器工作时钟,频率为50Mhz 存储器片选信号,低有效 存储器地址线 存储器读写信号,1为写反之读 存储器输入数据线 存储器输出数据线
4.2 寄存器堆模块设计 4.2.1模块方案设计
该MIPS指令格式中的寄存器号是5bits,指令可以访问32个32位的寄存器。这32个32位的寄存器构成一个寄存器堆。
4.2.2 接口定义 序号 1 2 3 4 5 6
接口信号名称 clk rst Raddr1[4:0] Raddr2[4:0] Waddr[4:0] We 方向 I I I I I I 说明 处理器工作时钟 复位信号 读寄存器堆时的第1个寄存器下标 读寄存器堆时的第2个寄存器下标 写寄存器堆时的寄存器下标 寄存器堆写使能
7 8 9
Wdata [31:0] Rdata 1[31:0] Rdata 2[31:0] I O O 待写入寄存器堆的数据 读寄存器堆时第1个寄存器的输出 读寄存器堆时第2个寄存器的输出 4.2.3 模块仿真验证
4.3算术逻辑运算器模块设计
4.3.1 模块方案设计
运用alu_clt控制运算器的各种运算,包括无符号数的加法运算,有符号数
的加法运算,或逻辑运算,与逻辑运算,无符号数的减法运算,无符号小于置1运算,逻辑左移,逻辑右移,算术右移等。 4.3.2 接口定义 序号 1 2 3 4 5 6 7
4.3.3 关键控制信号的产生
SUBctr = alu_clt[2]; ANDctr = alu_clt[0];
OVctr = !alu_clt[1]&alu_clt[0];
接口信号名称 ALU_DA [31:0] ALU_DB [31:0] alu_clt [3:0] alu_shift [4:0] ALU_Zero Alu_Overflow ALU_Dout [31:0] 方向(I/O) I I I I O O O 说明 参与运算的第一个输入数据 参与运算的第二个输入数据 运算功能编码 偏移量 零标志位 溢出标志位 运算结果输出位
SIGctr = alu_clt[0];
OPctr[1] = alu_clt[2]&alu_clt[1]|alu_clt[3]; OPctr[0] = alu_clt[1];
4.3.4具体ALU实现如下图所示:
Cin异或门ZeroAdd_carryOverflow加减法运算器Add_OverflowAdd_SignAdd_Result异或门阵列异或门位扩展或门阵列012010O1Result1ALU_DA[31:0]ALU_DB[31:0]SUBctrOPctrOVctrSIGctrALU操作控制信号
4.3.5 模块仿真验证
4.4 立即数扩展模块设计
4.4.1 模块方案设计
设计一个32位MIPS符号扩展单元SE,用于将16位的数据转换为32位数据。 4.4.2 接口定义
序号 1 2 3 4
4.4.3 模块仿真验证
信号名 Imm16[15:0] AluSrc bus[31:0] ExtImm32[31:0] 端口说明 I I I O 描述 来自指令寄存器的16位立即数 立即数扩展信号的使能端 符号扩展后的32位立即数
4.5 主控制模块设计 4.5.1 模块方案设计
以指令译码结果中的6位操作码及相关信号产生整个数据通路中的各个控制信号。
4.5.2 接口定义
序号 1 2 3 4 5 6 7
4.5.3各控制信号的编码规则如下表所示: op 000 000 RegDst RegWr
接口信号名称 op RegDst AluSrc ExtOp RegWr MemWr, MemtoReg I 方向(I/O) 操作码 O O O O O O 说明 目的寄存器选择 ALU输入信号选择 立即数扩展的使能信号 寄存器写使能 存储器写使能 寄存器的装载信号选择 001 000 1 1 001 001 1 1 001 100 1 1 001 101 1 1 100 011 1 1 101 011 0 0 001 010 1 1 001 011 1 1 000 100 0 0 000 101 0 0 0 1
相关推荐: