计算机组成原理课程设计_第1页
计算机组成原理课程设计_第2页
计算机组成原理课程设计_第3页
计算机组成原理课程设计_第4页
计算机组成原理课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机组成原理计算机组成原理课程设计课程设计目目 录录一、课程设计的目的一、课程设计的目的.3二、模型机的设计步骤二、模型机的设计步骤.3三、实验装置三、实验装置.4四、设计题目四、设计题目.4题目一:.4题目二:.4题目三:.4题目四:.4五、课程设计心得五、课程设计心得.4六、附录六、附录.4附录 1(数据通路):.4附录 2(系统连线参考图).4附录 3 (微指令格式).42七、参考文献七、参考文献.22一、课程设计的目的一、课程设计的目的通过对一个简单计算机的设计,对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深对理论

2、课程的理解。为今后的科研打下扎实的基础。二、模型机的设计步骤二、模型机的设计步骤设计一台完整的计算机,大致需按如下的顺序来考虑:1.确定设计目标确定设计目标确定所设计计算机的功能和用途。2.确定指令系统确定指令系统确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方式,并给出具体的编码,比如指令的操作码,地址码等的位数及各种编码的含义。3.确定总体结构确定总体结构(寄存器、加法器、选择器的设置与数据通路的设计)总体结构设计包含确定各部件设置以及它们之间的数据通路结构。在此基础上,就可以拟出各种信息传输路径,以及实现这些传输所需要的微命令。对于部件设置,比如要确定运算器部件

3、采用什么结构,控制器是微程序控制还是硬联控制等。综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,确定采用何种方案的内总线及外总线。数据通路不同,执行指令所需要的操作就不同,计算机的结构也就不一样。4.设计指令执行流程设计指令执行流程数据通路确定后,就可以设计指令系统中每条指令的执行流程。根据指令的复杂程度,确定每条指令所需要的机器周期数。对于微程序控制的计算机,根据总线结构,需考虑哪些微操作可以安排在同一条微指令中,哪些微操作不能安排在同一条微指令中。5.确定微程序地址确定微程序地址确定后续微地址的形成方法,确定每个微程序地址及分支转移地址。6.微指令代码化微指令代码化

4、根据微指令格式,将微程序流程中的所有微指令代码化。首先写出每个微地址以及该地址对应的微指令代码(共 24 位二进制信息) ,如下表所示:微地址s3 s2 s1 s0 m cn we a9 a8abcua5ua00 00 0 0 0 0 0 0 1 10 0 00 0 01 0 00 1 0 0 0 00 10 0 0 0 0 0 0 1 11 1 01 1 01 1 00 0 0 0 1 00 20 0 0 0 0 0 0 0 11 0 00 0 00 0 10 0 1 0 0 00 30 0 0 0 0 0 0 0 11 1 00 0 00 0 00 0 0 1 0 0其中:微地址表示控制存

5、储器的地址,后面的 24 位表示微指令。然后将每个微地址和对应的微指令转换成 16 进制,并写在一行,格式为:$m*,前面 2 个*表示该微指令的在微控制器中的地址,后面 6 个*表示该微指令代码。如上述表中的四条微指令写成:$m00018110:表示在控制存储器地址 00h 处的代码是 018110h。$m0101ed82:表示在控制存储器地址 01h 处的代码是 01ed82h。$m0200c048:表示在控制存储器地址 02h 处的代码是 00c048h。$m0300e004:表示在控制存储器地址 03h 处的代码是 00e004h。7 编写工作程序并代码化编写工作程序并代码化编写测试用

6、的工作程序,并写出内存映像,用二进制表示。然后代码化用 16 进制来表示,格式为:$p*,前面 2 个*表示该内存的地址,后面 2 个*表示该地址的数据。例如:$p0044:表示在内存地址 00h 处的数据是 44h。$p0146:表示在内存地址 01h 处的数据是 46h。8 联机操作文件的建立联机操作文件的建立为了从 pc 机下载工作程序和微程序,需要建立联机操作文件,该文件是普通的文本文件,扩展名为 txt,可用记事本来建立的,要求:a、 测试用的工作程序排在文件的前面,每个内存地址及代码占一行;b、 微指令代码排在文件的后面,每个微地址及微指令代码占一行;例如,下面是一个实验的文件(文

7、件名:sample.txt):$p0044$p0146$p0298$m00018108$m0101ed82$m0200c0509连接实验线路连接实验线路根据附录 2 的实验线路图连接实验线路,其中第 1 题和第 2 题用图 1(简单模型机的连线图)连线,第 3 题和第 4 题用图 2(复杂模型机的连线图)连线。10下载工作程序和微程序下载工作程序和微程序使用唐都软件将工作程序和微程序下载到实验箱的内存和控制存储器中。其中,自带电源线的实验箱用 ncmp53 软件,启动软件后使用 f4装载进行下载;外接电源线的实验箱用 cmpp 软件,启动软件后在菜单中选择转储/装载进行下载。11调试调试在总调

