计算机组成原理课程设计硬布线控制器的设计与实现.docx

上传人:b****6 文档编号:8551226 上传时间:2023-01-31 格式:DOCX 页数:18 大小:171.82KB
下载 相关 举报
计算机组成原理课程设计硬布线控制器的设计与实现.docx_第1页
第1页 / 共18页
计算机组成原理课程设计硬布线控制器的设计与实现.docx_第2页
第2页 / 共18页
计算机组成原理课程设计硬布线控制器的设计与实现.docx_第3页
第3页 / 共18页
计算机组成原理课程设计硬布线控制器的设计与实现.docx_第4页
第4页 / 共18页
计算机组成原理课程设计硬布线控制器的设计与实现.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

计算机组成原理课程设计硬布线控制器的设计与实现.docx

《计算机组成原理课程设计硬布线控制器的设计与实现.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计硬布线控制器的设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。

计算机组成原理课程设计硬布线控制器的设计与实现.docx

计算机组成原理课程设计硬布线控制器的设计与实现

硬布线控制器的设计与调试

一、教学目的、任务与实验设备

·教学目的

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

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

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

·教学任务

1.按给定的数据格式和指令系统,在所提供的器件范围内,设计一台硬布线控制器控制的模型计算机。

2.根据设计图纸,在通用实验台上进行组装,并调试成功。

3.在组装调试成功的基础上,整理出设计图纸和其他文件。

·实验设备

 

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

2.直流万用表一只

3.集成电路建议使用ISP芯片(一片ispLSI1032)。

采用ISP器件,则需要一台PC机运行设计自动化软件(例如ispEXPERT)作设计、编程和下载使用。

二、总体设计思路(描述指令系统,给数据通路)

采用与模型计算机相同的指令系统,即12条机器指令。

实验设计中采用该指令系统的子集:

去掉中断指令后的3条机器指令,只保留9条指令。

采用的数据通路和微程序控制器方案相同。

·数据通路图和数据通路控制信号

 

控制器的设计思路

硬布线控制器能够实现控制功能,关键在于它的组合逻辑译码电路。

译码电路的任务就是将一系列有关指令、时序等的输入信号,转化为一个个控制信号,输出到各执行部件中。

根据硬布线控制器的基本原理,针对每个控制信号S,可以列出它的译码函数S=f(Im,Mi,Tk,Bj)其中Im是机器指令操作码译码器的输出信号,Mi是节拍信号发生器的节拍信号,Tk是时序信号发生器的时序信号,Bj是状态条件判断信号。

在TEC—4计算机组成原理实验系统中,因为时序信号Tk(T1—T4)已经直接输送给数据通路,所以译码电路不需Tk作为输入。

又因为机器指令系统比较简单,操作码只有4位,不需要专门的操作码译码器,因此Im直接就是操作码,即指令寄存器的IR4—IR7信号。

Mi的来源就是时序模块的节拍信号,例如W4—W1。

Bj的信号包括:

1.来自数据通路中运算器ALU的进位信号C;

2.来自控制台的开关信号SWC、SWB、SWA;

3.其他信号。

其中C、SWC、SWA和SWB信号在微程序控制器中同样存在,不用加以解释。

由于硬布线控制器设计和微程序控制器设计的不同需求和特点以及控制器的设计方案的不同,可能需要其他信号,也可能不需要其他信号,根据设计方案而定。

每个控制信号的函数式都是上述输入信号的逻辑表达式,因此可以用各种组合逻辑构造电路网络,实现这些表达式的逻辑功能。

理论上,只要对所有控制信号都设计出译码函数,这个硬布线控制器的方案也就得到了。

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

控制台指令名称

指令功能

指令格式

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

老师提供的控制台指令流程图:

在这个控制台里,我们将控制台指令KRR,KRD,KWE,KLD,PR分别拆分为KRR1,KRR2,KRD1,KRD2,KWE1,KWE2,KLD1,KLD2和PR1,PR2。

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

分2次执行完成。

控制信号

信号作用

信号有效条件

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

控制台控制信号作用:

 

三、设计方案

设计硬布线控制器的控制流程,也就是解决Mi、Im、Bj如何起作用的问题。

设计微程序控制器时可以使用流程图,设计硬布线控制器同样可以使用流程图。

