310 likes | 482 Views
《 计算机组成与系统结构 》 实验一 运算器设计与仿真. 一、实验目的 理解并掌握运算器的基本电路结构及其设计方法,学会使用 Verilog HDL 对电路进行行为建模、结构建模以及仿真测试。 二、实验内容 利用 Verilog HDL 设计一个运算器模型,并进行仿真测试。要求该运算器的字长为 32 位,能够实现加法、减法、逻辑与、逻辑或四种运算,并产生 N( 结果为负 ) 、 Z( 结果为零 ) 、 V( 结果溢出 ) 、 C( 进位 ) 四个标志位。要求采用层次化的建模方法,即先搭建低层模块,然后再逐级搭建高层模块。 三、实验环境
E N D
《计算机组成与系统结构》 实验一 运算器设计与仿真
一、实验目的 • 理解并掌握运算器的基本电路结构及其设计方法,学会使用Verilog HDL对电路进行行为建模、结构建模以及仿真测试。 二、实验内容 • 利用Verilog HDL设计一个运算器模型,并进行仿真测试。要求该运算器的字长为32位,能够实现加法、减法、逻辑与、逻辑或四种运算,并产生N(结果为负)、Z(结果为零)、V(结果溢出)、C(进位)四个标志位。要求采用层次化的建模方法,即先搭建低层模块,然后再逐级搭建高层模块。 三、实验环境 • PC机1台、Modelsim仿真软件1套。
OP<1:0> OP<0> OP<0> OP<1> and2*32 S A<31:0> A<31:0> Y<31:0> A0<31:0> S B<31:0> Z 零判断 B<31:0> mux2*32 Y<31:0> A0<31:0> or2*32 A<31:0> mux2*32 Y<31:0> S<31:0> A1<31:0> Y<31:0> B<31:0> A1<31:0> a<31:0> s<31:0> b<31:0> V s<31> C sub N V C 四、实验步骤 1、电路结构设计 OP<1:0> 00 AND 01 OR 10 ADD 11 SUB ALU的电路图
1位全加器逻辑表达式: S= abci+abci+abci+abci=a b ci Co=abci+abci+abci+abci=ab+aci+bci s a b co ci
a<3:0> b<3:0> sub b<3> a<2> a<1> b<1> a<0> b<0> a<3> b<2> a a a a b b b b co co ci co ci co ci co ci ADD1 ADD1 ADD1 ADD1 s s s s s<3> s<2> s<1> s<0> 其中:Sub=0,做加法,Sub=1,做减法。 s<3:0>
2、建立Verilog模型 • 参见Modelsim中的相关设计文件。 3、设计测试文件 • 参见Modelsim中的测试文件。 • 注意:测试的完备性。 4、将设计文件和测试文件输入Modelsim仿真工具,并进行编译和功能仿真。 5、观测仿真波形图,分析结果是否正确。若有错误,则修改设计文件或测试文件,重新编译和仿真。 五、实验结果 • 参见Modelsim中的波形图和下表。
《计算机组成与系统结构》 实验二 存储器设计与仿真
一、实验目的 • 理解并掌握寄存器堆的基本电路结构及其设计方法,学会使用Verilog HDL对电路进行行为建模、结构建模以及仿真测试。 二、实验内容 • 利用Verilog HDL设计一个寄存器堆模型,并进行仿真测试。要求该寄存器堆具有32个32位的寄存器,并具有2个读端口和1个写端口。要求采用层次化的建模方法,即先搭建低层模块,然后再逐级搭建高层模块。 三、实验环境 • PC机1台、Modelsim仿真软件1套。
四、实验步骤 1、电路结构设计 寄存器堆外框图 N1<4:0> N1<4:0> Q1<31:0> Q1<31:0> DI<31:0> DI<31:0> ND<4:0> ND<4:0> N2<4:0> N2<4:0> Q2<31:0> Q2<31:0> WE WE CLK CLK
N1<4:0> N1<4> N1<3> N1<2> N1<1> N1<0> DI<31:0> d<31:0> Mux32*32 q<31:0> ce A0<31:0> c r0 A1<31:0> d<31:0> A2<31:0> q<31:0> ce c r1 A3<31:0> Q1<31:0> Y<31:0> A4<31:0> d<31:0> q<31:0> ce … ND<4:0> c r2 d0 ND<0> a0 A30<31:0> d1 ND<1> A31<31:0> d<31:0> a1 q<31:0> ce d2 ND<2> c r3 a2 d3 ND<3> N2<4> N2<3> N2<2> N2<1> N2<0> a3 d4 d<31:0> ND<4> q<31:0> ce … a4 Mux32*32 c r4 A0<31:0> d30 WE A1<31:0> e d<31:0> d31 q<31:0> ce A2<31:0> c … A3<31:0> Q2<31:0> Y<31:0> d<31:0> A4<31:0> q<31:0> ce c r30 … A30<31:0> d<31:0> q<31:0> ce A31<31:0> CLK c r31 CLR N2<4:0> 寄存器堆内部结构图
2、建立Verilog模型 • 参见Modelsim中的相关设计文件。 3、设计测试文件 • 参见Modelsim中的测试文件。 • 注意:测试的完备性。 4、将设计文件和测试文件输入Modelsim仿真工具,并进行编译和功能仿真。 5、观测仿真波形图,分析结果是否正确。若有错误,则修改设计文件或测试文件,重新编译和仿真。 五、实验结果 • 参见Modelsim中的波形图和下表。
《计算机组成与系统结构》 实验三 控制器设计与仿真
一、实验目的 • 理解并掌握CPU控制器的基本电路结构及其设计方法,学会使用Verilog HDL对电路进行行为建模、结构建模以及仿真测试。 二、实验内容 • 利用Verilog HDL设计一个多周期处理机控制器,并进行仿真测试。要求该处理机能够实现下页表所示的指令系统。 • 要求把指令的执行分为以下5个步骤,每个步骤用一个时钟周期。 1、取指令及PC+1周期 2、指令译码、读寄存器及转移周期 3、ALU执行或者存储器地址计算周期 4、ALU指令结束周期或者存储器访问周期 5、写回周期
SELLDST SELLOAD SELALUA 寄存器堆 WRITEZERO MUX MUX A A DI Q1 存储器 ZERO MUX ZERO ZERO PC address rd AD IR ALU rs1 dataout A1 B WE rs2 Q2 MUX MUX IM datain A2 B rd 1 WRITEPC CS OE WRITEIR WRITEREG SELST ALUOP WRITEMEM 立即数 符号扩展 立即数 SELALUB 偏移量 偏移量 符号扩展 • 该多周期处理机的数据路径如下
控制信号定义:参见上图,数据路径所需要的控制信号如下:控制信号定义:参见上图,数据路径所需要的控制信号如下: WRITEPC:PC写使能信号,为1时,CLK上升沿把PC输入端的数据写入PC; SELLDST:存储器地址输入选择,为1时,选ALU计算出的地址,为0选PC; WRITEMEM:写存储器使能信号,由store指令产生; WRITEIR:IR写使能信号,为1时,CLK上升沿把由PC访问到的指令写入IR; SELLOAD:寄存器堆数据输入选择,为1时选存储器输出,为0选ALU输出; SELST:执行store指令时,从寄存器堆Q2端口读出寄存器rd的内容; WRITEREG:写寄存器堆使能信号; SELALUA:ALU A输入端选择,0选寄存器RS1,1选PC; SELALUB:ALU B输入端选择,00选寄存器RS2,01选立即数IM,10选1,11选偏移量; ALUOP:ALU操作控制码; WRITEZERO:写标志寄存器ZERO的使能信号;
三、实验环境 • PC机1台、Modelsim仿真软件1套。 四、实验步骤 1、电路结构设计与逻辑设计
D3 D2 D1 D0 CLK 状态寄存器 Q3 Q2 Q1 Q0 Q0 D0 Q1 D1 下一状态产生模块 Q2 D2 Q3 D3 OPCODE WRITEPC Q0 SELLDST Q1 WRITEMEM Q2 WRITEIR Q3 控制信号 产生模块 SELLOAD SELST WRITEREG SELALUA ZERO SELALUB ZERO ALUOP WRITEZERO OPCODE OPCODE 多周期处理机的控制部件电路结构
IF ID EXE MEM WB ALURR (S2) ALURWB (S6) ALUR-R ALUIWB (S7) ALURI (S3) ALUR-I IF (S0) ID (S1) load LDMEM (S8) LDWB (S10) LOAD (S4) store branch STORE (S5) STMEM (S9) 多周期处理机的状态转移图 • 状态:完成某些特定功能的一个时钟周期,例如我们把取指令周期定义为一个状态,把指令译码周期定义为下一个状态。状态之间的转化发生在时钟上升沿。对于同一个问题,状态的定义和划分可以是不同的。下面给出一种多处理机的状态划分方案。见下图:
多周期处理机的状态转移表 其中:RR=and+or+add+sub(寄存器-寄存器操作);RI=andi+ori+addi+subi(寄存器-立即数操作);BR=branch+bne+beq(转移指令);X=任意。 • 根据上述状态转移表,可以得到下一状态产生电路的逻辑表达式: D0=S0+S1*RI+S1*store+S3+S5;D1=S1*RR+S1*RI+S2+S3+S8; D2=S1*load+S1*store+S2+S3;D3=S4+S5+S8;
2、建立Verilog模型 • 参见Modelsim中的相关设计文件。 3、设计测试文件 • 参见Modelsim中的测试文件。 • 注意:测试的完备性。 4、将设计文件和测试文件输入Modelsim仿真工具,并进行编译和功能仿真。 5、观测仿真波形图,分析结果是否正确。若有错误,则修改设计文件或测试文件,重新编译和仿真。 五、实验结果 • 参见Modelsim中的波形图。
《计算机组成与系统结构》 实验四 简单CPU设计与仿真
一、实验目的 • 理解并掌握CPU的基本电路结构及其设计方法,学会使用Verilog HDL对电路进行行为建模、结构建模以及仿真测试。 二、实验内容 • 利用Verilog HDL设计一个简单的CPU模型,并进行仿真测试。 • 要求该处理机能够实现下页表所示的指令系统。 • 要求把指令的执行分为以下5个步骤,每个步骤用一个时钟周期。 1、取指令及PC+1周期 2、指令译码、读寄存器及转移周期 3、ALU执行或者存储器地址计算周期 4、ALU指令结束周期或者存储器访问周期 5、写回周期
三、实验环境 • PC机1台、Modelsim仿真软件1套。 四、实验步骤 1、电路结构设计 • 见下页图:
SELLDST SELLOAD SELALUA 寄存器堆 WRITEZERO MUX MUX A A DI Q1 存储器 ZERO MUX ZERO ZERO PC address rd AD IR ALU rs1 dataout A1 B WE rs2 Q2 MUX MUX IM datain A2 B rd 1 WRITEPC CS OE WRITEIR WRITEREG SELST ALUOP WRITEMEM 立即数 符号扩展 立即数 SELALUB 偏移量 符号扩展 偏移量 OPCODE 控制信号 控制部件 ZERO
2、建立Verilog模型 • 参见Modelsim中的相关设计文件。 3、设计测试文件 • 参见Modelsim中的测试文件。 • 注意:测试的完备性。 4、将设计文件和测试文件输入Modelsim仿真工具,并进行编译和功能仿真。 5、观测仿真波形图,分析结果是否正确。若有错误,则修改设计文件或测试文件,重新编译和仿真。 五、实验结果 • 参见Modelsim中的波形图。