计算机组成原理实验(基本模型机实验)
计算机组成原理实验
计算机组成原理实验一、实验目的本实验旨在通过实际操作,加深对计算机组成原理的理解,掌握计算机硬件的基本原理和工作方式。
二、实验设备和材料1. 计算机主机:型号为XXX,配置了XXX处理器、XXX内存、XXX硬盘等。
2. 显示器:型号为XXX,分辨率为XXX。
3. 键盘和鼠标:标准配置。
4. 实验板:包括CPU、内存、存储器、输入输出接口等模块。
5. 逻辑分析仪:用于分析和调试电路信号。
6. 示波器:用于观测电路信号的波形。
三、实验内容1. 实验一:CPU的工作原理a. 将实验板上的CPU模块插入计算机主机的CPU插槽中。
b. 连接逻辑分析仪和示波器,用于观测和分析CPU的工作信号和波形。
c. 打开计算机主机,启动操作系统。
d. 运行一段简单的程序,观察CPU的工作状态和指令执行过程。
e. 通过逻辑分析仪和示波器的数据分析,了解CPU的时钟信号、数据总线、地址总线等工作原理。
2. 实验二:内存的存储和读写a. 将实验板上的内存模块插入计算机主机的内存插槽中。
b. 打开计算机主机,启动操作系统。
c. 编写一个简单的程序,将数据存储到内存中。
d. 通过逻辑分析仪和示波器的数据分析,观察内存的写入和读取过程,了解内存的存储原理和读写速度。
3. 实验三:存储器的工作原理a. 将实验板上的存储器模块插入计算机主机的存储器插槽中。
b. 打开计算机主机,启动操作系统。
c. 编写一个简单的程序,读取存储器中的数据。
d. 通过逻辑分析仪和示波器的数据分析,观察存储器的读取过程,了解存储器的工作原理和数据传输速度。
4. 实验四:输入输出接口的工作原理a. 将实验板上的输入输出接口模块插入计算机主机的扩展插槽中。
b. 打开计算机主机,启动操作系统。
c. 编写一个简单的程序,通过输入输出接口实现数据的输入和输出。
d. 通过逻辑分析仪和示波器的数据分析,观察输入输出接口的工作过程,了解数据的传输和控制原理。
四、实验结果分析1. 实验一:通过观察CPU的工作状态和指令执行过程,可以验证CPU的时钟信号、数据总线、地址总线等工作原理是否正确。
实验6-简单模型机原理实验指导
实验六、简单模型机组成原理实验一、实验目的:1. 在掌握各部件功能的基础上,组成一个简单的计算机整机系统—模型机;2. 了解微程序控制器是如何控制模型机运行的,掌握整机动态工作过程;3. 定义五条机器指令,编写相应微程序并具体上机调试。
二、预习要求:1. 复习计算机组成的基本原理;2. 预习本实验的相关知识和内容三、实验设备:EL-JY-II型计算机组成原理实验系统一套,排线若干。
四、模型机结构:模型机结构框图见图6-1。
图中运算器ALU由U7—U10四片74LS181构成,暂存器1由U3、U4两片74LS273构成,暂存器2由U5、U6两片74LS273构成。
微控器部分控存由U13—U15三片2816构成。
除此之外,CPU的其它部分都由EP1K10集成(其原理见系统介绍部分)。
存储器部分由两片6116构成16位存储器,地址总线只有低八位有效,因而其存储空间为00H—FFH。
输出设备由底板上的四个LED数码管及其译码、驱动电路构成,当D-G和W/R均为低电平时将数据总线的数据送入数码管显示。
在开关方式下,输入设备由16位电平开关及两个三态缓冲芯片74LS244构成,当DIJ-G为低电平时将16位开关状态送上数据总线。
在键盘方式或联机方式下,数据可由键盘或上位机输入,然后由监控程序直接送上数据总线,因而外加的数据输入电路可以不用。
注:本系统的数据总线为16位,指令、地址和程序计数器均为8位。
当数据总线上的数据打入指令寄存器、地址寄存器和程序计数器时,只有低8位有效。
五、工作原理:在实验5中,我们学习了如何设计微程序来产生各部分的控制信号。
在本实验中我们将学习读、写机器指令和运行机器指令的完整过程。
在机器指令的执行过程中,从CPU从内存取出一条机器指令到执行结束为一个指令周期,指令由微指令组成的序列来完成,一条机器指令对应一段微程序。
另外,读、写机器指令也分别由相应的微程序段来完成。
为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,必须设计三个控制操作微程序。
计算机组成原理-实验报告四-基本模型机设计与实现
计算机组成原理实验报告
学院:计算机科学与信息专业:班级:
指令划分为操作码和地址码字段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试P(1),通过节拍脉冲T4的控制以便识别所要求的操作。
“指令译码器”根据指令中的操作码译码,强置微控器单元的微地址,使下一条微指令指向相应的微程序首地址。
本系统有两种外部I/O设备,一种是二进制代码开关,它作为输入设备(INPUTDEVICE);另一种是LED块,它作为输出设备(OUTPUT DEVICE)。
本实验设计机器指令程序如下:
地址(二进制)内容(二进制)助记符号说明
0000 0000 0000 IN R0,SW "INPUT DEVICE"-->R0
0001 0001 0000 ADD R0,09H R0+「09H」-->R0
0010 0000 1001
0011 0010 0000 STA 0BH,R0 R0-->「0BH」
0100 0000 1011
0101 0011 0000 OUT BUS ,0AH 「0AH」-->BUS
0110 0000 1010
0111 0100 0000 JMP 00H 00H-->PC
1000 0000 0000
1001 0101 0101 自定
1010 1010 1010 自定
1011 求和结果。
《计算机组成原理》实验
《计算机组成原理》实验一、实验的性质、任务和基本要求(一)本实验课的性质、任务《计算机组成原理》是计算机科学与技术、网络工程专业的核心专业基础课,本课程旨在培养学生对计算机系统的分析、设计能力,同时为后续专业课程的学习打下坚实的基础。
实验是巩固课堂教学质量必不可少的重要手段。
本实验课的任务是通过实验进一步加深对计算机各部件组成以及工作原理的掌握,培养学生计算机硬件动手能力。
(二)基本要求1、掌握运算器的基本组成和工作原理;2、掌握半导体存储器的工作原理与使用方法,掌握半导体存储器如何存储和读取数据;3、掌握微程序控制器的组成以及工作过程,掌握用单步方式执行一段微程序以及如何检查每一条微指令正确与否的方法;4、掌握数据传送通路工作原理;5、能够将运算器、微程序控制器和存储器三个部件连机,形成一个基本模型机系统。
同时,掌握机器指令与微指令的关系。
(三)实验学时分配表(表格说明)二、实验教学内容实验一运算器实验一、实验目的:(1)结合学过的有关运算器的基本知识,掌握运算器的基本组成、工作原理。
特别是了解算术逻辑运算单元ALU的工作原理;(2)验证多功能算术单元74181、74182的运算功能;(3)熟悉掌握本实验中运算器的数据传输通路。
二、实验要求(1)预习74181、74182的工作原理及逻辑关系;(2)测量数据要求准确;(3)写出实验报告。
三、实验内容1、实验原理实验中的运算器由两片74LS181以并/串形成8位字长的ALU构成。
运算器的输出经过一个三态门74LS245到ALUO1插座,实验时用8芯排线和内部数据总线BUSD0~D7插座BUS1~6中的任一个相连,内部数据总线通过LZD0~LZD7显示灯显示;运算器的两个数据输入端分别由二个锁存器74LS273锁存,两个锁存器的输入并联后连至插座ALUBUS,实验时通过8芯排线连至外部数据总线EXD0~D7插座EXJ1~EXJ3中的任一个;参与运算的数据来自于8位数据开关KD0~KD7,并经过一三态门74LS245直接连至外部数据总线EXD0~EXD7,通过数据开关输入的数据由LD0~LD7显示。
计算机组成原理实验(基本模型机实验)
实验六 基本模型机的设计与实现
⑶ 根据微程序流程图设计微指令并转换成 16进制代码文件。 当全部微程序设计完毕后,应将每条微指 令代码化,即按微指令格式将微程序流程 图转化成二进制微代码表,如下表所示, 再转换成16进制代码文件。
实验六 基本模型机的设计与实现
监控程序的16进制文件格式(文件名C8JHE1): 程序: $P00 00 $P01 10 $P02 0A $P03 20 $P04 0B $P05 30 $P06 0B $P07 40 $P08 00 $P0A 01
实验六 基本模型机的设计与实现
⑴有关微控制器部分在前一实验中已详细介绍 ⑵ 主存储器的读、写和运行 为了向主存储器RAM中装入程序或数据,并且检查写入是否正确以及 能运行主存储器中的程序,必须设计三个控制操作微程序。 ·存储器读操作:拨动总清开关后,置控制开关SWC、SWA为“0 0”时, 按要求连线后,连续按“启动运行”开关,可对主存储器RAM连续手动 读操作。 ·存储器写操作:拨动总清开关后,置控制开关SWC、SWA为“0 1”时, 按要求连线后,再按“启动运行”开关,可对主存储器RAM进行连续手 动写入。 ·运行程序:拨动总清开关后,置控制开关SWC、SWA为“1 1”时,按要 求连线后,再按“启动运行”开关,即可转入到第01号“取址”微指令, 启动程序运行。 上述三条控制指令用两个开关SWC、SWA的状态来设置,其定义如下:
实验六 基本模型机的设计与实现
2、实验步骤 ⑴ 根据实验原理设计数据通路框图,如下图。
实验六 基本模型机的设计与实现
⑵ 根据机器指令画出对应的微程序流程图 本实验的微程序流程见下图,当拟定“取指”微指令时, 该微指令的判别测试字段为P(1)测试。由于“取指”微 指令是所有微程序都使用的公用微指令,因此P(1)的测 试结果出现多路分支。本机用指令寄存器的前4位I7~I4作 为测试条件,出现5路分支,占用5个固定微地址单元。 实验机控制操作为P(4)测试,它以控制开关SWC、 SWA作为测试条件,出现了3路分支,占用3个固定微地 址单元。当分支微地址单元固定后,剩下的其它地方就可 以一条微指令占用控存一个微地址单元随意填写。 注意:微程序流程图上的单元地址为16进制。
基本模型机系统实验报告
一、实验目的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)掌握了基本模型机的搭建方法和调试技巧,为以后的学习奠定了基础。
计算机组成原理 实验六 基本模型机实验
五、实验步骤2
五、实验步骤3
六、实验数据1
1、当外部开关量输入KD0~KD7为00000111,运行程 序后检查存数单元0BH中的结果是否正确。 2、当外部开关量输入同上,若运行程序后希望存 数单元0BH中的结果是0FH,则应该如何修改模型机监 控程序的16进制格式文件(文件名C8JHE1)?
五、实验步骤 1
⑴ 连接线路,仔细查线无误后,接通电源。
⑵计算机单击“开始菜单”→程序 →DVCC组成原理C8JH,
⑶软件界面单击“联接”工具按钮,应保证实验仪与计算机已经建立连接 ⑷选择实验项目“基本模型机的设计与实现” ⑸单击“打开”工具按钮,选择文件C8JHE1,单击打开,屏幕左侧,出现文 件内容,即微程序代码 ⑹单击“调试”工具按钮,下载打开的源程序文件,然后可以单步机器指令, 单步执行微指令,屏幕会出现数据的流图。
二、实验环境
硬件:DVCC-C8JH 实验箱。 计算机 件单元的控制信号 是人为模拟产生的,而本次实验将能在微程序 控制下自动产生各部件单元控制信号,实现特 定指令的功能。这里,实验计算机数据通路的 控制将由微程序控制器来完成,CPU从内存中 取出一条机器指令到指令执行结束的一个指令 周期全部由微指令组成的序列来完成,即一条 机器指令对应一个微程序。
请将结果填写在实验报告中。
实验四 讲解结束 实验开始
实验四 基本模型机的设计与实现
1
实验目的要求
2
实验环境
3 4 5
实验内容 实验线路连接 实验步骤
6
实验数据
一、实验目的要求
1、在掌握部件单元电路实验的基础上,进一 步将其组成系统以构造一台基本模型实验 计算机。 2、设计五条机器指令,并编写相应的微程序, 具体上机调试,掌握整机软硬件组成概念。
计算机组成原理课程设计模型机实验报告 精品
实践报告计算机组成原理--模型机设计报告作者姓名:专业:计算机科学与技术学号:指导教师:完成日期:年月号******学院计算机工程系摘要“计算机组成原理”是计算机科学与技术系的一门核心专业基础课程,在计算机专业中起了很重要的作用。
课程中分部分介绍了计算机的各个部件,我们有必要将它们组合起来以对计算机有一个整体的认识。
这次课程设计通过对一个简单模型机的设计与实现,是我们对计算机的基本组成、部件的设计、部件间的连接有更深的理解。
依次设计计算机的几个部件并进行连接使成为一个完整的模型机。
通过运行和调试,使之正常工作。
关键词:运算器;控制器;存储器;输入输出接口;模型机正文:一、课设目的要求:《计算机组成原理》是一门理论性、实践性均较强的专业基础课,要求学生具有一定的电路分析、指令系统编写能力、软件设计能力。
通过计算机组成原理实践周,要突出《计算机组成原理》理论联系实际的特点,培养实践动手能力。
1.培养学生运用理论知识和技能,构建建立问题逻辑结构,锻炼学生分析解决实际问题的能力。
2.培养学生使用PROTEUS软件分析和设计计算机内部器件的方法和技巧。
3.培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
4.通过实践设计,要求学生在指导教师的指导下,独立完成设计课题的全部内容,包括:(1)通过调查研究和上机实习,掌握PROTEUS软件的设计和仿真调试技能。
(2)掌握计算机系统的组成结构及其工作原理。
(3)设计实现一个简单计算机的模型机,并能够使用PROTEUS软件进行电路仿真验证二、课设内容:利用所学的计算机结构和工作原理的知识,要求学生独立完成简单计算机的模型机设计,并用PROTEUS软件进行验证。
在分析设计过程中,要求学生养成良好的习惯,学会分析实际问题,并利用所学的知识建立系统的逻辑结构,学会PROTEUS调试技巧和方法,通过逻辑设计和工程设计培养调试硬件电路的实际动手能力。
要求学生掌握数字逻辑电路中故障的一般规律,以及排除故障的一般原则和方法;锻炼分析问题与解决问题的能力,在出现故障的情况下,独立分析故障现象,并排除故障。
基本模型机实验报告
基本模型机实验报告一、实验目的本实验旨在通过构建一个基本模型机,深入了解计算机的工作原理,包括数据的二进制表示、指令执行、内存管理以及简单的输入输出。
二、实验设备1. 微处理器(如 Intel 8080)2. 存储器芯片(如 Intel 2114)3. 输入设备(如开关或键盘)4. 输出设备(如LED灯或显示器)5. 电源三、实验步骤步骤一:构建模型机根据实验设备,将微处理器、存储器、输入设备和输出设备连接起来,形成一个简单的模型机。
确保所有连接正确无误,电源供应稳定。
步骤二:数据表示与存储在模型机中,使用二进制数表示数据。
将数据存储在存储器中,并观察数据在存储器中的表示形式。
例如,使用开关模拟二进制数的0和1,将开关按下表示0,不按下表示1。
步骤三:指令执行编写简单的汇编指令,如加法指令,并在模型机上执行。
观察指令的执行过程,包括取指令、解码指令、执行指令和写回结果等步骤。
步骤四:内存管理模拟内存的读写操作,了解内存地址的概念以及如何通过地址访问存储在内存中的数据。
观察内存地址的增加和减少对数据读写的影响。
步骤五:输入输出操作通过输入设备输入数据,观察模型机如何将输入的数据存储在内存中。
然后通过输出设备输出数据,了解输出数据的表示形式。
四、实验结果与分析通过本次实验,我们了解了计算机的基本工作原理,包括数据的二进制表示、指令执行、内存管理和输入输出操作。
在实验过程中,我们观察到微处理器负责执行指令,存储器用于存储数据和指令,输入设备用于输入数据,输出设备用于输出数据。
此外,我们还了解了内存地址的概念以及如何通过地址访问存储在内存中的数据。
五、结论与建议本次实验使我们深入了解了计算机的基本工作原理,并掌握了构建简单模型机的方法。
为了进一步提高实验效果,建议在未来的实验中增加更多的设备和功能,例如中断处理、多任务处理等,以便更全面地了解计算机的工作原理。
同时,建议在实验过程中注重细节和观察,以便更好地理解实验结果和原理。
计算机组成原理模型机实验报告
实验六计算机系统综合设计与实现一、实验目的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;。
计算机组成原理简单模型机实验
实验四简单模型机实验1.1实验目的1)将微程序控制器模块通过总线同运算器模块、存储器模块联机,组成一台模型计算机;2)用微程序控制器控制模型机数据通路;3)通过CPU运行5条机器指令组成的简单程序,掌握机器指令与微指令的关系,牢固建立机器的整机概念。
1.2电路图本次实验用到前几次实验所有电路,将几个模块组成一台简单计算机,由微程序控制器控制数据通路,实现cpu从内存取出一条机器指令到执行指令结束的一个指令周期,由微指令组成的序列来完成,一条机器指令对应一个微程序。
图1 电路图1.3 实验原理(1)PC计数器初始值为“0”,微程序默认从00地址开始执行,产生控制信号,使PC的地址通过ABUS将送到存储器(6116)的地址锁存器AR中, PC=PC+1;(2)读出存储器中存放内容,通过DBUS送到IR指令寄存器中,实现指令译码,指令的操作码送至微程序控制器的程序跳转控制部分,在P(1)的控制下与微程序中储存的下一条指令地址进行逻辑运算,产生真正的下一条微程序地址;(3)在微程序的控制下单步执行微指令序列。
1.4 微指令格式表1 微指令格式1.5 微程序流程图:图2 微程序流程图1.6微程序代码表1.7 数据通路总体图图3 数据通路总体图五条机器指令格式(其中,A为内存地址8bit):RAM中装入的程序和数据(其中,地址为8进制):1.8 实验任务及步骤(1)实验连线:本次实验大部分的连线已由教师完成,请同学们对照微指令格式,完成微程序控制器的剩余部分连线。
(2)实验环境初始化:实验平台通电前请关闭DR1(74ls273),DR2(74ls273),存储器(6116)的地址锁存器(74ls273),微程序控制器的地址锁存器(74ls175)的自动清零功能,将几个芯片的-MR引脚置为“1”。
时钟发生器的功能设定为单步执行,具体信号为:STOP=0,STEP=1。
(3)加电运行初始化:①指令寄存器IR自动清零,程序计数器PC手动清零,将两片74ls163的ENT,ENP引脚置“1”,-CR引脚置“0”,打开三态门开关,给单步时钟脉冲;②程序计数器PC设定为单步技术功能,并交由微程序控制,将-CR引脚置“1”,关闭三态门开关;③关闭指令寄存器IR清零功能,交由微程序控制,将-MR设为“1”。
计算机组成原理实验报告基本模型机和复杂模型机的设计
计算机组成原理实验报告基本模型机和复杂模型机的设计1.引言2.设计目标本次实验的设计目标是实现一个满足基本要求的计算机模型,了解计算机的基本组成结构和工作原理。
然后我们将设计一个更复杂的模型,通过增加功能模块和优化设计,实现更高级的计算能力和更好的性能。
3.实验方法基本模型机的设计主要包括五个核心模块:输入模块、中央处理器(CPU)、存储器、控制器和输出模块。
我们将使用VHDL语言来实现这些模块,并使用FPGA来实现整个基本模型机。
复杂模型机的设计在基本模型机的基础上进行扩展和优化。
我们将对CPU进行升级,加入多核处理器和并行计算能力,增加存储器容量和传输速率,优化控制器的运行效率。
通过这些优化,我们可以提高复杂模型机的计算性能和运行效率。
4.实验结果4.1基本模型机的实验结果基本模型机的实验结果显示,我们成功实现了输入输出功能,能够将用户的输入数据送入存储器,并通过CPU进行计算后将结果输出。
虽然这个模型的计算能力和性能较低,但是它对于初学者来说是一个良好的实践项目。
4.2复杂模型机的实验结果复杂模型机的实验结果显示,我们成功实现了多核处理器和并行计算的功能,并大幅提升了计算性能和运行效率。
存储器的容量和传输速率的提升也带来了更高的数据处理能力。
控制器的优化使得整个模型机的运行更加稳定和高效。
5.实验总结通过设计和实现基本模型机和复杂模型机,我们加深了对计算机组成原理的理解,并掌握了相关的设计和实践技巧。
实验结果表明,我们的设计能够满足计算机的基本要求,并具有一定的性能和计算能力。
通过进一步优化和扩展,我们可以设计出更高级的计算机模型,满足更多应用需求。
[1]《计算机组成原理》李文新,清华大学出版社,2024年。
计算机组成原理简单模型机实验
计算机组成原理简单模型机实验计算机组成原理是计算机工程专业一个非常重要的课程,它涉及到计算机硬件的各个方面。
其中,模型机实验是计算机组成原理中的一个非常重要的环节,旨在让学生在实践中深入理解计算机各个部件之间的工作原理。
模型机实验一般采用简单的电路元件模拟计算机的各种功能,例如通过用IC门电路模拟ALU、寄存器、时钟等计算机组成部件,来实现一些实际的计算机操作。
通过实验,学生可以更加深入地掌握计算机组成原理中的各个知识点,理解计算机的底层工作原理。
模型机实验一般分为两个阶段。
第一个阶段是构建模型机,学生需要根据实验指导书上的设计图纸,自己组装一个包含CPU、RAM、ROM 等各种计算机组成部件的模型机。
第二个阶段是操作模型机来完成各种计算机操作,例如实现加法、减法、乘法等运算,实现简单的数据存储和读取等。
在模型机实验中,学生需要深入理解电路原理,熟练掌握计算机组成原理中的各个知识点,例如数据传输、ALU运算、寄存器管理等。
同时,学生还需要具备一定的动手能力和实验技巧,例如熟练使用焊接工具和电路测试仪器,能够快速准确地找出电路中的故障点。
通过模型机实验,不仅可以加深学生对计算机组成原理的理解,同时还能提高学生的动手能力和实验技巧,培养学生的创新精神和独
立思考能力。
因此,模型机实验是计算机组成原理课程中一个非常重要的环节,是学生提高自身能力和素质的重要途径。
(计算机组成原理)实验四模型机实验培训资料
实验流程概述
1
准备工作
组装模型机、连接配套软件。
2
实验四模型机
按照实验步骤进行操作,观察实验结果。
3
实验验收
按照实验标准和要求进行验收。
实验步骤详解
1 步骤一
组装模型机主板和相关 组件。
2 步骤二
连接模型机与计算机软 件。
3 步骤三
按照实验指导书操作模 型机,执行特定指令。
实验四概述
实验四主要涉及日历时钟模块、存储器模块、程序计数器模块、控制器模块、 指令寄存器模块、数据寄存器模块、存储器地址寄存器模块、存储器数据寄 存器模块、数据通路介绍、数据通路状态转移介绍、流程状态图、初始状态 概述、指令执行过程概述、寄存器状态图、典型指令实例、程序样例分析等 内容。
日历时钟模块
负责执行计算机指令,进行各 种运算和逻辑判断。
内存
存储计算机上正在执行的指令 和数据。
输入输出设备
与计算机进行信息的输入和输 出交互。
主板
连接和支持计算机各个组件的 电路板。
实验器材准备
1 模型机套件
2 实验手册
包含模型机主板、CPU、 内存等组件。
详细介绍了模型机的组 装和实验步骤。
3 计算机配套软件
实验四中的模块之一,用于存储待处理的数据。
存储器地址寄存器模块
实验四中的模块之一,用于存储内存地址。
存储器数据寄存器模块
实验四中的模块之一,用于存储内存中的数据。
数据通路介绍
实验四中的关键内容之一,展示了计算机内部各个组件之间的数据传输通路。
数据通路状态转移介绍
实验四中的重要概念之一,解释了数据通路在不同状态下的转移过程。
计算机组成原理实验八简单模型计算机实验
计算机组成原理实验八简单模型计算机实验好嘞,以下是为您创作的关于“计算机组成原理实验八简单模型计算机实验”的文案:咱们今天来聊聊计算机组成原理实验里那个有趣的实验八——简单模型计算机实验。
我还记得我第一次接触这个实验的时候,那心情,既兴奋又紧张。
走进实验室,满屋子的计算机设备,还有各种线路,感觉就像走进了一个神秘的科技王国。
这个实验啊,可真是不简单。
它就像是给我们搭了一个小小的计算机世界,让我们亲手去揭开它的神秘面纱。
在实验开始之前,咱们得先搞清楚实验的目的。
说白了,就是要通过自己动手操作,搞明白计算机到底是怎么工作的。
你想想,平时咱们用电脑,刷网页、打游戏,可从来没想过这背后的原理吧?实验的设备也挺有意思的。
那些小小的芯片、电路板,看起来不起眼,可组合在一起就能实现神奇的功能。
就像咱们小时候玩的积木,一块一块拼起来,就能变成各种各样的形状。
在实验过程中,我们得小心翼翼地连接线路,稍有差错,可能就前功尽弃。
我当时啊,紧张得手心里都是汗,眼睛紧紧盯着那些线路,生怕接错了。
还记得有一次,我旁边的同学因为太着急,把一根线接错了,结果计算机怎么都运行不起来。
大家一起帮他找问题,最后发现就是那根小小的线惹的祸。
重新接好之后,计算机成功运行的那一刻,大家都欢呼起来。
做这个实验,还得有耐心。
有时候为了调试一个程序,可能得反复尝试好多遍。
但每次成功一点点,那种成就感就会油然而生。
比如说,我们要设计一个简单的加法运算程序。
从最开始的编写代码,到把代码加载到计算机里运行,每一步都充满了挑战。
可能第一次运行的时候,结果不对,那咱们就得仔细检查代码,看看是哪个逻辑出了问题。
也许是一个符号写错了,也许是一个步骤顺序错了。
当我们终于让计算机准确地算出加法结果的时候,那种喜悦真的难以言表。
就好像我们亲手创造了一个小小的奇迹。
通过这个实验,我们不再只是计算机的使用者,而是变成了它的创造者。
我们真正理解了计算机内部的那些奥秘,知道了数据是怎么存储的,指令是怎么执行的。
计算机组成实验报告四 基本模型机实验
淮海工学院计算机工程学院实验报告书课程名:《计算机组成原理》题目:实验四基本模型机实验班级:^ ^学号:^ ^姓名:^ ^1、目的与要求1)在“微程序控制器的组成与微程序设计实验”的基础上,将第一部分中的各单元组成系统,构造一台基本模型计算机。
2)本实验定义五条机器指令,编写相应的微程序,并上机调试运行,形成整机概念。
2、实验设备1) ZYE1601B计算机组成原理教学实验箱一台,排线若干。
2) PC机一台。
3、实验步骤与源程序l) 根据该模型机的指令系统,编写一段程序。
这里给出两个参考程序。
参考程序一:本程序从输入设备(数码开关)取入数据,保存在内存单元08,然后从08单元送到输出设备(LED数码管)进行显示。
然后程序停止(请实验者考虑:如何修改程序,使程序不断从输入设备取出数据,送到输出设备显示。
每次循环过程中,可以使输入设备数据改变,考察输出显示的结果。
)。
设计机器指令程序如下(机器码为十六进制数据)。
地址内容助记符说明00 00 IN ;输入开关数据→R001 20 STA [08H] ;R0→[08]02 08 ;地址03 30 OUT [08H] ;[08H]→BUS04 08 ;地址05 40 JMP [00H] ;00H→PC06 00 ;跳转地址参考程序二:本程序从输入设备(数码开关)读入数据,与0A单元的数据相加,然后送到输出设备(LED 数码管)进行显示。
本程序不断地循环运行,在运行中可改变输入开关(INPUT)的值,观察输出显示的变化。
设计机器指令程序如下(机器码为十六进制数据)。
地址内容助记符说明00 00 IN ;输入开关数据→R0,采集数据01 10 ADD [0AH] ;R0+[0AH]→R0,输入数据与指定数据相加02 0A ;地址03 20 STA [0BH] ;R0→[0B]04 0B ;地址05 30 OUT [0BH] ;[0BH]→BUS,输出显示06 0B ;地址07 40 JMP [00H] ;00H→PC08 00 ;跳转地址0A 01 ;加数,可自定0B ;求和结果保存在0B单元2) 按图1连接实验线路。
实验六 基本模型机实验
实验六 基本模型机实验一、 实验目的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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六 基本模型机的设计与实现
⑸ 设计指令 根据基本模型机的硬件设计五条机器指令:外设输入指令IN、二进制 加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令 JMP。指令格式如下: 助记符 机器指令码 说 明 IN 0000 0000 ;“外部开关量输入 ”KD0~KD7的开关状态 →R0 ADD addr 0001 0000 ×××× ××××; R0+[addr]→R0 STA addr 0010 0000 ×××× ××××; R0→[addr] OUT addr 0011 0000 ×××× ××××; [addr]→BUS JMP addr 0100 0000 ×××× ××××; [addr]→PC 说明: 指令IN为单字节指令,其余均为双字节指令, ××××××××为addr 对应的主存储器二进制地址码。
实验六 基本模型机的设计与实现
2、实验步骤 ⑴ 根据实验原理设计数据通路框图,如下图。
实验六 基本模型机的设计与实现
⑵ 根据机器指令画出对应的微程序流程图 本实验的微程序流程见下图,当拟定“取指”微指令时, 该微指令的判别测试字段为P(1)测试。由于“取指”微 指令是所有微程序都使用的公用微指令,因此P(1)的测 试结果出现多路分支。本机用指令寄存器的前4位I7~I4作 为测试条件,出现5路分支,占用5个固定微地址单元。 实验机控制操作为P(4)测试,它以控制开关SWC、 SWA作为测试条件,出现了3路分支,占用3个固定微地 址单元。当分支微地址单元固定后,剩下的其它地方就可 以一条微指令占用控存一个微地址单元随意填写。 注意:微程序流程图上的单元地址为16进制。
实验六 基本模型机的设计与实现
微程序: $M00 $M01 $M02 $M03 $M04 $M05 $M06 $M07 $M08 $M09 $M0A $M0B $M0C 108105 82ED05 48C004 04E004 05B004 06A205 019A95 0DE004 011004 83ED05 87ED05 8EED05 96ED05 微程序: $M0D 018206 $M0E 0FE004 $M0F 15A004 $M10 92ED05 $M11 94ED05 $M12 17A004 $M13 018005 $M14 182004 $M15 010A07 $M16 81D104 $M17 100A07 $M18 118A06
实验六 基本模型机的设计与实现
⑶ 根据微程序流程图设计微指令并转换成 16进制代码文件。 当全部微程序设计完毕后,应将每条微指 令代码化,即按微指令格式将微程序流程 图转化成二进制微代码表,如下表所示, 再转换成16进制代码文件。
实验六 基本模型机的设计与实现
监控程序的16进制文件格式(文件名C8JHE1): 程序: $P00 00 $P01 10 $P02 0A $P03 20 $P04 0B $P05 30 $P06 0B $P07 40 $P08 00 $P0A 01
计算机组成原理实验
西工大软微学院 李易
实验前知识
中央处理器(CPU) 是计算机系统的核心组成 部件,它包括控制器和运算器两大部分。它能 完成的基本功能是读取并执行指令 中央处理器(CPU) 的功能: 指令控制:控制指令按一定顺序执行。 操作控制:控制其他功能部件按指令要求进行 操作。 时间控制:整个计算机系统程序的执行及各种 操作实施都在严格的时间控制下有条不紊地自 动工作。 数据加工:对数据进行各种运算。
实验前知识
• 指令系统: 计算机的工作基本上体现为执行指令。 一台计算机所能执行的全部指令的集合, 称为该计算机的指令系统。计算机的性能 与指令系统有很大的关系,它不仅与计算 机的硬件结构密切相关,而且直接关系到 用户的使用和编译程序的编制和运行效率。
实验前知识
一个完善的指令系统应满足如下四方面的要求: • 完备性:要求指令系统丰富,功能齐全完备,使 用方便。 • 有效性:利用该指令系统所编写的程序能高效率 地运行,主要表现为程序占用存储空间小,执行 速度快。 • 规整性:包括指令系统的对称性、规整性,指令 格式和数据格式的一致性。 • 兼容性:包括对不同机型的基本指令兼容性和对 同一系列机型的向上兼容性。
实验六 基本模型机的设计与实现SWC 0 0 1SWA 0 1 1
控制台指令 读内存 写内存 启动程序
实验六 基本模型机的设计与实现
⑶ 指令寄存器介绍 指令寄存器用来保存当前正在执行的一条指令。当执行一条指令 时,先把它从内存取到缓冲寄存器中,然后再传送到指令寄存器。 指令划分为操作码和地址码字段,由二进制构成,为了执行任何一 条给定的指令,必须对操作码进行测试P(1),通过节拍脉冲T4的控 制以便识别所要求的操作。“指令译码器”根据指令中的操作码进 行译码,强置微控器单元的微地址,使下一条微指令指向相应的微 程序首地址。 ⑷ 输入/输出设备 本系统有两种外部I/O设备,一种是二进制代码开关KD0~KD7, 它作为输入设备INPUT;另一种是数码显示块,它作为输出设备 OUTPUT。例如:输入时,二进制开关数据直接经过三态门送到外 部数据总线上,只要开关状态不变,输入的信息也不变。输出时, 将输出数据送到外部数据总线上,当写信号(W/R)有效时,将数 据打入输出锁存器,驱动数码块显示。
微指令,方框中的内容为该指令执行的微操作,右上角的数字是该 条指令的微地址,为方便,所有微地址用16进制表示,向下的箭头 指出了下一条要执行的指令。P(1)、P(4)为测试判断字。
实验六 基本模型机的设计与实现
⑹ 基本模型机监控软件的设计 本模型机监控软件主要完成从输入设备读入数据,进行简单算术运算后,将结果存 入 内存的某个单元,最后通过输出设备输出结果。 监控软件详细如下: 地 址 内容 助记符 说 明 0000 0000 0000 0000 IN ;“INPUT DEVICE”→R0 0000 0001 0001 0000 ADD[0AH]; R0+[0AH]→R0 0000 0010 0000 1010 0000 0011 0010 0000 STA[0BH]; R0→[0BH] 0000 0100 0000 1011 0000 0101 0011 0000 OUT[0BH]; [0BH]→BUS 0000 0110 0000 1011 0000 0111 0100 0000 JMP[00H] ; 00H→PC 0000 1000 0000 0000 0000 1001 0000 1010 0000 0001 ;自定义参加运算的数 0000 1011 ;求和结果存放单元
实验六 基本模型机的设计与实现
⑴有关微控制器部分在前一实验中已详细介绍 ⑵ 主存储器的读、写和运行 为了向主存储器RAM中装入程序或数据,并且检查写入是否正确以及 能运行主存储器中的程序,必须设计三个控制操作微程序。 ·存储器读操作:拨动总清开关后,置控制开关SWC、SWA为“0 0”时, 按要求连线后,连续按“启动运行”开关,可对主存储器RAM连续手动 读操作。 ·存储器写操作:拨动总清开关后,置控制开关SWC、SWA为“0 1”时, 按要求连线后,再按“启动运行”开关,可对主存储器RAM进行连续手 动写入。 ·运行程序:拨动总清开关后,置控制开关SWC、SWA为“1 1”时,按要 求连线后,再按“启动运行”开关,即可转入到第01号“取址”微指令, 启动程序运行。 上述三条控制指令用两个开关SWC、SWA的状态来设置,其定义如下:
实验六 基本模型机的设计与实现
⑷ 实验接线 a、跳线器J1~J12全部拨在右边(自动工作方式); b、跳线器J16、J18、J23、J24全部拨在左边; c、跳线器J13~J15、J19、J25拨在右边; d d、跳线器J20~J22、J26、J27连上短路片; J20 J22 J26 J27 e、UJ1连UJ2,JSE1连JSE2,SJ1连SJ2; f、MBUS连BUS2; g、REGBUS连BUS5; h、PCBUS连EXJ2; i、ALUBUS连EXJ3; j、ALUO1连BUS1; k、EXJ1连BUS3;
实验前知识
• 指令格式: 指令是由二进制代码表示的,为能够表示 不同的要素,可将指令分成不同的字段。
实验六 基本模型机的设计与实现
• 实验目的
1、在掌握部件单元电路实验的基础上,进 一步将其组成系统以构造一台基本模型实 验计算机。 2、设计五条机器指令,并编写相应的微程 序,具体上机调试,掌握整机软硬件组成 概念。
实验六 基本模型机的设计与实现
• 实验原理 部件实验过程中,各部件单元的控制信号是人为 模拟产生的,而本次实验将能在微程序控制下自 动产生各部件单元控制信号,实现特定指令的功 能。这里,实验计算机数据通路的控制将由微程 序控制器来完成,CPU从内存中取出一条机器指 令到指令执行结束的一个指令周期全部由微指令 组成的序列来完成,即一条机器指令对应一个微 程序。
实验六 基本模型机的设计与实现
注意实验的初始状态总清开关CLR=1, SWC=1,SWA=1 ⑸ 读写程序 联机读/写微程序和机器指令 用联机软件的装载功能将16进制格式文件 (文件名为C8JHE1)装入实验系统即可。 具体操作步骤见演示。
实验六 基本模型机的设计与实现
⑹ 运行程序 ① 单步运行程序 A. “编程开关”置“运行”状态,“运行方式”开关置为“单步”状 态,“运行控制”开关置为“运行”状态。 B. 拨动总清开关(0→1),微地址清零,PC计数器清零,程序首地址为00H。 C. 按动“启动运行”开关,即单步运行一条微指令。对照微程序流程图, 观察微地址显示灯是否和流程一致。 ② 连续运行程序 A. “编程开关”置“运行”状态,“运行方式”开关置为“连续”状 态,“运行控制” 关置为“运行”状态。 B. 拨动总清开关,清微地址及PC计数器,按动“启动运行”开关,系统 连续运行程序。如果要停止程序的运行,只需将“运行控制”开关置为 “停止”状态,系统就停机。 C. 停机后,可检查存数单元0BH中的结果是否正确。一个矩形框表一条