组成原理课程设计.docx

上传人:b****5 文档编号:29315092 上传时间:2023-07-22 格式:DOCX 页数:54 大小:262.23KB
下载 相关 举报
组成原理课程设计.docx_第1页
第1页 / 共54页
组成原理课程设计.docx_第2页
第2页 / 共54页
组成原理课程设计.docx_第3页
第3页 / 共54页
组成原理课程设计.docx_第4页
第4页 / 共54页
组成原理课程设计.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

组成原理课程设计.docx

《组成原理课程设计.docx》由会员分享,可在线阅读,更多相关《组成原理课程设计.docx(54页珍藏版)》请在冰豆网上搜索。

组成原理课程设计.docx

组成原理课程设计

常规型硬联线控制器

的设计与调试

 

科目:

计算机组成原理

实验背景

硬布线控制器是早期设计计算机的一种方法。

这种方法是把控制部件看作为产生专门固定时序控制信号的逻辑电路,二次逻辑电路以示用最少元件和取得最高操作速度为设计目标。

一旦控制部件构成后,除非重新设计和物理上对它重新布线,否则要想增加新的控制功能是不可能的。

硬布线控制器是计算机中最复杂的逻辑部件之一,由于其结构上的缺陷使得对它进行设计和调试非常复杂且代价很大。

正因为如此,硬布线控制器被微程序控制器所取代。

但是随着新一代机器及VLSI技术的发展,硬布线逻辑设计思想又得到了重视。

设计要求

针对TEC-4实验台利用ispLSI1032芯片设计一个硬布线控制器,本控制器可以执行五条控制台指令:

PR,KRD,KWE,KLD,KRR以及九条机器指令:

ADD,SUB,MUL,AND,STA,LDA,JMP,

JC,STP。

实验目的

融会贯通计算机组成原理课程和计算机系统结构课程的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,特别是对硬联线控制器的认识。

学习运用ISP技术进行设计和调试的基本步骤和方法,熟悉集成开发软件中设计,模拟调试工具的使用,体会ISP技术相对于传统开发技术的优点。

培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。

实验设备

TEC-4计算机组成原理实验系统一台

双踪示波器一台

逻辑测试笔一只

ispLSI1032芯片一个

Lattice公司的IspExpert软件

实验准备

时序信号发生器:

由晶体振荡器产生MF信号(频率1MHz),同时产生T1,T2,T3,T4,W1,W2,W3,W4时序信号,关系如下图。

其中W1,W2,W3,W4用于硬布线控制器的节拍信号

实验台上自选器件实验区提供有IspLSI1032芯片及下载插座,可以从PC机上编程下载

DB,DP,DZ:

DP=1时,计算机处于单拍工作方式,按一次QD发送一组时序信号T1,T2,T3,T4;DB=1时,计算机处于单步方式,按一次QD发送一组W1,W2,W3,W4时序脉冲,同时如果执行过程当中遇到TJ指令,将停在当前节拍脉冲的T4时刻。

SKIP信号:

当SKIP=1时,信号由当前节拍直接跳到W4节拍

微操作控制信号总结如下:

控制信号

信号作用

信号有效条件

C

在加法运算和减法运算时产生的进位信号

T4上升沿

ALU_BUS

允许运算结果送往数据总线

1

LDDR1

M1=0时DR1接收寄存器堆A端口数据

T3下降沿

M1=1时DR1接收数据总线DBUS数据

LDDR2

M2=0时DR2接收寄存器堆B端口数据

T3下降沿

M2=1时DR2接收数据总线DBUS数据

WRD

控制双端口寄存器堆RF的写操作

1且T2上升沿

RS_BUS#

控制RF的B端口数据是否能送DBUS上

0

LDER

将DBUS上的数据打入暂存寄存器ER

1且T4上升沿

SW_BUS#

将SW7-SW0数据送往DBUS

0

CEL#

选中双端口存储器RAM左端口

0

LRW

允许RAM左端口读操作

1且T3上升沿

允许RAM左端口写操作

0且T3上升沿

CER

RAM右端口读出数据并放到指令总线INS上

1

禁止右端口操作

0

LDAR1

将DBUS数据打入地址寄存器AR1

1且T4上升沿

