当前位置:文档之家› 硬件课程设计报告 南理工

硬件课程设计报告 南理工

复杂模型机设计实验
专业:软件工程
班级:1000505
组员:
组员:
一、实验目的
综合运用所学计算机组成原理知识,设计并实现较为完整的计算机。

二、实验设备
PC机一台,TD-CMA实验系统一套。

三、实验原理
下面讲述一下模型计算机的数据格式及指令系统。

1.数据格式
模型机规定采用定点补码表示法表示数据,字长为8位,8位全用来表示数据(最高位不表示符号),数值表示范围是: 0≤X≤28-1。

2.指令设计
模型机设计三大类指令共十五条,其中包括运算类指令、控制转移类指令,数据传送类指令。

运算类指令包含三种运算,算术运算、逻辑运算和移位运算,设计有6条运算类指令,分别为:ADD、AND、INC、SUB、OR、RR,所有运算类指令都为单字节,寻址方式采用寄存器直接寻址。

控制转移类指令有三条HLT、JMP、BZC,用以控制程序的分支和转移,其中HLT为单字节指令,JMP和BZC为双字节指令。

数据传送类指令有IN、OUT、MOV、LDI、LAD、STA共6条,用以完成寄存器和寄存器、寄存器和I/O、寄存器和存储器之间的数据交换,除MOV指令为单字节指令外,其余均为双字节指令。

3.指令格式
其中,
IN和
OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,P为I/O端口号,占用一个字节。

系统设计五种数据寻址方式,即立即、直接、间接、变址和相对寻址,LDI 指令为立即寻址,LAD、STA、JMP和BZC指令均具备直接、间接、变址和相对寻
址能力。

LDI
LAD、
其中M。

表5-3-2 寻址方式
4.指令系统
根据模型机所要完成的功能设计自己的指令系统。

列出了各条指令的格式、汇编符号、指令功能。

四、总体设计
本模型机的数据通路框图如图5-3-2所示。

图5-3-2 数据通路框图
和前面的实验相比,复杂模型机实验指令多,寻址方式多,只用一种测试已不能满足设计要求,为此指令译码电路需要重新设计。

如图5-3-3所示在IR单元的INS_DEC中实现。

图5-3-3 指令译码原理图
本实验中要用到四个通用寄存器R3…R0,而对寄存器的选择是通过指令的低四位,为此还得设计一个寄存器译码电路,在IR单元的REG_DEC(GAL16V8)中实现,如图5-3-4所示。

图5-3-4 寄存器译码原理图
根据机器指令系统要求,设计微程序流程图及确定微地址,如图5-3-5所示。

按照系统建议的微指令格式,见表5-3-4,参照微指令流程图,将每条微指令代码化,译成二进制代码表,见表5-3-5,并将二进制代码表转换为联机操作时的十六进制格式文件。

表5-3-4 微指令格式
五、实验步骤
1. 按图5-3-6连接实验线路,仔细检查接线后打开实验箱电源。

2. 写入实验程序,本设计采用联机写入方式。

联机软件提供了微程序和机器程序下载功能,以代替手动读写微程序和机器程序,但是微程序和机器程序得以指定的格式写入到以TXT为后缀的文件中。

选择联机软件的“【转储】—【装载】”功能,在打开文件对话框中选择上面所保存的文件,软件自动将机器程序和微程序写入指定单元。

选择联机软件的“【转储】—【刷新指令区】”可以读出下位机所有的机器指令和微指令,并在指令区显示,对照文件检查微程序和机器程序是否正确,如果不正确,则说明写入操作失败,应重新写入,可以通过联机软件单独修改某个单元的指令,以修改微指令为例,先用鼠标左键单击指令区的‘微存’TAB按钮,然后再单击需修改单元的数据,此时该单元变为编辑框,输入6位数据并回车,编辑框消失,并以红色显示写入的数据。

3. 运行程序,本次课程设计采用联机运行
进入软件界面,选择菜单命令“【实验】—【复杂模型机】”,打复杂模型机实验数据通路图,选择相应的功能命令,即可联机运行、监控、调试程序。

按动CON单元的总清按钮CLR,然后通过软件运行程序,当模型机执行完OUT指令后,检查OUT单元显示的数是否正确。

