当前位置:文档之家› 计组实验报告 (2)

计组实验报告 (2)

计组实验报告 (2)
计组实验报告 (2)

计算机组成原理实验报告

课程名称计算机组成原理实验

学院计算机学院

专业班级计算机科学与技术

学号

学生姓名

指导教师

2015年 5 月19 日

计算机学院学号:

姓名教师评定

实验题目基础汇编语言程序设计实验

一、实验目的:

1、学习和了解TEC-XP+教学实验监控命令的用法;

2、学习和了解TEC-XP+教学实验系统的指令系统;

3、学习简单的TEC-XP+教学实验系统汇编程序设计

二、实验设备与器材:

工作良好的PC机; TEC-XP+教学实验系统和仿真终端软件PCEC。

三、实验说明和原理:

实验原理在于汇编语言能够直接控制底层硬件的状态,通过简单的汇编指令查看、显示、修改寄存器、存储器等硬件内容。

实验箱正如一集成的开发板,而我们正是通过基础的汇编语言对开发板进行使用和学习,过程中我们不仅需要运用汇编语言的知识,还需要结合数字逻辑中所学的关于存储器、触发器等基本器件的原理,通过串口通讯,实现程序的烧录,实验箱与PC端的通讯。四、实验内容:

1、学习联机使用TEC-XP+教学实验系统和仿真终端软件PCEC;

2、学习使用WINDOWS界面的串口通讯软件;

3、使用监控程序的R命令显示/修改寄存器内容、D命令显示存储内容、E命令修改存储

内容;

4、使用A命令写一小段汇编程序,U命令反汇编输入的程序,用G命令连续运行该程序,

用T、P命令单步运行并观察程序单步执行情况。

五、实验步骤:

1、准备一台串口工作良好的PC机器;

2、将TEC-XP+放在实验台上,打开实验箱的盖子,确定电源处于断开状态;

3、将黑色的电源线一段接220V交流电源,另一端插在TEC-XP+实验箱的电源插座里;

4、取出通讯线,将通讯线的9芯插头接在TEC-XP+实验箱上的串口"COM1"或"COM2"上,另

一端接到PC机的串口上;

5、将TEC-XP+实验系统左下方的六个黑色的控制机器运行状态的开关置于正确的位置,再找个实验中开关应置为001100(连续、内存读指令、组合逻辑、联机、16位、MACH),

6、控制开关的功能在开关上、下方有标识;开关拨向上方表示"1",拨向下方表示"0","X"表示任意,其他实验相同;

7、打开电源,船型开关盒5V电源指示灯亮;

在PC机上运行PCEC16.EXE文件,根据连接的PC机的串口设置所用PC机的串口为"1"或"2",其他的设置一般不用改动,直接回车即可; (8)按一下"RESET"按键,再按一下"START"按键,六、思考题:

思考题:若把IN 81,SHR R0,JRNC 2028三个语句换成4个MVRR R0,R0语句,该程序执行过程会出现什么现象?试分析并实际执行一次。

答:该程序改变这三条语句后,若用T命令单条执行,会依次显示0~9十个数字。若用G命令运行程序,程序执行速度快,端口输出速度慢,这样就会跳跃输出。

七、实验心得:

对汇编基本指令的学习,让我对汇编语言以及嵌入式系统方向产生了兴趣,并且通过汇编语言的学习,发现在高级语言中简单的加法或变量申请,在底层实现的过程是相当复杂的。使用汇编语言直接控制硬件,让我们亲身感受到一个简单的指令操作硬件时,硬件所发生的变化,貌似回到了70年代的计算机学习一样,而且在实验一的学习过程中,懂得了一些基于实验箱的汇编小程序,与单片机的使用有很多相似之处,十分有趣。

另外,实验一过程中使用绝对地址,直接访问内存的数据,让我们脱离操作系统的封装,更好地体会到直接控制硬件的感觉。然而,对于大程序的编写,基本的汇编语言的编程难度比起高级语言高了不少,但汇编的学习的确促进了我们对计算机的认识。

计算机学院学号:

姓名教师评定

实验题目脱机运算器实验

一、实验目的:

1、深入了解AM2901运算器的功能与具体用法;

2、深化运算器部件的组成、设计、控制与使用等知识。

二、实验设备与器材:

TEC-XP+教学实验系统和仿真终端软件PCEC。

三、实验说明和原理:

本次实验脱离PC端,主要通过实验箱进行。因此这个实验更像数据逻辑的电路实验。脱机运算器实验,是指让运算器从教学计算机整机中脱离出来,此时,它的全部控制与操作均需通过两个12位的微型开关来完成,这就谈不上执行指令,只能通过开关、按键控制教学机的运算器完成指定的运算功能,并通过指示灯观察运算结果。

四、实验内容:

在脱机方式下,对于给定指令分析其执行过程中运算的步骤,通过对AM2901运算器反需控制信号的设置,使之完成运算,并核对运算结果。

五、实验步骤:

在脱机方式下,通过设置SW1、SW2、SW3 各微码字段和数据开关,可实现多种运算,以实现AAAAH->R1为例说明操作过程。

1)按照下表中的微码和数据开关,对运算器进行设置。操作步骤如下:

a)将教学机左下方的6个拨动开关置为1XX000(单步、16位、脱机、CACH);

先按一下RESTET按键,再按一下START按键,进行初始化。

b)通过16个数据开关设置立即数AAAAH。

c)通过SW1、SW2、SW3设置各微码。

d)按一次START键,立即数XXXX H置入R1,通过显示灯察看按START键后的输

出。若要进行其它操作:

a)重新设置SW1、SW2、SW3、数据开关,通过显示灯观察输出。

b)然后按START键执行操作,通过显示灯观察按下START键后的输出,检查运算

结果是否正确。

2)完成下表的各种运算,记录按START键前和按START键后的ALU输出及标志位

C、Z、V、S的值。

六、思考题以及实验心得:

初步了解运算器芯片Am2901的结构,本次实验初步知道它能实现R+S、S-R、R-S三种算术运算功能,和五种逻辑运算功能。选择ALU的八种运算(三种算术运算、五种逻辑运算)功能中的一种。是通过三位功能选择码I5、I4、I3实现。选择送入ALU的两个操作数据R和S的组合关系(数据来源)。是用I2、I1、I0三位操作数选择码控制实现的。选择运算结果或有关数据以什么方式送往何处, 这主要指通用寄存器组和Q寄存器执不执行接收操作或移位操作, 以及向芯片的输出信息Y提供的是什么内容。这是通过I8、I7、I6三位结果选择码控制实现的。因此我们通过了解AM2901运算器的逻辑功能,懂得通过查表用指令微码来实现一些简单的逻辑功能.

计算机学院学号:

姓名教师评定

实验题目存储器部件教学实验

一、实验目的:

1、熟悉ROM芯片和RAM芯片在功能和使用方法等方面的相同和差异之处。学习用编程器设备向EEPROM芯片内写入一批数据的过程和方法。

2、理解并熟悉通过字、位扩展技术实现扩展存储器系统容量的方案。

3、了解静态存储器系统使用的各种控制信号之间正常的时序关系。

4、了解如何通过读、写存储顺的指令实现对58C65 ROM芯片的读、写操作。

5、加深理解存储器部件在计算机整机系统中的作用。

二、实验设备与器材:

TEC-XP+教学实验系统和仿真终端软件PCEC。

三、实验说明和原理:

内存储器原理:内存储器是计算机中存放正在运行中的程序和相关数据的部件。在教学计算机存储器部件设计中,出于简化和容易实现的目的,选用静态存储器芯片实现内存储器的存储体,包括唯读存储区和随读写存储区两部分,ROM存储区选用4片长度8位、容易8KB的58C65芯片实现,RAM存储区选用2片长度8位、容量2KB的6116芯片实现,每2个8位的芯片合成一组用于组成16位长度的内存字,6个芯片被分成3组,其地址空间分配关系是:0-1777h用于第一组ROM,固化监控程序,2000-2777h用于RAM,保存用户程序和用户数据,其高端的一些单元作监控程序的数据区,第二组ROM的地址范围可以由用户选择,主要用于完成扩展内存容量的教学实验。

地址总线的低13位送到ROM芯片的地址线引脚,用于选择芯片内的一个存储字。用于实现存储字的高位字节的3个芯片的数据线引脚、实现低位字节的3个芯片的数据线引脚分别连接在一起接到数据总线的高、低位字节,是实现存储器数据读写的信息通路。数据总线要通过一个双向三态门电路与CPU一侧的内部总线IB相连接,已完成存储器、接口电路和CPU之间的数据通讯。

四、实验内容:

1) 要完成存储器容量扩展的教学实验,需为扩展存储器选择一个地址,并注意读写和OE 等控制信号的正确状态。

2) 用监控程序的D、E命令对存储器进行读写操作,比较RAM(3116)、EEPROM(28系列芯片)、EPROM(27系列芯片)在读写上的异同。

3) 用监控程序的A命令编写一段程序,对RAM(6116)进行读写,用D命令查看结果是否正确。

4) 用监控程序的A命令编写一段程序,对扩展存储器EEPRM(28系列芯片)进行读写,用D命令查看结果是否正确;如不正确,分析原因,改写程序,重新运行。

五、实验步骤:

1) 检查FPGA下方的标有“/CE”的四组插针均是左边两个短接;

2) 检查RAM(6116)上方的标有“/WE”的插针应是左边两个短接;

3) RAM(6116)支持即时读写,可直接用A、E命令向扩展的存储器输入程序或改变内存单元的值。

4) 将扩展的ROM芯片插入标有“EXTROMH”和“EXTROML”的自锁紧插座,要注意芯片插入的方向,带有半圆形缺口的一方朝左插入。如果芯片插入方向不对,会导致芯片烧毁,然后锁紧插座。

5) 将扩展芯片下方的插针按下列方式短接:将标有“/MWR”和“RD”的三个插针左面两个短接,将标有“/MWR”“/OE”“GND”的三个插针左边两个短接。

6) 将扩展芯片上方标有EXTROMH和EXTROML的“/CS”信号用自锁紧线短接,然后短接到MEMDC 138芯片的上方的标有“4000-5fff”地址单元。注意:标有/CS的圆孔针与标有MEM/CS的一排圆孔针中的任意一个都可以用导线相连;连接的地址范围是多少,用户可用的地址空间就是多少。

7) 将标有“DataBus 15-8”和“DataBus 7-0”的数据总线的指示灯下方的插针短接。

8) 将标有“DataBus 15-8”和“AdressBus 7-0”的数据总线的指示灯下方的插针短接。

9) EPROM 是紫外线可擦除的电可改写的只读存储器芯片。在对EPROM进行重写前必须先擦除并判断芯片是否为空,再通过编程器进行编程。

10) AT28C64B的读操作和一般的RAM一样,而其写操作,需要一定的时间,大约为1毫秒。因此,需要编写一延迟程序,在对EEPROM进行写操作时,调用该子程序,以完成正确的读写。

六、实验心得:

能用E命令直接写A T28C64B的存储单元,而不用A命令,修改延时子程序,将其延

时改短,可将延时子程序中的R3的内容赋成00FF或0FFF等,再看运行结果时,发现因为当写入双字节指令的低位时会出错,这也是不能用A命令而只能用E命令去写存储单元的原因。

计算机学院学号:

姓名教师评定

实验题目组合逻辑控制器部件教学实验

一、实验目的:

通过看懂教学计算中已经设计好并正常运行的几条典型指令的功能、格式和执行流程,然后自己设计几条指令的功能、格式、和执行流程,并在教学计算机上实现、调试正确。其最终要达到的目的是:

1、深入理解计算机控制器的功能、组成知识。

2、深入地学习计算机各类典型指令的执行流程。

3、令格式、寻址方式、指令系统、指令分类等建立具体的总体概念。

4、学习组合逻辑控制器的设计过程和相关技术

二、实验设备与器材:

TEC-XP+教学实验系统和仿真终端软件PCEC。

三、实验说明和原理:

控制器设计是学习计算机总体组成和设计的最重要部分。要在TEC-XP16教学计算机完成这项实验,必须清楚地懂得:

1)TEC-XP+教学机的组合逻辑控制器主要由MACH器件组成。

2)TEC-XP+教学机上已实现了29条基本指令。

3)应了解监控程序的A命令只支持基本指令,扩展指令应用E命令将指令代码写入

到相应的存储单元中;不能用T、P命令单步调试扩展指令,只能用G命令执行有

扩展指令的程序。

4)要明白TEC-XP+教学机支持的指令格式及指令执行流程分组情况;理解TEC-XP+

教学机中已经设计好并正常运行的各类指令的功能、格式和执行流程、也包括控制

器设计的实现中的具体路线的控制信号的组成。

5)要明确自己要实现的指令功能、格式、执行流程设计中必须遵从的约束条件。

为了完成自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正

确的内容,具体过程包括:

1)确定指令格式和功能,要受到教学机已有硬件的约束,应尽量与已实现指令的格式

和分类办法保持一致。

2)划分指令执行步骤并设计每一步的执行功能,设计节拍状态的值,应参照已实现指

令的处理办法来完成,特别注意的是,读取指令的节拍只能用原来已实现的,其他

节拍的节拍状态也应尽可能地与原用节拍的状态保持一致和相近。

3)在指令流程表中真写每一个控制信号的状态值,基本上是个查表填数的过程,应特

别仔细,并有意识地体会这些信号的控制作用。

4)在给出来mach的源文件中添加扩展指令的控制信号的逻辑表达式,编译适配后下

载到MACH器件中。

5)写一个包含你设计的指令的程序,通过运行该程序检查执行结果的正

确性,初步判断你的设计是否正确;如果有问题,通过几种办法查出

错误并改正,继续调试,直到完全正确。

四、实验内容:

1) 完成控制器部件的教学实验,主要内容是由学生自己设计几条指令的功能、格式和执行流程,并在教学机上实现、调试正确。

2) 首先是看懂TEC-XP教学机的功能部件组成和线路逻辑关系,然后分析教学计算机中已经设计好并正常运行的几条典型指令的功能、格式和执行流程。

3) 设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。

4) 单条运行指令。查看指令的功能、格式和执行流程。

5) 用监控程序的A、E命令编写一段小程序,观察运行结果。

五、实验步骤:

1)接通教学机电源。

2)将教学机左下方的6个拨动开关置为111100.

3)按一下“RESET”按键。

4)通过16位的数据开关SWH、SWL置入16位的指令操作码。

5)在单步方式下,通过指示灯观察各类型基本指令的节拍。

a)选择基本指令的A组指令中的ADD指令,观察其节拍流程:1)、置拨动开关SW

=00000000 00000001;2)、按RESET按键;节拍指示灯T3 ~T0显示1000;3)、按START按键;节拍指示灯T3~T0显示0000;4)、按START按键;节拍指示灯T3~T0显示0010;5)、按START按键;节拍指示灯T3~T0显示0011;

b) 选择基本指令的B 指令中的PUSH 指令,观察其节拍流程:

c) 1)、置拨动开关SW =10000101 00000000; 2)、按RESET 按键;节拍指示灯T3 ~T0显示1000; 3)、按START 按键;节拍指示灯T3~T0显示0000; 4)、按START 按键;节拍指示灯T3~T0显示0010; 5)、按START 按键;节拍指示灯T3~T0显示0110; 6)、按START 按键;节拍指示灯T3~T0显示0100;