8、试前,先按功能模块进行组装和分调,因为只有各功能模块工作正常后,才能保证整机的正常运行。可以使用控制台命令 swa、swb 的不同取值,或使用联机软件检查内存程序是否正确,微程序是否正确。当所有功能模块都调试正常后,进入总调试。可以使用单步微指令方式执行工作程序,也可以直接使用连续方式执行程序。在执行过程中,可以通过联机软件的数据通路图查看信息在计算机中的传送路径,更有利于掌握数据的通路结构。这样也可以直接验证程序和微程序的正确性。如果运行结果不正确,需要返回来修改程序或微程序,每次修改后,需要重新完成第10 步,将程序和微程序下载到实验箱中。三、实验装置三、实验装置* 计算机组成原理教学实验

9、系统一台,排线若干。四、设计题目四、设计题目题目一:题目一:1.实验要求:设计一台模型计算机,实现下列指令系统,并通过给定的工作程序验证上述指令系统。本设计实现的模型机共包含五条机器指令:in(输入)、add(加法)、sta(存数)、out(输出)、jmp(无条件转移),其指令格式如下(前 4 位为操作码):助记符机器指令码(二进制)说明微程序的入口地址(八进制)in00000000“input device”中的开关状态r010(取指令后续微指令默认地址为 10)add addr00010000 xxxxxxxxro+addrr011sta addr00100000 xxxxxxxxroad

10、dr12out addr00110000 xxxxxxxxaddrled13jmp addr01000000 xxxxxxxxaddrpc14其中 in 为单字长(8 位),其余为双字长指令,xxxxxxxx 为 addr 对应的二进制地址码。2.在测试程序装入内存后,机器自动执行控存中 00 号的微指令,产生控制台命令,其流程如下(01 为取指微指令的地址):3.根据附录 2 的图 1(简单模型机的连线图)连接实验线路。4.本设计的工作程序的内存映象(装入起始地址 00h)如下:地址(二进制)内容(二进制)助记符说 明十六进制代码0000 00000000 0000in将输入数据送 r0 寄

11、存器00000000 00010001 0000add oah01100000 00100000 1010ro+0ahr0020a0000 00110010 0000sta 0bh03200000 01000000 1011r00bh040b0000 01010011 0000out 0bh05300000 01100000 10110bhled060b0000 01110100 0000jmp 0107400000 10000000 000101hpc08010000 10100000 0001输入自定的数据0a015.本设计的程序流程图如下:6.微程序(主要 add 部分)微地址s3 s2

12、 s1 s0 m cn we a9 a8abcua5ua0(后续地址)十六进制代码0 30 0 0 0 0 0 0 0 11 1 00 0 00 0 00 0 0 1 0 00300e0040 40 0 0 0 0 0 0 0 10 1 10 0 00 0 00 0 0 1 0 10400b0050 50 0 0 0 0 0 0 1 10 1 00 0 10 0 00 0 0 1 1 00501a2060 61 0 0 1 0 1 0 1 10 0 11 0 10 0 00 0 0 0 0 106959a010 90 0 0 0 0 0 0 1 11 1 01 1 01 1 00 0 0 0

13、1 10901ed83分析:程序思想如下:首先将输入数据送 r0 寄存器,然后送到 alu 单元执行 add 操作,加法完成后将结果再送到 r0 寄存器,然后 sta 跳转,将 r0 寄存器的数据送到 0bh,然后送显示器显示,送显后立即 jmp 指令回到微程序的 01 步,即继续执行 add 加法,一直循环。微程序中,当 a9=0,a8=0 时,选中 y0; 当 a9=0,a8=1 时,选中 y1; 当 a9=1,a8=0 时,选中 y2; 当 a9=1,a8=1 时,选中 y3 微指令解释:指令中 s3cn 为全 0 表示不执行任何运算操作,a9,a8 如开始解释的表示选择外设,均为 1