在数据通路图和微程序流中观测指令的执行过程,并观测软件中地址总线、数据总线以及微指令显示和下位机是否一致。

六、操作码设定
七、实验程序
1.机器程序
$P 00 01
$P 01 00
$P 02 56
$P 03 68
$P 04 01
$P 05 21
$P 06 14
$P 07 40
$P 08 4A
$P 09 9C
$P 0A 70
$P 0B 84
$P 0C 01
$P 0D 99
$P 0E BF
$P 0F F3
$P 10 7D
$P 11 30
$P 12 36
$P 13 80
$P 14 18
$P 15 FF
$P 16 7B
$P 17 FF
$P 18 00
$P 19 FF
$P 1A FF
$P 1B F7
$P 1C FF
$P 1D FF
$P 1E FD
$P 1F FF
$P 20 FF
$P 21 FF
$P 22 FF
$P 23 DF
$P 24 FF
$P 25 FF
$P 26 FF
$P 27 FF
$P 28 BF
$P 29 FF
$P 2A FF
$P 2B DF
$P 2C FE
$P 2D BF
$P 2E FF
$P 2F FF
$P 30 FF
$P 31 F7
$P 32 7B
$P 33 FF
$P 34 BD
$P 35 A7
$P 36 67
$P 37 FF
$P 38 FD
$P 39 7E
$P 3A FF
$P 3B BF
$P 3C FF
$P 3D 7F
$P 3E FF
$P 3F FF
$P 40 3F
$P 41 11
2.微程序
$M 00 000001 $M 01 006D42 $M 02 107070 $M 03 106004 $M 04 183001 $M 05 106006 $M 06 280401 $M 07 002408 $M 08 04B201 $M 09 00240A $M 0A 013201 $M 0B 000001 $M 0C 005341
$M 0E 01B20F $M 0F 01B201 $M 10 06B211 $M 11 43B201 $M 12 101013 $M 13 002814 $M 14 04E216 $M 15 000017 $M 16 103001 $M 17 021218 $M 18 06B201 $M 19 04E21C $M 1A 200201 $M 1B 00161C $M 1C 10301A $M 1D 10201E $M 1E 00141F $M 1F 01E21B $M 20 001603 $M 21 001605 $M 22 006D47 $M 23 006D49 $M 24 003401 $M 25 001610 $M 26 001612 $M 27 006D54 $M 28 006D55 $M 29 006D57 $M 2A 00242B $M 2B 05B201 $M 2C 0000CB $M 2D 04E22E $M 2E 04922F $M 2F 200601 $M 30 006D43 $M 31 006D45 $M 32 001607 $M 33 001609 $M 34 001611 $M 35 003401 $M 36 006D52 $M 37 001417 $M 38 006D5D
八、实验心得
这次硬件课程设计共计一天半,由两人合作共同完成。

在实验开始时,由于之前做过微指令的实验,我以为这次实验不会很复杂,只是把以前做过的几个实验拼凑下就可以了,但实际操作过程中我们还是遇到了很多麻烦。

在连线测试过程中,首先用测试代码测试模型机的每个模块的连线是否正确,结果发现少连了三条线,后来在老师的帮助下用书上已经写出的代码进行测试,观察模型机的流通图,发现程序的流动是正确的,由此才确定了实验的连线正确。

连线的过程体会到做事一定要认真仔细有条理,这样不会给后续的工作造成困扰和麻烦。

在写微指令时,我们对于某些指令流程不了解,尤其是移位、相对寻址的微指令比较复杂,于是我们先分析了书本上的微指令,写出相对简单的机器指令的微指令,然后查阅更多的资料,经过反复调试才弄清楚复杂指令的微指令流程。

但在最终运行时,我们将最后一条微指令的下地址写错了,没有跳转到第一条,经由同学的帮助指出我们才发现这个错误。

总的来说,这次实验是至今为止我们所做的一个比较复杂的实验,花费的时间也最多,当然收获也很多。

首先,通过这次实验,我们巩固了组成原理微程序的相关知识;其次,我们进一步了解了各部件之间的分工与配合,对机器指令与微指令之间的关系有了更加直接清晰的认识;再者,这次实验提高了我们的硬件设计及动手能力,这对于计算机专业的学生是十分重要的。

最后,谢谢老师在实验过程中的耐心讲解和指导。

相关主题