AR1_INC

AR1的值加1

1且T4上升沿

LDAR2

M3=0时AR2的数据从程序计数器PC打入

1且T2下降沿

M3=1时AR2的数据从DBUS打入

LDR4

M4=1时R4的数据从DBUS打入

1且T2下降沿

M4=0时R4的数据从IR0-IR3打入

PC_ADD

ALU2完成PC和IR低4位相加即PC+D

1

PC_INC

PC+1

1

LDPC

程序计数器PC接收来自DBUS的地址

1且T4上升沿

LDIR

将来自RAM的指令打入指令寄存器IR

1且T4上升沿

S2,S1,S0

选择运算器ALU的运算类型

1

 

数据通路图:

设计说明书

设计步骤

分别画出控制台指令及机器指令流程图。

根据流程图作出微操作控制信号的译码与时序分布表,然后用逻辑表达式表示出每个信号。

由逻辑表达式写出ABEL语言源代码。

对程序进行编译,下载到芯片。

连线,调试。

测试。

具体设计思路

根据要求,列出所需的控制台指令和机器指令

控制台指令名称

指令功能

指令格式

SWC

SWB

SWA

KRR

读寄存器堆方式

1

0

0

KRD

读双端口存储器方式

0

0

1

KWE

写双端口存储器方式

0

1

0

KLD

加载寄存器堆方式

0

1

1

PR

启动程序方式

0

0

0

机器指令名称

助记符

指令功能

指令格式

R7

R6

R5

R4

R3

R2

R1

R0

加法

ADDRd,Rs

Rd+Rs->Rd

0

0

0

0

RS1

RS0

RD1

RD0

减法

SUBRd,Rs

Rd-Rs->Rd

0

0

0

1

RS1

RS0

RD1

RD0

乘法

MULRd,Rs

Rd*Rs->Rd

0

0

1

0

RS1

RS0

RD1

RD0

逻辑与

ANDRd,Rs

Rd&Rs->Rd

0

0

1

1

RS1

RS0

RD1

RD0

存数

STARd,[Rs]

Rd->[Rs]

0

1

0

0

RS1

RS0

RD1

RD0

取数

LDARd,[Rs]

[Rs]->Rd

0

1

0

1

RS1

RS0

RD1

RD0

无条件转移

JMP[Rs]

[Rs]->PC

1

0

0

0

RS1

RS0

RD1

RD0

条件转移

JCD

C=1

PC+D->PC

1

0

0

1

D3

D2

D1

D0

停机

STP

暂停运行

0

1

1

0

X

X

X

X

设计指令流程图

硬布线控制器的指令流程图与微程序控制器的指令流程图基本一致。

实验台对每步程序的执行提供的节拍只有四个W1-W4,而控制台指令所需要的节拍要大于四个,这就需要我们在设计时将指令拆分一下,即一个指令占用两步,八个节拍,并能够在后四个节拍实现指令的循环执行。

于是,我们加了个ST内部信号作为标志位,当ST=0时,标志执行指令的前四个节拍,当ST=1时,标志执行指令的后四个节拍。

注意到只有CLR#到来后的第四拍时ST信号才发生翻转,所以又设了一个SSTO信号作为ST信号的触发信号。

具体实现ST-SSTO模块如下:

我们增加了一个标志位RUN,由于按CLR#按钮复位后,实验系统的时序停止在T4,W4,ST的值为0,这样SSTO=!

ST&W4的值为1.按QD启动按钮后,由于立即产生T1信号,在T1的上升沿使ST置1,在第一组W1,W2,W3,W4时,ST的值为1,这是我们不希望看到的。

增加了标志位RUN后,按CLR#按钮复位,使RUN为0。

由于SSTO=!

ST*W4*RUN,因此复位后的SSTO=0.按QD启动按钮,在T1的上升沿,使RUN=1。

根据SSTO的布尔表达式,在W1,W2,W3时,SSTO=0,直到W4时,才使SSTO=1,由于ST:

=CLR#*SSTO#CLR*ST,在W4过后的下一个T1的上升沿,才使ST置1,从而将控制台操作的两种状态区分开来。

设计的控制台指令流程图,机器指令流程图如下:

根据流程图,进行微操作信号的译码并列出时序表