d) 选择基本指令的D 组指令中的CALA 指令,观察其节拍流程:

e) 1)、置拨动开关SW =11000110 00000000; 2)、按RESET 按键;节拍指示灯T3 ~T0显示1000;3)、按START 按键;节拍指示灯T3~T0显示0000; 4)、按START 按键;节拍指示灯T3~T0显示0010; 5)、按START 按键;节拍指示灯T3~T0显示0110; 6)、按START 按键;节拍指示灯T3~T0显示0100; 7)、按START 按键;节拍指示灯T3~T0显示0111; 8)、按START 按键;节拍指示灯T3~T0显示0101; 6) 单步方式下,通过指示灯观察各类基本指令的控制信号。

a) 选择指令的A 组指令中的SHR 指令,观察其执行过程中控制信号的变化,分析其作用。

b) 选择基本指令的B 组指令中的JMPA

指令,观察其执行过程中控制信号的变化,分析其作用。

c)选择基本指令的D组指令中的CALA指令,观察其执行过程中控制信号的变化,

分析其作用。

7)在以上几步实验的基础上,选择几条扩展指令,设计出扩展指令的节拍和每拍对应的

控制信号。

a)选择扩展指令的A组指令中的RCR指令,观察其节拍流程: 1)、置拨动开关SW

=00101011 00010000; 2)、按RESET按键;节拍指示灯T3 ~T0显示1000; 3)、按

START按键;节拍指示灯T3~T0显示0000; 4)、按START按键;节拍指示灯T3~T0显示0010; 5)、按START按键;节拍指示灯T3~T0显示0011;

b)选择扩展指令的C级指令中的LDRA指令,观察其流程: 1)、置拨动开关SW

=11100100 00000000; 2)、按RESET按键;节拍指示灯T3 ~T0显示1000; 3)、按START按键;节拍指示灯T3~T0显示0000; 4)、按START按键;节拍指示灯T3~T0显示0010; 5)、按START按键;节拍指示灯T3~T0显示0110; 6)、按START按键;

节拍指示灯T3~T0显示0111; 7)、按START按键;节拍指示灯T3~T0显示0101;

8)设计几条扩展指令的控制信号如下:

a)选择扩展指令ADC、STC、JRS、LDRX和JMPR。

b)根据设计的控制信号的表格用ABEL语言编写MACH的逻辑表达式。

c)将编好的程序MACHC.JED下载到MACH芯片内。

9)用教学机已实现的基本指令和扩展的几条指令编写程序并运行,测试扩展的几条指令是

否正确。

六、实验心得:

经过一段时间汇编语言的学习,发现我们的实验箱与8686架构的汇编指令的二进制表示代码并不相同。而通过学习ADD,SHR,OUT,MVRD,JRC,RET,CALA等指令,对硬件运行流程以及汇编指令的控制和调试都有了新的进步。另外实验箱的A命令只支持基础命令,而不支持扩展指令,当需要用到扩展指令时,要用E命令输入,并且通过G命令执行。这是后期实验需要注意的地方。

计算机学院学号:

姓名教师评定

实验题目微程序控制器部件教学实验

一、实验目的:

1、全面掌握计算机各部件组成及相互联接关系。

2、深入理解计算机微程序控制器的功能、组成知识。

3、深入的学习计算机各类典型指令的执行流程。

4、对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念。

5、学习微程序控制器的设计过程和相关技术。

二、实验设备与器材:

TEC-XP+教学实验系统和仿真终端软件PCEC。

三、实验说明和原理:

制器设计是学习计算机总体组成和设计的最重要部分。要在TEC-XP16教学计算机完成这项实验,必须清楚地懂得:

1) TEC-XP+教学机的微程序控制器主要由微程序定序器AM2910、产生当前微地址和下地址的微控存和MACH器件组成。

2) TEC-XP+教学机上已实现了的全部基本指令和留给用户实现的19条扩展指

令的控制信号都是由微控存和MACH给出的。

3) 应了解监控程序的A命令只支持基本指令,扩展指令应用E命令将指令代码写入到相应的存储单元中;不能用T、P命令单步调试扩展指令,只能用G命令执行有扩展指令的程序。

4) 要明白TEC-XP+教学机支持的指令格式及指令执行流程分组情况;理解TEC-XP+教学机中已经设计好并正常运行的各类指令的功能、格式和执行流程、也包括控制器设计的实现中的具体路线的控制信号的组成。

5) 要明确自己要实现的指令功能、格式、执行流程设计中必须遵从的约束条件。为了完成自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、

调试正确的内容,具体过程包括:

a) 确定指令格式和功能,包括确定要用的操作码,指令中的其它字段的内容分配与使用,要受到教学机已有硬件的约束,应尽量与已实现指令的格式和分类办法保持一致。

b) 按新指令的功能和格式、设计指令的执行流程。划分指令执行步骤并设计每一步的执行功能,设计微地址和下地址的取值,应参照已实现指令的处理办法来完成。

c) 在指令流程表中真写每一个控制信号的状态值,基本上是个查表填数的过程,应特别仔细,并有意识地体会这些信号的控制作用。

d) 将设计好的微码,装入控制存储器的相应单元。

e) 写一个包含你设计的指令的程序,通过运行该程序检查执行结果的正确性,来初步判断你的设计是否正确;如果有问题,通过几种办法查出错误并改正,继续调试,直到完全正确。

四、实验内容:

1) 完成控制器部件的教学实验,主要内容是自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。

2) 首先是看懂TEC-XP+教学计算机的功能部件组成和线路逻辑关系,然后分析教学计算机中已经设计好并正常运行的几条典型指令的功能、格式和执行流程,注意各操作功能所对应的控制信号的作用。

3) 设计几条指令的功能、格式和执行流程,并在教学机上实现、调试正确。

4) 单条运行指令。查看指令的功能、格式和执行流程。

5) 用监控程序的A、E命令编写一段小程序,观察运行结果。

五、实验步骤:

1、接通教学机电源。

2、将教学机左下方的六个拨动开关置为110100.

3、按一下“RESET”按键。

4、通过16位的数据开关SWH、SWL置入指令操作码。

5、在单步方式下,通过指示灯观察各类基本指令的微码。

6、在连续方式下,用A命令键入程序并运行。

7、设计几条指令的功能、格式和执行流程,设计每条微指令各字段的具体编码值,包括控制码的各字段、下地址字段、形成下址用到的条件码。

1)扩展几条指令,确定各步的控制信号。

2)将扩展好的控制信号添加到给出的MACH程序中,编译生成JED的熔丝图文件,写入MACH内的寄存器中。

8、在单步方式下,通过指示灯观察各类扩展指令的微码。

9、用A、E键入程序连续运行。

六、本次实验让我们对指令的格式、寻址方式以及指令系统有了一个总体概念,特别是对于扩展指令的认识与使用得到了加深,并且可以自主实现自设微码调用微指令,初步掌握了微程序控制器的设计过程。

此外,我们通过对指令的执行,更为深入地知晓汇编典型指令的执行流程,有了感性的认识,减少了学习的枯燥。本次实验需要用到的单步运行指令较多,慢慢地习惯了对指令的

调试以及内存或寄存器的查询。还有,当我们使用扩展指令时,需要用E命令输入。

六、实验心得:

在本次实验过程中,开始的步骤是重复以前的实验过程,我的实验路线也再次出现了问题,经过检查,发现是接线有问题,总是犯错误,这次实验让我更加了解了微程序以及CPU,CPU需要运算器,微程序控制器,通用寄存器,程序计数器,地址寄存器组成,在这个过程中程序计数器决定下一条执行的指令是什么,整体感觉这次的实验较为有效的帮助我们理解,但是感觉还需要好好的看书

