计算机组成原理课程设计简单计算机的设计.docx
《计算机组成原理课程设计简单计算机的设计.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计简单计算机的设计.docx(54页珍藏版)》请在冰点文库上搜索。
![计算机组成原理课程设计简单计算机的设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/24/a13c8605-ef34-4b8c-b714-713f65d5546a/a13c8605-ef34-4b8c-b714-713f65d5546a1.gif)
计算机组成原理课程设计简单计算机的设计
计算机组成原理课程设计
(Ver3.1)
计算机科学与工程学院
2007年7月
《计算机组成原理》课程设计
1、课程设计目的
通过对一个简单计算机的设计,对计算机的基本组成,部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,在此基础上完成一台基本计算机的组成设计,从而加深对理论课程的理解,锻炼学生的独立思考和动手能力。
2、仪器设备
硬件环境为PC-386以上微机,西安唐都科教仪器公司的TDN-CM+计算机组成原理实验台。
软件环境采用WINDOWS操作系统,西安唐都科教仪器公司的TDN-CM+计算机组成原理实验软件。
3、基于微控器的模型机设计部分
3.1、设计步骤
设计一台完整的计算机,大致需按如下的顺序来考虑:
(1)确定设计目标
确定所设计计算机的功能和用途。
(2)确定指令系统
确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方式,并给出具体的编码,比如指令的操作码,地址码等的位数及各种编码的含义。
(3)确定总体结构(寄存器、加法器、选择器的设置与数据通路的设计)
总体结构设计包含确定各部件设置以及它们之间的数据通路结构。
在此基础上,就可以拟出各种信息传输路径,以及实现这些传输所需要的微命令。
对于部件设置,比如要确定运算器部件采用什么结构,控制器是微程序控制还是硬联控制等。
综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,确定采用何种方案的内总线及外总线。
数据通路不同,执行指令所需要的操作就不同,计算机的结构也就不一样。
(4)设计指令执行流程
数据通路确定后,就可以设计指令系统中每条指令的执行流程。
根据指令的复杂程度,确定每条指令所需要的机器周期数。
对于微程序控制的计算机,根据总线结构,需考虑哪些微操作可以安排在同一条微指令中,哪些微操作不能安排在同一条微指令中。
(5)确定微程序地址
确定后续微地址的形成方法,确定每个微程序地址及分支转移地址,画出微程序流程图。
(6)微指令代码化
根据微指令格式,将微程序流程图中的所有微指令代码化。
首先写出每个微地址以及该地址对应的微指令代码(共24位二进制信息),如下表所示:
其中:
微地址表示控制存储器的地址,后面的24位表示微指令。
然后将每个微地址和对应的微指令转换成16进制,并写在一行,格式为:
$M********,前面2个‘*’表示该微指令的在微控制器中的地址,后面6个‘*’表示该微指令代码。
如上述表中的四条微指令写成:
$M00018110:
表示在控制存储器地址00h处的代码是018110h。
$M0101ED82:
表示在控制存储器地址01h处的代码是01ED82h。
$M0200C048:
表示在控制存储器地址02h处的代码是00C048h。
$M0300E004:
表示在控制存储器地址03h处的代码是00E004h。
(7)编写工作程序并代码化
编写测试用的工作程序(注:
测试程序要能覆盖设计的所有指令),并写出内存映像,用二进制表示。
然后代码化用16进制来表示,格式为:
$P****,前面2个‘*’表示该内存的地址,后面2个‘*’表示该地址的数据。
例如:
$P0044:
表示在内存地址00h处的数据是44h。
$P0146:
表示在内存地址01h处的数据是46h。
(8)联机操作文件的建立
为了从PC机下载工作程序和微程序,需要建立联机操作文件,该文件是普通的文本文件,扩展名为TXT,可用记事本来建立的,要求:
a、测试用的工作程序排在文件的前面,每个内存地址及代码占一行;
b、微指令代码排在文件的后面,每个微地址及微指令代码占一行;
例如,下面是一个实验的文件(文件名:
sample.txt):
$P0044
$P0146
$P0298
$M00018108
$M0101ED82
$M0200C050
(9)连接实验线路
根据附录2的线路图连接模型机实验线路。
(10)系统与PC机联机
实验系统安装有一个标准的DB型9针RS-232C串口插座,使用配套的串行通信电缆分别插在实验系统及PC机的串口,即可实现系统与PC机的联机操作。
(11)下载工作程序和微程序
使用唐都软件将工作程序和微程序下载到实验箱的内存和控制存储器中。
其中,自带电源线的实验箱用NCMP53软件,启动软件后使用F4[装载]进行下载;外接电源线的实验箱用CMPP软件,启动软件后在菜单中选择[转储]/[装载]进行下载。
(12)调试(调试时用的测试数据要包括普通数据及临界点数据)
在总调试前,先按功能模块进行组装和分调,因为只有各功能模块工作正常后,才能保证整机的正常运行。
可以使用控制台命令SWA、SWB的不同取值,或使用联机软件检查内存程序是否正确,微程序是否正确。
当所有功能模块都调试正常后,进入总调试。
可以使用单步微指令方式执行工作程序,也可以直接使用连续方式执行程序。
在执行过程中,可以通过联机软件的数据通路图查看信息在计算机中的传送路径,更有利于掌握数据的通路结构。
这样也可以直接验证程序和微程序的正确性。
如果运行结果不正确,需要返回来修改程序或微程序,每次修改后,需要重新完成第11步,将程序和微程序下载到实验箱中。
3.2、准备知识
微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制硬件逻辑部件工作的微命令序列,以完成数据传输和各种处理操作。
它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。
这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。
微程序存储在一种专用的存储器中,该存储器称为控制存储器。
(1)TDN-CM+计算机组成原理实验台主要单元电路见附录三。
(2)微程序控制电路
微程序控制电路如图1所示。
其中控制存储器采用3片2816E2PROM,具有电保护功能,微命令寄存器18位,用两片8D触发器(273)和一片4D(175)触发组成。
微地址寄存器6位,用三片正沿触发的双D触发器(74)组成,它们带有清“0”端和预置端。
在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。
当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强制将某一触发器置为“1”状态,完成地址修改。
在该实验电路中设有一个编程开关(位于实验板右上方),它具有三种状态:
PROM(编程)、READ(校验)、RUN(运行)。
当处于“编程状态”时,学生可根据微地址和微指令格式将微指令二进制代码写入到控制存储器2816中。
当处于“校验状态”时可以对写入控制存储器中的二进制代码进行验证,从而可以判断写入的二进制代码是否正确。
当处于“运行状态”时,只要给出微程序的入口微地址,则可根据微程序流程图自动执行微程序。
图中微地址寄存器输出端增加了一组三态门,目的是隔离触发器的输出,增加抗干扰能力,并用来驱动微地址显示灯。
图1:
微程序控制电路
(3)微指令格式
微指令字长共24位,其控制位顺序如下表所示:
A字段
B字段
C字段
15
14
13
选择
12
11
10
选择
9
8
7
选择
0
0
0
0
0
0
0
0
0
0
0
1
LDRi
0
0
1
RS-B
0
0
1
P
(1)
0
1
0
LDDR1
0
1
0
RD-B
0
1
0
P
(2)
0
1
1
LDDR2
0
1
1
RI-B
0
1
1
P(3)
1
0
0
LDIR
1
0
0
299-B
1
0
0
P(4)
1
0
1
LOAD
1
0
1
ALU-B
1
0
1
AR
1
1
0
LDAR
1
1
0
PC-B
1
1
0
LDPC
表中uA0~uA5为6位的下一条微指令的地址,A、B、C为3个译码字段,分别由三个控制位译码出多位。
C字段中的P
(1)~P(4)是四个测试字位。
其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,其原理如图2所示。
图中I7~I2为指令寄存器的7~2位输出,SE5~SE1为微控器单元微地址锁存器的强制端输出。
AR为算术运算是否影响进位及判零标志控制位,其为零有效。
B字段中的RS-B、R0-B、RI-B分别为源寄存器选通信号、目的寄存器选通信号及变址寄存器选通信号,其功能是根据机器指令进行三个工作寄存器R0、R1及R2的选通译码,其原理图如图3所示,图中I0~I3为指令积存器的第0~3位,LDRi为打入工作寄存器信号的译码器使能控制位。
图2:
指令译码电路
图3:
寄存器译码
(4)控制台
为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。
•存储器读操作(KRD):
拨动总清开关CLR后,控制台开关SWB、SWA为"00"时,按START微动开关,可对RAM连续手动读操作。
•存储器写操作(KDE):
拨动总清开关CLR后,控制台开关SWB、SWA置为"01"时,按START微动开关可对RAM进行连续手动写入。
•启动程序:
拨动总清开关CLR后,控制台开关SWB、SWA置为"1l"时,按START微动开关,即可转入到第01号“取址”微指令,启动程序运行。
上述三条控制台指令用两个开关SWB、SWA的状态来设置,其定义如下:
SWB
SWA
控制台指令
0
0
读内存(KRD)
0
1
写内存(KWE)
1
1
启动程序(RP)
控制台操作微程序如图4所示:
控制台操作为P(4)测试,它以控制台开关SWB、SWA作为测试条件,出现了三路分支,占用三个固定微地址单元。
当分支微地址单元固定后,剩下的其他单元就可以一条微指令占用控制存储器一个微地址单元,其单元地址随意填写。
注意:
微程序流程图上的单元地址为八进制。
图4控制台操作微程序流程图
3.3、设计内容
题目一:
设计一个具有带进位加法和立即数寻址方式的模型机
1、设计内容:
设计一台具有输入、输出、带进位加法、存储和跳转功能的模型计算机,并写出工作程序和测试数据验证所设计的指令系统。
2、设计要求
所设计模型计算机的指令系统共包含五条机器指令:
IN(输入)、OUT(输出)、ADC(带进位加法)、STA(存数)、JMP(无条件转移),加法指令的寻址方式为立即数寻址。
其中IN指令为单字长(8位),其余为双字长指令。
使用R0寄存器作为工作寄存器。
提示:
模型机的指令系统及指令格式如下(前4位为操作码):
助记符
机器指令码
说明
IN
XXXX0000
“INPUTDEVICE”中的开关状态—>R0
ADCImm
XXXX0000XXXXXXXX
RO+Imm+cy—>R0
STAaddr
XXXX0000XXXXXXXX
RO—>[addr]
OUTaddr
XXXX0000XXXXXXXX
[addr]—>LED
JMPaddr
XXXX0000XXXXXXXX
addr—>PC
立即数在机器指令码中以补码形式出现。
题目二:
设计一个具有带进位加法和条件跳转的模型机
1、设计内容
设计一台具有输入、输出、数据传送、带进位加法、条件跳转,停机功能的模型计算机,并写出工作程序和测试程序验证所设计的指令系统。
2、设计要求
所设计模型计算机的指令系统共包含六条机器指令:
IN(输入)、ADC(带进位加法)、OUT(输出)、BZC(条件转移)、MOV(数据传送)、HALT(停机),其中条件转移指令的寻址方式为直接寻址,其余指令的寻址方式为寄存器寻址。
提示:
模型机的指令系统及指令格式如下(前4位为操作码):
助记符号
指令格式
功能
MOVrs,rd
XXXX
Rs
rd
Rsrd
ADCrs,rd
XXXX
Rs
rd
Rs+rd+cyrd
BZCD
00
00
00
00
D
当cy=1或z=1时,DPC
否则,顺序执行
INrd
XXXX
01
Rd
InputDevicerd
OUTrd
XXXX
10
Rd
RdOutputDevice
HALT
XXXX
00
00
停机
其中,rs为源寄存器,rd为目的寄存器,并规定:
Rs或rd
选定的寄存器
00
01
10
R0
R1
R2
题目三:
设计一个具有循环左移功能的模型机
1、设计内容
设计一台具有输入、输出、数据传送、带进位加法,循环左移、停机等功能的模型机,并写出工作程序和测试程序验证所设计的指令系统。
2、设计要求
所设计模型计算机的指令系统共包含六条机器指令:
IN(输入)、ADC(带进位加法)、OUT(输出)、RLC(循环左移)、MOV(数据传送)、HALT(停机),各条指令的寻址方式为寄存器寻址,且都为单字节指令。
提示:
本模型机中各条指令的格式和功能如下:
助记符号
指令格式
功能
MOVrs,rd
XXXX
rs
rd
Rsrd
ADCrs,rd
XXXX
rs
rd
Rs+rd+cyrd
RLC
XXXX
rs
rd
INrd
XXXX
01
rd
InputDevicerd
OUTrd
XXXX
10
rd
RdOutputDevice
HALT
XXXX
00
00
停机
其中,rs为源寄存器,rd为目的寄存器,并规定:
Rs或rd
选定的寄存器
00
01
10
R0
R1
R2
题目四:
设计一个具有带借位减法和存储功能的模型机
1、设计内容
设计一台具有输入、输出、数据传送、带进位减法,存数、取数等功能的模型机,并写出工作程序和测试程序验证所设计的指令系统。
2、设计要求
所设计模型计算机的指令系统共包含六条机器指令:
IN(输入)、OUT(输出)、SBC(带借位减法)、LDA(取数)、STA(存数)、MOV(数据传送),其中存数、取数指令的寻址方式为间接寻址。
提示:
本模型机中各条指令的格式和功能如下:
助记符号
指令格式
功能
MOVrs,rd
XXXX
rs
rd
Rsrd
ADCrs,rd
XXXX
rs
rd
Rs+rd+cyrd
LDAD,rd
00
01
00
rd
D
(D)rd
STAD,rd
00
01
01
rd
D
Rd(D)
INrd
XXXX
01
rd
InputDevicerd
OUTrd
XXXX
10
rd
RdOutputDevice
其中,rs为源寄存器,rd为目的寄存器,并规定:
Rs或rd
选定的寄存器
00
01
10
R0
R1
R2
4、可编程逻辑器件设计部分
4.1、设计步骤
采用ispDesignEXPERT软件来对可编程逻辑器件进行编程设计实现所需的数字系统功能一般要经过如下步骤:
(1)建立新工程
(2)输入原理图或硬件描述语言进行设计
(3)对源程序进行编译
(4)连接下载电缆
(5)将生成的JED文件下载到可编程逻辑器件中
(6)连接实验电路
(7)在实验板上验证所设计系统的逻辑功能
4.2、准备知识
PLD是可编程逻辑器件(ProgramableLogicDevice)的简称,PLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。
PLD能做什么呢?
可以毫不夸张的讲,PLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用PLD来实现。
PLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。
通过软件仿真,我们可以事先验证设计的正确性。
在PCB完成以后,还可以利用PLD的在线修改能力,随时修改设计而不必改动硬件电路。
使用PLD来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。
PLD的这些优点使得PLD技术在90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步。
当前应用广泛的有复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)等。
目前有多家公司生产CPLD/FPGA,最大的三家是:
ALTERA,XILINX,Lattice。
许多PLD公司都还提供免费试用软件,如Altera公司的Maxplus2(Baseline版或E+MAX版),Xilinx公司的WebPack,Lattice的ispDesignEXPERT等。
实验系统中采用的器件是Lattice公司的ispLSI1032芯片,isp芯片具有“在系统可编程功能”,这种功能可随时对系统进行逻辑重构和修改,而且只需要一条简单的编程电缆和一台PC机就可以完成器件大编程。
IspLSI1032芯片的等效逻辑门为6000门,具有128个宏单元,192个触发器和`64个锁存器,共有84个引脚,ispLSI1032芯片的结构图如图5所示。
图5ispLSI1032芯片结构图
对该器件的逻辑系统设计是通过使用硬件描述语言或原理图输入来实现的,硬件描述语言有ABEL、VHDL等多种语言。
实验系统中可采用ispDesignEXPERT软件来对可编程逻辑器件ispLS1032进行编程设计实现。
IspDesignEXPERT可采用原理图或硬件描述语言或这两种方法的混合输入共三种方式来进行设计输入,并能对所设计的数字电子系统进行功能仿真和时序仿真。
其编译器是此次软件所需要的熔丝图文件。
该软件支持所有Lattice公司的ispLSI器件。
下载电缆的连接方法如下:
在打开PC机和实验系统的电源之前,将下载电缆的一端与PC机的并行口相连,另一端与TDN-CM+系统的ispLSI1032器件的编程接口相连。
ispDesignEXPERT软件的使用见附录4。
4.3、设计内容
题目五:
利用CPLD设计一个并行加法器
1、设计内容
使用大规模可编程逻辑器件CPLD设计实现一个4位并行进位加法器,并验证设计的正确性。
2、设计要求
采用ispDesignEXPERT软件来对可编程逻辑器件ispLSI1032进行编程设计,要求用原理图输入方式来进行设计输入,并对所设计的加法器进行功能和时序仿真,最后在西安唐都科教仪器公司的TDCM+计算机组成原理实验台上验证所设计器件的逻辑功能。
提示:
在实验台上进行逻辑功能验证时,可以借助使用INPUTDEVICE单元输入加数和被加数,进位输入可由SWITCHUNIT单元的一个开关来给出,可用总线单元的发光二极管来显示运算结果。
题目六:
阵列乘法器设计
1、设计内容
使用大规模可编程逻辑器件CPLD设计实现一个4*4位不带符号乘法器,并验证设计的正确性。
2、设计要求
采用ispDesignEXPERT软件来对可编程逻辑器件ispLSI1032进行编程设计,要求用VHDL语言编写功能描述程序,并对所设计的乘法器进行功能和时序仿真,最后在西安唐都科教仪器公司的TDCM+计算机组成原理实验台上验证所设计器件的逻辑功能。
提示:
对于一个4*4位二进制数相乘,有如下算式:
在实验台上进行逻辑功能验证时,可以借助使用INPUTDEVICE单元输入乘数和被乘数,而相乘的结果可在OUTPUTDEVICE单元中的数码管中以十六进制形式显示。
题目七:
硬联控制器设计
1、设计内容
使用大规模可编程逻辑器件CPLD设计一个简单的硬联控制器,实现下面表中三条指令,用开关置不同的指令,触发时序,就可以实现不同的指令操作。
指令码
操作
说明
00
INPUTDEVICEDR1
将数据开关中的数打入工作寄存器DR2中,并由OUTPUTDEVICE中的数码管来显示
01
INPUTDEVICEDR2
将数据开关中的数打入工作寄存器DR2中,并由OUTPUTDEVICE中的数码管来显示
10
DR1+DR2OUTPUTDEVICE
将运算器中DR1加DR2的运算结果打入输出单元OUTPUTDEVICE中的数码管并显示
2、设计要求
采用ispDesignEXPERT软件来对可编程逻辑器件ispLSI1032进行编程设计,要求用VHDL语言编写程序,并在西安唐都科教仪器公司的TDCM+计算机组成原理实验台上验证所设计器件的逻辑功能。
提示:
用CPLD设计此控制逻辑的功能描述,各控制信号在ispLSI1032中对应的引脚可参考如下:
有三个部件需要控制:
ALU、INPUTDEVICE和OUTPUTDEVICE。
它们的控制信号由指令码I1、I0和时序信号T4、T3、T2、T1组合产生。
编程所实现的功能就是根据这些输入信号产生实现不同的指令时这三个部件所需要的控制信号。
下面连线图可供参考:
5、具有中断处理功能的模型机设计
5.1、设计内容
在构成一台完整模型机的基础上,外扩一片8259接口芯片,完成中断处理功能。
要求本模型机设计九条基本指令及三个控制台操作指令,各条指令的格式和功能如下:
其中D为立即数,P为外设的端口地址:
RS为源寄存器,RD为目的寄存器,并规定如下:
Rs或rd
选定的寄存器
00
01
10
R0
R1
R2
三个控制台指令用两个开关SWA、SWB的状态来设置,定义如下:
SWB
SWA
控制台指令
0
0
读内存(KRD)
0
1
写内存(KWE)
1
1
启动程序(RP)
5.2、准备知识
8259芯片引脚分配如下图所示:
●D7-D0为双向三态数据线。
●
为片选信号线。
●A0用来选择芯片内部不同的寄存器,通常接至地址总线的A0。
●
为读信号线,为低电平有效,当其有效时,控制信息从8259芯片读至CPU。
●
为写信号线,为低电平有效,当其有效时,控制信息从CPU写入至8259芯片。
●
/
用来从程序/允许缓冲。
●
为中断响应输入。
●INT为中断输出。
●IR0-IR7为八条外界中断请求输入线。
●CAS2-CAS0为级连信号线
、A0、
、
、D4、D3位的电平与8259芯片的操作关系如下表所示。
A0
D4
D3
操作
0
1
0
0
1
1
0
0
输入操作(读)
IRR,ISR或中断级别->数据总线
IMR->数据总线
0
0
0
1
0
0
1
X
0
1
X
X
1
1
1
1
0
0
0
0
0
0
0
0
输出操作(写)
数据总线->OCW2
数