计算机组成原理实验报告.docx

上传人:b****4 文档编号:2964011 上传时间:2022-11-16 格式:DOCX 页数:44 大小:940.86KB
下载 相关 举报
计算机组成原理实验报告.docx_第1页
第1页 / 共44页
计算机组成原理实验报告.docx_第2页
第2页 / 共44页
计算机组成原理实验报告.docx_第3页
第3页 / 共44页
计算机组成原理实验报告.docx_第4页
第4页 / 共44页
计算机组成原理实验报告.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

计算机组成原理实验报告.docx

《计算机组成原理实验报告.docx》由会员分享,可在线阅读,更多相关《计算机组成原理实验报告.docx(44页珍藏版)》请在冰豆网上搜索。

计算机组成原理实验报告.docx

计算机组成原理实验报告

电子科技大学计算机科学与工程学院

 

标准实验报告

 

(实验)课程名称:

计算机组成原理综合实验课程

 

电子科技大学教务处制表

 

电子科技大学

实验一报告

学生姓名:

ZYZ学号:

*************指导教师:

CAG

实验地点:

主楼A2-411实验时间:

2016年11月20日

一、实验室名称:

A2-411。

二、实验项目名称:

Verilog设计简介。

三、实验学时:

实验学时是3学时。

四、实验原理:

Verilog设计硬件电路需要创建工程,模块和约束文件。

一位二选一多路器的实验原理图和真值表如下图1所示:

二选一多路器的逻辑表达式为

,根据逻辑表达式可得电路图如图2所示:

五、实验目的

通过本实验,掌握用VerilogHDL硬件描述语言设计硬件电路的基本方法和FPGA开发板的基本使用。

实现32位2选1多路选择器、5位2选1多路选择器、32位寄存器堆、ALU等部件的设计,掌握其基本方法和技能,加深对所学知识的理解。

六、实验内容

基本器件的设计:

Ø32位2选1多路选择器

Ø5位2选1多路选择器

Ø32位寄存器堆

ØALU

七、实验器材(设备、元器件):

1.安装了XilinxISEDesignSuite13.4的PC机一台

2.FPGA开发板:

AnvylSpartan6/XC6SLX45

3.计算机与FPGA开发板通过JTAG(JointTestActionGroup)接口连接,其连接方式如图3所示。

图3PC计算机与FPGA开发板的连接

八、实验步骤

1.新建工程(NewProject)

启动ISEDesignSuite13.4软件,然后选择菜单File→NewProject,弹出NewProjectWizard对话框,选择VerilogModule,并在对话框中输入工程名ALU,并指定工作路径D:

\ALU。

2.基本功能器件的设计与实现

(1)32位2选1多路选择器

在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,创建一个VerilogModule模块,名称为:

MUX32_2_1,此时开发环境的工程管理区中将有一个MUX32_2_1(MUX32_2_1.v)模块,双击该模块,然后在源代码编辑区编写实现该模块的代码:

moduleMUX32_2_1(

input[31:

0]A,

input[31:

0]B,

inputSel,

output[31:

0]O

);

assignO=Sel?

B:

A;

endmodule

代码输入完成后,在工程管理区选中要检查的模块,检查VerilogHDL语法(Synthesize→XST→CheckSyntax)。

检查通过后,进行VerilogHDL代码综合。

在工程管理区的View中选择Implementation,并选中MUX32_2_1模块,进行综合(Synthesize)。

综合通过后,查看RTL层电路(Synthesize→XST→ViewRTLSchematic),结果如图4所示。

对模块MUX32_2_1进行仿真(Simulation),在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,在NewSourceWizard对话框中选择VerilogTestFixture,输入测试文件名:

MUX_32_2_1_tb,单击Next按钮,进入下一个对话框,选择要测试的模块MUX_32_2_1,点击Next按钮,再点击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码。

在模块MUX_32_2_1_tb中添加如下测试代码:

moduleMUX32_2_1_tb;

reg[31:

0]A;

reg[31:

0]B;

regSel;

wire[31:

0]O;

//InstantiatetheUnitUnderTest(UUT)

MUX32_2_1uut(

.A(A),

.B(B),

.Sel(Sel),

.O(O)

);

initialbegin

//InitializeInputs

A=0;

B=0;

Sel=0;

//Wait100nsforglobalresettofinish

#100;

//Addstimulushere

A=32'000000000;

