计算机组成原理课程设计实验报告Word文档格式.docx
- 文档编号:22879698
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:40
- 大小:178.10KB
计算机组成原理课程设计实验报告Word文档格式.docx
《计算机组成原理课程设计实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计实验报告Word文档格式.docx(40页珍藏版)》请在冰豆网上搜索。
MOV1Rs,Rd
0001
(Rs)→Rd
MULRs,Rd
0111
(Rs)*(Rd)→Rd
①对Rs和Rd的规定:
Rs或Rd
选定的寄存器
00
R0
01
R1
10
R2
11
R3
②模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:
7
6543210
符号位
尾数
、所有机器指令的微程序流程图
、汇编语言源程序
程序:
功能:
IN1R0从开关输入任意一个整数n→R0
MOVR1,1将立即数1→R1(R1用于存放参与运算的奇数)
MOVR2,0将立即数0→R2(R2用于存放累加和)
MOVR3,1将立即数1→R1(R1用于存放参与运算的奇数)L1:
CMPR0,R1将R0的整数n与R1的奇数进行比较,锁存CY/FC
和FZ/ZI
JBL2小于,则转到L2处执行
MOVR1,R3将R1寄存器的内容送给寄存器R3
MULR3,R3求平方
ADDR3,R2将平方送给R2
INCR1累加之后让R1的内容加1
JMPL1跳转到L1处继续执行
L2:
OUT1R2输出累加和
JMPL2循环显示
、机器语言源程序
助记符地址(十六进制)机器代码功能
IN1RO0010000000(SW)→R0
MOVR1,101100100011→R1
0200000001
MOVR2,003100100100→R2
0400000000
MOVR3,105100100111→R3
0600000001
L1:
CMPR0,R10710100001(R0)-(R1)
JBL20810110000L2→PC
0900010000
MOVR1,R30A00010111(R1)→R3
MULR3,R30B01111111(R3)*(R3)→R3
ADDR3,R20C11001110(R3)+(R2)→R2
INCR10D11010001(R1)+1→R1
JMPL10E11100000L1→PC
0F00000111
OUT1R21011111000(R2)→LED
JMPL21111100000L2→PC
1200010000
、机器语言源程序的功能仿真波形图及结果分析
注释:
1、R2:
存放累加和(本例中初始值R2=00,最后值R2=0E)
2、R1:
存放初始值,并进行自加运算。
(R1=01)
3、R3:
存放R1中的数据,并进行平方元算,最后将运算结果送给R2。
(R3=01)
4、R0:
用来存放任意值N。
(R0=03)
5、ID[7..0]:
外部输入,与R0的值相同(ID[7..0]=03)
6、OD[7..0]:
外部输出数据,只有最后才会输出数据,其值与R2的最后结果相同(最后结果OD[7..0]=0E)
7、IR:
指令寄存器,存放各指令(本例中:
00-80-91-92-93-A1依次执行的是INR0MOVR1,1MOVR2,0MOVR3,1CMPR0,R1这四条指令)
8、AR:
地址寄存器,存放各指令的地址(本例中:
00---IN指令的地址;
;
01-02----MOVR1,1指令的地址;
03-04----MOVR2,0指令的地址;
05-06----MOVR3,1指令的地址;
07-----CMP指令的地址)
NOTE:
IR、AR这两行的数据要对应机器语言源程序来看去理解
9、ntrom5|ADDR:
控制存储器,存放所有微指令和对应的微地址
本行的数据要根据指令流程图去理解;
本例中MOV指令的地址和后继微地址为:
02-00-09-03-00而02-00-0A-04-05-00是CMP指令的地址和后继微地址。
十、故障现象和故障分析
1、源程序中出现错误。
本例中若只用三个寄存器,去掉R3这个有转换作用的寄存器,那么直接用R1相乘的话就会使得R1的值不是加1递增,而是在平方的基础上自动加1,比如:
当R1=01时,经过平方,R1寄存器中的内容为1,加1后变为02,经过下一次循环,平方后变为04,在进行加1后就会变为05,明显少算了许多值。
2、在连线顶层电路的过程中出错。
有时因为不认真连错线就会在仿真的时候,出现不正常的警告,而香型的项则不会输出任何数据,就像OD[7..0]此行,初始的时候是不应该有输出的,但是若在连线的时候错连或不连就会导致,在刚开始的时候就会有数值的输出,误导结果分析。
3、指令流程图中出现错误。
指令流程图可以说是整个实验中比较关键的一项,它的指令流程和指令的地址和后继微地址,是至关重要的,如果指令微地址的分配不合理会导致指令执行的混乱,导致不能指向正常执行的指令,结果在方针是就不会有结果输出或者输出错误的结果。
4、微指令代码表的填写不正确。
微指令代码表中关键是那些控制信号的输入一定要填写正确,否则在应该读入数据的时候,系统没有放映;
在应该读出数据的时候,不能执行相应的功能。
下面列举一些比较重要的功能
(1)、2423222120191817161514131211109876543210
LOADLDPCLDARLDIRLDRiRD_BRS_BS1S0ALU_BLDACLDDRWRCSSW_BLED_BLDFRP1P2后继微地址
76543210
操作码
立即数或转移地址
(2)、
26252423222120191817161514131211109876543210
WRCSLOADLDPCLDARLDIRLDRiRD_BRS_BS1S0ALU_BLDACLDDRWR_OCS_ISW_BLED_BLDFRP1P2后继微地址
WR_O和LED_B一起控制输出,可以省去WR_O;
CS_I为ROM的片选信号。
(3)、
算术逻辑运算单元ALU的功能表
S1
S0
功能
(AC)+(DR)
1
(AC)-(DR)
(AC)+1
(AC)*(DR)
(4)、程序计数器PC的功能表
CLR
LOAD
LDPC
将PC清0
↑
BUS-->
PC
不装入,也不计数
PC+1
(5)、控制信号的功能(均为低电平有效)
ALU_B
R0_B
R1_B
R2_B
R3_B
功能
输出ALU的结果
输出(R0)
输出(R1)
输出(R2)
输出(R3)
(6)、主存储器(CS低电平有效)
CS
不选择
读
5、小细节方面:
在编写各器件源程序的时候要仔细,要和之前所做的指令流程、指令地址、微指令代码表以及自己所做实验中的各引脚的多少,应一一对应。
比如,本例中用到四个寄存器,就要在编写的时候改变一些原器件的引脚,如CROM、MCOMMAND的引脚要添加寄存器R3相关的引脚,R3_B等。
6、在仿真的时候:
要学会正确且熟练地输入各个初始值,要学会对应之前的成果来验证仿真的正确性,Q和CLR两个信号的控制要正确。
十一、软件清单,含各个部件的VHDL源程序(.vhd)或图像描述文件(.gdf)
、算术逻辑单元ALU
--ALU运算器单元源程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYALUIS
PORT(
A:
INSTD_LOGIC_VECTOR(7DOWNTO0);
B:
S1,S0:
INSTD_LOGIC;
BCDOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
CY,ZI:
OUTSTD_LOGIC
);
ENDALU;
ARCHITECTUREAOFALUIS
SIGNALAA,BB,TEMP:
STD_LOGIC_VECTOR(8DOWNTO0);
BEGIN
PROCESS(S1,S0)
BEGIN
IF(S1='
0'
ANDS0='
)THEN--执行加法运算
AA<
='
&
A;
BB<
B;
TEMP<
=AA+BB;
BCDOUT<
=TEMP(7DOWNTO0);
--输出
CY<
=TEMP(8);
--进位
IF(TEMP="
100000000"
)THEN--即TEMP(8)=1,进位
ZI<
1'
;
--为0
ELSE
ZI<
--不为0
ENDIF;
ELSIF(S1='
)THEN--执行比较或减法操作
BCDOUT<
=A-B;
IF(A<
B)THEN--小于
CY<
--借位
ZI<
ELSIF(A=B)THEN--等于
--不借位
--等于0
ELSE--大于
--不借位
)THEN--执行加1操作
AA<
A;
TEMP<
=AA+1;
BCDOUT<
IF(TEMP="
)THEN
ELSE
ENDIF;
ANDS0='
)THEN--执行乘法运算
BB<
=AA*BB;
="
00000000"
ENDPROCESS;
ENDA;
、状态寄存器LS74单元
--状态条件寄存器单元源程序如下:
ENTITYLS74IS
LDFR:
FC,FZ:
ENDLS74;
ARCHITECTUREAOFLS74IS
PROCESS(LDFR)
IF(LDFR'
EVENTANDLDFR='
)THEN--时钟信号LDFR的上边沿有效
FC<
=CY;
--锁存进位\借位标志位
FZ<
=ZI;
--锁存零标志位
、--暂存器单元\通用寄存器\地址寄存器\指令寄存器单元LS273
ENTITYLS273IS
D:
CLK:
O:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
ENDLS273;
ARCHITECTUREAOFLS273IS
PROCESS(CLK)
IF(CLK'
EVENTANDCLK='
)THEN--时钟信号CLK的上边沿有效
O<
=D;
--将输入的内容直接送给输出
、1:
2分配器单元FEN2
--1:
2分配器单元源程序如下:
ENTITYFEN2IS
WR,LED_B:
X:
W1,W2:
ENDFEN2;
ARCHITECTUREAOFFEN2IS
PROCESS(LED_B,WR)
IF(LED_B='
ANDWR='
W2<
=X;
--将数据送往输出设备
ELSE
W1<
--将数据会送到数据内部通路
、3选1数据选择器MUX3单元
--3选1数据选择器单元源程序如下:
ENTITYMUX3IS
ID:
SW_B,CS:
N1,N2:
EW:
ENDMUX3;
ARCHITECTUREAOFMUX3IS
PROCESS(SW_B,CS)
IF(SW_B='
EW<
=ID;
--从输入设备输入数据
ELSIF(CS='
=N2;
--将ROM中读出的指令代码送入内部数据通路
=N1;
--将4选1多路选择器的输出送入内部数据通路
、4选1数据选择器MUX4单元
--4选1数据选择器单元源程序如下:
ENTITYMUX4IS
C,D,E,F,G:
X1,X2,X3,X4,X5:
W:
);
ENDMUX4;
ARCHITECTUREAOFMUX4IS
SIGNALSEL:
STD_LOGIC_VECTOR(4DOWNTO0);
SEL<
=G&
F&
E&
D&
C;
PROCESS(SEL)
IF(SEL="
11110"
)THEN--输出R0的内容
W<
=X1;
ELSIF(SEL="
11101"
)THEN--输出R1的内容
=X2;
11011"
)THEN----输出R2的内容
=X3;
10111"
)THEN----输出ALU的运算结果
=X4;
01111"
)THEN--输出R3的内容
=X5;
NULL;
、程序计数器PC单元
--程序计数器单元源程序如下:
--访问只读存储器ROM的程序计数器
ENTITYPCIS
LOAD,LDPC,CLR:
ENDPC;
ARCHITECTUREAOFPCIS
SIGNALQOUT:
STD_LOGIC_VECTOR(7DOWNTO0);
PROCESS(LDPC,CLR,LOAD)
BEGIN
IF(CLR='
QOUT<
--将PC清0
ELSIF(LDPC'
EVENTANDLDPC='
)THEN--LDPC上边沿有效
IF(LOAD='
--将数据总线BUS的内容送入PC
=QOUT+1;
--PC+1
=QOUT;
、主存储器单元
--一个带有8位地址输入和8位输出的只读存储器
--主存储器ROM16单元,用来存放CPU要运行的程序和数据
ENTITYROM16IS
ADDR:
CS:
DOUT:
ENDROM16;
ARCHITECTUREAOFROM16IS
DOUT<
10000000"
whenaddr="
andcs='
else--inr0
"
10010001"
00000001"
else--movr1,0
00000010"
else
10010010"
00000011"
else--movr2,0
00000100"
10010011"
00000101"
else--movr3,1
00000110"
else
10100001"
00000111"
else--L1:
cmpr0,r1
10110000"
00001000"
else--jbL2
00010000"
00001001"
00010111"
00001010"
else--mov1r1,r3
01111111"
00001011"
else--mulr3,r3
11001110"
00001100"
else--addr3,r2
11010001"
00001101"
else--incr1
11100000"
00001110"
else--jmpL1
00001111"
11111000"
else--L2:
outr2
00010001"
else--jmpL2
00010010"
and
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 课程设计 实验 报告