说明:

我们将控制台指令KRR,KRD,KWE,KLD,PR分别拆分为KRR1,KRR2,KRD1,KRD2,

KWE1,KWE2,KLD1,KLD2和PR1,PR2。

每个小指令分别占用W1-W4四个节拍。

OUTPUT

ST=0

ST=1

KRR1

KRD1

KWE1

KLD1

PR1

KRR2

KRD2

KWE2

KLD2

ALU_BUS

AR1_INC

W4

W4

CEL#

W1

W1

W1

W1

CER

W2

W2

LDAR1

W4

W4

W4

W4

LDAR2

W4

W4

LDDR1

LDDR2

LDER

W3

LDIR

W2

W2

LDPC

W4

LDR4

W4

LRW

W1

W1

W1

M1

M2

M3

W4

W4

M4

W4

PC_INC

PC_ADD

RS_BUS#

W4

S0

S1

S2

SW_BUS#

W4

W4

W4

W4

W4

W1

W1,W3

SKIP

W1

W1

W1

W1

W1

W2

W1

W1

TJ

W4

W4

W4

W4

W1

W4

W2,W4

WRD

W4

SSTO

W4

W4

W4

W4

W4

ST=1PR2

OUTPUT

PR2

ADD

SUB

MUL

AND

LDA

STA

JMP

JC

STP

W3

W3

W3

W3

W4

ALU_BUS

AR1_INC

W3

W4

CEL#

W1

CER

W2

W2

LDAR1

W1

LDAR2

W2

W2

W2

W2

LDDR1

W2

W2

W2

W2

W2

LDDR2

W3

W3

W3

W3

W3

LDER

W1

LDIR

W4

W4&C

LDPC

W4

W4&C

LDR4

W3

W4

LRW

W2

W2

W2

W2

M1

W2

W2

W2

W2

W2

M2

W1

M3

W4

W4&C

M4

W1

PC_INC

W4&C

PC_ADD

W2

W2

W2

RS_BUS#

S0

S1

S2

SW_BUS#

W2

W2

W2

W2

SKIP

W4

TJ

W4

W4

W4

W4

W4

WRD

SSTO

说明:

图中绿色信号代表此时的微操作信号为低有效。

 

根据表格,列写出每个信号的逻辑表达式,并写出ABEL语言的源程序

ABEL语言源代码如下:

MODULEComputeDECLARATIONS

"INPUT

SWC,SWB,SWAPIN3..5;

IR7,IR6,IR5,IR4PIN6..9;

MF,T1,W1,W2,W3,W4,C,CLRPIN10..17;

"OUTPUT

ALU_BUS,AR1_INC,CEL,CER,LDAR1,LDAR2,LDDR1,LDDR2,LDER,LDIR,LDPC,LDR4,LRWPIN29..41;

PC_INC,PC_ADD,RS_BUS,SW_BUS,WRD,SKIP,TJ,M1,M2,M3,M4,S0,S1,S2PIN63..76;

"TEMP

MF1,SSTONODEISTYPE'COM';

RUN,STNODEISTYPE'REG';

tKRR,tKRD,tKWE,tKLD,tPRNODEISTYPE'COM';

KRR1,KRD1,KWE1,KLD1,PR1,KRR2,KRD2,KWE2,KLD2,PR2NODEISTYPE'COM';

ADD,SUB,MUL,AND,LDA,STA,JMP,JC,STPNODEISTYPE'COM';

CLK=.C.;

EQUATIONS

MF1=!

CLR&MF#T1&CLR;

RUN:

=CLR;

RUN.CLK=MF1;

ST:

=CLR&SSTO#CLR&ST;

ST.CLK=MF1;

SSTO=!

ST&RUN&W4;

“指令译码部分

tKRR=SWC&!

SWB&!

SWA;

tKRD=!

SWC&!

SWB&SWA;

tKWE=!

SWC&SWB&!

SWA;

tKLD=!

SWC&SWB&SWA;

tPR=!

SWC&!

SWB&!

SWA;

KRR1=!

ST&tKRR;

KRR2=ST&tKRR;

KRD1=!

ST&tKRD;

KRD2=ST&tKRD;

KWE1=!

ST&tKWE;

