桂电计组课设报告Word下载.docx
- 文档编号:18041542
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:35
- 大小:631.04KB
桂电计组课设报告Word下载.docx
《桂电计组课设报告Word下载.docx》由会员分享,可在线阅读,更多相关《桂电计组课设报告Word下载.docx(35页珍藏版)》请在冰豆网上搜索。
0001
×
输入设备→Rd
MOVRd,im
0010
im
立即数→Rd
ADDRs,Rd
0100
(Rs)+(Rd)→Rd,锁存标志位
DECRd
0110
(Rd)-1→Rd,锁存标志位
JMPaddr
1001
addr
addr→PC
OUTRs
1010
(Rs)→输出设备
MULRd,Rd
1100
(Rd)*(Rd)→Rd
CMPRs,Rd
1101
(Rs)-(Rd),锁存SF和CF
JSaddr
1110
若小于,则addr→PC
(11)其中对Rs和Rd的规定
Rs或Rd
选定寄存器
00
R0
01
R1
R2
11
R3
(12)模型计算机规定数据的表示采用定点整数补码表示,单字长8位,其格式如下:
7
6543210
符号位
尾数
五、设计时序产生器电路
六、机器指令的微程序流程图
注:
以结尾的后继微地址都是00
七、嵌入式CISC模型计算机的顶层电路图
八、汇编语言源程序
指令功能
MOVR1,0--R1置为0,用于判断正数;
MOVR2,0--R2置为0,用于存放平方和;
MOVR3,4--R3置为4,计输入次数;
L1:
INR0--输入数据存到R0;
CMPR1,R0—将R0与R1比较,判断正负;
JSL2--若为负数,跳到L2执行;
MULR0,R0--若为正数,作平方运算存到R0;
ADDR0,R2--R0+R2结果存到R2;
L2:
DECR3--每输入一次,R3由4自减到0;
CMPR3,R1--判断次数;
JSL1--次数不到5次,返回L1继续输入数据;
L3:
OUTR2--满5次,输出结果;
JMPL3--结束
九、机器语言源程序
地址
汇编语言源程序
机器语言
00
MOVR1,0
0010000100000000
01
MOVR2,0
0010001000000000
02
MOVR3,4
0010001100000100
03
INR0
0001000000000000
04
CMPR1,R0
1101010000000000
05
JSL2
1110000000001000
06
MULR0,R0
1100000000000000
07
ADDR0,R2
010*********
08
DECR3
0110001100000000
09
CMPR3,R1
1101110100000000
0A
JSL1
1110000000000011
0B
OUTR2
1010100000000000
0C
JMPL3
1001000000001011
十、机器语言源程序的功能仿真波形图及结果分析
输入5个数据:
01,FF(-1),02,FE(-2),03
结果应为:
0E
最后的仿真图中,R2与OUTBUS上数据均为0E,仿真测试成功。
下面来分析下输入01后的仿真图:
输入01,R0由00变为01,01为正数,PC从05->
06->
07->
08,R0进行自乘,结果为01,R0与R2相加,R2变为01,R3自减一,由04变为03,PC从0A->
0B->
03,继续输入。
输入FF后的仿真图:
输入FF,R0由01变为FF,FF为负数,PC从05->
08,R2的值不变,R3自减一,由03变为02。
输入最后一个数03后的仿真图:
输入03,R0由FE变为03,03为正数,PC从05->
08,R0进行自乘,与R2进行加法运算,R2变为0E,R3自减一,由00变为FF,FF为负数,PC由0A->
0C->
0D->
0B,R2输出,OUTBUS循环显示。
十一、微命令格式和微指令代码表
(1)设计微指令格式和微指令代码表
CISC模型机系统使用的微指令采用全水平型微指令,字长为26位,其中微命令字段为18位,P字段为2位,后继微地址为6位,其格式如下:
微地址
LOAD
LDPC
LDAR
LDIR
LDRi
LDPSW
Rs_B
S2
S1
S0
ALU_B
SW_B
LED_B
RD_D
CS_D
RAM_B
CS_I
ADDR_B
P1
P2
uA5~uA0
1
0D
0E
10
(2)设计地址转移逻辑电路
地址转移逻辑电路是根据微程序流程图中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。
由于微地址寄存器中的触发器异步置“1”端低电平有效,与µ
A4~µ
A0对应的异步置“1”控制信号SE4~SE0的逻辑表达式为:
(µ
A5的异步置“1”端SE5实际未使用)
SE4=SF·
P
(2)·
T4
SE3=I15·
P
(1)·
SE2=I14·
SE1=I13·
SE0=I12·
需要注意的是:
地址转移逻辑电路中异步置“1”信号SE4~SE0表达式的确定与P字段测试时转移微地址的确定密切相关。
十二、故障现象与故障分析
在这次课程设计,虽然最终顺利的完成了,但是在前期的分析以及调试过程发现了不少问题。
第一个问题是关于JS指令的问题,设计JS是在判断数为负数的时候跳转,如何设置标志位SF,这是首先需要解决的问题。
运算结果的第七位为1时SF=1,否则SF=0,这就需要修改ALU单元,PSW单元以及ADDR单元当中的标志位,在ADDR中,SE4<
=NOT((NOTSF)ANDP2ANDT4)。
第二个问题是运行仿真图置数的问题,前几次检查运行结果均发现不对,于是检查各个寄存器的值,发现有一个数没有打入R0中,而是直接跳过了,询问同学才知道,在INTBUS上置数的长度应该达到下一个IN指令的地方。
第三个问题是判断正负出错的问题,通过前面的仔细检查,数据已经全部置入进去,但是运行结果不对,检查发现在汇编转换为机器语言的时候有两个寄存器写反了,修改后重新编译,最终得到正确结果。
十三、心得体会
对于计算机组成原理课设,周日上第一节课的时候还听得一头雾水,完全不知道如何下手。
后来跑去图书馆去借了《计算机原理课程设计》。
没开始做设计时,看到课程设计那本书,脑子里没有任何想法。
因为根本不知道自己设计指令是什么意思。
于是去图书馆借了很多关于这方面的书籍进行阅读,在明白之后大致原理之后才开始动手做课设。
在开始编写汇编的时候,由于对之前学习过的汇编语言的遗忘,找出了汇编的课本又重新温习了一边,最后写出了汇编程序。
计组课设的最重要的就是微指令流程图的设计以及微指令的设计,这需要用到这个学期学习的《计算机组成原理》的相关知识,通过边阅读课本以及对照老师给的样例,最终设计出来了属于自己的流程图,设计微指令的时候,必须要懂得哪些是高电平有效,低电平有效或是上边沿有效,这样才能完成自己的设计。
我觉得做课设最关键的其实就是认真和细心,特别是在汇编语言转换成机器语言的时候,不小心弄错寄存器就是一个很大的问题,还有在之后将自己设计的微指令输入到CONTROM中,机器指令输入到ROM中的时候要特别的小心,不能输错一位,否则运行结果就会出现很大的偏差。
通过本次计组课程设计,对CPU的工作原理有了更好的理解,最后也设计出来一个CISC模型机,发现自己对于基础知识的掌握不太牢固,并且学习到如何运用这些知识来处理一些比较实际的问题。
让自己知晓了要多学习,多实践,只有自己亲自去做了才知道事实是怎么样的。
能够完成本次课设还要感谢陈老师的耐心指导。
十四、软件清单
各个部件的VHDL源程序(.vhd)或图形描述文件(.gdf)
1.MMM
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMMMIS
PORT(
SE:
INSTD_LOGIC;
CLK:
D:
CLR:
UA:
OUTSTD_LOGIC
);
ENDMMM;
ARCHITECTUREAOFMMMIS
BEGIN
PROCESS(CLR,SE,CLK)
BEGIN
IF(CLR='
0'
)THEN
UA<
='
;
ELSIF(SE='
)THEN
1'
ELSIF(CLK'
EVENTANDCLK='
=D;
ENDIF;
ENDPROCESS;
ENDA;
2.AA电路图
3.CONTROM控制寄存器
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCONTROMIS
PORT(ADDR:
INSTD_LOGIC_VECTOR(5DOWNTO0);
OUTSTD_LOGIC_VECTOR(5DOWNTO0);
O:
OUTSTD_LOGIC_VECTOR(19DOWNTO0)
);
ENDCONTROM;
ARCHITECTUREAOFCONTROMIS
SIGNALDATAOUT:
STD_LOGIC_VECTOR(25DOWNTO0);
BEGIN
PROCESS
CASEADDRIS
WHEN"
000000"
=>
DATAOUT<
="
11010010001111110110000000"
000001"
10001010001011111100000000"
000010"
10001010001111111000000000"
000100"
10001110000111111100000000"
000110"
10001110110111111100000000"
001001"
01000010001111111000000000"
001010"
10000000001101111100000000"
001100"
10001110100111111100000000"
001101"
10000110010111111100000000"
001110"
10000010001111111101000000"
010000"
WHENOTHERS=>
10000010001111111100000000"
ENDCASE;
UA(5DOWNTO0)<
=DATAOUT(5DOWNTO0);
O(19DOWNTO0)<
=DATAOUT(25DOWNTO6);
4.ADDR地址寄存器
ENTITYADDRIS
I15,I14,I13,I12:
SF,CF,T4,P1,P2:
SE5,SE4,SE3,SE2,SE1,SE0:
OUTSTD_LOGIC
ENDADDR;
ARCHITECTUREAOFADDRIS
SE5<
SE4<
=NOT((NOTSF)ANDP2ANDT4);
SE3<
=NOT(I15ANDP1ANDT4);
SE2<
=NOT(I14ANDP1ANDT4);
SE1<
=NOT(I13ANDP1ANDT4);
SE0<
=NOT(I12ANDP1ANDT4);
5.MCOMMAND微命令寄存器
ENTITYMCOMMANDIS
T2,T3,T4:
INSTD_LOGIC_VECTOR(19DOWNTO0);
LOAD,LDPC,LDAR,LDIR,LDRI,LDPSW,RS_B,S2,S1,S0:
OUTSTD_LOGIC;
ALU_B,SW_B,LED_B,RD_D,CS_D,RAM_B,CS_I,ADDR_B,P1,P2:
ENDMCOMMAND;
ARCHITECTUREAOFMCOMMANDIS
STD_LOGIC_VECTOR(19DOWNTO0);
PROCESS(T2)
IF(T2'
EVENTANDT2='
)THEN
DATAOUT(19DOWNTO0)<
=D(19DOWNTO0);
LOAD<
=DATAOUT(19);
LDPC<
=DATAOUT(18)ANDT4;
LDAR<
=DATAOUT(17)ANDT3;
LDIR<
=DATAOUT(16)ANDT3;
LDRI<
=DATAOUT(15)ANDT4;
LDPSW<
=DATAOUT(14)ANDT4;
RS_B<
=DATAOUT(13);
S2<
=DATAOUT(12);
S1<
=DATAOUT(11);
S0<
=DATAOUT(10);
ALU_B<
=DATAOUT(9);
SW_B<
=DATAOUT(8);
LED_B<
=DATAOUT(7);
RD_D<
=NOT(NOTDATAOUT(6)AND(T2ORT3));
CS_D<
=NOT(NOTDATAOUT(5)ANDT3);
RAM_B<
=DATAOUT(4);
CS_I<
=DATAOUT(3);
ADDR_B<
=DATAOUT
(2);
P1<
=DATAOUT
(1);
P2<
=DATAOUT(0);
6.F1F2F3
ENTITYF1IS
UA5,UA4,UA3,UA2,UA1,UA0:
INSTD_LOGIC;
OUTSTD_LOGIC_VECTOR(5DOWNTO0)
ENDF1;
ARCHITECTUREAOFF1IS
D(5)<
=UA5;
D(4)<
=UA4;
D(3)<
=UA3;
D
(2)<
=UA2;
D
(1)<
=UA1;
D(0)<
=UA0;
ENTITYF2IS
INSTD_LOGIC_VECTOR(5DOWNTO0);
OUTSTD_LOGIC
ENDF2;
ARCHITECTUREAOFF2IS
UA5<
=D(5);
UA4<
=D(4);
UA3<
=D(3);
UA2<
=D
(2);
UA1<
=D
(1);
UA0<
=D(0);
ENTITYF3IS
INSTD_LOGIC_VECTOR(3DOWNTO0);
UA3,UA2,UA1,UA0:
ENDF3;
ARCHITECTUREAOFF3IS
7.微程序控制器CROM
8.ALU逻辑单元
USEIEEE.STD_LOGIC_SIGNED.all;
ENTITYALUIS
X:
INSTD_LOGIC_VECTOR(7DOWNTO0);
Y:
S2,S1,S0:
ALUOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
CF,SF:
ENDALU;
ARCHITECTUREAOFALUIS
SIGNALAA,BB,TEMP:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALTEMP1:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IF(S2='
ANDS1='
ANDS0='
)THEN--ADD
AA<
&
X;
BB<
Y;
TEMP<
=AA+BB;
ALUOUT<
=TEMP(7DOWNTO0);
CF<
=TEMP(8);
SF<
=TEMP(7);
ELSIF(S2='
)THEN--CMP(SUB)
ALUOUT<
=X-Y;
IF(X<
Y)THEN
ELSIF(X=Y)THEN
ELSE
EN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 桂电计组课设 报告