《单周期CPU的设计与实现》Word格式.docx

上传人:b****5 文档编号:8365073 上传时间:2023-05-11 格式:DOCX 页数:9 大小:22.55KB
下载 相关 举报
《单周期CPU的设计与实现》Word格式.docx_第1页
第1页 / 共9页
《单周期CPU的设计与实现》Word格式.docx_第2页
第2页 / 共9页
《单周期CPU的设计与实现》Word格式.docx_第3页
第3页 / 共9页
《单周期CPU的设计与实现》Word格式.docx_第4页
第4页 / 共9页
《单周期CPU的设计与实现》Word格式.docx_第5页
第5页 / 共9页
《单周期CPU的设计与实现》Word格式.docx_第6页
第6页 / 共9页
《单周期CPU的设计与实现》Word格式.docx_第7页
第7页 / 共9页
《单周期CPU的设计与实现》Word格式.docx_第8页
第8页 / 共9页
《单周期CPU的设计与实现》Word格式.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《单周期CPU的设计与实现》Word格式.docx

《《单周期CPU的设计与实现》Word格式.docx》由会员分享,可在线阅读,更多相关《《单周期CPU的设计与实现》Word格式.docx(9页珍藏版)》请在冰点文库上搜索。

《单周期CPU的设计与实现》Word格式.docx

  本实验所针对的教材:

《计算机组成与设计-硬件/软件接口》第4版,DavidA.

  Patterson、JohnL.Hennessy著,机械工作出版社。

  计算机科学与工程学院1

  1.实验内容与要求

  实验内容

  1.本实例所设计CPU的指令格式的拟定;

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

3.CPU各主要功能部件的设计与实现;

4.CPU的封装;

  5.仿真测试及板级测试。

  实验要求

  1.设计的CPU能够执行20条整数指令,每条指令的编码长度均为32位;

2.指令类型应有:

计算类型、访问存储器类型、条件转移类型和无条件转移类型;

3.操作数应有:

寄存器操作数、立即数;

  4.测试程应不少于10条,将设计成果仿真测试并起先板级验证。

  计算机科学与工程学院2

  2.实验环境

  2.1硬件平台

  本实验所需的硬件主要有:

PC计算机和FFPEG实验开发板,具体要要求如下:

  1.IBMPC及兼容计算机:

内存≥1GB,硬盘空间≥30GB2.FPGA开发套件,本实验采用的是AnvylSpartan6/XC6SLX453.USB连接线

  AnvylSpartan6/XC6SLX45的主要特点:

  通用输入接口

  14个LED:

8个红色,2组“红绿灯”模式8个滑动开关4个按键

  6个7段数码管

  2组拨码开关音频接口:

I2SCodec接口视频接口

  HDMI输出接口

  12比特VGA接口,使用无源电阻网路USB接口

  USB1:

JTAG编程及UART

  USB2/3:

USB设备接口,可接HID设备或U盘片外存储器

  DDR2:

256MB  SRAM:

2MB  QSPIFalsh:

32MBOLED:

128×

32蓝色显示

  LCD液晶屏:

480×

272全彩色液晶触摸屏Clock:

100MHz单端CMOS晶振

  2.2软件平台

  1.操作系统:

WindowsXP、Win7;

  2.开发平台:

XilinxISEDesignSuite集成开发系统;

3.编程语言:

VerilogHDL硬件描述语言。

  计算机科学与工程学院3

  图4-9模块MUX32_2_1综合结果

  Step4:

仿真

  在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,会弹出如图4-10所示的NewSourceWizard对话框:

SelectSourceType。

在图4-10选择VerilogTestFixture,输入测试文件名:

MUX32__2_1_tb,单击Next按钮,进入下一个对话框,如图4-11所示。

  图4-10创建仿真模块

  图4-11创建仿真模块

  在图4-11中工程中所有的模块名都会显示出来,选择要测试的模块MUX32_1,点击Next按钮,再点击Finish按钮,ISE会在源代码xx区自动生成测试模块的代码,如图4-12所示。

  计算机科学与工程学院

  14

  图4-12VerilogTestFixture–MUX32_1

  在图4-12中示了刚生成的MUX32_1_tb模块,在该模块中添加如下测试代码:

  //Addstimulushere

  ALOC=V5;

  16

  NETALOC=U4;

NETALOC=V3;

NETALOC=P4;

NETBLOC=R4;

NETBLOC=P6;

NETBLOC=P5;

NETBLOC=P8;

  #Leds

  NETOLOC=W3;

NETOLOC=Y4;

NETOLOC=Y1;

NETOLOC=Y3;

  约束完成后,下一个步骤就是实现(Implementation)。

所谓实现,是指将综合输出的逻辑网表翻译成所选器件的底层模块和硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。

  在ISE中,执行实现过程,会自动执行翻译、映射和布局布线过程:

也可单独执行。

在过程管理区双击ImplementationDesign选项,就可以自动完成实现的3个步骤,如图4-16所示。

  图4-16RunningSynthesis

  完成Place&

Route后,在图4-16中双击GenerateProgrammingFile项生成二进制比

  特文件mux32_2_。

  Step5:

流代码生成与下载

  将Anyvl开发板与计算机通过USB线连接好,开发板加电,启动DigilentAdept软件,系统开始自动连接FPGA设备,成功检测到设备后,会显示出JTAG链上所用芯片,如图4-17所示。

  计算机科学与工程学院17

  图4-17DigilentAdept软件

  在图4-17中点击Browse按钮,找到刚才生成的二进制比特文件mux32_,然后点击Program按钮开始下载,下载成功后会在图4-17下面的状态栏中显示ProgrammingSuccessful。

同学们可在开发板上拨动开关SW0S~SW7和按钮BTN0,并观察LED0~LED3的显示,思考一下观察的结果与设计是否一致。

  4.232位4选1选择器的设计与实现

  32位4选1选择器的逻辑框图如图4-18所示。

  Sel[1:

0]Function:

  A[31:

0]B[31:

0]C[31:

0]D[31:

0]MUXSel[1:

0]=00:

O=A

  O[31:

0]

0]=01:

O=BSel[1:

0]=10:

O=CSel[1:

0]=11:

O=D

  图4-1832位4选1逻辑框图

  32位4选1选择器的模块设计步骤可参考32位2选1选择器的设计步骤,下面给出32位4选1选择器的模块代码。

  moduleMUX32_4_1(

  input[31:

0]A,input[31:

0]B,input[31:

0]C,input[31:

0]D,input[1:

0]Sel,output[31:

0]O

  18

  );

  assignO=(Sel==2'

b00)A:

(Sel==2'

b01)B:

b10)C:

D;

Endmodule

  4.35位2选1选择器的设计与实现

  5位2选1选择器的逻辑框图如图4-19所示。

  Sel

  Function:

  A[4:

0]B[4:

  MUXO[4:

  Sel=0:

O=ASel=1:

O=B

  图4-195位2选1逻辑框图

  5位2选1选择器的模块设计步骤可参考32位2选1选择器的设计步骤,下面给出5位2选1选择器的模块代码。

  moduleMUX5_2_1(

  input[4:

0]A,input[4:

0]B,inputSel,output[4:

0]O  );

  assignO=SelB:

A;

  4.4带有异步清零的32位D触发器的设计与实现

  异步是指清零与时钟无关,只要有效就清零。

其设计步骤可参考32位2选1选择器的设计步骤,下面给出其模块Verilog实现代码:

  moduledff32(

0]D,input  Clock,input  Reset,

  outputreg[31:

0]Q  );

  always@(posedgeClockornegedgeReset)beginif(Reset==0)Q>

Sa;

  else  O=$signed(D)>

>

end

  endmodule

  4.632位加/减法器的设计与实现

  32位加/减法器的功能是完成32位的加法/减法运算。

于:

  ABA(B)AB1

  故可以用加法器实现减法操作。

下面给出其模块Verilog实现代码:

  moduleaddsub32(

0]B,input  sub,output[31:

0]Result  );

  cla32as32(A,B^{32{sub}},sub,Result);

  modulecla32(

0]a,input[31:

0]b,input  c,output[31:

0]s  );

  assigns=a+b+c;

endmodule

  计算机科学与工程学院20

  5.运算器的设计与实现

  运算器ALU是CPU组成的核心部件之一,其实现方法主要有2种:

一种是以加法器为核心,通过改变进位函数实现;

另一种是运算部件并行多路选择实现。

本实验采用运算部件并行多路选择实现。

综合表3-1的指令,ALU只需完成9种运算即可,具体完成的功能如表5-1所示。

  表5-1:

ALU功能真值表

  ALU_Operationx000x100x001x101x010x110001101111111功能描述AddSubAndOrXorLuiSllSrlSraALU的逻辑框图如图5-1所示。

在图5-1中各信号的功能:

  ALU_Operation[3:

  A:

操作数,32位,输入;

B:

ALU_Operation:

4位操作码,输

  Zero

  Result[31:

0]入;

  Result:

运算结果,32位,输出;

Zero:

零标志,1位;

当运算结果为0时,该位为1,否则为0;

  B[31:

0]图5-1ALU电路符号

  在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,选择VerilogModule输入,并输入Verilog文件名:

ALU,单击Next按钮进入端口定义对话框。

其中ModuleName栏输入模块名:

ALU,单击Next进入下一步,点击Finish完成创建。

ALU模块的Verilog程序参考代码:

  moduleALU(

0]B,

  21

  in

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2