B=32'h00000000;

Sel=1'b0;

#100;

A=32'000000000;

B=32'h00000000;

Sel=1'b1;

#100;

A=32'000000000;

B=32'h00000001;

Sel=1'b1;

#100;

end

endmodule

然后进行仿真,将工程管理区中View选项设置为Simulation,仿真参数设置完后,选中MUX32_2_1_tb模块,双击SimulateBehavioralModel,得到仿真结果,如图5所示:

图5模块MUX32_2_1的仿真结果

(2)5位2选1多路选择器

在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,创建一个VerilogModule模块,名称为:

MUX5_2_1,此时开发环境的工程管理区中将有一个MUX5_2_1(MUX5_2_1.v)模块,双击该模块,然后在源代码编辑区编写实现该模块的代码:

然后输入其实现代码:

moduleMUX5_2_1(

input[4:

0]A,

input[4:

0]B,

inputSel,

output[4:

0]O

);

assignO=Sel?

B:

A;

endmodule

在ISE集成开发环境中,进行语法检查(Synthesize→XST→CheckSyntax),检查通过后,对模块MUX5_2_1进行综合(Synthesize→XST→ViewRTLSchematic),得到RTL视图,结果如图6所示。

图6模块MUX5_2_1的综合(Synthesize)结果

在ISE集成开发环境中,对模块MUX5_2_1进行仿真(Simulation)。

首先输入如下测式代码:

moduleMUX5_2_1_tb;

reg[4:

0]A;

reg[4:

0]B;

regSel;

wire[4:

0]O;

//InstantiatetheUnitUnderTest(UUT)

MUX32_2_1uut(

.A(A),

.B(B),

.Sel(Sel),

.O(O)

);

initialbegin

//InitializeInputs

A=0;

B=0;

Sel=0;

//Wait100nsforglobalresettofinish

#100;

//Addstimulushere

A=5'00001;

B=5'00000;

Sel=1'b0;

#100;

A=5'00001;

B=5'00000;

Sel=1'b1;

#100;

A=5'00000;

B=5'00001;

Sel=1'b1;

#100;

end

endmodule

然后进行仿真,仿真结果如图7所示。

图7模块MUX32_2_1的仿真结果

(3)32位寄存器堆

在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,创建一个VerilogModule模块,名称为:

RegFile,输入其实现代码:

moduleRegFile(

input[4:

0]Rn1,Rn2,Wn,

inputWrite,

input[31:

0]Wd,

output[31:

0]A,B,

inputClock

);

reg[31:

0]Register[1:

31];

assignA=(Rn1==0)?

0:

Register[Rn1];

assignB=(Rn2==0)?

0:

Register[Rn2];

 

always@(posedgeClock)begin

if((Write)&&(Wn!

=0))Register[Wn]<=Wd;

end

endmodule

语法通过后,对模块RegFile进行综合(Synthesize→XST→ViewRTLSchematic),得到RTL视图,结果如图8所示。

图8模块RegFile的综合(Synthesize)结果

进行语法检查(Synthesize→XST→CheckSyntax),检查通过后,对模块RegFile进行仿真(Simulation),输入如下测式代码:

moduleRegFile_tb;

//Inputs

reg[4:

0]Rn1;

reg[4:

0]Rn2;

reg[4:

0]Wn;

regWrite;

reg[31:

0]Wd;

regClock;

//Outputs

wire[31:

0]A;

wire[31:

0]B;

//InstantiatetheUnitUnderTest(UUT)

RegFieluut(

.Rn1(Rn1),

.Rn2(Rn2),

.Wn(Wn),

.Write(Write),

.Wd(Wd),

.A(A),

.B(B),

.Clock(Clock)

);

initialbegin

//InitializeInputs

Rn1=0;

Rn2=0;

Wn=0;

Write=0;

Wd=0;

Clock=0;

//Wait100nsforglobalresettofinish

#100;

//Addstimulushere

Rn1=0;

Rn2=1;

Wn=1;

Write=1;

Wd=2;

Clock=1;

//Wait100nsforglobalresettofinish

#100;

Rn1=0;

Rn2=0;

Wn=2;

Write=1;

Wd=3;

Clock=1;

//Wait100nsforglobalresettofinish

#100;

Rn1=1;

Rn2=0;

Wn=0;

Write=0;

Wd=1;

Clock=1;

//Wait100nsfor

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1