计算机学院学号:

姓名教师评定

实验题目输入/输出接口扩展实验

一、实验目的:

1、了解串行接口与计算机主机之间的数据传送方。

2、理解串行接口芯片的内部组成的传送数据的运行方式。

3、了解串行接口在投入运行之前必须执行的初始化操作的作用及完成初始化操作的具体方案。

二、实验设备与器材:

TEC-XP+教学实验系统和仿真终端软件PCEC。

三、实验说明和原理:

1) 串行通信是指外设和计算机间使用一根数据信号线,数据在一根数据信号线上按位进行传输,每一位数据都占据一个固定的时间长度。

2) 这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。相比之下,由于高速率的要求,处于计算机内部的CPU与串口之间的通讯仍然采用并行的通讯方式,所以串行口的本质就是实现CPU与外围数据设备的数据格式转换(或者称为串并转换器),即当数据从外围设备输入计算机时,数据格式由位(bit)转化为字节数据;反之,当计算机发送下行数据到外围设备时,串口又将字节数据转化为位数据。

3) 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。

四、实验内容:

1) 为扩展I/O口选择一个地址,即将与COM2接口相连的8251的/CS与标准有I/O/CS的一排插孔中的一个相连。

2) 将COM2口与终端或另一台运行有PCEC16的PC机的串口相连。

3) 用监控程序的A命令,编写一段小程序,先初始化COM2口,再身COM2口发送一些字符,也可从COM2口接收一些字符,或实现两个串口的通信。

五、实验步骤:

1)为扩展I/O口选择一个地址:将与COM2口相连的8251的/CS与标有I/O/CS的插

孔中地址为A0-AF的一个相连。

2)将教学机COM1口与一台PC机相连,在PC机上启动PCEC16.EXE。

3)断开COM1与PC的串口线,将其连接到另一台PC机或同一个串口,同样启动

PCEC16.EXE。

4)用另一根串口线将COM2口和第一台PC或同一台PC的另一个串口相连。

5)在与COM1相连的PCEC上输入程序,这是主PCEC可以输入输出,和COM2连

接的是从PCEC只作输出。

6)用A、E命令编程进行COM2口的操作。

六、实验心得:

本次实验主要是实现两个PC机的串行通讯,其实过程有点类似于单片机与PC机的串口通讯,而学生之前尝试使用C语言实现单片机与PC机之间的串口信息传输,因此本次使用汇编语言实现两个PC机之间的串行通讯多少有点熟悉,并且通过更细致的指令编写,深入地学会串行通讯的底层实现过程。

另外,实验进行时曾有一台PC机的COM口都被占用,具体解决方法由于当时课上时间较为紧迫,没有想出来,因此只能另外换机再试。

计组实验报告

计算机组成原理实验报告 实验1:VERILOG 设计基础 专业班级:14级计算机二班 学号:14048001 姓名:杨娜 学号:14048003 姓名:周蓉 实验地点:理工楼901 实验时间:2016年5月14日

实验十VGA显示控制器的设计 一、实验目的 1、学习VERILOG的基本语法和编程规则 2、掌握通用寄存器等常用基本数字模块的VERILOG描述和基本设计方法 3、理解带使能控制和异步清零的8位寄存器的设计原理 4、掌握使用VERILOG设计和验证带使能控制和异步清零的8位寄存器的方法 5、掌握移位寄存器的设计方法 二、实验任务 1、设计一个带使能控制和异步清零的8位寄存器REG8X,实现8位输入的锁存,在时钟的上升沿处得到一个8位的输出和一个8位的反向输出,将结果显示在发光二极管。 模块的端口描述如下: 模块的参考物理结构如下: R7 R6 R i R 0 7 6 i 0 带使能控制和异步清零的8位寄存器 模块的使用注意事项

1.数据源D(7..0)一直加在寄存器的数据输入端; 2.周期性的时钟信号Clock一直加在寄存器的时钟输入端 3.使能信号Enable控制寄存器是否接受数据。当Enable = '0'时,寄存器不 接受数据,保持原来的状态不变;当Enable = '1'时,在时钟信号Clock正 跳变时,寄存器接受并保存当时D(7..0)的数据; 4.本寄存器其它方面的功能与上述的寄存器相同。 完成的参考电路图如下:dout=q 2、设计一个有左、右移位功能的8位寄存器REGSHIFT8,并仿真验证。

三、实验内容 1、通过输入数据先进行计算,并通过实验进行验证REG8X。 (1)、将清零信号Resetn(sw17)设为0,将输入信号D(sw7~sw0)设为10101010,观察输出信号Q(ledr7~ledr0)和Qb(ledg7~ledg0),观察并记录输出。 (2)、将清零信号Resetn(sw17)设为1,在时钟信号处输入一个上升沿(按下key0),观察并记录输出。 (3)、将输入信号D(sw7~sw0)设为01010101,观察并记录输出。 (4)、在时钟信号处输入一个上升沿(按下key0),观察并记录输出。 (5)、自行完善设计表格,观察并记录测试输出。 实验数据表 2、通过输入数据先进行计算,并通过实验进行验证REGSHIFT8。 (1)、测试清零信号Resetn (2)、测试移位功能 (3)、测试寄存功能 (4)、自行设计表格观察并记录测试输出。 实验数据表

杭电计组实验报告10

计组实验十 老师:包健 一、源代码测试模块代码: module Top( inputinclk, inputmem_clk, inputrst, outputreg[7:0] LED, input [3:0] SW ); wireclk; MyButtonmb( .clk_100MHz(mem_clk), .BTN(inclk), .BTN_Out(clk) ); wire [31:0] ALU_F; wire [31:0] M_R_Data; wire ZF; wire OF; wire [31:0]PC; My_I_CPUmy_i_cpu( .clk(clk), .mem_clk(mem_clk), .rst(rst), .ALU_F(ALU_F), .M_R_Data(M_R_Data), .ZFF(ZF), .OF(OF), .PC_out(PC) ); always@(*) begin case(SW) 4'd0:LED=ALU_F[7:0]; 4'd1:LED=ALU_F[15:8]; 4'd2:LED=ALU_F[23:16]; 4'd3:LED=ALU_F[31:24]; 4'd4:LED=M_R_Data[7:0];