微程序控制器的控制信号以微指令周期为时间单位,硬布线控制器以节拍为时间单位,两者本质上是一样的,1拍和1个微指令周期都是从时序T1的上升沿到

T4的下降沿的一段时间。

在微程序控制流程图中,1个执行框代表1个微指令周期,而在硬布线控制流程图中,1个执行框就代表1拍。

执行一条机器指令所需的微指令数目,在硬布线控制器中相当于机器指令所需的节拍数。

决定执行一条指令需要的节拍数,要根据所有指令而定。

既不能只考虑某些需要最多节拍的指令,也不能只考虑节拍数最少的指令,一般要根据大多数机器指令所需的节拍数而定,设计才比较合理。

在本实验中,由于选用4拍对大多数指令就够用,所以节拍发生器产生4个节拍信号(W1—W4)。

统一用4拍执行1条机器指令后,对于所需节拍较少的的指令,例如JMP指令只用2拍(忽略中断),剩下2拍就无事可做了。

这在可行性上当然没有问题,但在性能上就打了折扣,因为多余的节拍都浪费掉了。

为减少浪费,在时序电路中加入了一个控制信号SKIP的输入,该信号的作用是使节拍发生器在任意状态下直接跳到最后1拍(W4)。

这样,设计控制流程时,在所需节拍较少的的指令流程的适当位置使SKIP控制信号有效,多余的节拍就可以跳过,从而提高了性能。

机器指令选用四拍以后,将一条机器指令的执行化为占用两条(或者更多)机器指令的节拍,执行一条指令就可以占用W1、W2、W3、W4、W1、W2、W3、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,从而将控制台操作的两种状态区分开来。

 

根据控制台指令设计出的硬布线控制器:

 

逻辑状态表:

根据硬布线指令流程图画出状态表,然后根据表格,列写出每个信号的逻辑表达式,并写出ABEL语言的源程序:

(状态表在此文档最后可见。

去下载横版:

本来是有这个版本的,可以在打印出来的时候添加到中间空白的这一页,只可以我上传的那张表,XX未审核通过,说我的文档质量太低了,虽然我设置的是免费。

算了,自己用Excel改一下吧。

 

四、

设计的实现(ABEL-HDL)

ABEL语言源代码如下:

MODULEComputeDECLARATIONS

"输入管脚

SWC,SWB,SWAPIN3..5;

IR7,IR6,IR5,IR4PIN6..9;

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

"输出管脚

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,S2PIN45..58;

"自定义

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

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

连线,调试,验收

连线按照ABEL程序里面对管脚的定义连线

寄存器和内存单元内容:

寄存器

存入内容

内存单元

存入内容

R2

60H

60H

24H

R3

61H

61H

83H

计算结果:

内存单元

内容

60H

24H

61H

83H

R0

0A7H

五、本次设计的体会

这是我们计算机专业做的第一个硬件和软件结合的课程设计,个人认为,这是最好的一个课程设计安排,将学习道德东西用起来,才是最好的结果,锻炼了我们的动手能力和思考能力。

硬布线控制器在课本上没有详细讲解,但却是以前的CPU使用的布线方式,想要深入学习硬件知识,了解这些东西是很有必要的。

微程序控制器的出现是为了代替硬布线控制器,如果没有对微程序控制器的工作方式和原理的理解,不可能设计出硬布线控制器的控制逻辑。

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

这次课程设计大大锻炼了我们的动手能力,由于是手工接线,任何一条线出现问题都会影响到整个系统的执行,幸好我们都很细心的连线,在这方面没出问题,也让我感觉到认真的去做一件事情的确不是那么的容易。

分析也变得尤为重要。

不仅如此,设计过程中团队的合作精神也得到了锻炼,任何一个项目的完成,都需要大家的通力合作。

实验中需要将所编程序下载到芯片中,这就使我们对现今硬件设计软件化的主流方向有了实践层次的理解,并让我们掌握了一些简单的设计实现方法。

总之,本次实验是一次难得的学习与发挥的机会,也是我最喜欢的一个课程设计,在实验让我体会到了思考与创造的乐趣。

参考文献:

1.《计算机组成原理》白中英老师编写

2.本学期的五次实验指导书

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

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

当前位置:首页 > 高等教育 > 工学

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

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