14、表示选中扩展单元(ex unit)的 y3,而根据实验接线图可知,y3 表示不做任何操作,a,b,c 字段为根据实验线路图中起作用的单元,从 09 开始a,b,c 分别为 110,110,110 表示 ldar,pc-b,ldpc 有效(附录图 3) ,根据数据通路图,即是 pc-ar,pc 并自动+1,ua5ua0 为 000011,即下址为下一条微指令地址 03h。09 执行完后根据下址到达 03,其中 a9,a8 为 01 即是选中 y1,y1 与 we 相连表示存储器工作,即 ram-bus-ar,后续地址为 04h。04 指令中,a,b,c 字段分别为 011,000,000 表示

15、lddr2 有效,即表示将内存中的数据传送到 dr2 寄存器中,ram-bus-dr2,后续地址为 05h。05 这条指令的 a,b,c 字段为 010,001,000,即是 lddr1,rs-b 有效,表示叫 r0 的数据传送到 dr1 寄存器中,r0-dr1,后续地址为06h。06 指令既为 add 运算,s3cn 为 100101,a,b,c 字段为 001,101,000,即ldri,alu-b 逻辑运算单元有效,执行运算操作,将 dr1 和 dr2 中的数据相加,完成后将结果传送到 r0, (dr1)+(dr2)-r0。即完成了一次加法操作。add 指定完成后有jmp 跳转到 01h

16、。一直循环进行加法运算, 微指令代码如下:$m00018110$m0700e00d$m0e00e00f$m15070a01$m0101ed82$m08001001$m0f00a015$m1600d181$m0200c048$m0901ed83$m1001ed92$m17070a10$m0300e004$m0a01ed87$m1101ed94$m18068a11$m0400b005$m0b01ed8e$m1200a017$m0501a206$m0c01ed96$m13018001$m06959a01$m0d028201$m140020187.测试数据:feh结果为:fe-ff-00-01-fe-

17、ff-00- 一直循环,每次加 1。8.结果分析:add 执行的是不产生进位的加法,所以实验结果只是每次在原来的数据上加 01h。不产生进位加。题目二:题目二:实验要求:设计一台模型计算机,实现下列指令系统,并通过下列工作程序验证上述指令系统。本模型机共包含五条机器指令:in(输入)、add(加法)、sta(存数)、out(输出)、jmp(无条件转移),其指令格式如下(前 4 位为操作码):助记符机器指令码说明微程序的入口地址(八进制)in00000000“input device”中的开关状态r010(取指令后续微指令默认地址为 10)adc imm00010000 xxxxxxxxro+

18、imm+cyr011sta addr00100000 xxxxxxxxroaddr12out addr00110000 xxxxxxxxaddrled13jmp addr01000000 xxxxxxxxaddrpc14其中 in 为单字长(8 位),其余为双字长指令,xxxxxxxx 为 addr 对应的二进制地址码或 imm 所对应的二进制数据(补码形式) 。连接实验线路在测试程序装入内存后,机器自动执行控存中 00 号的微指令,产生控制台命令,其流程如下(01 为取指微指令的地址):根据附录 2 的图 1(简单模型机的连线图)连接实验线路。本设计实现的模型机共包含五条机器指令:in(输入

19、)、adc(带进位加法)、sta(存数)、out(输出)、jmp(无条件转移) 。本设计的工作程序的内存映象(装入起始地址 00h)如下:地址(二进制)内容(二进制) 助记符说 明十六进制代码0000 00000000 0000in将输入数据送 r0 寄存器00000000 00010001 0000adc o1h01100000 00100000 0001ro+01h+cyr002010000 00110010 0000sta 0ah03200000 01000000 1010r00ah040a0000 01010011 0000out 0ah05300000 01100000 10100a

20、hled060a0000 01110100 0000jmp 0107400000 10000000 000101hpc08010000 10100000 0001输入自定的数据0a01本设计的程序流程图如下:微程序解释(主要解释 adc)微地址s3 s2 s1 s0 m cn we a9 a8abcua5ua0(后续地址)十六进制代码0 40 0 0 0 0 0 0 0 10 1 10 0 00 0 00 0 0 1 0 10400b0050 50 0 0 0 0 0 0 1 10 1 00 0 10 0 00 0 0 1 1 00501a2060 61 0 0 1 0 1 0 1 10 0

