Lab3实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2012

LAB3实验报告

王红宾61

精品归纳 | F0905103

1实验概述

实验名称

简单的类MIPS单周期处理器实现–控制器,ALU

实验目的

1.理解CPU控制器,ALU的原理

实验范围

本次实验将覆盖以下范围

1.ISE的使用

2.Spartan-3E实验板的使用

3.使用Verilog HDL进行逻辑设计

4.CPU控制器的实现

5.ALU的实现

注意事项

1. 本实验的逻辑设计工具为Xilinx 。

2实验内容

实验步骤

1.启动ISE 。

2.选择File > New Project… 出现New Project Wizard。

3.Project Name填写lab5,选择工程Project Location,Top-level Source Type选择HDL。点击Next。

4. Device Properties 中各属性填写如下:

Product Category: ALL

Family: Spartan3E

Device: XC3S500E

Package: FG320

Speed: -4

Synthesis Tool: XST(VHDL/Verilog)

Simulator: ISim (VHDL/Verilog) ,也可用Modelsim仿真。Preferred Language: Verilog

确认Enable Enhanced Design Summary 已勾选

5. 点击Next

6. 在New Project Wizard –Create New Source中点击Next

7. 在New Project Wizard –Add Existing Sources中点击Next

8. 在New Project Wizard –Project Summary中点击Finish,结束建立工程

3主控制单元模块CTR

模块描述

主控制单元输入为指令的opCode字段,即操作码。操作码经过主控制单元的译码,给ALUCtr,Data Memory,Registers,Muxs等部件输出正确的控制信号。

Mips 基本指令格式

主控制模块

新建模块源文件

1.新建文件命令:菜单栏-- Project –New Source…

或:Hierarchy窗口中,在正确设备名(xc2vp30-7ff896或类似)上右键鼠标,弹出菜单中点击New Source…

编写译码功能

主控制模块真值表

注:Jump指令编码是000010,Jump信号输出1,其余输出0

用verilog代码写出上述真值表内容。实现方式多种多样,这里给出一种使用case语句的参考方案,如下图:

仿真测试

1.将Sources for:下拉框选择为Behavioral Simulation

2.添加Testbench文件进行行为级仿真。在Ctr 模块上点击右键,选择New Source。

3.文件类型为Verilog Test Fixture,,文件名test_for_Ctr。

Source中选择Ctr,Next。工具会自动为Ctr创建Testbench模板文件。

5.在该文件下添加如下激励,即输入信号的控制。

6.双击Processes中的Simulate Behavioral Model,保持默认即可。若需要可选中Process Properties调整仿真运行时间。

进行仿真,观察波形,查看仿真结果是否满足设计。如果有错,修改代码逻辑,重新仿真。(操作小技巧:小键盘-,+,快速缩放波形视野)

8.下面给出一个仿真波形样例:

4 ALU单元模块ALUCTR

模块描述

AluCtr根据主控制器的ALUOp来判断指令类型。根据指令的后6位区分R型指令。综合这两种输入,控制ALU做正确的操作。

新建模块源文件

编写译码功能

我们约定aluCtrOut[3:0]的值与ALU操作的对应关系如下:

aluCtrOut 和alu操作的对应关系

根据ALUOp控制位和R型指令的不同功能码来设ALU控制位

[注: ALU control input实际上是ALU的输入,aluCtr的输出]

输入输出真值表

用verilog代码写出上述真值表内容。

实现方式多种多样,这里给出一种使用casex语句的参考方案,如下图:

仿真

1. 根据之前叙述的方法进行行为级仿真。新建文件test_for_aluCtr。

2. 在Testbench中设定不同的输入。请覆盖所有的情况,以保证逻辑的正确。

3. 观察波形是否满足逻辑。如果有错,检查代码,重新仿真。

4. 下面给出仿真样例:

5 ALU

模块描述

根据aluCtr,对两个输入做对应的操作。aluRes输出结果。如果是减法操作,若结果为0,zero输出置为1.

输入:input1 (32bit),,input2 (32bit),aluCtr (4bit)

输出:zero(1bit),aluRes (32bit)

5. 2 新建模块源文件

实现功能

用verilog代码实现ALU功能。

实现方式多种多样,比如case语句。这里给出一种参考方案,如下图:

相关文档
最新文档