《单周期CPU的设计与实现》Word格式.docx
《《单周期CPU的设计与实现》Word格式.docx》由会员分享,可在线阅读,更多相关《《单周期CPU的设计与实现》Word格式.docx(9页珍藏版)》请在冰点文库上搜索。
本实验所针对的教材:
《计算机组成与设计-硬件/软件接口》第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