21、11 0 11 0 10 0 0 0 0 106959b410 90 0 0 0 0 0 0 1 11 1 01 1 01 1 00 0 0 1 0 00901ed84分析:程序的思想如下:首先将输入数据送 r0 寄存器,然后送 alu 单元执行 adc 操作,adc 为带进位的加法,所以结果是在 add 的基础上又多加了一个 cy(进位标志) ,adc完成后结果送到 r0 寄存器,然后 sta 跳转,将 r0 寄存器的数据送到0ah,然后送显示器显示,送显后立即 jmp 指令回到微程序的 01 步,即回到 adc 继续执行带进位的加法,一直循环。微程序中,当 a9=0,a8=0 时,选中 y

22、0; 当 a9=0,a8=1 时,选中 y1; 当 a9=1,a8=0 时,选中 y2; 当 a9=1,a8=1 时,选中 y3 微指令解释:指令中 s3cn 为全 0 表示不执行任何运算操作,a9,a8 表示选择外设,均为 1 表示选中扩展单元(ex unit)的 y3,即为不做任何操作,从 09 开始,a,b,c 字段分别为 110,110,110 表示 ldar,pc-b,ldpc 有效(附录 3 说明) ,根据数据通路图,即是 pc-ar,pc 并自动+1,后续地址为 04h。04 为送数,a,b,c 字段分别为 011,000,000 表示 lddr2 有效,即表示将内存中的数据传送

23、到 dr2 寄存器中,ram-bus-dr2,后续地址为 05h;05 中的 a,b,c 字段为 010,001,000,即是 lddr1,rs-b 有效,表示将 r0 中的数据传送到 dr1 寄存器中,r0-dr1,后续地址为 06h;06 指令为 adc 加法指令,其中 s3cn 为 100101,即执行带进位加法运算,a,b,c 字段为 001,101,101,即为选中 ldri,alu-b,ar,在 alu 单元中将 dr1和 dr2 中的数据相加并将结果输出到 r0 中,同时 ar 置 0, (dr1)+(dr2)-r0,ar=0,后续地址为 01h。adc 运算完成。微指令中 cn

24、 为控制信号当 cn=1,并且 ar=0 时,把上次运行结果带入下次运算。当 cn=0,屏蔽上次运行结果,不带入下次运算。所有微指令代码如下:$m00018110$m0700e00d$m0d028201$m13018001$m0101ed82$m08001001$m0e00e00f$m14002018$m0200c048$m0901ed84$m0f00a015$m15070a01$m0400b005$m0a01ed87$m1001ed92$m1600d181$m0501a206$m0b01ed8e$m1101ed94$m17070a10$m06959b41$m0c01ed96$m1200a01

25、7$m18068a11测试数据:feh结果为:fe-ff-00-02-03-04-ff-00-02- 做循环加法结果分析:本程序执行的是产生进位的加法,测试数据中 ff+01 后会产生进位,控制信号 cn=1,ar=0,把上次运行结果带入下次运算,进位产生的 01 就自动带入到下次运算中,最后结果为 00+01=02。题目三:题目三:1.实验要求:设计一台模型计算机,实现下列指令系统,并用指定的工作程序验证上述指令系统。本模型机的指令系统及指令格式如下(前 4 位为操作码):助记符号指令格式功能微程序入口地址(八进制)mov rs,rd1000rsrdrsrd30adc rs,rd1001rs

26、rdrs+rd+cyrd31bzc00000000d当 cy=1 或 z=1 时,dpc否则,顺序执行20(取指令后续微指令默认地址为 20)in rd010001rdinput device rd24out rd010110rdrd output device25hlt01100000停机26其中, rs 为源寄存器,rd 为目的寄存器,并规定:rs 或 rd选定的寄存器000110r0r1r22.连接实验线路在测试程序装入内存后,机器自动执行控存中 00 号的微指令,产生控制台命令,其流程如下(01 为取指微指令的地址):3.根据附录 2 的图 2(复杂模型机的连线图)连接实验线路。4.本

27、设计实现的模型机共包含五条机器指令:in(输入)、adc(带进位加法)、mov(移动) 、bzc(条件转移) 、out(输出)、hlt(停机) 。本设计的工作程序的内存映象(装入起始地址 00h)如下:地址(二进制)内容(二进制)助记符说 明十六进制代码0000 00000100 0100in将输入数据送 r0 寄存器00440000 00010100 0110in将输入数据送 r2 寄存器01460000 00101001 1000adcro+01h+cyr002980000 00111000 0001movr0r103810000 01000101 1001r1led04590000 01

