重庆大学本科学生毕业设计论文.docx
- 文档编号:24069552
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:43
- 大小:655.57KB
重庆大学本科学生毕业设计论文.docx
《重庆大学本科学生毕业设计论文.docx》由会员分享,可在线阅读,更多相关《重庆大学本科学生毕业设计论文.docx(43页珍藏版)》请在冰豆网上搜索。
重庆大学本科学生毕业设计论文
1绪论1
2Logisim仿真软件3
3计算机组成原理实验5
3.1实验简介5
1.1.1运算器实验5
1.1.2静态随机存储器实验6
1.1.3微程序控制器实验6
1.1.4简单模型机实验8
1.1.5复杂模型机实验9
3.2指令系统9
1.2.1简单模型机指令9
1.2.2复杂模型机指令10
3.3微指令设计12
3.4时序单元13
4仿真实现15
4.1运算器实验15
4.2存储器实验18
4.3微程序控制器实验19
4.4模型机实验24
4.4.1简单模型机24
4.4.2复杂模型机27
5结论32
5.1体会32
5.2总结32
附录A:
实验微程序35
1绪论
《计算机组成原理》是计算机科学与技术及其相关专业的一门非常重要的专业基础课程,课程配套的实验对该课程内容的掌握至关重要。
教学反映,该课程对初学者难度较大,它要求学生熟练掌握计算机各子系统的组成原理、设计方法、相互关系以及各子系统互相连接构成整机系统的技术。
受到总学时、实验场所和实验设备的限制,实验课上同学们要在实验中观察得到正确的结果,必须具有扎实的基础、清晰的概念、正确的逻辑设计以及合理的操作步骤。
目前国内大部分高校采用的实验方式主要是利用一些现有的计算机组成原理实验箱来完成实验[1]。
我院采用的是TD-CMX计算机体系结构与计算机系统设计平台,此平台由一个教学实验箱、FPGA开发板和动态图形调试软件组成。
实验箱已将计算机的各个逻辑组成部件芯片全部做好并焊接在实验板上,学生只需按实验指导书中的要求进行连线并拨动相应开关,然后观察实验结果就能完成实验[1]。
这种实验过程简单死板,仅有验证没有设计,并且实验箱的费用高,淘汰快,易损坏且难维护,学生对实验设备利用率低,实验效果也不太理想。
同时,这种实验方式离不开实验箱,所以学生只能在指定的实验室中完成实验,在短暂的实验时间内,学生第一次接触实验箱就要完成连线和操作,难度较大,如果实验前没有预习,实验效果将大打折扣。
种种弊端说明计算机组成原理实验中引入EDA技术是实验方式改革的必然[1]。
EDA技术的进步使得构建虚拟实验室也成为了可能,虚拟实验[2]是一种用虚拟仪器、设备代替传统的实验仪器和设备进行的实验,虚拟实验技术大大降低了实验成本,使实验更加“自由”。
实现虚拟实验必须有一套交互性强、开放程度高、易操作的设计软件[2]。
目前,具备这一功能的软件很多,最受欢迎的是加拿大InteractiveImageTechnologies公司推出的电路仿真与绘制软件Multisim[2]。
基于multisim的虚拟实验系统可以更好的开发学生的潜力,随着仿真技术的发展,将来有望代替实验室教学。
现今主流的计算机组成原理实验仿真技术有两种:
一种是基于EDA+PLD技术的实验方式,此方式一般都是利用软件供应商提供的EDA工具软件(例如quartusⅡ)进行模拟仿真;另一种是基于multisim的虚拟实验系统。
这两种方式都具有验证设计方案的正确性与合理性、发现并纠正原理图中错误、识别由于电路连接或控制不当导致的数据冲突、利用课外学时和支持多样化设计性实验的功能,同时两种方式各有各的特点。
基于EDA+PLD技术的实验方式[1]所需要的实验环境比较复杂,不但要提供硬件的实验仪器平台还需要提供计算机仿真软件,因此实验成本会比较高。
除此之外,学生在做实验之前不但要熟悉掌握EDA仿真软件[4]的使用,还需要掌握某种硬件描述语言,因此对学生要求较高,学生上手会比较慢。
基于multisim的虚拟实验系统使用multisim软件,该软件用户界面友好,操作简单,上手容易。
并且,这种实验方式只需要在普通机房安装仿真软件即可实现,实验的通用性好,实验成本低[1]。
在实验过程中,学生可以自由地探讨实验的优化方案,用不同的方案实现统一功能,能激发学生的设计和创新能力。
但是,计算机组成原理单元实验比较复杂,某些单元实验所需要的功能元件Multisim并没有直接提供,它只能辅助计算机组成原理教学,而不能代替实验教学[1]。
本课题利用Logisim软件完成计算机组成原理实验仿真,以提高实验的成功率,帮助学生更好的理解实验原理和完成实验。
基于logisim的计算机组成原理实验移植类似于multisim虚拟实验,此方式具备了multisim虚拟实验的优点。
相对multisim仿真软件,Logisim软件运行时占用的内存资源更小,对逻辑电路设计和逻辑单元仿真更具有针对性,而multisim适用于模拟和数字电路的设计,应用面广,针对性弱。
除此之外,Logisim在电路的封装上更为灵活,它可以随意改变引脚排列和封装的形状,这是multisim无法实现的。
所以我们选取Logisim软件来实现计算机组成原理实验的仿真。
Logisim是一个开源跨平台的软件,界面友好上手容易,易于仿真,在这样一个形象逼真的软件平台上预习,再到实验室进行实验,能够大大提高实验效率。
针对设计性的实验,学生可以在实验前利用logisim软件,自主设计实验方案和实验步骤来仿真,从而避免了实验时的盲目操作,锻炼和拓展了学生的逻辑电路设计能力和创新设计思维。
引入软件仿真使同学们突破时间和空间的限制,无需在实验室也可以进行组成原理实验,从而大大提高了实验设施的利用率。
2Logisim仿真软件
logisim软件[5]是一个基于java的开源软件,是用于设计和模拟数字逻辑电路的教育工具,它的简单的工具栏界面和模拟电路构建,使其非常适合初学者学习最基本的概念与逻辑电路。
由于能够从较小的子电路构建更大的电路,并能用鼠标拖动画出电路,Logisim软件还可以在教学上用来设计和模拟整个CPU。
logisim软件在世界各地的大学和学院的学生中得到了广泛使用,一般用于普通教育领域的计算机科学研究,大学二年级的计算机组成原理相关课程或大三及大四的计算机体系结构课程中。
logisim软件界面如下图所示。
图2.1Logisim软件界面
软件界面上部分是菜单栏,一共有六个菜单选项分别为:
文件、编辑、工程、仿真、窗口和帮助。
文件菜单提供打开、创建、保存、打印和退出项目等功能。
编辑菜单提供复制、剪切、粘贴、全选、撤销等功能。
工程菜单支持创建新的子电路,并且可以给项目加载或卸载库,这里的库有三种:
内置的logisim库文件;logisim建立并保持在本地磁盘上的工程项目;也可以是java开发的并未加入到logisim中的jar文件。
另外,工程菜单还提供电路分析和统计的功能,电路分析功能可以得到当前电路的真值表和相应的逻辑表达式,两者显示在组合分析窗口中,需要注意的是电路分析只能用于组合电路;电路统计功能显示出一个包含有当前查看的电路的元件数据的对话框,该对话框中有一个表格,表格具有以下五个属性:
该组件的名称、该组件来自的库的名称、该组件直接出现在电路中的次数、该组件出现在电路的次数(相同子电路只计算一次)、该组件出现在电路及所有子电路的次数(每个子电路都要计算)。
仿真菜单提供仿真过程中的控制功能,包括开始仿真、电路复位、单步仿真、进入/退出子电路、单脉冲、连续脉冲和选择时钟频率等功能,为电路的仿真提供了多样化的有效的控制操作。
窗口菜单支持窗口最大化、窗口最小化、关闭窗口、组合分析窗口和多个窗口相互切换等功能。
众所周知,电路分为两种:
组合电路和时序电路。
组合电路中,所有的电路输出是一个当前电路输入的严格组合,而在时序电路中,一些电路输出取决于过去的输入,即输出和时序也有关系。
组合分析窗口用三种技术描述了组合电路的行为:
逻辑电路、布尔表达式和真值表。
三者可以相互转化,即画出逻辑电路可以自动得到电路的布尔表达式和真值表,也可以给出布尔表达式或真值表,让软件自动生成逻辑电路。
这给电路的设计和分析带来了便利。
帮助菜单提供了一个logisim参考指南,该指南提供了Logisim的功能的官方参考,几乎涵盖了logisim软件的每个细节,可以引导新手快速入门,即学即用。
软件界面右侧是工具栏,提供一些逻辑电路构造中常用的工具,包括与或非逻辑门、输入输出引脚和连线等。
软件界面左侧显示了当前项目的主电路及所有子电路列表,还有logisim的标准参考库(如下图2.2所示)。
左侧居中显示的是当前选定的组件的属性,有名称、朝向、标签等,其属性随组件不同而有不同的内容。
左侧下面是一个下拉框,可以改变页面显示的比例,在设计庞大系统逻辑电路时可以缩小显示比例,使整个逻辑电路显示在一个页面上,便于观察仿真结果。
图2.2Logisim参考指南
logisim提供的参考库几乎涵盖了逻辑电路设计和仿真要用到的所有基本组件,参考库对每一个组件工具进行了详细介绍,有些比较复杂的组件提供了真值表和逻辑设计样例,对初学者帮助很大。
参考库细分为布线库、逻辑门库、复用器库、运算库、存储器库、输入输出库和基本工具库。
3计算机组成原理实验
3.1实验简介
计算机组成原理实验是计算机组成原理课程必不可少的实践环节,共包括基本运算器实验、阵列乘法器实验等九个实验。
由于教学时间紧凑,酌情删减至四个基础实验,为了更好的体现CPU的设计思想和指令系统复杂性,本次研究仿真五个由简到难、由部分到整体的基本实验,即基本运算器实验、静态随机存储器实验、微程序控制器实验、简单模型机设计实验和复杂模型机设计实验。
3.1.1运算器实验
运算器实验旨在搭建一个具有运算功能的逻辑电路。
计算机有五大组成部分,分别是控制器、运算器、存储器、输入设备和输出设备[6],运算器实验也就是模拟出五大部件之一的运算器。
该实验有两个输入端A和B,需要手动输入两个八位二进制数,有三个输出端,分别用来输出本次运算的结果、进位标志寄存器内容和零标志寄存器内容。
本实验还有一个时钟信号,影响数据输入和标志寄存器内容的改变。
运算器通过四位二进制控制信号选择运算类型,并且通过低进位标志影响运算结果,因此该运算器支持逻辑运算、算术运算和移位运算等三种类型的运算,共十六种功能运算,完全适应计算机运算器所需要的各种功能。
运算器逻辑功能
表3.1
运算类型
S3S2S1S0
CN
功能
逻辑运算
0000
X
F=A(直通)(FZ)
0001
X
F=B(直通)(FZ)
0010
X
F=AB(直通)(FZ)
0011
X
F=A+B(直通)(FZ)
0100
X
F=/A(直通)(FZ)
移位运算
0101
X
F=A不带进位循环右移B(取低3位)(FZ)
0110
0
F=A逻辑右移一位(FZ)
1
F=A带进位逻辑右移一位(FC,FZ)
0111
0
F=A逻辑左移一位(FZ)
1
F=A带进位逻辑左移一位(FC,FZ)
算术运算
1000
X
置FC=CN(FC)
1001
X
F=A加B(FC,FZ)
1010
X
F=A加B加FC(FC,FZ)
1011
X
F=A减B(FC,FZ)
1100
X
F=A减1(FC,FZ)
1101
X
F=A加1(FC,FZ)
1110
X
(保留)
1111
X
(保留)
如表中所示,A和B为两个输入数据,F为输出结果,X表示既可以为0也可以为1,CN为低位进位标志,FC和FZ分别为进位标志寄存器和零标志寄存器中内容,功能栏中的(FC,FZ)表示此运算会影响到这两个标志位。
3.1.2静态随机存储器实验
静态随机存储器实验旨在搭建一个具有访存数据功能的逻辑电路。
存储器是计算机五大组成部分之一,也是计算机各种信息存储与交换的中心。
冯•诺依曼型计算机的基本特征就是将程序指令和数据存储在存储器中,存储器使程序的执行更加的连续、自动且高效[10]。
该实验有一个输入端,需要存放的数据和指定的存放地址都由该输入端输入。
有两个输出端分别输出地址锁存器中的内容和存储器取出的数据。
另外,该实验通过两个控制信号决定存储器的读写状态,并且使用另外两个门控信号决定占用总线的是数据还是地址。
实验完整演示了静态随机存储器RAM的工作特性及数据的读写过程(见图3.2),完全适应计算机存储器所需要的各种功能。
图3.1存储器读写过程
图中所示过程为,先将数据00010001送入存储器的00000000地址中,即存储器写过程;然后将地址00000000中的数据取出来为00010001,此为存储器读过程。
两个过程都需要对总线的占用进行分配,并且总线还可以双向传输,传输方向也需协调。
3.1.3微程序控制器实验
微程序控制器实验旨在搭建一个可以翻译和执行当前指令的逻辑电路。
微程序控制器的任务是将当前指令分解为可控的硬件逻辑部件工作的微命令序列,以便完成数据传送和各种处理操作。
执行指令时,要将控制各部件动作的微命令的集合进行二进制编码,这种编码就是微指令。
每条机器指令可以用一个微指令序列来表示,该微指令序列存放在只能访问不能写入的存储器中,称为控制存储器,微指令序列称为微程序。
微程序控制有一个输入端口,用来接收指令(用二进制数编码),有一个输出端口,用于输出当前指令产生的一系列控制信号。
为了使微程序的运行过程更加清晰,本实验将微程序控制器部件与运算器部件结合起来,向微程序控制器输入各种运算指令,然后产生相应的控制信号,使运算器在各种信号的控制中进行运算并产生结果。
此过程还需要时序控制逻辑部件,使各种运算在一定的时钟周期下运行。
图3.2微程序控制组成原理框图
微程序控制器组成原理如图所示。
指令寄存器8位,用来存放当前指令。
地址转移逻辑是一个组合逻辑电路,用于确定下一条微指令的地址。
微地址寄存器6位,用来存放下一条微指令的地址,初始值为0。
控制存储器是一个具有掉电保护功能的只读存储器,用来存放程序用到的所有微指令。
微命令寄存器共18位,分为3位P字段和15位控制字段两部分,P字段直接传给地址转移逻辑,控制字段通过规定的组合逻辑电路产生大量的控制信号给计算机的其它组成部件。
微程序控制器的工作过程需要严格按照系统时序来进行。
每个时钟周期有T1、T2、T3和T4等四个脉冲,每个时钟周期执行一条微指令,即每条指令的执行周期的长度取决于该指令的微指令序列的长度。
当控制器接收一条指令,将指令的低5位传入地址转移逻辑,此时P字段初始默认为0,通过两者计算出微指令地址并传入微地址寄存器。
然后控制存储器从微地址寄存器中获取微地址,并取出相应位置的微指令。
然后将微指令的低六位送入微地址寄存器作为下一条微指令的顺序地址,将微指令的第六到八位送入P字段,将微指令的第九到二十四位送入控制字段,使其通过组合逻辑产生大量的控制信号。
然后运算器等其它部件接收到此控制信号,按部就班地完成该条微指令的功能。
此条微指令至此执行完毕,同时这个机器周期也结束。
需要注意的是,在此机器周期的末尾,还要根据当前执行的微指令的P字段、微指令的低六位和机器指令的低五位来决定下条微指令的地址,这也是地址转移逻辑的功能,这样下个机器周期就可以直接取出相应的微指令了。
3.1.3简单模型机实验
简单模型机实验是在掌握上述部件单元电路的基础上,进一步将各单元组合起来构造一个简单的CPU,然后再进一步构造出简单模型机的过程。
简单模型机由CPU、主存和简单的输入输出三部分构成。
CPU由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0)、指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成。
需要注意的是,虽然CPU的时序单元没有单独区分出来,但是时序控制对CPU乃至整个模型机的运行都非常重要。
图3.3基本CPU构成原理图
向CPU的控制器中写入微程序,那么CPU就可以执行输入到IR中的符合编码规则的指令了。
为了真实模拟计算机的运行过程,实验的指令和数据都存放在外部存储器中,即主存。
运行程序时,程序计数器(PC)送入地址寄存器(AR)中后自增,再将地址送入主存取出相应指令,将指令送到指令寄存器(IR)中,再经由控制器产生各种控制新号以确保微指令序列的执行。
当前指令执行完毕,则再次从主存中取出下条指令。
程序运行过程中也需要访问内存数据或将中间数据写入内存,运行结束后将结果送到输入输出部件。
这就是简单模型机运行全过程。
本实验采用了五条指令和对应的十一条微指令,实现了两数求和的小程序。
3.1.3复杂模型机实验
在所有实验中,复杂模型机是计算机组成原理的各部件组合应用,设计并实现了比较完整的计算机,这个实验是前面所有实验的综合,对于计算机组成原理及运行过程的理解十分重要。
此实验在简单模型机的基础上增加了寄存器的个数,简单模型机只有一个寄存器R0,而复杂模型机有四个寄存器R0、R1、R2和R3,因此指令的设计需要考虑源寄存器和目的寄存器的问题。
其次,复杂模型机也增加了输入输出的端口,事实上真实计算机存在多个输入输出的端口,因此这种设计更加贴近实际,所以实验中也需考虑输入输出端口的选择问题。
另外,为了更加体现计算机指令系统的复杂性,复杂模型机指令不仅长度可变(有的指令是8位,有的指令是16位,视指令功能而定),指令类型有多种(有运算指令、跳转指令、访存指令和输入输出指令),并且寻址方式也不是单一的(有立即、直接、间接、变址和相对寻址等五种寻址方式)。
复杂模型机非常接近真实的计算机,由此带来的指令格式、指令类型和指令功能的改变,使模型机各部分逻辑电路都有所改变。
由于跳转指令的存在,复杂模型机的微程序控制器也会受到进位标志寄存器和零标志寄存器的影响。
指令类型的增加使微指令的数目也增加,并且微指令地址的跳转也更复杂,微指令序列需要重新编码,这意味着地址转移逻辑部件也会更加复杂。
寄存器数量的增加,使微程序控制器产生的微命令控制信号也要增加,故控制信号相关电路也会更加复杂。
虽然电路设计更加复杂,但复杂模型机的功能更加强大,可以实现更多功能的指令和程序。
本实验采用了17条指令和54条微指令,在模型机上实现了根据输入数据的第四位值X,求1+2+…+X的累加和的运算。
3.2指令系统
要控制计算机的硬件工作,就必须使用它的语言,机器语言的单词称为指令,其单词表称为指令集。
指令系统是一个CPU能够处理的全部指令的集合,它表征了计算机的基本功能,也决定了CPU所要求的能力和指令的格式以及机器的结构。
本节将介绍模型机实验中的指令系统,包括指令的格式、类型及操作功能。
3.2.1简单模型机指令
运算器实验和静态随机存储器实验没有涉及到指令。
微程序控制器中涉及到了相加(ADD)、输入(IN)、输出(OUT)和停机(HLT)等四条指令,指令格式如下:
微程序指令描述
表3.2
助记符号
指令格式
指令功能
IN
ADD
OUT
HLT
00100000
00000000
00110000
01010000
IN→R0
R0+R0→R0
R0→OUT
停机
微程序控制器中所有指令都是等长的,且需手动输入。
指令中没有指定寄存器,因为实验中只有一个寄存器R0。
指令也没有指定输出和输出的端口号,因为输入单元和输出单元都只有一个。
停机指令是指什么操作也不进行。
简单模型机是前面三个部件饰演的组合,相对于微程序控制器实验多了一个自动取指令的功能,即不需要手动输入指令,只需将指令序列存放在存储器中,程序运行时再按规则取出。
简单模型机实验并没有增加通用寄存器数量,也没有增加输入和输出的端口,故指令格式不变,仅新增加了一条无条件跳转指令。
指令格式如下:
简单模型机指令描述
表3.3
助记符号
指令格式
指令功能
IN
ADD
OUT
JMPaddr
HLT
00100000
00000000
00110000
11100000********
01010000
IN→R0
R0+R0→R0
R0→OUT
addr→PC
停机
简单模型机增加了一条双字节的无条件跳转指令,该指令的第一个字节表示跳转命令,第二个字节表示跳转的目的地址,由于此实验不涉及到多种寻址方式,故addr的内容就是目的地址。
JMP指令的功能是取出指令第二个字节的内容并赋给程序计数寄存器PC。
3.2.2复杂模型机指令
复杂模型机设计了十五条指令,分为运算类指令、控制转移类指令和数据传送类指令三大类指令。
这些指令涉及到4种寻址方式,如表3.4所示。
有四种寻址模式(M),故采用二位数编码。
直接寻址表示有效地址就是指令中直接给出的8位地址(D);间接寻址中,指令中给出的8位地址(D)并不是有效地址,以D作为地址从主存中取出的数据才是有效地址;RI变址寻址过程中,指定的寄存器RI的值与指令给出的值(D)相加,得到的便是有效地址;相对寻址是相对于程序计数器(PC)当前指向的地址来寻址的,即程序计数器(PC)中的值与指令给出的值(D)相加,得到有效地址。
寻址方式
表3.4
寻址模式M
有效地址E
说明
00
01
10
11
E=D
E=(D)
E=(RI)+D
E=(PC)+D
直接寻址
间接寻址
RI变址寻址
相对寻址
复杂模型机指令描述
表3.5
助记符号
指令格式
指令功能
MOVRD,RS
0100
RS
RD
RS→RD
ADDRD,RS
1001
RS
RD
RD+RS→RD
SUBRD,RS
0000
RS
RD
RD-RS→RD
ANDRD,RS
1000
RS
RD
RD∩RS→RD
ORRD,RS
0001
RS
RD
RD∩RS→RD
RRRD,RS
1010
RS
RD
RS右环移→RD
INCRD
0111
**
RD
RD+1→RD
LADMD,RD
1100
M
RD
D
E→RD
STAMD,RS
1101
M
RD
D
RD→E
JMPMD
1110
M
**
D
E→PC
BZCMD
1111
M
**
D
当FC或FZ=1时,E→PC
INRD,P
0010
**
RD
P
[P]→RD
OUTP,RS
0011
RS
**
P
RS→[P]
LDIRD,D
0110
**
RD
D
D→RD
HALT
0101
**
**
停机
运算类指令共有6条,分为算术运算、逻辑运算和移位运算等三种运算,几乎涵盖了计算机需要的所有运算,这六条指令分别为:
ADD、AND、INC、SUB、OR、RR。
所有运算类指令都为单字节,寻址方式都采用寄存器直接寻址[10]。
控制转移类指令[10]有三条HLT、JMP、BZC,用以控制程序的分支和转移,其中HLT为单字节指令,JMP和BZC为双字节指令,寻址方式各有不同,据指令中的寻址模式编码(M)而定。
数据传送类指令有IN、OUT、MOV、LDI、LAD、STA共6条,用以完成寄存器和寄存器、寄存器和I/O、寄存器和存储器之间的数据交换,除MOV指令为单字节指令外,其余均为双字节指令。
指令的具体说明见表3.5,表中M表示寻址模式,RS和RD用二位二进制编码表示源寄存器和目的寄存器,D是一个八位二进制数,P是端口号,占用一个字节,**
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重庆 大学本科 学生 毕业设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)