模型机实验报告
复杂模型机实验报告
一、实验目的1. 了解复杂模型机的组成原理和结构特点;2. 掌握复杂模型机的操作方法和指令系统;3. 学会使用复杂模型机进行基本程序设计;4. 提高计算机组成原理和汇编语言的实际应用能力。
二、实验内容1. 复杂模型机简介复杂模型机是一种用于教学和研究的虚拟计算机系统,具有与真实计算机相似的硬件结构和指令系统。
它通常由运算器、控制器、存储器、输入输出设备等部分组成。
2. 实验步骤(1)熟悉复杂模型机的硬件结构1)了解运算器的组成和功能;2)了解控制器的组成和功能;3)了解存储器的组成和功能;4)了解输入输出设备的组成和功能。
(2)掌握复杂模型机的操作方法和指令系统1)学习复杂模型机的指令格式和寻址方式;2)掌握基本指令的使用方法,如数据传送、算术运算、逻辑运算、控制转移等;3)了解中断和异常处理机制。
(3)使用复杂模型机进行基本程序设计1)编写一个简单的程序,实现数据输入、处理和输出;2)使用复杂模型机的指令系统进行程序调试和优化。
(4)分析实验结果1)分析程序执行过程中的数据变化;2)分析程序执行过程中可能出现的问题及解决方法。
三、实验结果与分析1. 熟悉了复杂模型机的硬件结构,了解了运算器、控制器、存储器、输入输出设备等部分的功能。
2. 掌握了复杂模型机的操作方法和指令系统,能够使用基本指令进行程序设计。
3. 编写了一个简单的程序,实现了数据输入、处理和输出功能。
4. 分析了程序执行过程中的数据变化,发现了程序执行过程中可能出现的问题及解决方法。
四、实验总结1. 通过本次实验,加深了对计算机组成原理和汇编语言的理解,提高了实际应用能力。
2. 学会了使用复杂模型机进行基本程序设计,为今后学习计算机组成原理和汇编语言打下了基础。
3. 在实验过程中,遇到了一些问题,通过查阅资料和与同学讨论,最终解决了问题,提高了自己的解决问题的能力。
4. 建议在今后的实验中,进一步学习复杂模型机的更多指令和功能,提高自己的编程水平。
简单模型机组成原理实验报告
简单模型机组成原理实验报告简单模型机是一种学习机械原理和电子技术的教学工具,它可以帮助学生理解机械结构和电路原理,提高学生的实验能力和创新能力。
本文将介绍简单模型机的组成原理和实验过程。
一、简单模型机的组成原理简单模型机由机械结构和电路控制两部分组成。
机械结构包括电机、齿轮、链条、轮子、滑轮等零部件,这些零部件组成了模型机的动力系统。
电路控制包括电源、电机控制器、传感器、LED灯等电子元件,这些元件组成了模型机的控制系统。
模型机的动力系统和控制系统通过电线连接在一起,实现了模型机的运动和控制。
二、简单模型机的实验过程1. 组装机械结构。
根据模型机的说明书,将各个零部件按照要求组装在一起,包括电机、齿轮、链条、轮子、滑轮等零部件。
组装的过程需要注意每个零部件的位置和连接方式。
2. 连接电路控制。
将电源、电机控制器、传感器、LED灯等元件按照要求连接在一起,形成一个控制电路。
电路的连接需要注意电线的颜色和连接方式,确保电路的正常工作。
3. 调试机械结构。
将电源接上,打开电机控制器,测试机械结构的运动情况,包括电机转动、齿轮传动、轮子转动等。
如果出现异常情况需要及时停机检查。
4. 调试电路控制。
将传感器连接到电路控制中,测试传感器的工作情况,包括检测光线、声音、温度等。
如果传感器检测到异常情况,控制器会发出警报信号或控制电机停止运动。
5. 进行实验。
根据实验要求,调整机械结构和电路控制,进行不同的实验,包括测量速度、转动角度、距离等。
实验过程需要记录数据和结果,进行分析和总结。
三、结论通过简单模型机的组装和实验,可以帮助学生深入理解机械原理和电路控制原理,提高学生的实验能力和创新能力。
同时,模型机的组装和实验也可以培养学生的动手能力和团队精神,促进学生的综合素质的提高。
基本模型机的设计与实现实验报告
基本模型机的设计与实现实验报告本文将围绕“基本模型机的设计与实现实验报告”进行分析和阐述。
基本模型机的设计与实现是计算机系统课程中的重点内容,是学生理解计算机系统的核心;设计和实现基本模型机需要学生掌握计算机组成原理的基本知识,能够编写汇编语言程序和理解存储器层次结构等相关概念。
一、实验目的本次计算机系统实验的目的是掌握CPU的设计与实现,以及理解汇编语言的底层执行过程。
通过本次实验,学生可以深入了解计算机系统的基本组成部分,从而提高对计算机实现原理的认识和理解。
二、实验中设计与实现模型机的步骤1、确定模型机性能要求根据实验要求,我们需要设计出一个能够运行汇编语言程序的模型机。
此时,我们需要确定模型机的性能需求,如运行速度、存储容量和输入输出设备等方面。
2、设计和实现CPU在模型机中,CPU是核心部件,所以首先需要设计和实现CPU。
CPU需要包括寄存器、算术逻辑单元、控制器和取指令等组成部分。
由于我们使用的是逻辑电路实现,所以需要进行逻辑门设计,采用Verilog语言来实现。
3、设计和实现存储器存储器是CPU所需的重要组成部分之一,我们需要为CPU设计实现一套存储器,包括RAM和ROM两部分,其中RAM用于存储数据,ROM用于存储指令。
4、设计和实现输入输出设备在模型机中,输入输出设备也是必不可少的部分。
我们需要设计并实现一套输入输出设备,用于用户输入指令和数据,以及模型机输出结果。
5、编写汇编程序在完成模型机的设计和实现后,我们需要编写汇编程序来测试模型机的功能是否正常。
我们可以编写一些简单的汇编程序来测试模型机的运行速度和结果准确性。
三、实验结果与分析经过实验,我们成功地设计并实现了一套基本模型机,并编写了一些简单的汇编程序进行测试。
模型机具有较高的运行速度和存储容量,并且可以实现输入输出设备的基本功能。
同时,我们也发现了一些问题,如指令与数据存储的冲突等,需要进一步改进。
在完成实验过程中,我们深刻理解了计算机系统的结构和运作原理,提高了对计算机系统的认识和理解能力。
实验四 模型机设计与实现——实验报告
专业级班学号姓名实验报告实验四模型机的设计与实现一、实验目的1、构造一台基本模型计算机。
2、掌握在模型计算机上进行微程序编制、指令输入、运行调试的方法。
二、实验设备DVCC-C5JH计算机组成原理教学实验系统一台,排线若干。
三、实验原理:部件试验过程中,各部件单元的控制信号是人为模拟产生的,而本次实验将能在微程序控制下自动产生各部件单元空间信号,实现特定指令的功能,这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
四、实验内容1、模型机指令设计:(这里填写各模型机指令的指令助记符、指令机器编码、指令说明)DEC R0 0101 0000 (R0)-1→R0AND addr,R0 0110 0000 (R0) 与[addr]→R02、实验过程:先详细了解实验的原理然后进行以下步骤:(以下步骤应根据自己实际情况补充完整)⑴设计模型机的数据通路图,根据实际机器指令要求,设计微程序流程图及确定微地址;(下面绘制:①数据通路图;②微程序流程图及相应的微指令地址。
)1、2、PC A RPC AR RAM B US RAM B US SW R PC A RRAM B USR0BUS BUS R01 1103 04 12 07 31 10RAM B US02 R0DR1 05 (DR1)+(D R2)R006 PC A RRAM B US RAM B US32 17 R0DR125 13 PC A RRAM B US 26 14 R0DR1 (DR1)-1R0 PC A R RAM B US RAM B USR0DR1 (DR1)+(D R2)R01516 33 34 3536 37微指令代码PC AR PC+1(SW)BUS BUS DR1DR1RAMPC AR PC+1RAM BUS BUS DR1DR1LED21243020 2227⑵根据⑴的设计,编制好微程序;(下面写设计的微程序,要标出各微指令在控存中的地址,可以用联机调试中的十六进制形式编写)$ M00108101$ M0182ED01$ M0248C000$ M0304E000$ M0405B000$ M0506A201$ M06019A95$ M0719E000$ M08011000$ M0983ED01$ M0A87ED01$ M0B9AED01$ M0C96ED01$ M0D1BA201$ M0E9CED01$ M0F15A000$ M1092ED01$ M1194ED01$ M1217A000$ M13018001$ M14182000$ M15010A07$ M1681D100$ M17100A07$ M18118A06$ M19018202$ M1A0FE000$ M1B018AF5$ M1C1DE000$ M1D1EA000$ M1E1FB201$ M1F018AB9⑶根据⑴中的数据通路,连接好实验线路,仔细检查无误后接通电源;⑷将编制好的微程序写入控存;⑸使用上面设计好的机器指令编写机器指令程序,存放在内存中;(下面列出编写的机器指令程序,可以用联机调试中的十六进制形式编写,要写明对应的内存地址和相应的内存内容,且要进行简要的指令说明)$ P0000 IN$ P0110 ADD[0CH] R0+[0CH] -> R0$ P020C 01$ P0320 STA[0BH] R0->[0BH]$ P040D$ P0530 OUT[0BH] [0BH]->BUS$ P060D$ P0740 JMP[00H] 00H->PC$ P0800$ P0950 DEC [R0]-1->R0$ P0A60 AND [R0][0DH]->R0$ P0B0D 05$ P0C01 内容为01$ P0D05 内容为05⑹执行⑸中的机器指令程序,并验证前面的设计是否正确,若不正确请修改前面的设计和微程序;四、实验结果机器指令执行的情况:①第一次执行情况(记录实验时发生的情况包括何处错误):②第二次执行情况:……(调试过程根据自己情况进行填写)五、实验总结。
复杂模型机实验实验报告(共9篇)
复杂模型机实验实验报告(共9篇)_复杂模型机实验报告计算机组成原理实验报告实验题目:一台模型计算机的总体设计之复杂模型机设计实验目的:(1)在掌握部件单元电路实验的基础上,进一步将其组成系统,构造一台复杂模型计算机,建立一台基本完整的整机。
(2)为其定义至少五条机器指令,并编写相应的微程序,通过联机调试,观察计算机执行指令:从取指令、指令译码、执行指令等过程中数据通路内数据的流动情况,进一步掌握整机概念。
实验设备TDN-CM+教学实验系统一套、微型计算机一台、排线若干。
实验原理:(1)数据格式及指令系统:①数据格式模型机规定数据采用定点整数补码表示,字长为8位,其格式如下:其中,第7位为符号位,数值表示范围是-27 ≤X≤27-1 ②指令格式模型机设计4大类指令共16条,其中包括算术逻辑指令、I/O 指令、访问及转移指令和停机指令。
A.算术逻辑指令设计九条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:其中,OP-CODE为操作码,RS为源寄存器,RD为目标寄存器,并规定:九条算术逻辑指令的助记符、功能和具体格式见表5.2-1。
B.访问及转移指令:模型机设计两条访问指令,即存数(STA)、取数(LDA),两条转移指令,即无条件转移(JMP)、结果为零或有进位转移(BZC),指令格式如下:其中,OP-CODE为操作码,RD为目的寄存器地址(LDA、STA 指令使用)。
D为位移量(正负均可),M为寻址模式,其定义如下:本模型机规定变址寄存器RI指定为寄存器R2。
C.I/O指令:输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:其中,addr=01时,选中“INPUT DEVICE”中的开关组作为输入设备,addr=10时,选中“OUTPUT DEVICE”中的数码块作为输出设备。
D.停机指令:停机指令格式如下:HALT指令,用于实现停机操作。
③指令系统:本模型机共有16条基本指令,其中算术逻辑指令七条,移位指令两条,访问内存指令和程序控制指令四条,输入/输出指令两条,其它指令一条。
简单模型机实验报告
简单模型机实验报告篇一:模型机实验报告HUNAN UNIVERSITY课程实习报告题目:模型机学生姓名学生学号 XX0801328专业班级计算机科学与技术(3)班指导老师方恺晴完成日期思考题:1. 给定一个复合运算式子以及指令码IR[7..5]与八位BUS总线对应情况。
要求写出七条指令新的指令码并写出复合运算执行mif文件。
修改模型机电路调试程序以实现复合运算。
例:已知A=55H,B=8AH,C=F0H;IR[7..5]对应BUS8,BUS1,BUS3;写出(Aplus/B)^(/(/CplusB))的mif文件,并在模拟机上实现。
答:模拟机电路修改如下:存储器预设指令重设:计算结果:(A+/B)^(/(/C+B))=42H2. Microcomputer.vhd代码中进程ct1,ct2,ct3,ct4功能划分依据是什么?ct1:微序列控制器下址跳转。
ct2:实现各种指令,主要集中在实现从存储器或者寄存器释放数据到总线上。
ct3:完成各种指令,从总线上装载数据到相应的存储器或者寄存器中。
ct4:生成下址,判断下址生成方式,根据不太那个的方式生成下址。
3. Microcomputer.vhd代码中如何定义并初始化RAM?type ram is array(0 to 37)of std_logic_vector(7 downto 0); --38*8ramsignal ram8:ram:=(x”20”, x”1e”, x”80”, x”40”, x”20”, x”20”, x”1d”, x”c0”, x”20”, x”40”, x”21”, x”20”, x”1f”, x”80”, x”40”, x”22”, x”20”, x”1e”, x”c0”, x”22”, x”80”, x”e0”, x”21”, x”40”, x”23”, x”60”, x”23”, x”a0”, x”00”, x”55”, x”8a”, x”f0”,others=>x”00”) –initialize ram44. Microcomputer.vhd代码中bus_reg_t2 将ram8存储器中对应于ar中地址单元的数据取出来放到bus_reg_t2寄存器中。
模型机实验报告范文
模型机实验报告范文实验报告:模型机引言模型机是一种能够模拟真实飞行原理的飞行模拟器设备。
它具有模拟真实飞行环境的能力,并用电子方式提供各种飞行动作的控制和监测。
本实验报告旨在介绍模型机的原理和应用,并通过实验来验证模型机的飞行能力和准确性。
一、模型机的原理1.动力系统:模型机的动力系统由电动机、电调器和螺旋桨组成。
电动机提供动力,电调器控制电机的转速,螺旋桨则产生推力。
通过调节电机的转速和螺旋桨的角度,可以控制模型机的飞行状态和动作。
2.飞行姿态控制系统:模型机的姿态控制系统由陀螺仪和加速度计组成。
陀螺仪可以感知模型机的倾斜和转动,加速度计可以感知模型机的加速度。
通过对陀螺仪和加速度计的信号进行处理,可以对飞行姿态进行控制。
3.遥控系统:模型机的遥控系统包括遥控器和接收机。
遥控器由飞行员通过手柄进行控制,接收机接收遥控信号并将其转化为模型机动作。
遥控器可以控制模型机的方向、高度和速度等参数。
二、实验方法本实验使用一架模型机进行飞行模拟实验。
实验过程包括以下步骤:1.检查模型机的动力系统,确保电动机和螺旋桨工作正常。
2.检查模型机的姿态控制系统,确保陀螺仪和加速度计的正常工作。
3.进行遥控系统的校准,确保遥控信号的准确传输。
4.在开阔的空地上进行飞行实验。
首先以低速起飞,然后在空中进行一系列动作,如直线飞行、转弯、盘旋等。
通过遥控器控制模型机的动作,并通过观察和记录模型机的运动轨迹来验证模型机的飞行能力和准确性。
三、实验结果通过实验观察和记录,我们发现模型机在飞行过程中表现出良好的飞行能力和准确性。
它能够根据遥控器的指令进行各种飞行动作,如上升、下降、前进、后退、左转、右转等。
模型机的姿态控制系统能够保持模型机的水平飞行,并根据遥控信号进行相应的调整。
同时,模型机的动力系统能够提供足够的动力,使模型机能够在空中稳定飞行。
四、实验讨论1.模型机的飞行性能受到多种因素的影响,如风速、湿度、温度等。
在实际飞行中,飞行员需要根据实际情况进行相应的调整和控制。
基本模型机系统实验报告
一、实验目的1. 了解计算机的基本组成和原理,熟悉计算机硬件和软件的关系。
2. 掌握基本模型机的搭建方法和调试技巧。
3. 通过实验加深对计算机指令系统、微程序控制器和存储器等概念的理解。
二、实验原理计算机是由硬件和软件两部分组成的,硬件主要包括中央处理器(CPU)、存储器、输入输出设备等,软件则是指挥计算机完成各种任务的程序。
本实验通过搭建一个基本模型机,模拟计算机的基本工作过程,让学生深入了解计算机的组成和原理。
三、实验环境1. 实验设备:基本模型机实验箱、连接线、电源、计算机等。
2. 实验软件:Dais-CMH/CMH计算器组成原理教学实验系统。
四、实验内容1. 搭建基本模型机(1)根据实验箱的说明,将CPU、存储器、输入输出设备等硬件连接好。
(2)连接好电源,确保各部分电路正常工作。
(3)使用Dais-CMH/CMH计算器组成原理教学实验系统,编写控制程序,实现基本模型机的运行。
2. 调试基本模型机(1)检查硬件连接是否正确,确保电路无短路、断路等问题。
(2)编写控制程序,实现基本模型机的指令系统。
(3)通过调试,使基本模型机能够按照预期的工作流程运行。
3. 实验步骤(1)搭建基本模型机1)将CPU、存储器、输入输出设备等硬件连接好。
2)连接好电源,确保各部分电路正常工作。
3)使用Dais-CMH/CMH计算器组成原理教学实验系统,编写控制程序,实现基本模型机的运行。
(2)调试基本模型机1)检查硬件连接是否正确,确保电路无短路、断路等问题。
2)编写控制程序,实现基本模型机的指令系统。
3)通过调试,使基本模型机能够按照预期的工作流程运行。
4. 实验结果与分析(1)实验结果通过搭建和调试基本模型机,成功实现了计算机的基本工作过程,包括取指、译码、执行、存储等步骤。
(2)实验分析1)通过实验,加深了对计算机基本组成和原理的理解,认识到硬件和软件的紧密关系。
2)掌握了基本模型机的搭建方法和调试技巧,为以后的学习奠定了基础。
模型机设计实验报告
模型机设计实验报告模型机设计实验报告一、引言模型机是一种能够模拟真实飞行器运行原理和机械结构的小型飞行器。
通过设计和制作模型机,可以更好地理解飞行器的工作原理,提高对飞行器的认知和掌握。
本实验旨在通过设计和制作一个简单的模型机,展示其基本原理和运行过程。
二、设计思路在设计模型机之前,我们首先需要明确模型机的用途和目标。
本次实验的目标是设计一个能够实现垂直起降和水平飞行的模型机。
为了达到这个目标,我们选择了倾转旋翼飞行器作为设计的基础。
三、模型机结构设计1. 机身设计模型机的机身采用轻质材料制作,如碳纤维和铝合金,以确保机身的强度和轻量化。
机身的设计需要考虑到电池和电子设备的安装位置,以及传感器和控制系统的布局。
2. 旋翼设计倾转旋翼飞行器的旋翼是实现垂直起降和水平飞行的关键部件。
我们选择了四旋翼结构,每个旋翼由一个电动机驱动,并通过控制系统实现旋翼的倾斜,从而实现飞行器的方向控制。
3. 控制系统设计模型机的控制系统由飞行控制器、传感器和执行机构组成。
飞行控制器负责接收传感器数据并进行飞行控制算法的计算,然后通过执行机构控制旋翼的转速和倾斜角度。
四、实验过程1. 材料准备根据设计要求,准备所需的材料和工具,包括碳纤维板、铝合金材料、电动机、飞行控制器等。
2. 制作机身根据设计图纸,使用碳纤维板和铝合金材料制作机身的框架和外壳。
确保机身的强度和轻量化。
3. 安装电动机和旋翼将电动机安装在机身上,并连接旋翼。
确保旋翼能够自由旋转,并通过控制系统进行倾斜控制。
4. 安装控制系统将飞行控制器、传感器和执行机构安装在机身中,并进行连接。
确保控制系统能够正常工作,并能够接收传感器数据并进行飞行控制。
5. 调试和测试完成模型机的组装后,进行调试和测试。
通过遥控器进行模型机的起飞、降落和飞行控制,检查模型机的性能和稳定性。
五、实验结果与分析经过实验测试,我们成功地设计和制作了一个能够实现垂直起降和水平飞行的模型机。
模型机实验报告
模型机实验报告模型机实验报告一、引言模型机是一种用来模拟真实飞行器的小型飞行模型。
通过对模型机的设计、搭建和调试,可以深入了解飞行器的结构和原理,提高对飞行器的认识和理解。
本文将介绍我所进行的一次模型机实验,并对实验结果进行分析和总结。
二、实验目的本次实验的目的是通过搭建一架模型机,探究其飞行性能和稳定性,并对模型机进行相应的调试和优化。
通过实验,我们希望能够了解模型机的飞行原理,提高对空气动力学和飞行控制的理解。
三、实验材料和方法1. 实验材料:a. 模型机组件:包括机翼、机身、尾翼、电机、螺旋桨等。
b. 遥控器:用于控制模型机的飞行姿态和动作。
c. 电池:为模型机提供动力。
d. 降落伞:用于模型机降落时减慢速度。
2. 实验方法:a. 搭建模型机:根据设计图纸和说明书,将模型机的各个组件进行组装和连接。
b. 调试模型机:通过遥控器对模型机进行飞行姿态和动作的调试,确保模型机能够平稳飞行。
c. 进行飞行实验:将模型机投放到空中,观察其飞行状态和性能。
d. 数据分析和总结:根据实验结果,对模型机的飞行性能和稳定性进行分析和总结。
四、实验结果在实验过程中,我们成功搭建了一架模型机,并进行了多次飞行实验。
通过观察和记录实验数据,我们得到了以下实验结果:1. 飞行性能:模型机在飞行过程中,能够稳定地在空中飞行,并且能够完成一些基本的动作,如上升、下降、转弯等。
模型机的飞行速度和高度可以通过遥控器进行调节和控制。
2. 稳定性:模型机在飞行过程中表现出较好的稳定性。
即使在风力较大的情况下,模型机也能够保持相对平稳的飞行姿态,并能够自动调整飞行姿态以保持平衡。
3. 飞行时间:模型机的飞行时间受限于电池的容量和电机的功率。
在实验中,我们发现模型机的飞行时间大约为10-15分钟,之后需要更换电池。
五、实验分析和总结通过对实验结果的分析和总结,我们可以得出以下结论:1. 模型机的飞行性能和稳定性受到多种因素的影响,包括机翼的设计、重心的位置、电机的功率等。
模型机设计实验报告
模型机设计实验报告一、实验目的本次实验的目的是通过设计和制作模型机,掌握机械设计的基本原理和方法,提高学生的机械制图和机械加工能力,培养学生的创新思维和动手能力。
二、实验原理模型机是一种小型机械装置,通常由多个零部件组成,可以模拟真实机器的运行原理。
在设计模型机时,需要考虑机器的结构、功能和材料等因素,以确保机器的稳定性和可靠性。
在本次实验中,我们采用了三维建模软件进行机器的设计,然后使用数控机床进行机器的加工。
在加工过程中,需要注意机器的精度和加工质量,以确保机器的性能和使用寿命。
三、实验步骤1. 设计模型机的结构和功能,确定机器的材料和尺寸。
2. 使用三维建模软件进行机器的设计,包括零部件的设计和组装。
3. 将设计好的模型导入数控机床,进行机器的加工。
4. 对加工好的零部件进行组装和调试,确保机器的性能和稳定性。
5. 对机器进行测试和评估,记录机器的性能和使用情况。
四、实验结果经过设计和制作,我们成功地制作出了一台模型机。
该机器采用了铝合金材料,具有较高的强度和耐腐蚀性。
机器的结构紧凑,功能齐全,可以模拟真实机器的运行原理。
在加工过程中,我们采用了数控机床进行加工,确保了机器的精度和加工质量。
在组装和调试过程中,我们注意了机器的细节和性能,确保了机器的稳定性和可靠性。
经过测试和评估,我们发现该机器的性能和使用情况良好,可以满足实际应用的需求。
五、实验总结通过本次实验,我们掌握了机械设计的基本原理和方法,提高了机械制图和机械加工能力,培养了创新思维和动手能力。
同时,我们也了解了数控机床的加工原理和操作方法,提高了数控加工的技能和水平。
在今后的学习和工作中,我们将继续加强机械设计和制造方面的学习和实践,不断提高自己的技能和能力,为实现自己的梦想和目标做出更大的贡献。
基本模型机实验报告
基本模型机实验报告一、实验目的本实验旨在通过构建一个基本模型机,深入了解计算机的工作原理,包括数据的二进制表示、指令执行、内存管理以及简单的输入输出。
二、实验设备1. 微处理器(如 Intel 8080)2. 存储器芯片(如 Intel 2114)3. 输入设备(如开关或键盘)4. 输出设备(如LED灯或显示器)5. 电源三、实验步骤步骤一:构建模型机根据实验设备,将微处理器、存储器、输入设备和输出设备连接起来,形成一个简单的模型机。
确保所有连接正确无误,电源供应稳定。
步骤二:数据表示与存储在模型机中,使用二进制数表示数据。
将数据存储在存储器中,并观察数据在存储器中的表示形式。
例如,使用开关模拟二进制数的0和1,将开关按下表示0,不按下表示1。
步骤三:指令执行编写简单的汇编指令,如加法指令,并在模型机上执行。
观察指令的执行过程,包括取指令、解码指令、执行指令和写回结果等步骤。
步骤四:内存管理模拟内存的读写操作,了解内存地址的概念以及如何通过地址访问存储在内存中的数据。
观察内存地址的增加和减少对数据读写的影响。
步骤五:输入输出操作通过输入设备输入数据,观察模型机如何将输入的数据存储在内存中。
然后通过输出设备输出数据,了解输出数据的表示形式。
四、实验结果与分析通过本次实验,我们了解了计算机的基本工作原理,包括数据的二进制表示、指令执行、内存管理和输入输出操作。
在实验过程中,我们观察到微处理器负责执行指令,存储器用于存储数据和指令,输入设备用于输入数据,输出设备用于输出数据。
此外,我们还了解了内存地址的概念以及如何通过地址访问存储在内存中的数据。
五、结论与建议本次实验使我们深入了解了计算机的基本工作原理,并掌握了构建简单模型机的方法。
为了进一步提高实验效果,建议在未来的实验中增加更多的设备和功能,例如中断处理、多任务处理等,以便更全面地了解计算机的工作原理。
同时,建议在实验过程中注重细节和观察,以便更好地理解实验结果和原理。
模型机实验报告
哈尔滨工程大学实验报告实验名称:复杂模型机设计与实现班级:学号:姓名:实验时间:成绩:指导教师:程旭辉附小晶实验室名称:计算机专业实验中心一、实验名称:复杂模型机的设计与实现二、实验目的:1.综合运用所学计算机原理知识,设计并实现较为完整的计算机。
2.设计指令系统。
3.编写简单程序,在所设计的复杂模型计算机上调试运行。
三、实验设备:GW-48CPP系列计算机组成原理实验系统。
四、实验原理:1.数据格式8位,其格式如下:其中第7位为符号位,数值表示范围是:-1≤1。
2.指令格式所设计的指令分为四大类共十六条,其中包括算术逻辑指令、I/O指令、访问、转移指令和停机指令。
(1)算术逻辑指令设计9条算术逻辑指令并用单字节表示,采用寄存器直接寻址方式,其格式如下:其中,(2)访问指令及转移指令访问指令有2条,即存数(STA)、取数(LDA);2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC)其中,OP-CODE指令)。
D为位移量(正负均可),M为寻址模式,其定义如下:在本模型机中规定变址寄存器RI为寄存器R2。
(3)I/O指令输入(IN)和输出(其中,addr=01时,选中“OUTPUT DEVICE”中的LCD点阵液晶屏作为输出设备。
(4)停机指令指令格式如下:3.指令系统共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入/输出指令2条,其本模型机的数据通路框图如图7-1。
根据机器指令系统要求,设计微程序流程图及确定微地址,如图7-2。
图7-2 微程序流程图五、实验内容:按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。
微代码定义如表7-1所示。
六、实验框图设计:模型机设计主要是包括:控制器、存储器、运算器、输入、输出。
主要的设计是SE-5是根据FC,FZ,T4,P[4..1],SWA,SWB,I[7..2]来控制输出的SE[1..6],控制地址的跳转。
模型机实验报告
一.基本知识点a)计算机的组成和工作原理。
b)计算机执行机器指令的工作过程。
c)微指令,微程序的设计及调试。
二.实验设计方案:模型机与程序运行实验是一个综合型整机实验。
该模型机包含七条指令。
他能够依照用户程序执行微程序完成由加,与,非运算以及数据组合的任意复合运算。
用户测试程序可通过内存初始化的方式存储在内存中,也可通过强迫写的方式循环写入内存。
该模型机可通过以下两种方式完成:(1)分模块整合法。
此整机实验,由节拍脉冲,数据通路,微控制器,数码管显示4个模块组成。
运算器,存储器,数据通路及微程序控制器中的时钟脉冲必须与时序电路相连。
(2)依据微体系结构图通过VHDL编程设计模型机,由模型机主体,时序电路,显示模块组成。
三.实验流程实验前先学习如何创建一个工程。
点击create a new project创建工程路径,工程和顶层文件名称选择需要添加的子模块选择实验板类型,然后点击finish。
1.设计时序电路(节拍器)状态机设计仿真结果2.模型机主体VHDL代码library ieee;use Ieee.std_logic_1164.all;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity microcomputer isport( Clr, srd, swe, t1, t2, t3, t4: in std_logic;sw_in: in std_logic_vector(7 downto 0);mpcout : out std_logic_vector(4 downto 0);arout, bus_data : out std_logic_vector(7 downto 0));end microcomputer;architecture rt1 of microcomputer istype RAM is array(0 to 31) of std_logic_vector(7 downto 0);signal ram8:RAM := (x"20", x"0d", x"e0", x"0e", x"40", x"10", x"60", x"10", x"c0", x"0f",x"80", x"a0", x"00", x"11", x"12", x"24", x"ff", others => x"00");signal pc, ar, dr1, dr2, r5, bus_Reg, bus_reg_t2, bus_Reg_t3: std_logic_vector(7 downto 0);signal mpc, mpc_t2, mpc_t3, mpc_t4:std_logic_vector(4 downto 0);signal ir: std_logic_vector(2 downto 0);beginmpcout <= mpc_t4;arout <= ar;bus_data <= bus_Reg;ct1:process(t1, clr, srd, swe)beginif clr = '0' then mpc <= (others => '0');elsif swe = '0' then mpc <= "10000";elsif srd = '0' then mpc <= "01000";elsif t1 = '1' and t1'event then mpc <= mpc_t4;end if;end process;ct2:process(t2, mpc, sw_in, ar)beginif Clr = '0' then mpc_t2 <= (others => '0');elsif t2 = '1' and t2'event thencase mpc iswhen "00000" =>mpc_t2 <= "00001";bus_reg_t2<= sw_in;when "00001" =>mpc_t2 <= "00010";bus_Reg_t2<= pc;when "00010" =>mpc_t2 <= "01000";bus_Reg_t2<=ram8(conv_integer(ar));when "01001" =>mpc_t2 <= "10101";bus_Reg_t2<=pc;when "10101" =>mpc_t2 <= "10110";bus_Reg_t2<=ram8(conv_integer(ar));when "10110" =>mpc_t2 <= "00001";bus_Reg_t2<=ram8(conv_integer(ar));when "01010" =>mpc_t2 <= "10111";bus_Reg_t2<=pc;when "10111" =>mpc_t2 <= "11000";bus_Reg_t2<=ram8(conv_integer(ar));when "11000" =>mpc_t2 <= "00001";bus_Reg_t2<=r5;ram8(conv_integer(ar))<=r5;when "01011" =>mpc_t2 <= "11001";bus_Reg_t2<=pc;when "11001" =>mpc_t2 <= "11010";bus_Reg_t2<=ram8(conv_integer(ar));when "11010" =>mpc_t2 <= "00001";bus_Reg_t2<=ram8(conv_integer(ar));when "01100" =>mpc_t2 <= "11011";dr1 <= r5;bus_Reg_t2<=r5;when "11011" =>mpc_t2 <= "00001";bus_Reg_t2<=bus_Reg_t2;when "01101" =>mpc_t2 <= "11100";bus_Reg_t2<=pc;when "11100" =>mpc_t2<="00001";bus_Reg_t2<=ram8(conv_integer(ar));when "01110" =>mpc_t2 <= "00011";bus_Reg_t2<=pc;when "00011" =>mpc_t2 <= "00100";bus_Reg_t2<=ram8(conv_integer(ar));when "00100" =>mpc_t2<="00101";dr2<=ram8(conv_integer(ar));bus_Reg_t2 <=ram8(conv_integer(ar));when "00101" =>mpc_t2 <= "00110";dr1<=r5;bus_Reg_t2<=r5;when "00110" =>mpc_t2<="00001";bus_Reg_t2<=bus_Reg_t2;when "01111" =>mpc_t2<="11101";bus_Reg_t2<=pc;when "11101" =>mpc_t2<="11110";bus_Reg_t2<=ram8(conv_integer(ar));when "11110" =>mpc_t2<= "11111";dr2<= ram8(conv_integer(ar));bus_Reg_t2<=ram8(conv_integer(ar));when "11111" =>mpc_t2<="00111";dr1<=r5;bus_Reg_t2<=r5;when "00111" =>mpc_t2<= "00001";bus_Reg_t2<=bus_Reg_t2;when "10000" =>mpc_t2<="10001";bus_Reg_t2<=sw_in;when "10001" =>mpc_t2<="10010";bus_Reg_t2<=pc;when "10010" =>mpc_t2<="10001";bus_Reg_t2<=sw_in;ram8(conv_integer(ar))<=sw_in;when "01000" =>mpc_t2<="10011";bus_Reg_t2<=sw_in;when "10011" =>mpc_t2<="10100";bus_Reg_t2<=pc;when "10100" =>mpc_t2<="10011";bus_Reg_t2<=ram8(conv_integer(ar));when others =>mpc_t2<= mpc; bus_Reg_t2<=bus_Reg_t2;end case;end if;end process;ct3:process(t3, mpc, mpc_t2,bus_Reg_t2)beginif clr = '0' then mpc_t3<=(others=>'0');elsif t3 ='1' and t3'event thenmpc_t3<= mpc_t2;bus_Reg_t3 <= bus_Reg_t2;case mpc iswhen "00000" =>pc <= bus_Reg_t2;when "00001" =>ar <= bus_Reg_t2;pc<=pc+1;when "00010" =>ir <= bus_Reg_t2(7 downto 5);when "01001" =>ar <= bus_Reg_t2;pc <= pc+1;when "10101" =>ar <= bus_Reg_t2;when "10110" =>r5 <=bus_Reg_t2;when "01010" =>ar <= bus_Reg_t2;pc<=pc+1;when "10111" =>ar <= bus_Reg_t2;when "01011" =>ar <= bus_Reg_t2;pc <= pc+1;when "11001"=>ar <= bus_Reg_t2;when "11011" =>r5 <= not dr1;bus_Reg_t3<= not dr1;when "01101"=>ar <= bus_Reg_t2;pc<= pc+ 1;when "11100"=>pc<=bus_Reg_t2;when "01110"=>ar <= bus_Reg_t2;pc<= pc+1;when "00011"=>ar <= bus_Reg_t2;when "00110"=>r5 <= dr1+dr2;bus_Reg_t3<=dr1+dr2;when "01111"=>ar <= bus_Reg_t2;pc<= pc+1;when "11101"=>ar <= bus_Reg_t2;when "00111"=>r5<=dr1 and dr2; bus_Reg_t3 <= dr1 and dr2;when "10000"=>pc <= bus_Reg_t2;when "10001"=>ar <= bus_Reg_t2;pc<=pc+1;when "01000"=>pc<= bus_Reg_t2;when "10011"=>ar <= bus_Reg_t2;pc<=pc+1;when others =>bus_Reg_t3<=bus_Reg_t2;end case;end if;end process;ct4:process(clr, t4,mpc,ir,mpc_t3)beginif clr = '0' then mpc_t4 <= (others=>'0');elsif t4='1' and t4'event thenbus_Reg<=bus_Reg_t3;case mpc iswhen "00010" =>mpc_t4<= mpc_t3(4 downto 3) & ir;when others =>mpc_t4 <= mpc_t3;end case;end if;end process;end rt1;3.模4计数器顶层电路4.2_3译码器顶层电路5.4_1选择器VHDL代码6.4_7译码器7.顶层电路设计8.引脚设置选择Assignments->pins8.全编译 processing->compiler tool ,然后点击start8.下载到电板选择TOOLs->groprommer9.然后点击start开始下载。
计算机组成原理模型机实验报告
实验六计算机系统综合设计与实现一、实验目的1、深入理解计算机系统工作的基本原理,建立整机概念。
2、融会贯通计算机组成原理课程的容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识。
3、培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
二、实验要求1、将已经设计的运算器、存储器和控制器连接,构建完整的计算机系统;2、编写一段可以实现一定功能的指令程序,进行计算机整机系统功能的验证。
3、所有任务要求功能仿真和必要的验证。
实验完成后,一周提交实验报告。
三、实验设备PC机+ QuartusⅡ10.0 + FPGA(DE2-115)+TEC-8实验箱四、计算机系统(TEC-8)综合逻辑框图硬连线控制器控制信号切换电路ALU A端口B端口C Z R0 R1 R2 R3 IR PC AR 双端口RAM DBUS五、实验任务1、将实验二的运算器、实验三的存储器和实验五的控制器连接,构建完整的计算机系统;2、计算机整机系统功能测试,进行功能仿真和时序仿真并在DE2-115上验证。
(1)根据指令系统,编写一段可以实现一定功能的程序,要求:有一个合理的运算功能和逻辑关系;指令数量:不少于8条;指令类型:停机、跳转、RR、读存、写存、算术和逻辑运算;(2)将指令程序手工汇编成二进制代码;(3)理论上设置寄存器的初值,并计算程序执行后的结果;(4)将指令程序的二进制代码存入存储器RAM中;(5)将需要的运算数据初值存入寄存器R0-R3中;(6)进行程序连续运行的功能仿真和时序仿真,将仿真运算结果与理论计算结果进行比较。
六、实验步骤实验电路图子模块(1)tri_74244module tri_74244 (en,Din,Dout );input en ;wire en ;input [7:0] Din;wire [7:0] Din ;output [7:0] Dout ;reg [7:0] Dout ;always (en or Din)beginif (en)Dout<= Din ;elseDout <= 8'bzzzzzzzz;endendmodule`timescale 1 ps/ 1 psmodule tri_74244_vlg_tst();reg eachvec;reg [7:0] Din;reg en;wire [7:0] Dout;tri74244.vt`timescale 1 ps/ 1 psmodule tri_74244_vlg_tst();reg eachvec;reg [7:0] Din;reg en;wire [7:0] Dout;tri_74244 i1 (.Din(Din),.Dout(Dout),.en(en));integer i;initial begin i=0;Din=8'b00000000;en=0;en=1;#40 en=1;endinitialbegin for(i=0;i<10;i=i+1)begin#10 Din=i;endend endmoduletri74244功能仿真(2)ALUALU.bdfmodolue_74181使用quartus库中的74181模块转换为verilog文件即可de2_4de2_4.vmodule de2_4(en,in,out);input [2:1] in ;input en;output [4:1] out ;reg [4:1] out ;always (en or in)if (en)case (in)2'b00:out=4'b0001;2'b01:out=4'b0010;2'b10:out=4'b0100;2'b11:out=4'b1000;default:out=4'b0000;endcaseelse out=4'b0000;endmodulede2_4.vt`timescale 1 ns/ 1 psmodule de2_4_vlg_tst();reg eachvec;reg en;reg [2:1] in; wire [4:1] out;de2_4 i1 (.en(en),.in(in),.out(out));initial begin en=0;endinitial begin # 10 en=1;endinitial begin # 5 in=2'b00;#15 in=2'b01;#15 in=2'b10;#15 in=2'b11;#40 $finish;endinitial$monitor($time,,,"en=%b in=%b out=%b",en,in,out); endmodulereg8reg8.vmodule reg8 ( T3,DOUT ,D );input T3 ;wire T3 ;input [7:0] D ;wire [7:0] D ;output [7:0] DOUT ;reg [7:0] DOUT ;always ( posedge T3 )beginDOUT <= D ;endendmodulereg8.vt`timescale 1 ps/ 1 psmodule reg8_vlg_tst();reg eachvec;reg [7:0] D;reg T3;wire [7:0] DOUT;reg8 i1 (.D(D),.DOUT(DOUT),.T3(T3));integer i;initialbeginT3=0;D=8'd0;endalwaysbegin#5 T3= ~T3;endinitialbegin for(i=0;i<11;i=i+1)begin#10 D=i;endend endmodulemux4_1mux4_1.vmodule mux4_1(d1,d2,d3,d4,se1,se2,dout);input [7:0]d1;input [7:0]d2;input [7:0]d3;input [7:0]d4;input se1;input se2;output dout;reg [7:0]dout;always (d1 or d2 or d3 or d4 or se1 or se2) case({se2,se1})2'b00 : dout=d1;2'b01 : dout=d2;2'b10 : dout=d3;2'b11 : dout=d4;endcaseendmodulemux4_1.vt`timescale 1 ps/ 1 psmodule mux4_1_vlg_tst();reg eachvec;reg [7:0] d1;reg [7:0] d2;reg [7:0] d3;reg [7:0] d4;reg se1;reg se2;wire [7:0] dout;mux4_1 i1 (.d1(d1),.d2(d2),.d3(d3),.d4(d4),.dout(dout),.se1(se1),.se2(se2));integer i,j;initial begin #10 d1=8'b00000001;d2=8'b00000010;d3=8'b00000011;d4=8'b00000100;endinitialbegin#5while(1)for(i=0;i<2;i=i+1)for(j=0;j<2;j=j+1)begin#5 se2=i; se1=j;endend endmoduleALU逻辑电路图逻辑功能表)(当A=55H,B=AAH,S=0000~1111,M=0,CIN=1时仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initialbeginT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b01010101;#10 RD=2'b01; SD=8'b10101010;#10 RD=2'b10; SD=8'b00000011;#10 RD=2'b11; SD=8'b00000100; #10 RD=2'b00;RS=2'b01;SBUS=0;DRW=0;ABUS=1;CIN=1;LDC=1;M=0;endalwaysbegin#5 T3=~T3;endinteger i;initial#40 S=4'b0000;for(i=1;i<16;i=i+1)#10 S=i;endinitial$monitor($time,,,"M=%b S=%b CIN=%b SD=%h DBUS=%h C=%b",M,S,CIN,SD,DBUS,C); endmodule指令ADD R0,R1( R0+R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initial forkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00000001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=1;#20 LDC=1;#20 M=0;#20 S=4'b1001;#30 RD=2'b00;#30 DRW=1;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=07H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3上升沿到来(15ns时)数据01H被写R120ns DBUS= R0+R1=07+01=08H30ns T3上升沿到来(35ns)时DBUS数据08H被写R0,因此DBUS=R0+R1=08H+01H=09H (说明实现了R0+R1 → R0)注意:此时M=0, S=1001,CIN=1(相当于C0=0),实现算术运算A+B指令SUB R0,R1( R0-R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initial forkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00000001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=0;#20 LDC=1;#20 M=0;#20 S=4'b0110;#30 RD=2'b00;#30 DRW=1;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=03H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3上升沿到来(15ns时)数据01H被写R120ns DBUS= R0-R1=07-01=06H30ns T3上升沿到来(35ns)时DBUS数据06H被写R0,因此DBUS=R0-R1=06H-01H=05H(说明实现了R0-R1 → R0)注意:此时M=0,S=0110,实现算术运算A-B-1,设置CIN=0(相当于C0=1),让进位C0=1,因此实现运算(A-B-1)+1=A-B指令AND R0,R1( R0&R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initialforkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00001001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=1;#20 LDC=1;#20 M=1;#20 S=4'b1011;#30 RD=2'b00;#30 DRW=1;#38 S=4'b0000;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=00000111 T3上升沿到来(5ns时)数据00000111被写R0 10ns DBUS=00001001 T3上升沿到来(15ns时)数据00001001被写R1 20ns DBUS= R0&R1=0000000130ns DRW=1 T3上升沿到来(35ns)时DBUS数据00000001被写R0,38 ns M=1,S=0000 DBUS=R0&R1==11111110H 实现了求反运算(说明已经实现了R0&R1 → R0)(3)RAM4RAM4.bdfcnt256cnt256.vmodulet256(Q,DATA,LDN,reset,clk);output [7:0] Q;input [7:0] DATA;input LDN,reset,clk;reg [7:0] Q;always (posedge clk or negedge reset) //clk上升沿触发beginif(!reset) //异步清零,低电平有效Q<=8'b0;else if(!LDN) Q<=DATA; //同步置数,低电平有效else Q<=Q+1; //计数endendmodulecnt256.vt`timescale 1 ns/ 1 psmodulet256_vlg_tst();reg [7:0] DATA;reg LDN;reg clk;reg reset;wire [7:0] Q;cnt256 i1 (.DATA(DATA),.LDN(LDN),.Q(Q),.clk(clk),.reset(reset));initial beginDATA=1'hA; clk=0;reset=1;LDN=1;DATA=8'd0*******;#20 reset=0;#40 reset=1;#260 LDN=0;#80 LDN=1;endalwaysbegin#20 clk=~clk;endendmoduleasdf利用宏功能模块先生成单端口存储器,再用两单端口存储器进行连接生成双端口存储器RAM4仿真测试逻辑图双端口逻辑功能表(1)从左端口写存储器(在01H 单元中写入数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能x ↑0 110 0 1 0 0 0101H→AR ↑x 1 10 0 0 1 0 0 1111H→(01H)(2)从左端口读存储器(从01H 中读出数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能x ↑0 110 0 1 0 0 0101H→AR ↑x 00 0 0 1 1 0 0 xx(01H) →DBUS(3)从右端口读存储器(从01H 中读出数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能x ↑0 10 10 1 0 0 0101H→PC ↑x00 0 0 1 1 0 0 xx (01H) →INS(4)AR 自动加 1 读存储器(从左端口连续读存储器)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能↑x00 0 0 1 1 1 0 XX M→DBUS (5 )PC 自动加 1 读存储器(从右端口连续读T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能↑x00 0 0 0 1 0 1 XX M→INS(4)UCU_ir_1UCU_ir_1.bdfram64_40rom64_40.vmodule rom64_40 (addr,q);input [5:0] addr;output [39:0] q;reg [39:0] q;always (addr[5] or addr[4] or addr[3] or addr[2] or addr[1] or addr[0]) begincase({addr[5],addr[4],addr[3],addr[2],addr[1],addr[0]})6'h00 : q <= 40'h0c00000041;6'h01 : q <= 40'h00000410a0;6'h02 : q <= 40'h4010034002;6'h03 : q <= 40'h4010028002;6'h04 : q <= 40'h4020024004;6'h05 : q <= 40'h4010028004;6'h06 : q <= 40'h6c00020000;6'h07 : q <= 40'h4400020006;6'h08 : q <= 40'h501002080a;6'h09 : q <= 40'h4410020808;6'h0a : q <= 40'h641002080c;6'h0b : q <= 40'h4410020815;6'h0c : q <= 40'h7810020800;6'h0d : q <= 40'h401002a01a;6'h0e : q <= 40'h0020000c01;6'h0f : q <= 40'h4410020832;6'h10 : q <= 40'h000e810401;6'h11 : q <= 40'h0180020014;6'h12 : q <= 40'h0000000401;6'h13 : q <= 40'h8000000401;6'h14 : q <= 40'h0010002001;6'h15 : q <= 40'h5010020816;6'h16 : q <= 40'h440a7a0017;6'h17 : q <= 40'h44099a0018;6'h18 : q <= 40'h440eca0019;6'h19 : q <= 40'h440f8a0000;6'h1a : q <= 40'h401003401b;6'h1b : q <= 40'h401003501c;6'h1c : q <= 40'h401003501d;6'h1d : q <= 40'h401002a01f;6'h1e : q <= 40'h0000000000;6'h1f : q <= 40'h4020025030;6'h20 : q <= 40'h0000000000;6'h21 : q <= 40'h000a780c01;6'h22 : q <= 40'h0009980c01;6'h23 : q <= 40'h000ec80c01;6'h24 : q <= 40'h0008180c01;6'h25 : q <= 40'h000e80800e;6'h26 : q <= 40'h000fc08010;6'h27 : q <= 40'h0000000112;6'h28 : q <= 40'h0000000212;6'h29 : q <= 40'h000fc02401;6'h2a : q <= 40'h000e800401;6'h2b : q <= 40'h0040002401;6'h2c : q <= 40'h010*******;6'h2d : q <= 40'h020*******;6'h2e : q <= 40'h0000020401;6'h2f : q <= 40'h0000000000;6'h30 : q <= 40'h4020025031;6'h31 : q <= 40'h4020020000;6'h32 : q <= 40'h5010020833;6'h33 : q <= 40'h64100c0834;6'h34 : q <= 40'h7810020835;6'h35 : q <= 40'h4c1002a036;6'h36 : q <= 40'h400e834037;6'h37 : q <= 40'h440e835038;6'h38 : q <= 40'h480e835039;6'h39 : q <= 40'h4c0e83503a;6'h3a : q <= 40'h4c1002803b;6'h3b : q <= 40'h702002483c;6'h3c : q <= 40'h6c2002483d;6'h3d : q <= 40'h582002483e;6'h3e : q <= 40'h4420024800;6'h3f : q <= 40'h0000000000;default : begin endendcaseendendmodulerom64_40.vt`timescale 1 ns/ 1 psmodule rom64_40_vlg_tst();reg [5:0] addr; wire [39:0] q;rom64_40 i1 (.addr(addr),.q(q));integer i;initialbeginfor(i=0;i<64;i=i+1)begin#50 addr=i;endendendmodulereg6reg6.vmodule reg6 ( CLK,DOUT ,D,CLR_ );input CLK ;wire CLK ;input [5:0] D ;wire [5:0] D ;input CLR_;wire CLR_;output [5:0] DOUT ;reg [5:0] DOUT ;always ( negedge CLK or negedge CLR_ ) beginif(CLR_==0)DOUT <= 6'd0 ;elseDOUT <= D;endendmodulereg6.vt`timescale 1 ps/ 1 psmodule reg6_vlg_tst();reg CLK;reg CLR_;reg [5:0] D;wire [5:0] DOUT;reg6 i1 (.CLK(CLK),.CLR_(CLR_),.D(D),.DOUT(DOUT));integer i;initialbeginCLK=0;D=6'd1;CLR_=1;#10 CLR_=0;#10 CLR_=1;#30 D=6'd2;endalwaysbegin#20 CLK= ~CLK;endinitialbegin#50for(i=3;i<15;i=i+1)begin#40 D=i;endend endmoduleaddrtranaddrtran.bdfaddrtran.vt`timescale 1 ps/ 1 ps module addrtran_vlg_tst(); reg eachvec;reg C;reg INT;reg [7:4] IR;reg [5:0] NuA;reg [4:0] P;reg SWA;reg SWB;reg SWC;reg Z;wire [5:0] uA;addrtran i1 (.C(C),.\INT (INT),.IR(IR),.NuA(NuA),.P(P),.SWA(SWA),.SWB(SWB),.SWC(SWC),.uA(uA),.Z(Z));initialbeginINT=0;C=0;Z=0;P=5'd1;NuA=2'o01;SWC=0;SWB=0;SWA=0;#20 SWA=1;#20 SWA=0;SWB=1;#20 SWA=1;#20 SWA=0;SWB=0;SWC=1;#20 SWC=0;P=5'd2;NuA=6'd010000;endinteger i;initial#80beginfor(i=0;i<16;i=i+1)#20 IR=i; endendmodulemicro_controller.bdfMicro_controller.vt`timescale 1 ns/ 1 psmodule micro_controller_vlg_tst(); reg eachvec;reg C;reg CLR_;reg INT;reg [7:4] IR;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM;wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;wire LPC;wire M;wire MBUS;wire MEMW;wire PCADD;wire PCINC;wire [3:0] S;wire SBUS;wire [3:0] SEL;wire SELCTL;wire STOP;micro_controller i1 ( .ABUS(ABUS),.ARINC(ARINC),.C(C),.CIN(CIN),.CLR_(CLR_),.CM(CM),.DRW(DRW),.IABUS(IABUS),.\INT (INT),.INTDI(INTDI),.INTEN(INTEN),.IR(IR),.LAR(LAR),.LDC(LDC),.LDZ(LDZ),.LIAR(LIAR),.LIR(LIR),.LPC(LPC),.M(M),.MBUS(MBUS),.MEMW(MEMW),.PCADD(PCADD),.PCINC(PCINC),.S(S),.SBUS(SBUS),.SEL(SEL),.SELCTL(SELCTL),.STOP(STOP),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T3(T3),.Z(Z));initialbeginCLR_=0;T3=0;#30 Z=0;C=0;INT=0;CLR_=1;SWC=0;SWB=0;SWA=0; endalwaysbegin#20 T3=~T3;endinteger i;initialbeginfor(i=1;i<16;i=i+1)begin#80 IR=i;endendendmodulereg8同ALU模块中的reg8mux2_1mux2_1.vmodule mux2_1(d0,d1,sel,dout);input [3:0]d0;input [3:0]d1;input sel;output dout;reg [3:0]dout;always (d0 or d1 or sel) case(sel)1'b0 : dout=d0;1'b1 : dout=d1;endcaseendmodulemux2_1.vt`timescale 1 ps/ 1 psmodule mux2_1_vlg_tst();reg eachvec;reg [3:0] d0;reg [3:0] d1;reg sel;wire [3:0] dout;mux2_1 i1 (.d0(d0),.d1(d1),.dout(dout),.sel(sel));initial begin d0=4'b0001;d1=4'b1110;endinteger i;initialwhile(1)beginfor(i=0;i<2;i=i+1)begin#50 sel=i;endend endmoduleUCU_ir_1仿真测试(1)ADD-SUB-AND-INC指令,2个CPU周期Testbench`timescale 1 ns/ 1 ps module ucu_ir_vlg_tst();reg eachvec;reg C;reg CLR_;reg [7:0] INS;reg INT;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM;wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;wire LPC;wire M;wire MBUS;wire MEMW;wire PCADD;wire PCINC;wire [1:0] RD;wire [1:0] RS;wire [3:0] S;wire SBUS;wire STOP;ucu_ir i1 (.ABUS(ABUS),.ARINC(ARINC),.C(C),.CIN(CIN),.CLR_(CLR_),.CM(CM),.DRW(DRW),.IABUS(IABUS),.INS(INS),.\INT (INT),.INTDI(INTDI),.INTEN(INTEN),.LAR(LAR),.LDC(LDC),.LDZ(LDZ),.LIAR(LIAR),.LIR(LIR),.LPC(LPC),.M(M),.MBUS(MBUS),.MEMW(MEMW),.PCADD(PCADD),.PCINC(PCINC),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.STOP(STOP),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T3(T3),.Z(Z));initialbeginCLR_=0;T3=1;#30 CLR_=1;Z=0;C=0;INT=0;SWC=0;SWB=0;SWA=0;endalways begin#10 T3=0;#20 T3=1;endinteger i;initialbegin#40 INS=8'b00010001;for(i=33;i<255;i=i+16)begin#60 INS=i;endend endmodule(2)LD-ST-JC指令,3个CPU周期Testbench`timescale 1 ns/ 1 psmodule ucu_ir_vlg_tst();reg eachvec;reg C;reg CLR_;reg [7:0] INS;reg INT;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM; wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;wire LPC;wire M;wire MBUS;wire MEMW;wire PCADD;wire PCINC;wire [1:0] RD; wire [1:0] RS; wire [3:0] S; wire SBUS;wire STOP;ucu_ir i1 (.ABUS(ABUS),.ARINC(ARINC),.C(C),.CIN(CIN),.CLR_(CLR_),.CM(CM),.DRW(DRW),.IABUS(IABUS),.INS(INS),.\INT (INT),.INTDI(INTDI),.INTEN(INTEN),.LAR(LAR),.LDC(LDC),.LDZ(LDZ),.LIAR(LIAR),.LIR(LIR),.LPC(LPC),.M(M),.MBUS(MBUS),.MEMW(MEMW),.PCADD(PCADD),.PCINC(PCINC),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.STOP(STOP),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T3(T3),.Z(Z));initialbeginCLR_=0;T3=1;Z=0;C=0;INT=0;SWC=0;SWB=0;SWA=0;#30 CLR_=1;endalways begin#10 T3=0;#20 T3=1;endinteger i;initialbegin#40 INS=8'b01011110;for(i=110;i<111;i=i+16)begin#90 INS=i;endfor(i=112;i<225;i=i+16)begin#90 INS=i;endend endmodule(3)JZ-JMP-OUT-STP指令Testbench`timescale 1 ns/ 1 psmodule ucu_ir_vlg_tst();reg eachvec;reg C;reg CLR_;reg [7:0] INS;reg INT;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM; wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;wire LPC;wire M;wire MBUS;wire MEMW;wire PCADD;wire PCINC;wire [1:0] RD; wire [1:0] RS; wire [3:0] S; wire SBUS;wire STOP;ucu_ir i1 (.ABUS(ABUS),.ARINC(ARINC),.C(C),.CIN(CIN),.CLR_(CLR_),.CM(CM),.DRW(DRW),.IABUS(IABUS),.INS(INS),.\INT (INT),.INTDI(INTDI),.INTEN(INTEN),.LAR(LAR),.LDC(LDC),.LDZ(LDZ),.LIAR(LIAR),.LIR(LIR),.LPC(LPC),.M(M),.MBUS(MBUS),.MEMW(MEMW),.PCADD(PCADD),.PCINC(PCINC),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.STOP(STOP),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T3(T3),.Z(Z));initialbeginCLR_=0;T3=1;Z=0;C=0;INT=0;SWC=0;SWB=0;SWA=0;#30 CLR_=1;endalways begin#10 T3=0;#20 T3=1;endinteger i;initialbegin#40 INS=8'b10000000;for(i=144;i<145;i=i+16)begin#90 INS=i;endfor(i=161;i<225;i=i+63)begin#60 INS=i;endend endmodule功能仿真:时序仿真:仿真测试1.读存储器,验证已经写入存储器指定单元的数据(SWC SWB SWA=010) 从00H开始连续读00-05H,从30H开始连续读30-32HTestbench:`timescale 1 ns/ 1 psmodule tatol_vlg_tst();reg CLR_;reg INT;reg [7:0] SD;reg SWA;reg SWB;reg SWC;reg T1;reg T2;reg T3;wire [7:0] DBUS;tatol i1 (.CLR_(CLR_),.DBUS(DBUS),.\INT (INT),.SD(SD),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T1(T1),.T2(T2),.T3(T3));initialbeginINT=0;。
简单模型机实验报告
简单模型机实验报告篇一:模型机实验报告HUNAN UNIVERSITY课程实习报告题目:模型机学生姓名学生学号 XX0801328专业班级计算机科学与技术(3)班指导老师方恺晴完成日期 XX.5.28思考题:1. 给定一个复合运算式子以及指令码IR[7..5]与八位BUS总线对应情况。
要求写出七条指令新的指令码并写出复合运算执行mif文件。
修改模型机电路调试程序以实现复合运算。
例:已知A=55H,B=8AH,C=F0H;IR[7..5]对应BUS8,BUS1,BUS3;写出(Aplus/B)^(/(/CplusB))的mif文件,并在模拟机上实现。
答:模拟机电路修改如下:存储器预设指令重设:计算结果:(A+/B)^(/(/C+B))=42H2. Microcomputer.vhd代码中进程ct1,ct2,ct3,ct4功能划分依据是什么?ct1:微序列控制器下址跳转。
ct2:实现各种指令,主要集中在实现从存储器或者寄存器释放数据到总线上。
ct3:完成各种指令,从总线上装载数据到相应的存储器或者寄存器中。
ct4:生成下址,判断下址生成方式,根据不太那个的方式生成下址。
3. Microcomputer.vhd代码中如何定义并初始化RAM?type ram is array(0 to 37)of std_logic_vector(7 downto 0); --38*8ramsignal ram8:ram:=(x”20”, x”1e”, x”80”, x”40”, x”20”, x”20”, x”1d”, x”c0”, x”20”, x”40”, x”21”, x”20”, x”1f”, x”80”, x”40”, x”22”, x”20”, x”1e”, x”c0”, x”22”, x”80”, x”e0”, x”21”, x”40”, x”23”, x”60”, x”23”, x”a0”, x”00”, x”55”, x”8a”, x”f0”,others=>x”00”) –initialize ram44. Microcomputer.vhd代码中bus_reg_t2 将ram8存储器中对应于ar中地址单元的数据取出来放到bus_reg_t2寄存器中。
实验六 基本模型机实验
实验六 基本模型机实验一、 实验目的1. 掌握微程序执顺序强制改变的原理2. 掌握机器指令与微程序的对应关系。
3. 掌握机器指令的执行流程。
4.掌握机器指令的微程序的编制、写入。
二、 实验设备TDN -CM +计算机组成原理教学实验系统。
三、 实验原理E 1E 2E 3E 4E 5E 6242322212019181716D R i D R 1D R 2D R I R D A D D A RS -B D -B J -B 99-B L U -B C -BC (1)C (2)C (3)C (4)R D P C图1:微控器原理图部件实验过程中,各部件单元的控制信号是人为模拟产生的,如运算器实验中对74LS -181芯片的控制,存储器实验中对存储器芯片的控制信号,以及几个实验中对输入设备的控制。
而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。
这里,计算机数据通路的控制将由微程序控制器来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一段微程序。
1. 微程序执行顺序强制改变原理如图2 所示,后继地址是由6片正沿触发的双D 触发器(74)构成,它们带有清“0”和置“1”端,可以让CLR 有效(低电平)使MA0~MA5置0,也可以让SE1~SE5有效(低电平),使对应的触发器置1。
在微程序的运行过程中,在T2时刻,将当前运行的微指令中的µA5~µA0置入对应的触发器中,作为下条执行微指令的地址,如果在T2后的T4时刻,可能会使SE1~SE5中的某一位或者几位有效,将强制的置对应触发器为“1”,从而改变由µA5~µA0指定的微地址,改变微程序执行流程。
SE2SE1SE3SE4SE5SE6后继微地址输出图2:后继地址逻辑图注:CLR :清零信号 T2:时钟信号µA5~µA0:对应微指令中µA5~µA02. 机器指令与微程序的对应关系每条机器指令由多条微指令按一定的顺序完成,如MOV 指令(从存储器到存储器)需要6条微指令的执行才能完成,其执行流程为:将完成某条机器指令的这些微指令的第一条指令放置在微控器的存储器的固定位置,通过对机器指令的编码,当读到某条机器指令后,能将微程序的执行流程转入该指令对应的微程序位置。
复杂模型机实验报告
复杂模型机实验报告复杂模型机实验报告一、引言复杂模型机是一种用于模拟和研究复杂系统行为的工具。
本实验旨在通过对复杂模型机的实际操作和观察,探索其在解决实际问题中的潜力和应用价值。
二、实验目的1. 了解复杂模型机的基本原理和工作方式;2. 掌握复杂模型机的操作方法;3. 运用复杂模型机解决实际问题。
三、实验装置和方法实验中使用的复杂模型机是一台由多个模块组成的系统,包括中央处理器模块、存储器模块、输入输出模块等。
实验过程中,我们通过连接各个模块,构建一个复杂系统,并通过编程控制其运行。
四、实验步骤1. 搭建实验平台:根据实验要求,选择并连接相应的模块,确保系统正常运行。
2. 编写程序:根据实际问题的需求,编写相应的程序代码,包括输入输出控制、数据处理等。
3. 调试程序:在编写完成后,通过调试程序,确保程序运行无误。
4. 运行实验:将编写好的程序加载到复杂模型机中,观察系统的运行状态和结果。
五、实验结果与分析通过实验,我们得到了一系列的实验结果。
根据实验目的的不同,我们可以对这些结果进行不同的分析和解读。
以一个简单的实例来说明。
我们设计了一个用于模拟城市交通流量的复杂模型机系统。
通过输入不同的参数,我们可以模拟不同时间段内的交通流量变化情况。
实验结果显示,在高峰时段,交通流量明显增加,而在低峰时段,交通流量则相对较低。
这个实验结果可以为城市交通管理部门提供重要的参考,帮助他们制定更合理的交通规划和管理措施。
六、实验总结通过本次实验,我们深入了解了复杂模型机的原理和应用,掌握了其操作方法,并通过实际问题的解决,验证了其在实践中的潜力和价值。
复杂模型机作为一种强大的工具,可以帮助我们更好地理解和解决复杂系统中的问题。
然而,我们也发现了一些问题。
复杂模型机的搭建和调试需要一定的技术和时间投入,对于初学者来说可能存在一定的难度。
此外,复杂模型机的应用范围还有待进一步扩展和深化,需要更多的实践和研究。
综上所述,复杂模型机是一种有着广阔应用前景的工具。
简单模型机实验报告
简单模型机实验报告篇一:模型机实验报告HUNAN UNIVERSITY课程实习报告题目:模型机学生姓名学生学号 XX0801328专业班级计算机科学与技术(3)班指导老师方恺晴完成日期 XX.5.28思考题:1. 给定一个复合运算式子以及指令码IR[7..5]与八位BUS总线对应情况。
要求写出七条指令新的指令码并写出复合运算执行mif文件。
修改模型机电路调试程序以实现复合运算。
例:已知A=55H,B=8AH,C=F0H;IR[7..5]对应BUS8,BUS1,BUS3;写出(Aplus/B)^(/(/CplusB))的mif文件,并在模拟机上实现。
答:模拟机电路修改如下:存储器预设指令重设:计算结果:(A+/B)^(/(/C+B))=42H2. Microcomputer.vhd代码中进程ct1,ct2,ct3,ct4功能划分依据是什么?ct1:微序列控制器下址跳转。
ct2:实现各种指令,主要集中在实现从存储器或者寄存器释放数据到总线上。
ct3:完成各种指令,从总线上装载数据到相应的存储器或者寄存器中。
ct4:生成下址,判断下址生成方式,根据不太那个的方式生成下址。
3. Microcomputer.vhd代码中如何定义并初始化RAM?type ram is array(0 to 37)of std_logic_vector(7 downto 0); --38*8ramsignal ram8:ram:=(x”20”, x”1e”, x”80”, x”40”, x”20”, x”20”, x”1d”, x”c0”, x”20”, x”40”, x”21”, x”20”, x”1f”, x”80”, x”40”, x”22”, x”20”, x”1e”, x”c0”, x”22”, x”80”, x”e0”, x”21”, x”40”, x”23”, x”60”, x”23”, x”a0”, x”00”, x”55”, x”8a”, x”f0”,others=>x”00”) –initialize ram44. Microcomputer.vhd代码中bus_reg_t2 将ram8存储器中对应于ar中地址单元的数据取出来放到bus_reg_t2寄存器中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈尔滨工程大学实验报告实验名称:复杂模型机设计与实现班级:学号:姓名:实验时间:成绩:指导教师:程旭辉附小晶实验室名称:计算机专业实验中心一、实验名称:复杂模型机的设计与实现二、实验目的:1.综合运用所学计算机原理知识,设计并实现较为完整的计算机。
2.设计指令系统。
3.编写简单程序,在所设计的复杂模型计算机上调试运行。
三、实验设备:GW-48CPP系列计算机组成原理实验系统。
四、实验原理:1.数据格式8位,其格式如下:其中第7位为符号位,数值表示范围是:-1≤1。
2.指令格式所设计的指令分为四大类共十六条,其中包括算术逻辑指令、I/O指令、访问、转移指令和停机指令。
(1)算术逻辑指令设计9条算术逻辑指令并用单字节表示,采用寄存器直接寻址方式,其格式如下:其中,(2)访问指令及转移指令访问指令有2条,即存数(STA)、取数(LDA);2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC)其中,OP-CODE指令)。
D为位移量(正负均可),M为寻址模式,其定义如下:在本模型机中规定变址寄存器RI为寄存器R2。
(3)I/O指令输入(IN)和输出(其中,addr=01时,选中“OUTPUT DEVICE”中的LCD点阵液晶屏作为输出设备。
(4)停机指令指令格式如下:3.指令系统共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入/输出指令2条,其本模型机的数据通路框图如图7-1。
根据机器指令系统要求,设计微程序流程图及确定微地址,如图7-2。
图7-2 微程序流程图五、实验内容:按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。
微代码定义如表7-1所示。
六、实验框图设计:模型机设计主要是包括:控制器、存储器、运算器、输入、输出。
主要的设计是SE-5是根据FC,FZ,T4,P[4..1],SWA,SWB,I[7..2]来控制输出的SE[1..6],控制地址的跳转。
当SE 输出0时Q 输出1,当SE 输出1时,Q 输出D ;$M00 018108 $M01 01ed82 $M02 00c050 $M03 00a004 $M04 00e0a0 $M05 00e006 $M06 00a007 $M07 00e0a0 $M08 00ed8a $M09 00ed8c $M0A 00a030 $M0B 008001 $M0C 00202f $M0D 00a00e $M0E 01b60f $M0F 95ea25 $M10 00ed83 $M11 00ed85 $M12 00ed8d $M13 00eda6 $M14 001001 $M15 030401 $M16 018016 $M17 3d9a01 $M18 019201 $M19 01a22a $M1A 03b22c $M1B 01a432 $M1C 01a233 $M1D 01a426 $M1E 318237 $M1F 318239 $M20 009001 $M21 038401 $M22 05db81 $M23 0180e4 $M24 018001 $M25 95aaa0 $M26 00a027 $M27 01bc28 $M28 95ea29 $M29 95aaa0 $M2A 01b42b $M2B 959b41 $M2C 01a42d $M2D 65ab6e $M2E 059a01 $M2F 078a09 $M30 050a08 $M31 019801 $M32 059a01 $M33 01b435 $M34 05db81 $M35 b99a41 $M36 0d9a01 $M37 298978 $M38 019801 $M39 198979 $M3A 019801 $M3B 070a08 $M3C 062009 $M3D 000000 $M3E 000000 $M3F 000000SE-5:(SE 6-1):在波形图中实现跳转的时候,会出现如图:刚开始对此变化不理解,自习观察SE6-1时,SE[6..1]作为控制端,SE为1时Q输出D,SE为0时Q输出1,达到跳转的功能,但是还隐含一个细节是:在SE有0的时候,SE不用T2的时钟触发,地址会直接会发生跳转,所以会出现如图微地址由20直接跳到31。
1和3:移位寄存器:SHEFT 和控制移位器的进位:说明:移位寄存器的M位有M[20]来控制,S[1..0]由M[22..21]来控制,控制进位由SHE_C0来控制,假设上次的移位器有进位,那么上次的SHEFT_CN输出1,在控制移位器进位的器件上,当需要进位时,即:AR=1,(通过观察微指令开看AR进位时才选中)那么会有进位,此时在下一次带进位的移位时,SHE_C0=1;2.控制ALU进位的器件:说明:在此器件中,AR为控制端,上次的进位溢出位FC连到D0上M[19]与Q非的或,连接到ALU_CN,当M[19]=1时表示不带进位的运算,那么ALU_CN的结果肯定是1,在下次运算时肯定是不带进位的运算。
当M[19]=0,时,表示运算器运算是带进位的运算,若上次的运算FC=1,若选中AR则,表示本次的运算时带进位的运算,则在T2周期时,Q=1,那么ALU_CN的输出是0,将结果输入到ALU的进位控制端,控制本次的进位运算。
4.通过编程控制可编码寄存器的选择:.内部结构:说明:这是通过两个2-4译码器组合而成的选择器,根据decoder_b 产生的控制信号,并且在编程时编写的 I0——I3指令来控制,RS,RD,RI.寄存器的选择。
为了方便起见,在实验过程中用一一对应的实现:R0RS; R1RD;R2RI;七、程序表设计:实验程序如下:根据框图的设计以及书中的指令系统功能表,在编码的时候考虑到的情况主要是用指令指定哪个寄存器,以及在实现LDA ,STA ,JMP ,BZC ,是选用的哪种寻址方式,为了全面的测试框图实现功能的正确性,在设计程序流程的时候所有的功能,以及所有的寻址方式都用到了,下面就是我设计的实验程序:表7-2微指令格式12 11 10 选择 0 0 0 0 0 1 RS-B 0 1 0 RD-B 0 1 1 RI-B 1 0 0 299-B 1 0 1 ALU-B 11PC-B9 8 7 选择 0 0 0 0 0 1 P (1) 0 1 0 P (2) 0 1 1 P (3) 1 0 0 P (4) 1 0 1 AR 1 1 0 LDPC15 14 13 选择 0 0 0 0 0 1 LDRi 0 1 0 LDDR1 0 1 1 LDDR2 1 0 0 LDIR 1 0 1 LOAD 1 1LDARA 字段B 字段C 字段1E000011110F在执行LDA是会用到0F1F000011110F在执行STA时会存到此地址200000000000在执行LDA存到此位置2101011001OUT读出RD中的数22001010102A JMP:跳回到断点位置230000100109执行JMP时用到此数七、实验过程分析:模型机过程分析:1.首先在ROM中已经存入了微代码,这里,在实验中发现35是错误的,正确的应该是:01A426,这是通过实验验证的。
在SE-5的控制下,产生SE信号,控制微代码的后六位是否发生改变,从而判定是否发生跳转,产生的微地址送到uaddr中,指示到下一条的指令。
2.每一条微代码,通过decodera,decoderb,decoderc,decoder2-4产生相应的控制信号,在观察了四个器件的的内部结构后,得出decodera选中的信号是输出1,得出decoderb选中的信号是输出0,得出decoderc选中的信号是输出1,decoder2-4输出0,这样在结合74148优先权编码器后才能完整的控制总线以及相应的输出。
3.reg_3是可编程寄存器,利用指令可以选用不同的寄存器,在此模型机自己设计了一个DECODERREG部件通过,RD_B, RD_B, RD_B,以及I3-I0来控制选用相应的寄存器。
为了方便起见,在实验过程中用一一对应的实现:R0RS;R1RD;R2RI;4.在微程序流程图中在进行相对寻址时框图47是错误的应该是:PC BUS,BUS DR2;波形图分析:1.开始执行程序,执行指令是40,执行的是IN指令,将27存入了指定的寄存器RD。
说明:为编程方便用I0,I1,I2,I3,来控制选取:2. 此时指令是:40,将26存入RS:3.指令:A1:(RD-RS)=27-26=01,将结果存入RD中。
4.将RD中的结果输出到led中显示:此时的指令是(OUT:59)。
5.执行ADC(91)指令:(RS+RD)=(26+01)=27存入RD中:6.执行OUT指令,将RD中的结果输出:7.执行INC指令,并将加1的结果输出到led中:8.执行AND(C1)指令,(RD)AND(RS)=(28 AND26)=20,然后执行OUT(59)指令,并将结果输出到led中显示:9.执行COM取反指令,RD中的值是20取反后为DF,并执行OUT指令后在led中显示:10.执行RRC指令,RS中值是26循环右移后的结果是13,并执行OUT指令,在led中显示:11.执行RLC指令,将RS中的26循环左移后的结果是4C并将结果在led中显示:12.执行MOV指令(RS->RD)=26,并执行OUT指令,在led中显示:13.先执行IN指令(01000010),将10存入到指定的RI寄存器中,然后执行LDA指令,将指令中的0F存入到RD中。
14.通过间接寻址方式执行STA(15)存数指令,将RD中的0F存入到RAM中:15.通过变址寻址方式执行JMP指令,跳到21执行OUT指令,读出LDA中RD中的数:16.执行OUT指令,将RD中的数读出来,然后执行JMP指令跳回到断点地址继续执行。
17.通过相对寻址方式,执行BZC指令:在PC 值为1A时将PC送到AR,此时RAM里的值是03H,并送入DR1,在执行完微地址为23后,PC的值变为1B,将1BH送入DR2中,03H与1BH相加,相加后FC与FZ的值都不为1,所以在进行P(3)测试后跳到了44.八、实验结果中遇到的问题:实验结果中遇到的问题:在刚开始的时候,在看流程图时,在刚开始的时候,明白微地址的跳转是如何实现的,但是每个框图的具体实现却搞得不是很明白,在看明白了decodea, decodeb, decodec,和74148以及reg_3的内部结构,才明白了具体的电路,以及最终的信号输出的正负,如何控制总线的选择,在不同的时钟周期,实现不同的功能。