28、010000 0000bzc05000000 01100000 001002d06020000 01110110 0000hlt停机07605.本设计的程序流程图如下:6.微程序解释(以 bzc 为例)微地址s3 s2 s1 s0 m cn we a9 a8abcua5ua0(后续地址)十六进制代码0 30 0 0 0 0 0 0 0 10 1 00 0 00 1 11 0 0 0 0 00300a0231 00 0 0 0 0 0 0 1 11 1 01 1 01 1 00 0 0 0 1 11001ed832 00 0 0 0 0 0 0 1 10 0 00 0 00 0 00 0 0 0

29、 0 1200090013 00 0 0 0 0 1 0 1 11 0 11 0 11 1 00 0 0 0 0 13005db81分析:程序的思想如下:此程序是输入两个数据相加,首先将输入一个数到 r0 寄存器,然后输入另外一个到 r2 寄存器,完成后将时局送 alu 单元执行 adc 操作,adc 为带进位的加法,所以结果是在 add 的基础上又多加了一个 cy(进位标志) ,adc 完成后结果送到r0 寄存器,然后 move 命令将 r0 中的数送到 r1,然后送显示器显示,接着 bzc 跳转,判断是否循环执行,如 adc 加法中产生了进位,cy=1,则送显后立即 jmp 指令回到微程序

30、的 01步,即回到 adc 继续执行带进位的加法,一直循环,否则停机。微程序中,当 a9=0,a8=0 时,选中 y0; 当 a9=0,a8=1 时,选中 y1; 当 a9=1,a8=0 时,选中 y2; 当 a9=1,a8=1 时,选中 y3 ;微指令解释:根据流程图以 10h 的指令开始,a9,a8 为 1,1 即为选中 y3,不做任何操作,a,b,c 字段为 010,000,011,表示 ldar,pc-b,ldpc 有效(附录图 3 说明) ,即是 pc-ar,pc+1,后续地址为 03h。03 指令中 a9,a8 为 0,1 为选中 y1,y1 与 we 相连表示存储器工作,a,b,

31、c 字段为 010,000,011,表示选中 lddr1 和 p(3) ,p(3)为进行判断,若有进位则后续地址为 30h,没有则后续地址为 20h。30 指令中 a,b,c 字段为 101,101,110 表示 load,alu-b,ldpc 有效,将dr1 中的数据输入到 pc 中,即 dr1-bus-pc,后续地址为 01h,继续执行 adc所有微指令代码如下:$m00018108$m1001ed83$m1901a22a$m2d65ab6e$m0101ed82$m14001001$m20009001$m3405db81$m0200c050$m15030401$m230180e4$m030

32、0a023$m16018016$m24018001$m0400e0a0$m18019201$m2c01a42d7.测试数据:第一组 r0=feh r2=01h 第二组 r0=ffh r2=01h结果为: 第一组 ff第一组 028.结果分析:两组数据主要是有进位与没有进位之间的差别,第一组数据fe+01=ff,r0 和 r1 中的数据相加后没有产生进位,因此 cy=0,z=0 输出结果后,bzc 指令就会直接跳转到 hlt 执行停机操作,使程序终止;第二组数据为 ff+01,结果为 00,产生一个进位,因此 cy=1,z=1,bzc 的条件成立,跳转到 02 继续指令执行;并且 adc 会将上

33、次的进位带入相加,所以结果是 00+01+cy=02,继续执行adc 到 bzc 时会因为没有产生进位,使程序终止运行。题目四:题目四:1.实验要求:设计一台模型计算机,完成下列指令系统,并编写工作程序验证上述指令系统。本模型机共设计 16 条基本指令,其中算术逻辑指令 9 条,访问内存指令和程序控制指令 4 条,输入输出指令 2 条,其它指令 1 条。下表列出了各条指令的格式、汇编符号、指令功能。类型助记符号指令格式功能微程序入口地址(八进制)clr rd011100rd0rd27算术mov rs,rd1000rsrdrsrd30adc rs,rd1001rsrdrs+rd+cyrd31sb