4'd5:LED=M_R_Data[15:8]; 4'd6:LED=M_R_Data[23:16]; 4'd7:LED=M_R_Data[31:24]; 4'd8:LED={ZF,6'd0,OF}; 4'd12:LED=PC[7:0]; 4'd13:LED=PC[15:8]; 4'd14:LED=PC[23:16]; 4'd15:LED=PC[31:24]; default:LED=8'b0000_0000; endcase end endmodule 顶层模块代码: moduleMy_I_CPU( inputclk, inputmem_clk, inputrst, output [31:0] ALU_F, output [31:0] M_R_Data, output ZFF, output OF, output [31:0]PC_out ); //wire clk_n = ~clk; wire[31:0] codes; wire [31:0]PC_new; reg [31:0]PC; Inst_Fetch1 inst_fetch( .PC(PC), .rst(rst), .clk(clk), .Inst_codes(codes), .PC_new(PC_new) ); wire[5:0] OP; wire[5:0] func;

计组-加法器实验报告

半加器、全加器、串行进位加法器以及超前进位加法器 一、实验原理 1.一位半加器 A和B异或产生和Sum,与产生进位C 2.一位全加器 将一位半加器集成封装为halfadder元件,使用两个半加器构成一位的全加器 3.4位串行进位加法器 将一位全加器集成封装为Fulladder元件,使用四个构成串行进位加法器

4.超前进位加法器(4位) ⑴AddBlock 产生并行进位链中的ti(即Cthis)和di(即Cpass),以及本位结果Sum ⑵进位链(Cmaker) 四位一组并行进位链,假设与或非门的级延迟时间为1.5ty,与非门的延迟时间为1ty,在di和ti产生之后,只需2.5ty就可产生所有全部进位

⑶超前进位加法器 将以上二者结合起来即可完成,A和B各位作为各个AddBlock的输入,低一位的进位Ci-1作为本位AddBlock的C-1的输入。各个AddBlock输出的C_this和C_pass作为对应的Cmaker的thisi和passi的输入。

二、实验器材 QuartusII仿真软件,实验箱 三、实验结果 1.串行进位加法器结果 2.超前进位加法器结果

四、实验结果分析 1.实验仿真结果显示串行加法器比超前进位加法器快,部分原因应该是电路结构优化 不到位。另外由于计算的位数比较少,超前进位加法链结构较复杂,所以优势没体现出来,反倒运作的更慢一点。当位数增加的时候,超前进位加法器会比串行的更快。 2.波形稳定之前出现上下波动,应该与“竞争冒险”出现的情况类似,门的延迟和路径 的不同导致了信号变化时到达的时间有先有后,因此在最终结果形成前出现了脉冲尖峰和低谷;另外也可能部分原因由于电路结构优化的不到位所致

计组-4位乘法器实验报告

实验4位乘法器实验报告 姓名:X XX 学号:X XX 专业:计算机科学与技术课程名称:计算机组成同组学生姓名:无 实验时间:实验地点:指导老师:XXX 一、实验目的和要求 1.熟练掌握乘法器的工作原理和逻辑功能 二、实验内容和原理 实验内容: 根据课本上例3-7的原理,来实现4位移位乘法器的设计。 具体要求:1. 乘数和被乘数都是4位 2. 生成的乘积是8位的 3. 计算中涉及的所有数都是无符号数 4.需要设计重置功能 5.需要分步计算出结果(4位乘数的运算,需要四步算出结果) 实验原理: 1.乘法器原理图

2.本实验的要求: 1.需要设计按钮和相应开关,来增加乘数和被乘数 2.每按一下M13,给一个时钟,数码管的左边两位显示每一步的乘 积 3.4步计算出最终结果后,LED灯亮,按RESET重新开始计算 三、主要仪器设备 1.Spartan-III开发板1套 2.装有ISE的PC机1台 四、操作方法与实验步骤 实验步骤: 1.创建新的工程和新的源文件 2.编写verilog代码(top模块、display模块、乘法运算模块、去抖动模块以及 UCF引脚) 3.进行编译 4.进行Debug 工作,通过编译。

5.. 生成FPGA代码,下载到实验板上并调试,看是否与实现了预期功能 操作方法: TOP: module alu_top(clk, switch, o_seg, o_sel); input wire clk; input wire[4:0] switch; output wire [7:0] o_seg; // 只需七段显示数字,不用小数点 output wire [3:0] o_sel; // 4个数码管的位选 wire[15:0] disp_num; reg [15:0] i_r, i_s; wire [15:0] disp_code; wire o_zf; //zero detector initial begin i_r <= 16'h1122; //0x1122 i_s <= 16'h3344; //0x3344 end alu M1(i_r, i_s, switch[4:2], o_zf, disp_code); display M3(clk, disp_num, o_seg, o_sel); assign disp_num = switch[0]?disp_code:(switch[1] ? i_s : i_r); endmodule

计组实验二实验报告-80868088指令系统

HUNAN UNIVERSITY 课程实习报告 题目: 8086/8088指令系统 学生姓名 学生学号 专业班级计算机科学与技术2班 指导老师 完成日期2013年4月21日

一、实验目的 利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作吗编码对应的指令功能,得到8086/8088操作吗从00~FF所对应的的汇编指令的名字。并加以分析总结,形成你的关于8086/8088指令系统操作码编码方法的实验报告。 二、实验过程 1、编写C++程序,生成debug的输入文件(shuru.txt) 2、将shuru.txt复制到debug的根目录下,在debug界面输入如下指令“debug out.txt”,在debug的根目录下,生成了输出文本文件out.txt。 打开out.txt,对256条记录进行整理,如下所示。 3、固定前两位为00,将第二字节从00变为ff,观察汇编指令变化。编写C++程序如下: 4、将shuru2.txt复制到debug的根目录下,在debug界面输入如下指令“debug out2.txt”,在debug的根目录下,生成了输出文本文件out2.txt。

打开out2.txt,对256条记录进行分析。 三、256条记录 指令码汇编指令 ------------------------------------------------------------- 0B76:0100 0000 ADD [BX+SI],AL 0B76:0100 0100 ADD [BX+SI],AX 0B76:0100 0200 ADD AL,[BX+SI] 0B76:0100 0300 ADD AX,[BX+SI] 0B76:0100 0400 ADD AL,00 0B76:0100 050000 ADD AX,0000 0B76:0100 06 PUSH ES 0B76:0100 07 POP ES 0B76:0100 0800 OR [BX+SI],AL 0B76:0100 0900 OR [BX+SI],AX 0B76:0100 0A00 OR AL,[BX+SI] 0B76:0100 0B00 OR AX,[BX+SI] 0B76:0100 0C00 OR AL,00 0B76:0100 0D0000 OR AX,0000 0B76:0100 0E PUSH CS 0B76:0100 0F DB 0F 0B76:0100 1000 ADC [BX+SI],AL 0B76:0100 1100 ADC [BX+SI],AX 0B76:0100 1200 ADC AL,[BX+SI] 0B76:0100 1300 ADC AX,[BX+SI] 0B76:0100 1400 ADC AL,00 0B76:0100 150000 ADC AX,0000 0B76:0100 16 PUSH SS 0B76:0100 17 POP SS 0B76:0100 1800 SBB [BX+SI],AL 0B76:0100 1900 SBB [BX+SI],AX 0B76:0100 1A00 SBB AL,[BX+SI] 0B76:0100 1B00 SBB AX,[BX+SI] 0B76:0100 1C00 SBB AL,00 0B76:0100 1D0000 SBB AX,0000 0B76:0100 1E PUSH DS 0B76:0100 1F POP DS 0B76:0100 2000 AND [BX+SI],AL 0B76:0100 2100 AND [BX+SI],AX 0B76:0100 2200 AND AL,[BX+SI] 0B76:0100 2300 AND AX,[BX+SI] 0B76:0100 2400 AND AL,00 0B76:0100 250000 AND AX,0000

计组实验报告.

武汉大学计算机学院计算机科学与技术专业 CPU设计实验报告 实验名称:开放式实验CPU设计课题名称: 计算机组成原理 班级: 指导教师:徐爱萍 组长: 组员: 二零一五年三月

目录 目录 (1) 1 实验环境 (2) 1.1 Quartus Ⅱ介绍 (2) 1.2 硬件描述语言(VHDL) (3) 1.3实验的主要成果 (3) 2 实验要求 (5) 2. 1 指令格式要求 (5) 2. 2 指令流程及微信号序列分析 (6) 2.2.1 ADD指令分析 (6) 2.2.2 ADC指令分析 (7) 2.2.3 SUB指令分析 (7) 2.2.4 SBC指令分析 (7) 2.2.5 INC指令分析 (7) 2.2.6 DEC指令分析 (8) 2.2.7 SHL指令分析 (8) 2.2.8 SHR指令分析 (8) 2.2.9 MOVR指令分析 (8) 2.2.10 MOVD指令分析 (9) 2.2.11 LDRR指令分析 (9) 2.2.12 STRR指令分析 (10) 2.2.13 JMP指令分析 (10) 2.2.14 JRC指令分析 (11) 2.2.15 JRZ指令分析 (11) 2.2.16 JRS指令分析 (11) 2.2.17 CLC指令分析 (11) 2.2.18 STC指令分析 (11) 3.部件仿真实验 (11) 3.1 八个通用寄存器设计与仿真 (11) 3.1.1 设计代码 (11) 3.1.2 RTL连接图 (17) 3.1.3 仿真过程 (17) 3.2算术逻辑单元设计与仿真 (18) 3.2.1 设计代码 (18) 3.2.2 RTL连接图 (21) 3.2.3 仿真过程 (22) 4. CPU设计 (23) 4.1取指设计 (23) 4.2指令译码的设计 (25) 4.3执行部分设计 (28) 4.4存储器部分设计 (31) 4.5通用寄存器组设计 (32)

计算机组成原理实验报告二

实验二存储器实验 一、实验目的 熟悉和了解存储器组织与总线组成的数据通路。 二、实验原理 存储器是计算机的存储部件,用于存放程序和数据。存储器是计算机信息存储的核心,是计算机必不可少的部件之一,计算机就是按存放在存储器中的程序自动有序不间断地进行工作。本系统从提高存储器存储信息效率的角度设计数据通路,按现代计算机中最为典型的分段存储理念把存储器组织划分为程序段、数据段等,由此派生了数据总线(DBUS)、指令总线(IBUS)、微总线( BUS)等与现代计算机设计规范相吻合的实验环境。该存储器组织由二片6116构成具有奇偶概念的十六位信息存储体系,该存储体系AddBus由PC指针和AR 指针分时提供,E/M控位为“0”时选通PC,反之选通AR。该存储体系可随机定义总线宽度,动态变更总线结构,把我们的教学实验提高到能与现代计算机设计规范相匹配与接轨的层面。 连线信号孔接入孔作用有效电平 1 DRCK CLOCK 单元手动实验状态的时钟来源下降沿打入 2 W K6(M6) 总线字长:1=16位字操作,0=8位字节操作 3 XP K7(M7) 源部件奇偶标志:1=偶寻址,0=奇寻址 4 X2 K10(M10) 源部件定义译码端X2 三八译码 八中选一5 X1 K9(M9) 源部件定义译码端X1

四、实验过程 1. 存储器数据段读写操作 (1) 数据段写操作(字) 在进行数据存储器字操作时,地址线A0必须为0(偶地址)。向数据段的0000~0005h 存储单元写入11 22 33 44 55 66一串数据,以0000h 地址单元写入数据1122h 为例表述操作流程。 置地址I/O=0000h AR 地址写入(0000h)置数据I/O=1122h 存储器写入(1122h)关存储器写X2 X1 X0=011XP W=11 LDAR(K17)=0 MWR(K21)=1按[单拍] E/M(K23)=1LDAR(K17)=1按[单拍] MWR(K21)=0 (2) 数据段读操作(字) 依次读出数据段0~0005h 单元的内容,这里以0000h 地址单元读出为例阐述操作流程。 置地址I/O=0000h AR 地址写入(0000h)关AR 写使能存储器读出(1122h)数据总线显示存储器值 X2 X1 X0=011XP W=11 LDAR(K17)=0 E/M(K23)=1LDAR(K17)=1按 [单拍] X2 X1 X0=100W=1 2. 存储器程序段读写操作 (1) 程序段字节写操作 计算机规范的取指操作均以字节为单位。所以本实验以字节操作方式展开。程序段写入必须从定义地址入手,然后再进入程序存储器的写入。 PC 指针是带预置加法计数器,因此在输入起始地址后一旦后续地址为PC+1的话就不需重装PC ,用PC+1指令完成下续地址的读写操作。 PC 地址装载写入与PC+1写入流程 置地址I/O=0000h PC 地址写入(0000h)I/O=1234h 12h →[PC]地址增量PC+1关存储器写X2 X1 X0=011XP W=11 E/M(K23)=0LDPC(K22)=0MWR(K21)=1W=0,按[单拍] LDPC(K22)=1MWR(K21)=0 E/M(K23)=1LDPC(K22)=1按[单拍] LDPC(K22)=0MWR(K21)=1XP=0,按[单拍] (2) 程序段字节读操作 PC 地址装载读出及PC+1读出流程 X2 X1 X0=011XP W=11 E/M(K23)=0LDPC(K22)=0X2 X1 X0=100XP=1, W=0 LDPC(K22)=1按[单拍] E/M(K23)=1LDPC(K22)=1按[单拍] 按[单拍] 五、结果分析

计组实验报告--部分

2、设计报告 2、1实验方法 本实验要完成的工作主要包括: 1、指令系统的设计 2、利用VHDL语言完成实验CPU的设计,包括通用寄存器的设计、取值部分设计、指令译 码设计、执行设计、存储器设计、程序包设计和顶层设计设计 3、在Quatus II 平台上进行仿真,并下载到TEC-CA教学实验箱上进行调试。 这三大部分为并行关系,只有在完成上一部分的基础上才能继续进行下一步,而第二大部分可以同时并行进行。 实验的主要流程图为图2.1所示。 图2.1

在指令系统和CPU逻辑设计时,主要的方法是先根据老师给的指令要求,确定CPU所要实现的功能,根据寄存器等的情况划分指令格式,然后根据功能写出指令,根据不同指令的特点将它们分组并确定操作码;接下来设想每条指令的执行过程,需要哪些硬件支持,最后确定整个CPU的逻辑结构图。 2、2总体说明 2.2.1 CPU组成部件 实验CPU由5部分组成:取指部分instru_fetch、指令译码部分decoder_unit、执行部分exe_unit、存储器部分memory_unit和通用寄存器组fegile.另外,还有一个程序包exe_cpu_components,将各底层设计实体作为元件存储,供各设计实体使用。顶层设计实体exe_cpu完成5个组成部分的链接。 GR(8位,4个寄存器),ALU(8位),时序节拍发生器timer,AR(8位),IR(8位),PC(8位)、PC(8位),RAM(8位),组合期间T1,T2,T3。逻辑控制器件controller,地址总线(8位),数据总线(8位)。 2、2、2整机原理实验图

图2.2.1 图2.2.2

计组实验报告2016

电 子 科 技 大 学 实验报告

(一) 一实验名称:8位算术逻辑运算实验 二实验学时:4学时 三实验内容、目的和实验原理: 实验目的: 1. 掌握算术逻辑运算器单元ALU(74LS181)的工作原理。 2. 掌握模型机运算器的数据传送通路组成原理。 3. 验证74LS181的组合功能。 4. 按给定数据,完成实验指导书中的算术/逻辑运算。 实验原理: 1. 运算器由两片74LS181以并/串形式构成8位字长的ALU。 2. 运算器的输出经过一个三态门(74LS245)和数据总线相连。 3. 运算器的两个数据输入端分别由两个锁存器(74LS273)锁存。 4. 锁存器的输入连至数据总线,数据开关(INPUT DEVICE)用来给出参与运算的数据,并经过一三态门(74LS245)和数据总线相连。 5. 数据显示灯(BUS UNIT)已和数据总线相连,用来显示数据总线内容。 四实验器材(设备、元器件) 1. DVCC实验机一台 五实验步骤: 连接线路,仔细检查核对后接通电源。 用二进制数据开关KD0-KD7向DR1和DR2寄存器置入8位运算数据。 检验DR1和DR2置入的数据是否正确。 验证74LS181的算术和逻辑运算功能。 填写实验报告表3-1中的空白数据。

六实验数据及结果分析(包括各种截图:实验过程截图、界面截图、操作截图、运算结果截图): 七实验结论、心得体会和改进建议:

实验结论: 1. S3、S2、S1、S0、M、Cn、LDDR1、LDDR2、ALU-B、SW-B均为电平信号,与"SWITCH UNIT"中的二进制开关对应相接,用于模拟产生电平控制信号。开关状态打上去是高电平,打下来是低电平。 2. 数据开关输入数据时,要打开SW-B,关闭ALU-B 心得体会: 1. 通过这次实验我掌握了算术逻辑运算器单元ALU(74LS181)工作原理。 2. 通过这次实验我掌握了模型机运算器的数据传送通路组成原理。 3. 通过这次实验我验证了74LS181的组合功能。

西电计组实验报告

计算机组成原理 实验报告 班级: **** 学号: ***** 姓名: ** 地点: *** 时间: ***

计算机组成原理与体系结构课程设计实验报告 基本模型机设计与实现 一.实验目的 1.深入理解基本模型计算机的功能、组成知识; 2.深入学习计算机各类典型指令的执行流程; 3.学习微程序控制器的设计过程和相关技术,掌握LPM_ROM 的配置方法。 4.在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机。 5.定义五条机器指令,并编写相应的微程序,上机调试,掌握计算机整机概念。掌握微程序的设计方法,学会编写二进制微指令代码表。 6.通过熟悉较完整的计算机的设计,全面了解并掌握微程序控制方式计算机的设计方法。 二.实验原理 1.在部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本实验将能在微过程控制下自动产生各部件单元控制信号,实现特定的功能。实验中,计算机数据通路的控制将由微过程控制器来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。 2.指令格式 (1)指令格式 采用寄存器直接寻址方式,其格式如下: 其中, 其中IN RAM 中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。

1,存储器读操作(KRD ):下载实验程序后按总清除按键(CLR )后,控制台SWA 、SWB 为“0 0”时,可对RAM 连续手动读入操作。 2,存储器写操作(KWE ):下载实验程序后按总清除按键(CLR )后,控制台SWA 、SWB 为“0 1”时,可对RAM 连续手动写操作。 3、启动程序(RP ):下载实验程序后按总清除按键(CLR )后,控制台SWA 、SWB 为“1 1”时,即可转入到微地址“01”号“取指令”微指令,启动程序运行。 根据以上要求设计数据通路框图,如图5-1所示。 表6-1 24位微代码定义: 表6-2 A 、B 、C 各字段功能说明: 24(1) uA5—uA0:微程序控制器的微地址输出信号,是下一条要执行的微指令的微地址。 (2) S3、S2、Sl 、S0:由微程序控制器输出的ALU 操作选择信号,以控制执行16种算术操作或16种逻辑操作中的某一种操作。 (3) M :微程序控制输出的ALU 操作方式选择信号端。M =0执行算术操作;M =l 执行逻辑操作。 (4)Cn :微程序控制器输出的进位标志信号,Cn =0表示ALU 运算时最低位有进位,Cn =1则表示无进位。 (5)WE :微程序控制器输出的RAM 控制信号。当/CE =0时,如WE =0为存储器读;如WE =1为存储器写。 (6) A9、A8——译码后产生CS0、CS1、CS2信号,分别作为SW_B 、RAM 、LED 的选通控制信号。(7) A 字段(15、14、13)——译码后产生与总线相连接的各单元的输入选通信号(见表6-1)。 (8) B 字段(12、11、10)——译码后产生与总线相连接的各单元的输出选通信号。 (9) C 字段(9、8、7)——译码后产生分支判断测试信号P(1)~P(4)和LDPC 信号。 系统涉及到的微程序流程见图6-2。当执行“取指令”微指令时,该微指令的判断测试字段为P(1)测试。由于“取 图6-1 数据通路框图

计组实验5中断实验

综合实验报告 ( 2013 -- 2014年度第一学期) 名称:计算机组成原理综合实验题目:综合实验 院系:计算机系 班级: 学号: 学生姓名: 指导教师: 设计周数: 成绩: 日期:年月

一、目的与要求 (1)掌握中断在计算机系统中的作用; (2)了解可以响应中断请求的条件和时刻,响应中断的过程和实现方案;理解使用中断隐指令的必要性; (3)了解中断处理的完整过程,开中断、关中断操作的作用,保存现场信息和恢复现场信息必须确保完整完成的含义和可行措施; (4)掌握确定中断向量、设计中断处理程序的操作步骤和实现方法; 二、实验正文 1.实验内容 (1)读懂教材中有关中断的概念、中断响应和中断处理的内容,了解这些功能在教学计算机中是如何体现的; (2)如果所用的教学计算机的基本指令集合中尚未实现中断隐指令、与处理中断有关的EI、DI和IRET三条指令,则需要首先实现中断隐指令和扩展这三 条指令;如果在基本指令集中已经实现了上述内容,则直接跳过这一实验步骤。 (3)确定中断向量表地址。这个向量表是以XXX4为首地址的一段内存区(为每一个中断保留4个字的空间),用于存放对应每一个中断源的中断处理程序 的首地址,要在中断隐指令中把这里的选定的一个地址传送到程序计数器PC中, 之后就进入响应中断处理程序的执行过程。常用的可行方案是在这里保存一条转 移指令,实现依据不同的中断源转移到不同的中断处理程序。教学机设置了3个 中断源并为每个中断源分配了不同的优先级,则3个中断程序入口地址分别为16 进制的XXX4、XXX8和XXXC。 (4)设计对应每一个中断的处理程序,例如显示对应各自中断优先级的一个数字符,重复显示80或160次。 (5)设计一个死循环程序并执行,例如反复显示大写英文字母M。在这个程序运行过程中,通过按用作为中断请求源的3个不同按钮,则屏幕上会显示不 同的字符序列,可以清楚地看到中断嵌套的运行情况。 例如在主程序运行时,屏幕上显示字母M,随时按下哪一个中断源按钮(例如中间位置的一个,对应中断优先级2),会立即进入相应的中断处理过程(屏幕 上显示字符2);在执行某一个级别(例如2级)的中断处理的过程中,当按下更 低级别(例如1级,右面位置的那个)的中断源按钮时,这个中断请求不会得到 响应(屏幕上仍显示字符2,而不是字符1);当按下的是更高级别(例如3级, 左面位置的那个)的中断源按钮时,这个中断请求会立即得到响应(屏幕上将变 为显示字符3,而不再是字符2);当3级中断处理程序执行结束之后(80或160 个字符3显示完成),则会返回到原来尚未完成的2级中断处理过程(屏幕上继续 显示字符2);当2级中断处理程序执行结束之后,则返回主程序,屏幕上又开始 重复显示字母M。

计组实验报告Add8

附页: 1.代码 module Add8(A,B,asc,Cin,en,d,Cout,Af); input en,asc,Cin; Input [7:0] A,B; output Cout,Af; Output [7:0] d; reg Cout,Af; reg [7:0] d; integer i,n,k; always@(A or B or en or Cin or asc ) if(!en) begin end else begin if(!asc) begin n=Cin; k=0; for(i=0;i<8;i=i+1) begin n=A[i]+B[i]+n; k=k+1; if(k==4) begin if(n> 1) begin Af=1; if(n>1)begin d[i]=n-2;n=1;end else begin d[i]=n;n=0;end end else if (n<2) begin Af=0; if(n>1)begin d[i]=n-2;n=1;end else begin d[i]=n;n=0;end end end else begin if(n>1)begin d[i]=n-2;n=1;end else begin d[i]=n;n=0;end end end Cout=n; end else begin n=Cin;k=0; for(i=0;i<8;i=i+1) begin

if(n>=0)begin d[i]=n;n=0;end else if(n==-1)begin d[i]=1;n=1;end else if(n==-2)begin d[i]=0;n=1;end end Cout=n; end endmodule 2.适配结果

计组实验报告

计算机组成原理实验报告一 一、算术逻辑运算器 1. 实验目的与要求: 目的:①掌握算术逻辑运算器单元ALU(74LS181)的工作原理。 ②掌握简单运算器的数据传输通道。 ③验算由74LS181等组合逻辑电路组成的运输功能发生器运输功能。 ④能够按给定数据,完成实验指定的算术/逻辑运算。 要求:完成实验接线和所有练习题操作。 实验前,要求做好实验预习,掌握运算器的数据传送通道和ALU的特性,并熟悉本实验中所用的模拟开关的作用和使用方法。 实验过程中,要认真进行实验操作,仔细思考实验有关的内容,把自己想得不太明白的问题通过实验去理解清楚,争取得到最好的实验结果,达到预期的实验教学目的。 实验完成后,要求每个学生写出实验报告。 2. 实验方案: 1.两片74LS181(每片4位)以并/串联形式构成字长为8为的运算器。 2.8为运算器的输出经过一个输入双向三态门(74LS245)与数据总线相连,运算器的两个数据输入端分别与两个8位寄存器(74LS273)DR1和DR2的输出端相连,DR1和DR2寄存器是用于保存参加运算的数据和运算的结果。寄存器的输入端于数据总线相连。 3.8位数据D7~D0(在“INPUT DEVICE”中)用来产生参与运算的数据,并经过一个输出三态门(74LS245)与数据总线相连。数据显示灯(BUS UNIT)已与数据总线相连,用来显示数据总线上所内容。

4.S3、S2、S1、S0是运算选择控制端,由它们决定运算器执行哪一种运算(16种算术运算或16种逻辑运算)。 5.M是算术/逻辑运算选择,M=0时,执行算术运算,M=1时,执行逻辑运算。 6.Cn是算术运算的进位控制端,Cn=0(低电平),表示有进位,运算时相当于在最低位上加进位1,Cn=1(高电平),表示无进位。逻辑运算与进位无关。 7.ALU-B是输出三态门的控制端,控制运算器的运算结果是否送到数据总线BUS上。低电平有效。 8.SW-B是输入三态门的控制端,控制“INPUT DEVICE”中的8位数据开关D7~D0数据是否送到数据总线BUS上。低电平有效。 9.LDDR1是寄存器DR1存数控制信号,LDDR2是寄存器DR2存数控制信号。它们都是高电平有效。 10.A0~A3是4位数据输入通道A,B0~B3是4位数据输入通道B。 11.F0~F3是运算结果输出端。 3. 实验结果和数据处理: 实验结果记录表: 4. 结论

杭电计组实验报告9

计组实验九 老师:包健 一、源代码 测试模块代码: moduleTest_Top; // Inputs reginclk; regmem_clk; regrst; reg [3:0] SW; // Outputs wire [7:0] LED; // Instantiate the Unit Under Test (UUT) Top uut ( .inclk(inclk), .mem_clk(mem_clk), .rst(rst), .LED(LED), .SW(SW) ); reg [2:0] i; initial begin // Initialize Inputs inclk = 0; mem_clk = 0; rst = 0; SW = 0; i=0; // Wait 100 ns for global reset to finish #100; rst = 1; #100; rst =0 ;

#100; forever begin #100; mem_clk=~mem_clk; i=i+1; if(i==3'b000) inclk=~inclk; end end endmodule 顶层模块代码: moduleMy_I_CPU( inputclk, inputmem_clk, inputrst, output [31:0] ALU_F, output [31:0] M_R_Data, output ZF, output OF ); wireclk_n = ~clk; wire[31:0] codes; Inst_Fetch1 inst_fetch( .rst(rst), .clk(clk), .Inst_codes(codes) ); wire[5:0] OP; wire[5:0] func; wire[2:0] ALU_OP; wirerd_rt_s; wireimm_s; wirert_imm_s; wirealu_mem_s; wireWrite_Reg;

计组实验2报告

Your goal is to modify(修改)your copy of bits.c so that it passes all the tests in btest without violating(违反)any of the coding guidelines.(编码指南) ********* 0. Files: ********* Makefile - Makes btest, fshow, and ishow README - This file bits.c - The file you will be modifying and handing in bits.h - Header file btest.c - The main btest program btest.h - Used to build btest decl.c - Used to build btest tests.c - Used to build btest tests-header.c- Used to build btest dlc* - Rule checking compiler binary (编译器的二进制)(data lab compiler)9实验数据编译器) driver.pl* - Driver program that uses btest and dlc to autograde bits.c Driverhdrs.pm - Header file for optional "Beat the Prof" contest fshow.c - Utility for examining floating-point representations ishow.c - Utility(实用,通用)for examining integer representations *********************************************************** 1. Modifying bits.c and checking it for compliance(服从)with dlc *********************************************************** IMPORTANT: Carefully read the instructions(说明)in the bits.c file before you start. These give the coding rules(编码规则)that you will need to follow if you want full credit(学分). Use the dlc compiler(编译器)(./dlc) to automatically(自动的)check your version(版本)of bits.c for compliance(服从)with the coding guidelines: unix> ./dlc bits.c dlc(数据链路控制)returns silently if there are no problems with your code. Otherwise it prints(打印)messages that flag any problems. Running dlc with the -e switch: unix> ./dlc -e bits.c

