计算机组成原理及系统结构课程设计.doc_第1页
计算机组成原理及系统结构课程设计.doc_第2页
计算机组成原理及系统结构课程设计.doc_第3页
计算机组成原理及系统结构课程设计.doc_第4页
计算机组成原理及系统结构课程设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

计算机组成原理与系统结构计算机组成原理与系统结构 课程设计课程设计 班级学号:班级学号:0137-2-80137-2-8 学生姓名:学生姓名:李李 乐乐 指导老师:指导老师:王王 森、陈森、陈 媛媛 计算机科学与工程学院计算机科学与工程学院 2005 年年 1 月月 目目 录录 一、课程设计的目的一、课程设计的目的3 二、模型机的设计步骤二、模型机的设计步骤3 三、实验装置三、实验装置4 四、设计题目四、设计题目4 题目一:4 题目二:4 题目三:4 题目四:4 五、课程设计心得五、课程设计心得4 六、附录六、附录4 附录 1(数据通路):.4 附录 2(系统连线参考图).4 附录 3 (微指令格式).42 七、参考文献七、参考文献22 一、课程设计的目的一、课程设计的目的 通过对一个简单计算机的设计,对计算机的基本组成、部件的设计、部件间的连接、 微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深对理论课 程的理解。 二、模型机的设计步骤二、模型机的设计步骤 设计一台完整的计算机,大致需按如下的顺序来考虑: 1.确定设计目标确定设计目标 确定所设计计算机的功能和用途。 2.确定指令系统确定指令系统 确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方 式,并给出具体的编码,比如指令的操作码,地址码等的位数及各种编码的含义。 3.确定总体结构确定总体结构(寄存器、加法器、选择器的设置与数据通路的设计) 总体结构设计包含确定各部件设置以及它们之间的数据通路结构。在此基础上,就可 以拟出各种信息传输路径,以及实现这些传输所需要的微命令。 对于部件设置,比如要确定运算器部件采用什么结构,控制器是微程序控制还是硬联 控制等。 综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,确 定采用何种方案的内总线及外总线。数据通路不同,执行指令所需要的操作就不同,计算 机的结构也就不一样。 4.设计指令执行流程设计指令执行流程 数据通路确定后,就可以设计指令系统中每条指令的执行流程。 根据指令的复杂程度,确定每条指令所需要的机器周期数。对于微程序控制的计算机, 根据总线结构,需考虑哪些微操作可以安排在同一条微指令中,哪些微操作不能安排在同 一条微指令中。 5.确定微程序地址确定微程序地址 确定后续微地址的形成方法,确定每个微程序地址及分支转移地址。 6.微指令代码化微指令代码化 根据微指令格式,将微程序流程中的所有微指令代码化。首先写出每个微地址以及该 地址对应的微指令代码(共 24 位二进制信息) ,如下表所示: 微地址S3 S2 S1 S0 M CN WE A9 A8ABC UA5UA0 0 00 0 0 0 0 0 0 1 10 0 00 0 01 0 00 1 0 0 0 0 0 10 0 0 0 0 0 0 1 11 1 01 1 01 1 00 0 0 0 1 0 0 20 0 0 0 0 0 0 0 11 0 00 0 00 0 10 0 1 0 0 0 0 30 0 0 0 0 0 0 0 11 1 00 0 00 0 00 0 0 1 0 0 其中:微地址表示控制存储器的地址,后面的 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 的实验线路图连接实验线路,其中第 1 题和第 2 题用图 1(简单模型机的 连线图)连线,第 3 题和第 4 题用图 2(复杂模型机的连线图)连线。 10下载工作程序和微程序下载工作程序和微程序 使用唐都软件将工作程序和微程序下载到实验箱的内存和控制存储器中。其中,自带 电源线的实验箱用 NCMP53 软件,启动软件后使用 F4装载进行下载;外接电源线的实验 箱用 CMPP 软件,启动软件后在菜单中选择转储/装载进行下载。 11调试调试 在总调试前,先按功能模块进行组装和分调,因为只有各功能模块工作正常后,才能 保证整机的正常运行。可以使用控制台命令 SWA、SWB 的不同取值,或使用联机软件检 查内存程序是否正确,微程序是否正确。 当所有功能模块都调试正常后,进入总调试。可以使用单步微指令方式执行工作程序, 也可以直接使用连续方式执行程序。在执行过程中,可以通过联机软件的数据通路图查看 信息在计算机中的传送路径,更有利于掌握数据的通路结构。这样也可以直接验证程序和 微程序的正确性。 如果运行结果不正确,需要返回来修改程序或微程序,每次修改后,需要重新完成第 10 步,将程序和微程序下载到实验箱中。 三、实验装置三、实验装置 TDN-CM+计算机组成原理教学实验系统一台,排线若干。 四、设计题目四、设计题目 题目一:题目一: 1.实验要求: 设计一台模型计算机,实现下列指令系统,并通过给定的工作程序验证上述指令系统。 本设计实现的模型机共包含五条机器指令:IN(输入)、ADD(加法)、STA(存数)、 OUT(输出)、JMP(无条件转移),其指令格式如下(前 4 位为操作码): 助记符机器指令码(二进制)说明微程序的入口地址 (八进制) IN00000000 “INPUT DEVICE”中 的开关状态R0 10 (取指令后续微指 令默认地址为 10) ADD addr00010000 XXXXXXXXRO+addrR011 STA addr00100000 XXXXXXXXROaddr12 OUT addr00110000 XXXXXXXXaddrLED13 JMP addr01000000 XXXXXXXXaddrPC14 其中 IN 为单字长(8 位),其余为双字长指令,XXXXXXXX 为 addr 对应的二进制地址码。 2.在测试程序装入内存后,机器自动执行控存中 00 号的微指令,产生控制台命令,其流 程如下(01 为取指微指令的地址): 3.根据附录 2 的图 1(简单模型机的连线图)连接实验线路。 4.本设计的工作程序的内存映象(装入起始地址 00H)如下: 地址(二进制)内容(二进制)助记符说 明十六进制代码 0000 00000000 0000IN 将输入数据送 R0 寄存器 0000 0000 00010001 0000ADD OAH0110 0000 00100000 1010RO+0AHR0020A 0000 00110010 0000STA 0BH0320 0000 01000000 1011R00BH040B 0000 01010011 0000OUT 0BH0530 0000 01100000 10110BHLED060B 0000 01110100 0000JMP 010740 0000 10000000 000101HPC0801 0000 10100000 0001 输入自定的数据 0A01 5.本设计的程序流程图如下: 6.微程序(主要 ADD 部分) 微地址S3 S2 S1 S0 M CN WE A9 A8ABC UA5UA0(后续地址) 十六进制代码 0 30 0 0 0 0 0 0 0 11 1 00 0 00 0 00 0 0 1 0 00300E004 0 40 0 0 0 0 0 0 0 10 1 10 0 00 0 00 0 0 1 0 10400B005 0 50 0 0 0 0 0 0 1 10 1 00 0 10 0 00 0 0 1 1 00501A206 0 61 0 0 1 0 1 0 1 10 0 11 0 10 0 00 0 0 0 0 106959A01 0 90 0 0 0 0 0 0 1 11 1 01 1 01 1 00 0 0 0 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 表示选中扩展单元(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 表示 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。一直循环进行加法运算, 微指令代码如下: $M00018110$M0700E00D$M0E00E00F$M15070A01 $M0101ED82$M08001001$M0F00A015$M1600D181 $M0200C048$M0901ED83$M1001ED92$M17070A10 $M0300E004$M0A01ED87$M1101ED94$M18068A11 $M0400B005$M0B01ED8E$M1200A017 $M0501A206$M0C01ED96$M13018001 $M06959A01$M0D028201$M14002018 7.测试数据:FEH 结果为:FE-FF-00-01-FE-FF-00- 一直循环,每次加 1。 8.结果分析:ADD 执行的是不产生进位的加法,所以实验结果只是每次在原来的数据上 加 01H。不产生进位加。 题目二:题目二: 实验要求: 设计一台模型计算机,实现下列指令系统,并通过下列工作程序验证上述指令系统。 本模型机共包含五条机器指令:IN(输入)、ADD(加法)、STA(存数)、OUT(输出)、 JMP(无条件转移),其指令格式如下(前 4 位为操作码): 助记符机器指令码说明微程序的入口地址 (八进制) IN00000000 “INPUT DEVICE”中 的开关状态R0 10 (取指令后续微指令 默认地址为 10) ADC Imm00010000 XXXXXXXXRO+ Imm+cyR011 STA addr00100000 XXXXXXXXROaddr12 OUT addr00110000 XXXXXXXXaddrLED13 JMP addr01000000 XXXXXXXXaddrPC14 其中 IN 为单字长(8 位),其余为双字长指令,XXXXXXXX 为 addr 对应的二进制地址 码或 Imm 所对应的二进制数据(补码形式) 。 连接实验线路在测试程序装入内存后,机器自动执行控存中 00 号的微指令,产生控制 台命令,其流程如下(01 为取指微指令的地址): 根据附录 2 的图 1(简单模型机的连线图)连接实验线路。 本设计实现的模型机共包含五条机器指令:IN(输入)、ADC(带进位加法)、STA(存数)、 OUT(输出)、JMP(无条件转移) 。 本设计的工作程序的内存映象(装入起始地址 00H)如下: 地址(二进 制) 内容(二进制) 助记符说 明十六进制代码 0000 00000000 0000IN 将输入数据送 R0 寄存器 0000 0000 00010001 0000ADC O1H0110 0000 00100000 0001RO+01H+cyR00201 0000 00110010 0000STA 0AH0320 0000 01000000 1010R00AH040A 0000 01010011 0000OUT 0AH0530 0000 01100000 10100AHLED060A 0000 01110100 0000JMP 010740 0000 10000000 000101HPC0801 0000 10100000 0001 输入自定的数据 0A01 本设计的程序流程图如下: 微程序解释(主要解释 ADC) 微地址S3 S2 S1 S0 M CN WE A9 A8ABC UA5UA0(后续地址)十六进制代码 0 40 0 0 0 0 0 0 0 10 1 10 0 00 0 00 0 0 1 0 10400B005 0 50 0 0 0 0 0 0 1 10 1 00 0 10 0 00 0 0 1 1 00501A206 0 61 0 0 1 0 1 0 1 10 0 11 0 11 0 10 0 0 0 0 106959B41 0 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 时,选中 Y0; 当 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 有效,即表示将内存中 的数据传送到 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 为控制信号 当 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$M1200A017$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,rd 1000Rsrd Rsrd30 ADC rs,rd 1001Rsrd Rs+rd+cyrd31 BZC 00000000 D 当 cy=1 或 z=1 时, DPC 否则,顺序执行 20 (取指令后续微指 令默认地址为 20) IN rd 010001Rd Input Device rd24 OUT rd 010110Rd Rd Output Device25 HLT 01100000 停机 26 其中, rs 为源寄存器,rd 为目的寄存器,并规定: Rs 或 rd选定的寄存器 00 01 10 R0 R1 R2 2.连接实验线路在测试程序装入内存后,机器自动执行控存中 00 号的微指令,产生控制 台命令,其流程如下(01 为取指微指令的地址): 3.根据附录 2 的图 2(复杂模型机的连线图)连接实验线路。 4.本设计实现的模型机共包含五条机器指令:IN(输入)、ADC(带进位加法)、MOV(移动) 、 BZC(条件转移) 、OUT(输出)、HLT(停机) 。 本设计的工作程序的内存映象(装入起始地址 00H)如下: 地址(二进制)内容(二进制)助记符说 明十六进制代码 0000 00000100 0100IN 将输入数据送 R0 寄存器 0044 0000 00010100 0110IN 将输入数据送 R2 寄存器 0146 0000 00101001 1000ADCRO+01H+cyR00298 0000 00111000 0001MOVR0R10381 0000 01000101 1001R1LED0459 0000 01010000 0000BZC0500 0000 01100000 001002D0602 0000 01110110 0000HLT 停机 0760 5.本设计的程序流程图如下: 6.微程序解释(以 BZC 为例) 微地址S3 S2 S1 S0 M CN WE A9 A8ABC UA5UA0(后续地址) 十六进制代码 0 30 0 0 0 0 0 0 0 10 1 00 0 00 1 11 0 0 0 0 00300A023 1 00 0 0 0 0 0 0 1 11 1 01 1 01 1 00 0 0 0 1 11001ED83 2 00 0 0 0 0 0 0 1 10 0 00 0 00 0 00 0 0 0 0 120009001 3 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 指令回到微程序的 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,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 $M0300A023$M16018016$M24018001 $M0400E0A0$M18019201$M2C01A42D 7.测试数据:第一组 R0=FEH R2=01H 第二组 R0=FFH R2=01H 结果为: 第一组 FF 第一组 02 8.结果分析:两组数据主要是有进位与没有进位之间的差别,第一组数据 FE+01=FF,R0 和 R1 中的数据相加后没有产生进位,因此 CY=0,Z=0 输出结果后, BZC 指令就会直接跳转到 HLT 执行停机操作,使程序终止;第二组数据为 FF+01, 结果为 00,产生一个进位,因此 CY=1,Z=1,BZC 的条件成立,跳转到 02 继续指 令执行;并且 ADC 会将上次的进位带入相加,所以结果是 00+01+CY=02,继续执行 ADC 到 BZC 时会因为没有产生进位,使程序终止运行。 题目四:题目四: 1.实验要求: 设计一台模型计算机,完成下列指令系统,并编写工作程序验证上述指令系统。 本模型机共设计 16 条基本指令,其中算术逻辑指令 9 条,访问内存指令和程序控制指 令 4 条,输入输出指令 2 条,其它指令 1 条。下表列出了各条指令的格式、汇编符号、指 令功能。 类 型 助记符号指令格式功能微程序入口地址 (八进制) CLR rd 011100rd 0rd27 MOV rs,rd 1000Rsrd Rsrd30 ADC rs,rd 1001Rsrd Rs+rd+cyrd31 SBC rs,rd 1010Rsrd Rs-rd-cyrd32 INC rd 1011Rd Rd+1rd33 算 术 逻 辑 指 令 AND rs,rd 1100rsrd Rsrdrd34 COM rd 1101Rd rdrd35 RRC rs,rd 1110RsRd cyrs R srd 36 RLC rs,rd 1111RsRd cyrs R srd 37 LDA M, D, rd 00M00Rd D Erd40 访 存 指 令 STA M, D, rd 00M01Rd D RdE41 JMP M,D 00M1000 D EPC42 程 序 控 制 指 令 BZC 00M1100 D 当 cy=1 或 z=1 时, EPC 43 IN addr, rd 010001Rd Addrrd24 输 入 输 出 OUT addr, rd 010110Rd Rdaddr25 其 它 HALT 01100000 停机 26 下面对各种指令格式加以说明: (1) 算术逻辑指令 算术逻辑运算指令共 9 条,用单字节表示,寻址方式采用寄存器直接寻址,格式为: 7 6 5 43 21 0 OP-CODERsrd 其中,OP-CODE 为操作码,rs 为源寄存器,rd 为目的寄存器,并规定: Rs 或 rd选定的寄存器 00 01 10 R0 R1 R2 (2) 访存指令及程序控制指令 模型机设计两条访存指令,即存数(STA)、取数(LDA),两条转移指令,即无条件转移 指令(JMP)、结果为 0 或有进位转移指令(BZC),指令格式为: 7 65 43 21 0 00MOP-CODErd D 其中,OP-CODE 为操作码,rd 为目的寄存器地址(LDA、STA 指令使用),D 为位移量(正 负均可),M 为寻址模式,其定义为: 寻址模式 M有效地址 E说明微程序入口 00 01 10 11 E=D E=(D) E=(RI)+D E=(PC)+D 直接寻址 间接寻址 RI 变址寻址 相对寻址 20 21 22 23 变址寻址寄存器指定为寄存器 R2。 (3) 输入/输出指令 输入输出指令均采取单字节指令,其格式如下: 7 6 5 43 21 0 OP-CODEaddrrd 其中,addr=01 时,选中“Input Device”中的开关组作为输入设备,addr=10 时,选 中“Output Device”中的数码显示作为输出设备。 (4) 停机指令 用于实现停机操作。 2.连接实验线路在测试程序装入内存后,机器自动执行控存中 00 号的微指令,产生控制 台命令,其流程如下(01 为取指微指令的地址): 3.根据附录 2 的图 2(复杂模型机的连线图)连接实验线路。 4.本设计实现的模型机共包含五条机器指令:IN(输入)、CLR(清零) 、ADC(带进位加法)、 SUC(带借位减法) 、INC(累加 1) 、AND(逻辑与) 、COM(取反) 、MOV(移动) 、 RRC(循环右移) 、RLC(循环左移) 、BZC(条件转移) 、OUT(输出)、HLT(停机) 。 本设计的工作程序的内存映象(装入起始地址 00H)如下: 地址(二进制)内容(二进制)助记符说 明十六进制代码 0000 00000100 0100IN 将输入数据送 R0 寄存 器 0044 0000 00010100 0110IN 将输入数据送 R2 寄存 器 0146 0000 00101001 1000ADCRO+01H+cyR00298 0000 00111000 0001MOVR0R10381 0000 01001111 1001RLC 带进位左循环移位 R1 结果送到 R1 04F5 0000 01010101 1001OUTR1LED0559 0000 01100000 1100BZC060C 0000 01100000 001002D0702 0000 01110110 0000HLT 停机 0860 5.本设计的程序流程图如下: P(1) RAMBUS BUSIR 运行微程序 PCAR PC+1 PCAR PC+1 RAMBUS BUS DR1 RAMBUS BUS AR PCAR PC+1 RAMBUS BUS AR RAMBUS BUS DR1 RAMBUS BUS AR PCAR PC+1 RAMBUS BUS DR1 (RI)DR2 DR1+DR2 BUSAR DR1+DR2 BUS DR1 PCAR PC+1 RAMBUS BUS DR1 PCBUS BUS DR2 DR1+DR2 BUSAR DR1+DR2 BUS DR1 SWBUS BUSrd 01 rdLED 01 STOP 01 ALU=0BUS BUSrd 01 rsrd 01 rsBUS BUS DR1 rdBUS BUS DR2 DR1+DR2 BUSrd rsBUS BUS DR2 rdBUS BUS DR1 DR1-DR2 BUSDR1 DR1rd rdBUS BUS DR1 DR1+1 BUS rd rsBUS BUS DR1 rdBUS BUS DR2 DR1DR2 BUSrd rdBUS BUS DR1 DR1BUS BUS rd rs299 带进位右 循环移位 299rd rs299 带进位左 循环移位 299rd P(1) RAMBUS BUSrd 01 rdBUS BUS RAM 01 DR1BUS BUS PC 01 P(3) DR1BUS BUSPC 0101 Y N 01 02 20 2021222324 252627 303132333435 36 37 71 72 70 676663 65 6254 55 56 52 53 03 04 05 06 07 15 16 17 45 46 47 50 51 4040 40 40 40 41 42 43 44 6444 01 01 01 01 01 0101 LADSTAJMPBZC 00(直接)01(间接)10(变址)11(相对)INOUT HLTCLRMOVADCSUC INCAND COMRRCRLC 带进位 6.微程序(主要 RLC 部分) 微地址S3 S2 S1 S0 M CN WE A9 A8ABC UA5UA0(后续地址) 十六进制代码 1 F0 0 1 1 0 0 0 1 10 0 00 0 10 0 01 1 1 0 0 11F318239 3 90 0 0 1 1 0 0 1 10 0 01 0 00 0 01 1 1 0 1 03919883A 3 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,执行一次左移后将数传回)后再将数送存到 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, 后续地址为 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 $M0200C050 $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 $M0901ED8C $M1901A22A$M2701BC28$M35B99B41 $M0A00A03B $M1A01B22C$M2895EA29$M360D9A01 $M0B018001 $M1B01A232$M2995AAA0$M37298838 $M0C00203C $M1C01A233$M2A01B42B$M38019801 $M0D00A00E $M1D01A236$M2B959B41$M3919883A 7.测试数据:第一组 R0=FFH R2=01H 第二组 R0=01H R2=01H 结果为: 第一组 R1=01 第二组 R1=04 9.结果分析:两组数据主要是有进位与没有进位之间的差别,第一组数据 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 等指令的运用更加熟悉,对它们微程序的一步步流程也有了清晰 的认识,通过对机器指令和微指令的分析和编写,理解了指令代码所对应的功能。本次实 验里的微程序均由自己根据流程图及机器指令编写,正确完成了题目 14 的要求。 本次实验中,在微程序的调试中花费不少时间,尤其在 BZC 和 RLC 指令上耽搁较久, 但通过观察模型机上的操作流向来检查错误

温馨提示

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

评论

0/150

提交评论