34、c rs,rd1010rsrdrs-rd-cyrd32inc rd1011rdrd+1rd33and rs,rd1100rsrdrsrdrd34com rd1101rdrdrd35rrc rs,rd1110rsrdcyrsr srd36逻辑指令rlc rs,rd1111rsrdcyrsr srd37lda m, d, rd00m00rdderd40访存指令sta m, d, rd00m01rddrde41jmp m,d00m1000depc42程序控制指令bzc00m1100d当 cy=1 或 z=1 时,epc43in addr, rd010001rdaddrrd24输入输出out addr

35、, rd010110rdrdaddr25其它halt01100000停机26下面对各种指令格式加以说明:(1) 算术逻辑指令算术逻辑运算指令共 9 条,用单字节表示,寻址方式采用寄存器直接寻址,格式为:7 6 5 43 21 0op-codersrd其中,op-code 为操作码,rs 为源寄存器,rd 为目的寄存器,并规定:rs 或 rd选定的寄存器000110r0r1r2(2) 访存指令及程序控制指令模型机设计两条访存指令,即存数(sta)、取数(lda),两条转移指令,即无条件转移指令(jmp)、结果为 0 或有进位转移指令(bzc),指令格式为:7 65 43 21 000mop-co

36、derdd其中,op-code 为操作码,rd 为目的寄存器地址(lda、sta 指令使用),d 为位移量(正负均可),m 为寻址模式,其定义为:寻址模式 m有效地址 e说明微程序入口00011011e=de=(d)e=(ri)+de=(pc)+d直接寻址间接寻址ri 变址寻址相对寻址20212223 变址寻址寄存器指定为寄存器 r2。(3) 输入/输出指令输入输出指令均采取单字节指令,其格式如下:7 6 5 43 21 0op-codeaddrrd其中,addr=01 时,选中“input device”中的开关组作为输入设备,addr=10 时,选中“output device”中的数码显

37、示作为输出设备。(4) 停机指令用于实现停机操作。2.连接实验线路在测试程序装入内存后,机器自动执行控存中 00 号的微指令,产生控制台命令,其流程如下(01 为取指微指令的地址):3.根据附录 2 的图 2(复杂模型机的连线图)连接实验线路。4.本设计实现的模型机共包含五条机器指令:in(输入)、clr(清零) 、adc(带进位加法)、suc(带借位减法) 、inc(累加 1) 、and(逻辑与) 、com(取反) 、mov(移动) 、rrc(循环右移) 、rlc(循环左移) 、bzc(条件转移) 、out(输出)、hlt(停机) 。本设计的工作程序的内存映象(装入起始地址 00h)如下:地

38、址(二进制)内容(二进制)助记符说 明十六进制代码0000 00000100 0100in将输入数据送 r0 寄存器00440000 00010100 0110in将输入数据送 r2 寄存器01460000 00101001 1000adcro+01h+cyr002980000 00111000 0001movr0r103810000 01001111 1001rlc带进位左循环移位 r1结果送到 r104f50000 01010101 1001outr1led05590000 01100000 1100bzc060c0000 01100000 001002d07020000 01110110

39、 0000hlt停机08605.本设计的程序流程图如下:p(1)rambusbusir运行微程序pcarpc+1pcarpc+1rambusbus dr1rambusbus arpcarpc+1rambusbus arrambusbus dr1rambusbus arpcarpc+1rambusbus dr1(ri)dr2dr1+dr2busardr1+dr2bus dr1pcarpc+1rambusbus dr1pcbusbus dr2dr1+dr2busardr1+dr2bus dr1swbusbusrd01rdled01stop01alu=0busbusrd01rsrd01rsbusbu

40、s dr1rdbusbus dr2dr1+dr2busrdrsbusbus dr2rdbusbus dr1dr1-dr2busdr1dr1rdrdbusbus dr1dr1+1bus rdrsbusbus dr1rdbusbus dr2dr1dr2busrdrdbusbus dr1dr1busbus rdrs299带进位右循环移位299rdrs299带进位左循环移位299rdp(1)rambusbusrd01rdbusbus ram01dr1busbus pc01p(3)dr1busbuspc0101yn010220202122232425262730313233343536377172706

41、766636562545556525303040506071516174546475051404040404041424344644401010101010101ladstajmpbzc00(直接)01(间接)10(变址)11(相对)inouthltclrmovadcsucincandcomrrcrlc带进位6.微程序(主要 rlc 部分)微地址s3 s2 s1 s0 m cn we a9 a8abcua5ua0(后续地址)十六进制代码1 f0 0 1 1 0 0 0 1 10 0 00 0 10 0 01 1 1 0 0 11f3182393 90 0 0 1 1 0 0 1 10 0 01