计算机组成原理实验报告2

计算机组成原理实验报告

F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO : OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN A9 <= '0' & A ; B9 <= '0' & B ; PROCESS(M,CN,A9,B9) BEGIN CASE S IS WHEN "0000" => IF M='0' THEN F9<=A9 + CN ; ELSE F9<=NOT A9; END IF; WHEN "0001" => IF M='0' THEN F9<=(A9 or B9) + CN ; ELSE F9<=NOT(A9 OR B9); END IF; WHEN "0010" => IF M='0' THEN F9<=(A9 or (NOT B9))+ CN ; ELSE F9<=(NOT A9) AND B9; END IF; WHEN "0011" => IF M='0' THEN F9<= "000000000" - CN ; ELSE F9<="000000000"; END IF; WHEN "0100" => IF M='0' THEN F9<=A9+(A9 AND NOT B9)+ CN ; ELSE F9<=NOT (A9 AND B9); END IF; WHEN "0101" => IF M='0' THEN F9<=(A9 or B9)+(A9 AND NOT B9)+CN ; ELSE F9<=NOT B9; END IF; WHEN "0110" => IF M='0' THEN F9<=(A9 - B9) - CN ; ELSE F9<=A9 XOR B9; END IF; WHEN "0111" => IF M='0' THEN F9<=(A9 or (NOT B9)) - CN ; ELSE F9<=A9 and (NOT B9); END IF; WHEN "1000" => IF M='0' THEN F9<=A9 + (A9 AND B9)+CN ; ELSE F9<=(NOT A9)and B9; END IF; WHEN "1001" => IF M='0' THEN F9<=A9 + B9 + CN ; ELSE F9<=NOT(A9 XOR B9); END IF; WHEN "1010" => IF M='0' THEN F9<=(A9 or(NOT B9))+(A9 AND B9)+CN ; ELSE F9<=B9; END IF; WHEN "1011" => IF M='0' THEN F9<=(A9 AND B9)- CN ; ELSE F9<=A9 AND B9; END IF; WHEN "1100" => IF M='0' THEN F9<=(A9 + A9) + CN ; ELSE F9<= "000000001"; END IF; WHEN "1101" => IF M='0' THEN F9<=(A9 or B9) + A9 + CN ; ELSE F9<=A9 OR (NOT B9); END IF; WHEN "1110" => IF M='0' THEN F9<=((A9 or (NOT B9)) +A9) + CN ; ELSE F9<=A9 OR B9; END IF; WHEN "1111" => IF M='0' THEN F9<=A9 - CN ; ELSE F9<=A9 ; END IF; WHEN OTHERS => F9<= "000000000" ; END CASE; END PROCESS; F<= F9(7 DOWNTO 0) ; CO <= F9(8) ; END behav;

相关主题
文本预览
相关文档 最新文档