KWE2=ST&tKWE;

KLD1=!

ST&tKLD;

KLD2=ST&tKLD;

PR1=!

ST&tPR;

PR2=ST&tPR;

ADD=PR2&(!

IR7)&(!

IR6)&(!

IR5)&(!

IR4);

SUB=PR2&(!

IR7)&(!

IR6)&(!

IR5)&(IR4);

MUL=PR2&(!

IR7)&(!

IR6)&(IR5)&(!

IR4);

AND=PR2&(!

IR7)&(!

IR6)&(IR5)&(IR4);

LDA=PR2&(!

IR7)&(IR6)&(!

IR5)&(IR4);

STA=PR2&(!

IR7)&(IR6)&(!

IR5)&(!

IR4);

JMP=PR2&(IR7)&(!

IR6)&(!

IR5)&(!

IR4);

JC=PR2&(IR7)&(!

IR6)&(!

IR5)&(IR4);

STP=PR2&(!

IR7)&(IR6)&(IR5)&(!

IR4);

“输出管脚

ALU_BUS=(ADD#SUB#MUL#AND)&W3#(STA&W4);

AR1_INC=(KRD2#KWE2)&W4;

CEL=!

((KRD2#KWE2#KLD2#KRR2)&W1#(W3&LDA)#(W4&STA));

CER=(KLD2#KRR2)&W2#(W1&PR2);

LDAR1=W4&(KRR1#KRD1#KWE1#KLD1)#(W2&LDA)#(W2&STA);

LDAR2=W4&(KRR1#KLD1)#(PR2&W1);

LDDR1=W2&(ADD#SUB#MUL#AND);

LDDR2=LDDR1#(W2&STA);

LDER=W3&(KLD2#ADD#SUB#MUL#AND#LDA);

LDIR=CER;

LDPC=W4&(PR1#JMP#(JC&C));

LDR4=LDPC;

LRW=W1&KRD2#W3&LDA;

M1=!

LDDR1;

M2=!

LDDR2;

M3=W4&(KRR1#KLD1);

M4=W4&(PR1#JMP);

PC_INC=W1&PR2;

PC_ADD=W4&JC&C;

RS_BUS=!

(W2&(LDA#STA)#W4&(KRR2#JMP));

SW_BUS=!

(W1&(KWE2#KLD2#KRR2)#(W3&KLD2)#(W4&!

ST));

S0=SUB#STA;

S1=ADD#SUB;

S2=MUL;

SKIP=W1&!

ST#(W1&(KRD2#KWE2))#(W2&(KRR2#STA))#W2&(JMP#JC#STP);

TJ=W1&KRD2#W2&KLD2#W4&(tKRR#tKWE#tKLD)#W4&STP;

WRD=W4&(KLD2#ADD#SUB#MUL#AND#LDA);

END

对程序进行编译,无误后下载到芯片

连线,调试,验收

连线表格如下:

SWC

3

Input

PULLUP

LDDR1

35

Output

 

PULLUP

SWB

4

LDDR2

36

SWA

5

LDER

37

IR7

6

LDIR

38

IR6

7

LDPC

39

IR5

8

LDR4

40

IR4

9

LRW

41

MF

10

PC_INC

63

T1

11

PC_ADD

64

W1

12

RS_BUS

65

W2

13

SW_BUS

66

W3

14

WRD

67

W4

15

SKIP

68

C

16

TJ

69

CLR

17

M1

70

ALU_BUS

29

Output

PULLUP

M2

71

AR1_INC

30

M3

72

CEL

31

M4

73

CER

32

S0

74

LDAR1

 

33

S1

75

LDAR2

34

S2

76

验收程序:

地址

指令

机器代码

00H

LDAR0[R2]

58H

01H

LDAR1[R3]

5DH

02H

ADDR0R1

04H

03H

JC+5

95H

04H

ANDR1R0

31H

05H

SUBR0R3

1CH

06H

STAR0[R1]

44H

07H

MULR0R1

24H

08H

STP

60H

09H

JMP[R1]

84H

初始化:

寄存器

存入内容

R2

60H

R3

61H

内存单元

存入内容

60H

24H

61H

83H

计算结果:

内存单元

内容

60H

46H

61H

83H

R0

12H

设计中遇到的问题

关于时钟源工作过程的分析:

时钟源产生基本的时序控制信号。

在设计的过程中,我们发现在同一个节拍下每个信号的起作用的T时刻是不同的,如KWE2的W1节拍下,CEL#=0,LRW=0,在T3的上升沿将DBUS上的数据写入RAM中,可是同时SKIP信号也是有效的,于是我们在想:

会不会因为SKIP信号在T1时就有效导致信号直接由当前脉冲的T1跳到W4,这样DBUS上的数据还未来得及写入RAM就已经无效了,与此类似的还有TJ信号。

所以在一开始设计的时候我们将SKIP信号和TJ信号统统控制在T4时刻才出现,可是这样做使得控制信号的逻辑显得有些乱。

经过查找资料并分析了时序发生器的ABEL语言源文件得知当SKIP信号有效时,发生器仍然发送完当前节拍的所有信号才跳到W4节拍;当TJ信号有效时,发生器仍然发送完当前节拍的所有信号,最后停在当前节拍的T4时刻。

标志信号RUN的分析及测试

由控制台指令流程图可知一条控制台指令被分割成了两部分,一部分可以看作是指令执行的初始化(如选定中转地址,指定初始地址等),另一部分看作是指令的执行阶段(可以循环执行)。

每条指令执行时第一部分只执行一遍,第二部分是循环执行的,所以要保证ST信号第一遍执行时为0,之后保持为1。

该部分实现图如下所示:

CLR

CLR&SSTO#CLR&ST

!

CLR&MF#T1&CLR

MF1=!

CLR&MF#T1&CLR;

RUN:

=CLR;

RUN.CLK=MF1;

ST:

=CLR&SSTO#CLR&ST;

ST.CLK=MF1;

SSTO=!

ST&RUN&W4;

代码

 

说明:

当按一下CLR时将使得RUN和ST都变为零,且时序停留在W4,T4时刻,由于RUN=0,所以虽然在W4时刻,但是SSTO信号仍然为零,是无效的

启动程序后,在第一的T1的上升沿RUN变为1,于是当W4=1时SSTO=1,那么触发器ST的输入也变为1,在下一个T1的上升沿,ST将变为0,控制信号就由流程图的左半部跳至右半部。

 

实验心得

这是我们第一次做课程设计,学校给我们提供了实验环境,一流的实验设施,还配备了尽责热心的老师,我们有十分充足的时间来学习和设计。

开放性的实验环境也为我们发挥自己的创造力提供了充分的条件。

在这里我们不仅学到了许多在课堂上学不到的东西,而且锻炼了我们的动手和实践能力。

首先,这次课程设计是对计算机组成原理课程的加深和延续,很多内容虽然课本上没有详细讲解,但是很多东西是融会贯通的。

如果没有对微程序控制器的工作方式和原理的理解,哪能设计出硬布线控制器的控制逻辑。

所以这次实验,我们对计算机的工作原理有了更进一步的了解,尤其是指令系统的工作原理,各个部件的工作之间的协调和配合等。

同时,这次课程设计大大锻炼了我们的动手能力,由于是手工接线,任何一条线出现问题都会影响到整个系统的执行,所以当问题变得莫名其妙毫无头绪之时,保持清醒的头脑,冷静的分析变得尤为重要。

不仅如此,设计过程中团队的合作精神也得到了锻炼,一个大的

项目不是一个人能够独立承担的,需要大家的通力合作。

 

葛立峰

0112109班10号

 

表面上看,本次实验仅仅是要我们设计一个具有5条控制台指令9条机器指令的硬布线控制器,实际上却需要我们综合运用以往所学的很多关于计算机硬件的知识。

就本实验所考察的知识重点,我总结了一下,大致如下:

触发器的原理及应用

ABEL语言的应用及ispEXPERT的使用

指令周期的概念

时序产生器的原理和控制方式

TEC-4实验台的原理和操作

本次实验不仅仅需要我们动脑,更重要的是要求我们动手。

由列出微操作信号到指令流程图再到ABEL语言的源代码的实现,其间过程并不很难,复杂的是连线与调试,需要极大的耐

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

当前位置:首页 > 自然科学 > 物理

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

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