42、 0 00 0 01 1 1 0 1 03919883a3 a0 0 0 0 0 0 0 1 10 0 11 0 00 0 00 0 0 0 0 13a019801分析:程序的思想如下:此程序是输入两个数据相加,并左移一位的操作,首先将输入一个数到 r0 寄存器,然后输入另一个数到 r2 寄存器,完成后将数送 alu 单元执行 adc 操作,adc 为带进位的加法,所以结果是在 add 的基础上又多加了一个 cy(进位标志) ,adc完成后结果送到 r0 寄存器,然后 move 命令将 r0 中的数送到 r1,在 r1 进行一次左移操作(先送数到 299,执行一次左移后将数传回)后再将数送存到

43、 r1,然后送显示器显示,接着 bzc 跳转,判断是否循环执行,如 adc 加法中产生了进位,cy=1,则送显后立即 jmp 指令回到微程序的 01 步,即回到 adc 继续执行带进位的加法,一直循环,如没有产生进位,则停机。微程序中,当 a9=0,a8=0 时,选中 y0; 当 a9=0,a8=1 时,选中 y1; 当 a9=1,a8=0 时,选中 y2; 当 a9=1,a8=1 时,选中 y3微指令解释:adc 加法完成后会执行微地址 1fh 的指令,s3cn 为001100,a,b,c 字段为 000,001,000 即选择 rs-b 有效,表示将 r1 的数据送到 299,后续地址为

44、39h。39h 指令中 s3cn 为 000110,a,b,c 字段为 000,100,000 为 299-b 有效,执行循环左移运算,后续地址为 3ah。3ah 指令的 a,b,c 字段为001,100,000 表示选中 ldri,299-b 有效,将 299 单元中循环左移后所得的结果送到r1,299-r1。至此,rlc 指令完成。剩下程序会将结果送显继续执行。所有微指令代码如下:$m00018108 $m0e01b60f$m1e318237 $m2c01a42d$m3a019801$m0101ed82 $m0f95ea25$m1f318239 $m2d65ab6e$m3b070a08$m

45、0200c050 $m1001ed83$m20009001 $m2e0d9a01$m3c068a09$m0300a004 $m1101ed85$m21028401$m2f01aa30$m0400e0a0 $m1201ed8d$m2205db81$m300d8171$m0500e006 $m1301eda6$m230180e4$m31959b41$m0600a007 $m14001001$m24018001$m32019a01$m0700e0a0 $m16018016$m2595aaa0$m3301b435$m0801ed8a $m173d9a01$m2600a027$m3405db81$m09

46、01ed8c $m1901a22a$m2701bc28$m35b99b41$m0a00a03b $m1a01b22c$m2895ea29$m360d9a01$m0b018001 $m1b01a232$m2995aaa0$m37298838$m0c00203c $m1c01a233$m2a01b42b$m38019801$m0d00a00e $m1d01a236$m2b959b41$m3919883a7.测试数据:第一组 r0=ffh r2=01h 第二组 r0=01h r2=01h结果为: 第一组 r1=01 第二组 r1=049.结果分析:两组数据主要是有进位与没有进位之间的差别,第一组数据

47、 01+01=10,r0和 r2 中的数据相加后没有产生进位,因此 cy=0 将结果送到 299 后循环左移,然后送显,结果为 10h-100h,而 bzc 指令就会直接跳转到 hlt 执行停机操作,使程序终止;第二组数据为 ff+01,结果为 00,产生一个进位,因此 cy=1,将结果送到299 后循环左移,结果为 00h-01h,bzc 的条件成立,跳转到 02 继续指令执行,继续执行 adc 到 bzc 时会因为没有产生进位,使程序终止运行。五、课程设计心得五、课程设计心得通过这次课程设计,对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深了对组成原理理论课程的理解。通过自己对一系列微程序的编写,对程序执行的流程以及指令之间的跳转有了更深的理解,能够根据流程图和机器指令写出相应微程序,对简单模型机里的数据流向图也有了一定的理解,能看懂根据自己编写的微程序在模型机上的一步步流向,对add,adc,bzc,rlc等指令的运用更加熟悉,对它们微程序的一步步流程也有了清晰的认识,通过对机器指令和微指令的分析和编写,理解了指令代码所对应的功能。本次实验里的微程序均由自己根据流程图及机器指令编写,正确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论