第一篇:计算机组成原理实验指导书-CPTH
DJ-CPTH 计算机组成原理实验系统
实验指导
阜阳师范学院计算机与信息学院
2008年3月
目 录
目 录.................................................................................................................1 实验一
认识实验装置...................................................................................2 实验二
寄存器实验.....................................................................................10 实验三
运算器实验.....................................................................................18 实验四
数据输出和移位实验.....................................................................22 实验五
存储器实验.....................................................................................26 实验六
uPC和PC 实验.............................................................................32 实验七
微程序存储器uM实验.................................................................37 实验八
模型机综合实验一.........................................................................39 实验九
模型机综合实验二.........................................................................46 实验十
微程序设计实验.............................................................................55 实验十一
扩展实验.....................................................................................60 附录1:CPTH 集成开发环境使用.............................................................63 附录2:指令/微指令表(insfile1.mic)...........................................................68 附录3:实验用芯片介绍..............................................................................79
实验一
认识实验装置
实验目的:了解实验仪的特点及组成;掌握实验仪键盘的使用。实验器材:DJ-CPTH实验仪 实验要求:
1、认真填写预习报告,包括对实验仪器组成的理解、实验操作步骤等。
2、实验之后写出实验报告,包括实验过程中遇到的问题,解决方法,实验后的心得体会及对该次实验的建议与意见。实验原理及步骤:
一、DJ-CPTH特点
1、采用总线结构
总线结构的计算机具有结构清晰,扩展方便等优点。DJ-CPTH实验系统使用三组总线即地址总线ABUS、数据总线DBUS、指令总线IBUS和控制信号,CPU、主存、外设和管理单片机等部件之间通过外部数据总线传输,CPU内部则通过内部数据总线传输信息。各部件之间,通过三态缓冲器作接口连接,这样一方面增强总线驱动能力,另一方面在模型机停机时,三态门输出浮空,能保证不管模型机的CPU工作是否正常,管理单片机总能读/写主存或控存。
2、计算机功能模块化设计
DJ-CPTH为实验者提供运算器模块ALU,众多寄存器模块(A,W,IA,ST,MAR,R0„R3等),程序计数器模块PC,指令部件模块IR,主存模块EM,微程序控制模块〈控存〉uM,微地址计数器模块UPC,组合逻辑控制模块及I/O等控制模块。各模块间的电源线、地线、地址总线和数据总线等已分别连通,模块内各芯片间数据通路也已连好,各模块的控制信号及必要的输出信号已被引出到主板插孔,供实验者按自己的设计进行连接。
3、智能化控制
系统在单片机监控下,管理模型机运行和读写,当模型机停机时,实验者可通过系统键盘,读写主存或控存指定单元的内容,使模型机实现在线开发。模型机运行时,系统提供单步一条微指令(微单步)、单步一条机器指令(程单步),连续运行程序及无限止暂停等调试手段,能动态跟踪数据,流向、捕捉各种控制信息,实时反映模型机现场,使实验者及时了解程序和微程序设计的正确性,便以修改。
4、提供两种实验模式
①手动运行“Hand„„”:通过拨动开关和发光二极管二进制电平显示,支持最底层的手动操作方式的输入/输出和机器调试。
②自动运行:通过系统键盘及液晶显示器或PC机,直接接输入或编译装载用户程序<机器码程序和微程序>,实现微程序控制运行,运用多种调试手段运行用户程序,使实验者对计算机组成原理一目了然。
5、开放性设计
运算器采用了EDA技术设计,随机出厂时,已提供一套已装载的方案,能进行加、减、与、或、带进位加、带进位减、取反、直通八种运算方式,若用户不满意该套方案,可自行重新设计并通过JTAG 口下载。逻辑控制器由CPLD实现,也可进行重新设计并通过JTAG 口下载。用户还可以设计自己的指令/微指令系统。系统中已带三套指令/微程序系统,用户可参照来设计新的指令/微程序系统。
系统的数据线、地址线、控制线均在总线接口区引出,并设计了40 芯锁进插座,供用户进行RAM、8251、8255、8253、8259等接口器件的扩展实验。
6、支持中断实验
采用最底层的器件设计,让学生可以从微程序层面上学习中断请求、中断响应、中断处理、中断入口地址的产生、中断服务程序及中断返回(RETI)整个过程。
7、支持两种控制器实验
系统提供两种控制器方式,即微程序控制器和组合逻辑控制器。在微程序控制器中,系统能提供在线编程,实时修改程序,显示程序并进行调试的操作环境。组合逻辑控制器,已下载有一套完整的实验方案,用户也可使用CPLD工具在PC机上进行自动化设计。
8、支持子程序调用、返回、指令流水线和RISC精简指令系统实验。
9、配备以Win98/2000/XP为操作平台的集成调试软件包
系统支持RS-232C串行通讯,借助PC资源形成了强大的在线文档与图形的动态管理系统,自带编译器,支持汇编语言的编辑、编译、调试,一次点击即可完成程序和与其对应微程序的链接装载并自动弹出调试窗口,在主界面中开辟了程序和与其对应微程序的调试、模型机结构示意图(点击各模块即可修改双向模块参数)、微程序等跟踪显示窗口,供用户选择,可动态显示数据流向、实时捕捉数据、地址、控制总线的各种信息,使调试过程极为生动形象。
二、实验系统组成
CPTH由实验平台、开关电源、软件三大部分组成。实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器W、直通/左移/右移单元、地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展单元、总线接口区、微动开关/指示灯、逻辑笔、脉冲源、管理单片机、24个按键、字符式LCD、RS232。
CPTH 计算机组成原理实验系统模型机包括了一个标准CPU 所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。其中运算器和中断控制电路以及跳转控制电路用CPLD 来实现,其它电路都是用离散的数字电路组成。微程序控制部分也可以用组合逻辑控制来代替。
模型机为8 位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。相比而言8 位机实验减少了烦琐的连线,但其原理却更容易被学生理解、吸收。
模型机的指令码为8 位,根据指令类型的不同,可以有0 到2 个操作数。指令码的最低两位用来选择R0-R3 寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有24 位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。位控制位分别介绍如下:
XRD :外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。EMWR:程序存储器EM写信号。EMRD:程序存储器EM读信号。
PCOE:将程序计数器PC的值送到地址总线ABUS上。
EMEN:将程序存储器EM 与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。
IREN:将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。EINT:中断返回时清除中断响应和中断请求标志,便于下次中断。ELP:PC打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。MAREN:将数据总线DBUS上数据打入地址寄存器MAR。MAROE:将地址寄存器MAR的值送到地址总线ABUS上。OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。STEN:将数据总线DBUS上数据存入堆栈寄存器ST中。
RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。FEN:将标志位存入ALU内部的标志寄存器。
X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。见下表1。表1:
WEN:将数据总线DBUS的值打入工作寄存器W中。AEN: 将数据总线DBUS的值打入累加器A中。S2、S1、S0三位组合决定ALU做何种运算,见下表2。
表2:
三、实验仪键盘使用
DJ-CPTH计算机组成原理实验仪除了可以连在PC机上调试程序,也可以用实验仪上自带的键盘输入程序及微程序,并可以单步调试程序和微程序,在显示屏上观察、修改各内部寄存器的值,编辑修改程序和微程序存储器。
显示屏的显示内容分四个主菜单:
1、观察和修改内部寄存器;
2、观察和修改程序存储器;
3、观察和修改微程序存储器;
4、手动状态。
四个主菜单用TV/ME 键切换。如下图:
1、观察、修改内部寄存器
内部寄存器的内容分五页显示,用LAST或NEXT键向前或向后翻页,可以显示所有内部寄存器值,输入数字可修改非只读寄存器值。见下图:
2、观察、修改程序存储器内容
显示屏显示如下图,其中“Adr”表示程序存储器地址,“DB”表示该地址中数据。光标初始停在“Adr”处,此时可以用数字键输入想要修改的程序地址,也可以用NEXT 和LAST 键将光标移到“DB”处,输入或修改此地址中的数据。再次按NEXT或LAST键可自动将地址+1 或将地址-1,并可用数字键修改数据。按MON 键可以回到输入地址00的状态。见下图。
3.观察、修改微程序存储器内容
微程序存储器数据的观察、修改与上面程序存储器的观察修改方法相似,不同的是微程序要输入3 个字节,而程序存储器的修改只要输入1 个字节。微程序观察修改的显示屏显示如下图,其中“Adr”表示微程序地址,“MH”表示微程序的高字节,“MM”表示微程序的中字节,“ML”表示微程序的低字节。
使用实验仪键盘可以用三种方法调试程序,程序单步、微程序单步、全速执行。当用键盘调试程序时,显示屏显示寄存器第一页的内容。
[STEP] 为微程序单步执行键,每次按下此键,就执行一个微程序指令,同时显示屏显示微程序计数器、程序计数器、A 寄存器、W 寄存器的值。可以通过NX 或LS 键翻页 观察其它寄存器的值,观察各个寄存器的输出和输入灯的状态。
[SCAL]为程序单步执行键,每次按下此键,就执行一条程序指令,同时显示屏显示微程序计数器、程序计数器、A 寄存器、W 寄存器的值。可以通过NX 或LS 键翻页观察其它寄存器的值。
[EX]为全速执行键,按下此键时,程序就会全速执行,按键盘任一键暂停程序执行,并且显示当前 寄存器的值.
[RG]为中断请求键,按下此键时,会产生一个中断请求信号INT.
[RST]复位键,按下此键,程序中止运行,所有寄存器清零(IR除外),程序指针回到0 地址。
举例:用键盘输入以下程序代码:
1.按TV 键,直到显示屏显示内容为
2.按NX 键,光标移到“DB”下,显示屏为
3.按1,2 两个数字键,显示屏为
4.按NX 键,地址+1,显示屏为
5.按3,4 两个数字键,显示屏为
重复4、5 两步,直到输入所有的程序代码。
在第1 步时,光标停在“Adr”处,可以按数字键0----F 输入要修改的程序存储器的地址,然后再按NEXT 键输入程序代码。如果光标移到“DB”下,而此时又想改变地址,可以按MON 键,将光标移回到“Adr”处,按数字键输入地址。输入微程序代码的方法与此相似,不同的是
程序只需输入两个数字,即一个字节,而微程序要输入6 个数字,即三个字节。如果多于6 个数字会自动从右向左移动光标。如果输入不足6个数字就用NEXT或LAST翻页,则只有被改动的几个数字有效,其它数字不变。
4.用小键盘调试实验一
一:输入机器码 按TV 键选择EM 顺序输入机器码:7C 12 70 74 78 01 C0 C4 输完机器码后按RST 复位 二:单步执行微程序
按RST 复位键后,PC=0,uPC=0 uM输出24 位微程序:CB FF FF 此微指令为取指指令 第一条微指令
按一次STEP键,完成一个时钟,此时: PC值为01(时钟上升沿PC+1)IR 值为7C,uPC值为7C(指令码)uM 输出为:C7 FF F7(EM 值送A)第二条微指令
按一次STEP键,完成一个时钟,此时: PC值为02(时钟上升沿PC+1)A值为12 uPC值为7D(时钟上升沿uPC+1)uM 输出为:CB FF FF(取指指令)第三条微指令
按一次STEP键,完成一个时钟,此时: PC值为03(时钟上升沿PC+1)IR 值为70,uPC值为70(指令码)uM 输出为:FF F7 F7(R?值送A)第四条微指令
按一次STEP键,完成一个时钟,此时: PC值为03(时钟上升沿PC+1)
A值为00 uPC值为71(时钟上升沿uPC+1)uM 输出为:CB FF FF(取指指令)第五条微指令
按一次STEP键,完成一个时钟,此时: PC值为04(时钟上升沿PC+1)IR 值为74,uPC值为74(指令码)uM 输出为:FF 77 FF(R?值送MAR)第六条微指令
按一次STEP键,完成一个时钟,此时: MAR 值为00 uPC值为75(时钟上升沿uPC+1)uM 输出为:D7 BF F7(EM 值送A)第七条微指令
按一次STEP键,完成一个时钟,此时: A值为7C uPC值为76 uM 输出为:CB FF FF(取指)
用同样的方法执行余下的指令。也可以用SCAL 或EX 键执行指令。
在做分部模块实验时,实验仪键盘0...F,NX,LS不起作用,显示屏显示内容为8 芯电缆的连接方式。例如显示屏显示内容如下:表示手动方式,J1 通过8 芯电缆接到J3,或J2 通过8 芯电缆接到J3。
实验二
寄存器实验
实验目的:了解模型机中各种寄存器结构、工作原理及其控制方法。实验器材:DJ-CPTH实验仪
实验要求:
1、认真预习实验指导相关内容,填写预习报告,包括实验用的全部数据、实验操作步骤等。
2、实验之后认真填写实验报告,包括画出实验接线图,记录和整理实验过程、结果及现象,并对结果进行分析和讨论,记录实验过程中遇到的问题及其解决方法,总结本次实验的收获和体会以及对该次实验的建议。
实验原理及步骤:利用CPTH 实验仪上的K16..K23 开关做为DBUS 的数据,其它开关做为控制信号,将数据写入寄存器,这些寄存器包括累加器A,工作寄存器W,数据寄存器组R0..R3,地址寄存器MAR,堆栈寄存器ST,输出寄存器OUT。
寄存器的作用是用于保存数据的,因为我们的模型机是8位的,因此在本模型机中大部寄存器是8 位的,标志位寄存器(Cy, Z)是二位的。
CPTH 用74HC574 来构成寄存器。74HC574 的功能如下:
1.在CLK的上升沿将输入端的数据打入到8 个触发器中
2.当OC = 1 时触发器的输出被关闭,当OC=0 时触发器的输出数据
74HC574工作波形图
任务1:R0,R1,R2,R3 寄存器实验
寄存器R 原理图
寄存器R 写工作波形图
连接线表:
系统清零和手动状态设定:K23-K16开关置零,按[RST]钮,按[TV/ME]键三次,进入“Hand......”手动状态。
在后面实验中实验模式为手动的操作方法不再详述.
将11H写入R0寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据11H
置控制信号为:
按住STEP 脉冲键,CK 由高变低,这时寄存器R0 的黄色选择指示灯亮,表明选择R0 寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据11H 被写入R0 寄存器。
将22H写入R1寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据22H
置控制信号为:
按住STEP 脉冲键,CK 由高变低,这时寄存器R1 的黄色选择指示灯亮,表明选择R1 寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据22H被写入R1 寄存器。
将33H写入R2寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据33H
置控制信号为:
按住STEP 脉冲键,CK 由高变低,这时寄存器R2 的黄色选择指示灯亮,表明选择R2 寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据33H被写入R2 寄存器。
将44H写入R3寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据44H
置控制信号为:
按住STEP 脉冲键,CK 由高变低,这时寄存器R3 的黄色选择指示灯亮,表明选择R3 寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据44H被写入R3 寄存器。注意观察:
1.数据是在放开STEP键后改变的,也就是CK的上升沿数据被打入。
2.K1(SB),K0(SA)用于选择寄存器。
寄存器R读工作波形图
读R0寄存器 置控制信号为:
这时寄存器R0 的红色输出指示灯亮,R0 寄存器的数据送上数据总线。此时数据总线指示灯L7...L0为:00010001,将K11(RRD)置为1,关闭R0 寄存器输出。
读R1寄存器 置控制信号为:
这时寄存器R1 的红色输出指示灯亮,R1 寄存器的数据送上数据总线。此时数据总线指示灯L7...L0为: 00100010.将K11(RRD)置为1,关闭R1 寄存器输出。
读R2寄存器 置控制信号为:
这时寄存器R2 的红色输出指示灯亮,R2 寄存器的数据送上数据总线。此时数据总线指示灯L7...L0为: 00110011.将K11(RRD)置为1,关闭R2 寄存器输出。
读R3寄存器
置控制信号为:
这时寄存器R3 的红色输出指示灯亮,R3 寄存器的数据送上数据总线。此时数据总线指示灯L7...L0为: 01000100.将K11(RRD)置为1,关闭R3 寄存器输出。注意观察:
数据在K11(RRD)为0 时输出,不是沿触发,与数据打入不同。
任务2:MAR 地址寄存器,ST 堆栈寄存器,OUT输出寄存器
寄存器MAR原理图
寄存器ST 原理图
寄存器OUT原理图
寄存器MAR,ST,OUT写工作波形图
连接线:
系统清零和手动状态设定:K23-K16开关置零,按[RST]钮,按[TV/ME]键三次,进入“Hand......”手动状态,即实验模式为手动的操作方法。
将12H写入MAR寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据12H
置控制信号为:
按住STEP脉冲键,CK由高变低,这时寄存器MAR的黄色选择指示灯亮,表明选择MAR寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据12H被写入MAR寄存器。K14(MAROE)为0,MAR寄存器中的地址输出,MAR 红色输出指示灯亮。将K14(MAROE)置为1,关闭MAR输出。
将34H写入ST寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据34H
置控制信号为:
按住STEP 脉冲键,CK 由高变低,这时寄存器ST 的黄色选择指示灯亮,表明选择ST 寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据34H被写入ST 寄存器。
将56H写入OUT寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据56H
置控制信号为:
按住STEP 脉冲键,CK 由高变低,这时寄存器OUT 的黄色选择指示灯亮,表明选择OUT 寄存器。放开STEP 键,CK 由低变高,产生一个上升沿,数据56H 被写入OUT寄存器。
实验三
运算器实验
实验目的:理解将数据写累加器A和工作寄存器W,掌握模型机中算术、逻辑运算单元的控制方法。
实验要求:
1、认真填写预习报告,包括实验用的全部数据、实验操作步骤等。
2、实验之后认真填写实验报告,包括画出实验接线图,记录和整理实验过程、结果及现象,并对结果进行分析和讨论,记录实验过程中遇到的问题及其解决方法,总结本次实验的收获和体会以及对该次实验的建议。
实验器材:DJ-CPTH实验仪
实验原理及步骤:利用CPTH 实验仪的K16..K23 开关做为DBUS 数据,其它开关做为控制信号,将数据写累加器A和工作寄存器W,并用开关控制ALU的运算方式,实现运算器的功能。任务1:A,W 寄存器实验
寄存器A原理图
寄存器W 原理图
寄存器A,W 写工作波形图
连接线表:
系统清零和手动状态设定:K23-K16开关置零,按[RST]钮,按[TV/ME]键三次,进入“Hand......”手动状态。
将55H写入A寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据55H
置控制信号为:
按住STEP脉冲键,CK由高变低,这时寄存器A的黄色选择指示灯亮,表明选择A寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据55H被写入A寄存器。
将66H写入W寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据66H
置控制信号为:
按住STEP脉冲键,CK由高变低,这时寄存器W 的黄色选择指示灯亮,表明选择W寄存器。放开STEP 键,CK 由低变高,产生一个上升沿,数据66H 被写入W 寄存器。
注意观察:
1.数据是在放开STEP键后改变的,也就是CK的上升沿数据被打入。
2.WEN,AEN为高时,即使CK有上升沿,寄存器的数据也不会改变。
任务2:CPTH 中的运算器由一片CPLD实现,有8 种运算,通过S2,S1,S0 来选择,运算数据由寄存器A及寄存器W 给出,运算结果输出到直通门D。
连接线表
1.将55H写入A寄存器 2.将33H写入W寄存器
3.置下表的控制信号,检验运算器的运算结果
注意观察:
运算器在加上控制信号及数据(A,W)后,立刻给出结果,不须时钟。
实验四
数据输出和移位实验
实验目的:
1、理解模型机中多寄存器接数据总线的实现原理。
2、理解运算器中移位功能的实现方法。
实验要求:
1、认真填写预习报告,包括实验用的全部数据、实验操作步骤等。
2、实验之后认真填写实验报告,包括画出实验接线图,记录和整理实验过程、结果及现象,并对结果进行分析和讨论,记录实验过程中遇到的问题及其解决方法,总结本次实验的收获和体会以及对该次实验的建议。
实验器材:DJ-CPTH实验仪
实验原理及步骤:利用CPTH 实验仪的开关做为控制信号,将指定寄存器的内容读到数据总线DBUS上。CPTH 中有7 个寄存器可以向数据总线输出数据,但在某一特定时刻只能有一个寄存器输出数据,由X2,X1,X0决定那一个寄存器输出数据。
数据输出选择器原理图
连接线表:
任务1:数据输出实验
置下表的控制信号,检验输出结果
任务2:移位实验
ALU直接输出和零标志位产生原理图
ALU左移输出原理图
ALU右移输出原理图
直通门将运算器的结果不移位送总线。当X2X1X0=100 时运算器结果通过直通门送到数据总线。同时,直通门上还有判0 电路,当运算器的结果为全0 时,Z=1,右移门将运算器的结果右移一位送总线。当X2X1X0=101 时运算器结果通过右通门送到数据总线。具体内部连接是: Cy 与 CN →DBUS7
ALU7→DBUS6
ALU6→DBUS5
ALU5→DBUS4
ALU4 → DBUS3
ALU3 → DBUS2
ALU2 → DBUS1
ALU1 → DBUS0 Cy 与 CN → DBUS7 当不带进位移位时(CN=0):
0 →DBUS7 当带进位移位时(CN=1):
Cy →DBUS7
左移门将运算器的结果左移一位送总线。当X2X1X0=110 时运算器结果通过左通门送到数据总线。具体连线是:
ALU6 →DBUS7
ALU5→ DBUS6 ALU4→ DBUS5 ALU3→ DBUS4 ALU2→ DBUS3 ALU1→ DBUS2 ALU0→ DBUS1 当不带进位移位时(CN=0):
0 → DBUS0 当带进位移位时(CN=1):
Cy→
DBUS0
将55H写入A寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据55H
置控制信号为:
按住STEP脉冲键,CK由高变低,这时寄存器A的黄色选择指示灯亮,表明选择A寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据55H被写入A寄存器。
S2S1S0=111 时运算器结果为寄存器A内容
注意观察:
移位与输出门是否打开无关,无论运算器结果如何,移位门都会给出移位结果。但究竟把哪一个结果送数据总线由X2X1X0输出选择决定。
实验五
存储器实验
实验目的:了解模型机中程序存储器EM 的工作原理及控制方法。
实验要求:
1、认真预习实验指导相关内容,填写预习报告,包括实验用的全部数据、实验操作步骤等。
2、实验之后认真填写实验报告,包括画出实验接线图,记录和整理实验过程、结果及现象,并对结果进行分析和讨论,记录实验过程中遇到的问题及其解决方法,总结本次实验的收获和体会以及对该次实验的建议。
实验器材:DJ-CPTH实验仪
实验原理及步骤:利用CPTH 实验仪上的K16..K23 开关做为DBUS 的数据,其它开关做为控制信号,实现程序存储器EM 的读写操作。
存储器EM 由一片6116RAM 构成,是用户存放程序和数据的地方。存储器EM 通过一片74HC245 与数据总线相连。存储器EM 的地址可选择由PC或MAR 提供。
存储器EM 的数据输出直接接到指令总线IBUS,指令总线IBUS 的数据还可以来自一片74HC245。当ICOE 为0 时,这片74HC245 输出中断指令B8。
EM原理图
连接线表:
系统清零和手动状态设定:K23-K16开关置零,按[RST]钮,按[TV/ME]键三次,进入“Hand......”手动状态,即实验模式为手动的操作方法。
任务1:PC/MAR 输出地址选择
置控制信号为:
以下存贮器EM实验均由MAR提供地址
任务2:存储器EM 写实验 1.将地址0 写入MAR 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据00H
置控制信号为:
按STEP键, 将地址0 写入MAR
将数据11H写入EM[0]
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据11H
置控制信号为:
按STEP键, 将数据11H写入EM[0]
2.将地址1 写入MAR 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据01H
置控制信号为:
按STEP键, 将地址1 写入MAR
将数据22H写入EM[1] 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据22H
置控制信号为:
按STEP键,将数据22H写入EM[1]
任务3:存储器EM 读实验 1.将地址0 写入MAR 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据00H 28
置控制信号为:
按STEP键, 将地址0 写入MAR
读EM[0] 置控制信号为:
EM[0]被读出:11H
2.将地址1写入MAR 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据01H
置控制信号为:
按STEP键,将地址0写入MAR
读EM[1] 置控制信号为:
EM[1]被读出:22H
任务4:存储器打入IR指令寄存器/uPC实验 1.将地址0写入MAR 29
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据00H
置控制信号为:
按STEP键,将地址0写入MAR
读EM[0],写入IR及uPC 置控制信号为:
EM[0]被读出:11H 按STEP键,将EM[0]写入IR及uPC,IR=11H,uPC=10H
2.将地址1写入MAR 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据01H
置控制信号为:
按STEP键,将地址1写入MAR
读EM[1],写入IR及uPC 置控制信号为:
EM[1]被读出:22H 按STEP键,将地址EM[1]写入IR及uPC,IR=22H,uPC=20H
任务5:使用实验仪小键盘输入EM
1.连接J1,J2
2.打开电源
3.按TV/ME键,选择EM
4.输入两位地址,00
5.按NEXT,进入程序修改
6.按两位程序数据
7.按NEXT选择下个地址/按LAST选择上个地址
8.重复6,7 步输入程序
9.按RST结束
实验六
uPC和PC 实验
实验目的:
1、了解模型机中微程序的基本概念。
2、理解模型机中微程序计数器uPC和程序计数器PC的结构、工作原理及其控制方法。
3、了解程序执行过程中顺序和跳转指令的实现方法。
实验要求:
1、认真预习实验指导相关内容,填写预习报告,包括实验用的全部数据、实验操作步骤等。
2、实验之后认真填写实验报告,包括画出实验接线图,记录和整理实验过程、结果及现象,并对结果进行分析和讨论,记录实验过程中遇到的问题及其解决方法,总结本次实验的收获和体会以及对该次实验的建议。
实验器材:DJ-CPTH实验仪
实验原理及步骤:利用CPTH实验仪上的K16..K23 开关做为DBUS的数据,其它开关做为控制信号,实现微程序计数器uPC和程序计数器PC的写入和加1功能。任务1:uPC实验
74HC161 是一片带预置的4 位二进制记数器。功能如下: 当RST = 0 时,记数器被清0 当IREN = 0 时,在CK的上升沿,预置数据被打入记数器 当IREN = 1 时,在CK的上升沿,记数器加一 TC为进位,当记数到F(1111)时,TC=1 CEP,CET 为记数使能,当CEP,CET=1 时,记数器工作,CEP,CET=0 时,记数器保持原记数值。
uPC原理图
uPC工作波形图
在CPTH 中,指令IBUS[7:0]的高六位被接到uPC 预置的高六位,uPC 预置的低两位被置为0。一条指令最多可有四条微指令。
微程序初始地址为复位地址00,微程序入口地址由指令码产生,微程序下一地址有计数器产生。
连接线表:
系统清零和手动状态设定:K23-K16开关置零,按[RST]钮,按[TV/ME]键三次,进入“Hand......”手动状态,即实验模式为手动的操作方法。
1.uPC 加一实验 置控制信号为:
按一次STEP脉冲键,CK产生一个上升沿,数据uPC 被加一。
2.uPC 打入实验
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据12H
置控制信号为:
当EMWR,EMEN=0时,数据总线(DBUS)上的数据被送到指令总线(IBUS)上。按住STEP脉冲键,CK由高变低,这时寄存器uPC的黄色预置指示灯亮,表明uPC被预置。放开STEP键,CK由低变高,产生一个上升沿,数据10H被写入uPC寄存器。
任务2: PC实验
PC 是由两片74HC161构成的八位带预置记数器,预置数据来自数据总线。记数器的输出通过74HC245(PCOE)送到地址总线。PC 值还可以通过74HC245(PCOE_D)送回数据总线。
PC 原理图
在CPTH 中,PC+1 由PCOE 取反产生。当RST = 0 时,PC 记数器被清0 当LDPC = 0 时,在CK的上升沿,预置数据被打入PC记数器 当PC+1 = 1 时,在CK的上升沿,PC记数器加一 当PCOE = 0 时,PC值送地址总线
PC打入控制原理图
PC 打入控制电路由一片74HC151 八选一构成(isp1016实现)。
当ELP=1 时,LDPC=1,不允许PC被预置 当ELP=0 时,LDPC 由IR3,IR2,Cy,Z确定 当IR3 IR2 = 1 X 时,LDPC=0,PC 被预置
当IR3 IR2 = 0 0 时,LDPC=非Cy,当Cy=1时,PC 被预置 当IR3 IR2 = 0 1 时,LDPC=非Z,当Z=1 时,PC 被预置 连接线表:
1.PC 加一实验 置控制信号为:
按一次STEP脉冲键,CK产生一个上升沿,数据PC 被加一。
2.PC 打入实验
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据12H
置控制信号为:
每置控制信号后,按一下STEP键,观察PC的变化。
实验七
微程序存储器uM实验
实验目的:
1、理解微程序控制方式模型机的基本工作原理。
2、理解微程序存储器uM的控制方法。
实验要求:
1、认真预习实验指导相关内容,填写预习报告,包括实验用的全部数据、实验操作步骤等。
2、实验之后认真填写实验报告,包括画出实验接线图,记录和整理实验过程、结果及现象,并对结果进行分析和讨论,记录实验过程中遇到的问题及其解决方法,总结本次实验的收获和体会以及对该次实验的建议。
实验器材:DJ-CPTH实验仪
实验原理及步骤:利用CPTH 实验仪上的开关做为控制信号,实现微程序存储器uM 的输出功能。
存储器uM 由三片6116RAM 构成,共24 位微指令,采用水平型微指令格式。存储器的地址由uPC 提供,片选及读信号恒为低,写信号恒为高。存储器uM 始终输出uPC 指定地址单元的数据。
uM原理图
连接线表
系统清零和手动状态设定:K23-K16开关置零,按[RST]钮,按[TV/ME]键三次,进入“Hand......”手动状态,即实验模式为手动的操作方法。
任务1:微程序存储器uM 读出 置控制信号为:K0为1 uM 输出uM[0]的数据
按一次STEP脉冲键,CK产生一个上升沿,数据uPC 被加一。uM 输出uM[1]的数据
按一次STEP脉冲键,CK产生一个上升沿,数据uPC 被加一。uM 输出uM[2]的数据
任务2:使用实验仪小键盘输入uM
1.连接J1, J2
2.打开电源
3.按TV/ME键, 选择uM
4.输入两位地址, 00
5.按NEXT, 进入微程序修改
6.按六位微程序数据
7.按NEXT选择下个地址/按LAST选择上个地址
8.重复6,7 步输入微程序
9.按RST结束
实验八
模型机综合实验一
实验目的:
1、了解模型机的寻址方式、指令集和微指令集;
2、熟悉CPTH集成开发环境的使用;
3、在微程序控制方式下,通过数据传送、输入输出指令的执行,理解相关部件的工作原理。
实验要求:
1、认真预习实验指导相关内容,填写预习报告,包括实验用的全部数据、实验操作步骤等。
2、实验之后填写实验报告,实验报告中要认真总结分析实验中的各种现象,特别要把单微指令方式下的调试过程写清楚,也包括实验过程中遇到的问题、解决方法,实验后的心得体会及对该次实验的建议与意见。
实验器材:DJ-CPTH实验仪、PC机 实验原理及步骤:
在综合实验中,模型机作为一个整体来工作的,所有微程序的控制信号由微程序存储器uM 输出,而不是由开关输出。在做综合实验之前,先用8 芯电缆连接J1 和J2,使系统处于非手动状态,这样实验仪的监控系统会自动打开uM的输出允许,微程序的各控制信号就会接到各寄存器、运算器的控制端口。此综合实验(1~7)使用的指令是模型机的缺省指令系统,系统自动默认装入缺省指令系统/非流水微指令系统文件:insfile1.mic。
在做综合实验时,可以用CPTH计算机组成原理实验软件输入、修改程序,汇编成机器码并下载到实验仪上,由软件控制程序实现单指令执行、单微指令执行、全速执行,并可以在软件上观察指令或微指令执行过程中数据的走向、各控制信号的状态、各寄存器的值。CPTH 软件的使用方法见附录1“CPTH 集成开发环境使用”。也可以用实验仪自带的小键盘和显示屏来输入、修改程序,用键盘控制单指令或单微指令执行,用LED 或用显示屏观察各寄存器的值。实验仪上的键盘使用方法见实验一“实验仪键盘使用”一节。
在用微程序控制方式做综合实验时,在给实验仪通电前,拔掉实验仪上所有的手工连接的接线,再用8 芯电缆连接J1 和J2,控制方式开关KC拨到“微程序”控制方向。若想用CPTH软件控制组成原理实验仪,就要启动软件,并用快捷图标的“连接通信口”功能打开设置窗口,选择实验仪连接的串行口,然后再点击“OK”按钮接通到实验仪。
任务1:模型机的寻址方式、指令集和微指令集
1、模型机寻址方式
模型机的寻址方式分五种:
累加器寻址:操作数为累加器A,例如“CPL A”是将累加器A 值取反,还有些指令是隐含寻址累加器A,例如“OUT”是将累加器A的值输出到输出端口寄存器OUT。
寄存器寻址:参与运算的数据在R0-R3 的寄存器中,例如 “ADD A,R0”指令是将寄存器R0 的值加上累加器A的值,再存入累加器A中。
寄存器间接寻址:参与运算的数据在存储器EM 中,数据的地址在寄存器R0-R3中,如 “MOV A,@R1”指令是将寄存器R1 的值做为地址,把存储器EM 中该地址的内容送入累加器A中。
存储器直接寻址:参与运算的数据在存储器EM 中,数据的地址为指令的操作数。例如“AND A,40H”指令是将存储器EM 中40H 单元的数据与累加器A的值做逻辑与运算,结果存入累加器A。
立即数寻址:参与运算的数据为指令的操作数。例如 “SUB A,#10H”是从累加器A中减去立即数10H,结果存入累加器A。
2、模型机指令集
模型机的缺省的指令集分几大类: 算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。
3、模型机微指令集
指令/微指令表(insfile1.mic)见附录2
任务2:数据传送实验/输入输出实验
1.在CPTH 软件中的源程序窗口输入下列程序
2.将程序另存为EX1.ASM,将程序汇编成机器码,调试窗口会显示出程序地址、机器码、反汇编指令。
3.按快捷图标的F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC 及uPC 如何工作。(见EX1.ASM程序跟踪结果)EX1.ASM程序跟踪结果:
每个程序的一开始的第一条微指令一定是取指令,此微指令的值为0CBFFFFH,对应到各个控制位就是EMRD、PCOE、及IREN为低,此三位有效,其它所有位都处于无效状态。在程序第一次运行时或复位后,uPC和PC的值都为0,PCOE有效将PC值送到ABUS,做为程序存储器EM的地址,EMRD信号有效就是从程序存储器EM中读出程序指令,IREN将读出的指令送到IR寄存器和uPC,此微指令的作用就是:从程序存储器EM的0地址读出程序指令机器码7CH,并存入uPC中做为微程序存储器uM的地址,从微程序存储器uM的7CH单元中读出微控制码0C7FFF7H,同时PC加1为读下一条指令或数据做准备。
MOV A,#12: 本指令为两个状态周期。在T1状态时,上次读出的指令机器码为7CH,存入uPC中做为微程序存储器uM的地址,读出微指令的值为0C7FFF7H,对应到各个控制位就是EMRDPCOE、EMEN及AEN为低,处于有效状态,其它控制位为无效状态。由于上条微指令(取指操作)已将PC加1,此时PCOE是将加1后的PC输出到ABUS做为程序存储器EM的地址,EMRD就是从程序存储EM中读出数据,本指令中读出的数据应为12H,EMEN将读出的数据送到DBUS总线上,AEN 是将DBUS总线上的值存入累加器A中。同时uPC加1为执行下条微指令做准备,PC加1为读取下一条指令做准备。每条指令的最后一条微指令一定是取指令操作,本指令的T0状态周期即为取指令,执行上一条微指令时uPC已经加1,按照此uPC为地址从微程序存储器uM读出的微指令的值为0CBFFFFH,参照第步的说明,此微指令从程序存储器EM中读取指令。
MOV A,R0: 本指令为两个状态周期。在T1状态时,由上条取指操作取出的指令机器码为70H,存入uPC后做为微程序地址访问微程序存储器uM的70H单元,读出微指令的值为0FFF7F7,各控制位的状态为RRD、AEN为低电平为有效状态,RRD有效表示从寄存器组R0-R3中读数送到DBUS上,在上条取指令操作时,IREN将取出的指令机器码70H送入IR寄存器,而IR寄存器的最低两位是用来选择寄存器R?的,此时IR寄存器最低两位为00,被读出的寄存器为R0。AEN有效表示将DBUS的数据写到累加器A中。同时uPC加1,为执行下条微指令做
准备。本指令的T0状态也是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。
MOV A,@R0: 本指令为三个状态周期。在T2状态时,由上个取指操作读出的指令机器码为74H,打入uPC后,从微程序存储器74H单元读出的微指令的值为0FF77FFH,有效的控制位为MAREN和RRD,RRD有效表示从寄存器组R0-R3中读出数据送到DBUS,MAREN有效表示将数据从DBUS总线上打入地址寄存器MAR。uPC加1取出下条微指令执行。在T1状态时,由uPC做为微程序存储器址,从uM的75H单元中读出微指令的值为0D7BFF7H,其中有效的控制位为EMRD、EMEN、MAROE和AEN。MAROE表示程序存储器EM的地址由地址寄存器MAR输出,EMRD表示从程序存储器EM中读出数据,EMEN表示读出的数据送到地址总线DBUS上,AEN有效表示将数据总线DBUS上的值存入累加器A中。此状态下uPC要加1,为取下条微指令做准备。本指令的T0状态执行的是取指操作。取指操作详细描述见程序开始部分的取指令的说明。
MOV A,01: 本指令为三个状态周期。在T2状态时,由上条取指操作取出的指令机器码为78H,存入uPC和IR寄存器后做为微程序存储器uM的地址,读出微指令的值为0C77FFFH,相应的有效控制位为EMRD、PCOE、EMEN和MAREN,PCOE有效表示将PC值做为程序存储器EM的地址,EMRD表示从程序存储器中读出数据,在本指令中此数据值为01H,EMEN表示将读出的数据送到DBUS总线,MAREN表示将DBUS总线上的数据打入地址寄存器MAR。uPC同时加1,取出下条微指令准备执行。在T1状态时,由uPC做为微程序存储器地址,从uM的79H单元中读出微指令的值为0D7BFF7H,可以参见上条指令的T1状态,此微指令的所完成的功能是,以MAR的值做为程序存储器的地址,读出数据并送到数据总线DBUS,同时将此数据存入累加器A中。uPC加1取出下条微指令准备执行。在T0状态,微指令执行取指令操作。
IN: 本指令分两个状态周期。在T1状态时,由上次取指操作取出的指令机器码为0C0H,以此做为微地址从uM中取出的微指令值为0FFFF17H,有效控制位为AEN、X2X1X0=000,因为X2、X1、X0为低,被选中的寄存器为输入端口IN,也就是说,输入端口IN上的数据被允许送到数据总线DBUS上,AEN有效表示将此数据打入累加器A中。同时uPC加1取出下条微指令准备执行。在T0状态,微指令执行的是取指令操作,取出下条指令准备执行。
OUT: 本指令分两个状态周期。在T1状态,由上次取出的指令机器码为0C4H,以此为微地址从微程序存储器uM中读出的微指令为0FFDF9FH,有效控制位为OUTEN、X2X1X0=100(二进制),S2S1S0=111(二进制),S2S1S0=111表示运算器做“ALU直通”运算,也就是累加器不做任何运算,直接输出结果,而X2X1X0=100表示运算器的结果不移位直接输出到数据总线DBUS,OUTEN有效表示将数据总线上的数据打入输出端口寄存器OUT内。uPC加1,取出下条微指令准备执行。在T0状态,微指令执行的是取指操作,取出下条将要执行的指令。
实验九
模型机综合实验二
实验目的:
1、了解模型机的寻址方式、指令集和微指令集;
2、在微程序控制方式下,通过数据运算、移位、取反、转移、调用等指令的执行,理解相关部件的工作原理。
实验要求:
1、认真预习实验指导相关内容,填写预习报告,包括实验用的全部数据、实验操作步骤等。
2、实验之后填写实验报告,实验报告中要认真总结分析实验中的各种现象,特别要把单微指令方式下的调试过程写清楚,也包括实验过程中遇到的问题、解决方法,实验后的心得体会及对该次实验的建议与意见。
实验器材:DJ-CPTH实验仪、PC机 实验原理及步骤:
在综合实验中,模型机作为一个整体来工作的,所有微程序的控制信号由微程序存储器uM 输出,而不是由开关输出。在做综合实验之前,先用8 芯电缆连接J1 和J2,使系统处于非手动状态,这样实验仪的监控系统会自动打开uM的输出允许,微程序的各控制信号就会接到各寄存器、运算器的控制端口。此综合实验(1~7)使用的指令是模型机的缺省指令系统,系统自动默认装入缺省指令系统/非流水微指令系统文件:insfile1.mic。
在做综合实验时,可以用CPTH计算机组成原理实验软件输入、修改程序,汇编成机器码并下载到实验仪上,由软件控制程序实现单指令执行、单微指令执行、全速执行,并可以在软件上观察指令或微指令执行过程中数据的走向、各控制信号的状态、各寄存器的值。CPTH 软件的使用方法见附录1“CPTH 集成开发环境使用”。也可以用实验仪自带的小键盘和显示屏来输入、修改程序,用键盘控制单指令或单微指令执行,用LED 或用显示屏观察各寄存器的值。实验仪上的键盘使用方法见实验一“实验仪键盘使用”。
在用微程序控制方式做综合实验时,在给实验仪通电前,拔掉实验仪上所有的手工连接的接线,再用8 芯电缆连接J1 和J2,控制方式开关KC拨到“微程序控制”方向。若想用CPTH软件控制组成原理实验仪,就要启动软件,并用快捷图标的“连接通信口”功能打开设置窗口,选择实验仪连接的串行口,然后再点击“OK”按钮接通到实验仪。
任务1:数据运算实验(加/减/与/或)
1.在CPTH 软件中的源程序窗口输入下列程序
2.将程序另存为EX2.ASM,将程序汇编成机器码,调试窗口会显示出程序地址、机器码、反汇编指令。
3.按快捷图标的F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。(见“EX2.ASM程序跟踪结果”详细介绍)4.在了解数据运算的原理,可以加上一些数据传输指令给累加器A或寄存器R?赋值,再运算,并观察运算结果。
EX2.ASM程序跟踪结果:
程序的开始执行一条取指的微指令,读入程序第一条指令。
ADDC A,R1:本指令为三个状态周期。在T2状态,由上次取指操作取出的指令码为21H,由IREN存入指令寄存器IR,最低两位为01(二进制),选择寄存器R1,指令码由于IREN打入uPC时,忽略掉指令的最低两位,而将uPC的最低两位置成00,uPC的值为20H,访问微程序存储器的20H单元,读出微指令值为0FFF7EFH,有效位为RRD及WEN,就是将R1内容送到工作寄存器W,uPC加1取出下条微指令在T1状态,读出的微指令值为0FFFE94H,有效位为FEN和AEN,FEN完成的操作是将标志位存入标志寄存器F(ALU内部),X2X1X0选择“ALU直通”到数据总线DBUS,S2S1S0选择的运算操作为“带进位的加法运算”,AEN将DBUS上的数据存入累加器A。在T0状态,取出下条将要执行的指令。
SUB A,@R1:本指令有四个状态周期。在T3状态,上次取出的指令码为35H,最低两位用于寻址R1寄存器,uPC的最低两位置0,来访问uM的34H单元的微指令,读出值为0FF77FFH,将R1的值存入MAR。在T2状态,微指令为0D7BFEFH,表示用MAR做为地址从EM中读出
数据送到DBUS再存到W中。在T1状态微指令为0FFFE91H,表示ALU做“减运算”,其结果直通到DBUS,再存入中,同时保存标志位。T0状态为取指操作。
AND A,#55: 本指令为三个状态周期。在T2状态,微指令值为0C7FFEFH,表示以PC做为地址,从EM中读出数据送到DBUS,再将DBUS数据存W中。在T1状态,微指令为0FFFE93H,表示A和W做“逻辑与”运算,结果直通到DBUS,再存入A中,并保存标志位。OR A,02:本指令有四个状态周期。在T3状态,微指令为0C77FFFH,表示以PC做为地址,从EM中读出数据送到DBUS,并存MAR中。在T2状态,微指令为0D7BFEFH,表示以MAR做为地址,从EM中读出数据送到DBUS,并存入W中。在T1状态微指令为0FFFE92H,表示A和W做“逻辑或”运算,结果“直通”到DBUS并存入A中。T0状态为取指操作。
任务2:移位/取反实验
1.在CPTH 软件中的源程序窗口输入下列程序
2.将程序另存为EX3.ASM,将程序汇编成机器码,调试窗口会显示出程序地址、机器码、反汇编指令。
3.按快捷图标的F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。(见“EX3.ASM程序跟踪结果”详细介绍)EX3.ASM程序跟踪结果:
程序的开始执行一条取指的微指令,读入程序第一条指令。MOV A, #55: 将累加器的值设为055H,以便下面观察。
RR A:本指令为两个状态周期。在T1状态,由上次取指操作取出的指令码为D0H,访问微 48
程序存储器的20H单元,读出微指令值为0FFFCB7H,有效位为CN、FEN及AEN,表示不带进位移位,运算器控制S2S1S0=111(二进制)表示运算不运算,输出结果就为A的值,X2X1X0=101(二进制)表示,运算器“右移”输出到总线,FEN将标志位保存,AEN将DBUS内容存入A中,uPC加1取出下条微令。在T0状态,取出下条将要执行的指令。
RLC A:本指令有两个状态周期。在T1状态微指令为0FFFED7H,CN=1表示带进位移位,S2S1S0=111表示ALU不做运算,直接输出A内容,X2X1X0=110(二进制)表示,运算器“左移”输出到DBUS,AEN表示DBUS内容存入A中,FEN表示保存标志位。T0状态为取指操作。取出下条将要执行的指令。
CPL A: 本指令为两个状态周期。在T1状态,微指令为0FFFE96H,S2S1S0=110表示ALU做“取反”运算,X2X1X0=100(二进制)表示,运算器结果直通到DBUS,再存入A中,并保存标志位。T0状态为取指操作。取出下条将要执行的指令。
任务3:转移实验
1.在CPTH 软件中的源程序窗口输入下列程序
2.将程序另存为EX4.ASM,将程序汇编成机器码,调试窗口会显示出程序地址、机器码、反汇编指令。
3.按快捷图标的F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC 及uPC如何工作。观察在条件满足和不满足的情况下,条件跳转是否正确执行。(见“EX4.ASM 程序跟踪结果”详细介绍)EX4.ASM程序跟踪结果:
第二篇:计算机组成原理课程设计指导书
长 沙 学
院
课程设计指导书
系(部)
计算机科学与技术
专
业
计算机科学与技术
2010年12 月 10 日
课程名称:计算机组成原理 课程编号:7020130610 主 笔 人:钟旭 主 审 人:
一、课程设计的目的
通过该课程设计的学习,总结计算机组成原理课程的学习内容,利用TDN-CM+教学实验系统提供的软硬件操作平台掌握层次化设计方法、运用计算机原理知识,设计并实现一台完整的计算机,从而巩固课堂知识、深化学习内容、完成教学大纲要求,学好计算机科学与技术专业的专业基础课。
二、课程设计的题目 1.基本模型机设计与实现;
2.带移位运算的模型机的设计与实现; 3.复杂模型机的设计与实现。
三、设计内容(主要技术关键的分析、解决思路和方案比较等)
利用所学过的理论知识,特别是微程序设计的思想,写出要设计的指令系统的微程序。设计环境为TDN-CM+计算机组成原理教学实验系统,微机,虚拟软件。将所设计的微程序在此环境中进行调试,并给出测试思路和具体程序段。最后撰写出符合要求的课程设计说明书、完成答辩。1.基本模型机设计与实现
指令系统至少要包括六条不同类型指令:如一条输入指令,一条减法指令,一条加法指令,一条存数指令,一条输出指令和一条无条件转移指令。2.带移位运算的模型机的设计与实现
在基本模型机的基础上增加左、右循环和左、右带进位循环四条指令
3.设计不少于10条指令的指令系统。其中,包含算术逻辑指令,访问内存指令,程序控制指令,输入输出指令,停机指令。重点是要包括直接、间接、变址和相对寻址等多种寻址方式。
以上数据字长为8位,采用定点补码表示。指令字长为8的整数倍。微指令字长为24位。
四、设计步骤
1、确定设计目标
确定所设计计算机的功能和用途。
2、确定指令系统
确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方式。
3、总体结构与数据通路
总体结构设计包括确定各部件设置以及它们之间的数据通路结构。在此基础上,就可以拟出各种信息传输路径,以及实现这些传输所需要的微命令。综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,确定采用何种方案的内总线及外总线。数据通路不同,执行指令所需要的操作就不同,计算机的结构也就不一样。
4、设计指令执行流程
数据通路确定后,就可以设计指令系统中每条指令所需要的机器周期数。对于微程序控制的计算机,根据总线结构,需考虑哪些微操作可以安排在同一条微指令中,哪些微操作不能安排在同一条微指令中。
5、确定微程序地址
根据后续微地址的形成方法,确定每个微程序地址及分支转移地址。
6、微指令代码化
根据微指令格式,将微程序流程中的所有微指令代码化,转化成相应的二进制代码写入到控制存储器中的相应单元中。
7、组装、调试
在总调试前,先按功能模块进行组装和分调,因为只有各功能模块工作正常后,才能保证整机的正常运行。
当所有功能模块都调试正常后,进入总调试。连接所有模块,用单步微指令方式执行机器指令的微程序流程图,当全部微程序流程图检查完后,若运行结果正确,则在内存中装入一段机器指令,进行其他的运行方式等功能调试及执行指令的正确性验证。
五、设计说明书要求
课程设计说明书按学校统一格式撰写和装订。课程设计报告要求打印,其中的数据通路框图、微程序流程图、实验接线图用VISIO等工具软件绘制或用铅笔工工整整绘制。
(1)封面(包括:题目、所在系、班级、学号、指导教师及时间等项,可到教务处网页上下载)(2)任务书(3)目录
目录要层次清晰,要给出标题及页次,目录的最后一项是无序号的“参考文献”。(4)正文
正文应按目录中编排的章节依次撰写,要求计算正确,论述清楚,文字简练通顺,插图清晰,书写整洁。文中图、表及公式应规范地绘制和书写。
正文是实践设计报告的主体,具体由以下几部分组成:
1)课程设计题目;
2)课程设计使用的实验设备;
3)课程设计步骤(包括确定所设计计算机的功能和用途、指令系统、总体结构与数据通路、设计指令执行流程、确定微程序地址、微指令代码化、组装、调试。)
4)课程设计总结(包括自己的收获与体会;遇到的问题和解决的方法等);
(5)附录
附录1:数据通路图 附录2:微程序流程图 附录3:实验接线图 附录4:实验程序及微程序
附录5:参考文献(资料)(格式规范参照长沙学院毕业设计(论文)撰写规范)
六、设计进度安排 时间:
15、16周 讲授:2课时 答疑及设计:26课时 上机调试:8课时 答辩:6课时
七、考核标准
课程设计的成绩分为:优秀:、良好、中等、及格、不及格五个等级。
优秀:完成复杂模型机的设计与实现,指令系统完备有更新扩充。调试成功。文档规范齐全。良好:完成模型机的设计与实现,指令系统指令种类丰富有一定的更新。调试成功。文档规范齐全。中等:完成基本模型机的设计与实现,在老师指导下对指令系统有更新。调试成功。文档规范齐全。及格:完成基本模型机的设计与实现。调试成功。文档规范齐全。不及格:没有课程设计报告,无故缺勤,不能完成调试者不及格。
第三篇:计算机组成原理--课程设计指导书
计算机组成原理课程设计指导书
基于EDA技术的单周期中央处理器的设计与实现
适用专业:计算机科学与技术专业
网络工程专业及相关专业
教 研 室:计算机科学与技术教研室
计算机科学与信息工程系
2009 年12月 前言
《计算机组成原理》是计算机与信息工程系的一门核心专业基础课程。它从层次结构的观点和信息输入、处理和输出的顺序讲述计算机的结构及工作原理,使学生掌握计算机常用的逻辑器件、部件的原理、参数及使用方法,学习计算机设计中的入门性知识,以及简单、完备的单台计算机的基本组成原理,培养学生掌握硬件系统的分析、设计、开发、使用和维护的能力。
本课程设计主要任务是通过学习能够使学生在已有的计算机知识的基础上,对计算机组成有一个较全面、系统的了解,提高学生的计算机硬件基本知识和基本理论和实际操作的能力。特别是通过学生实践,提高学生对计算机组成的认识,维护和应用技能。根据该课程的部件实验,完成一台基于MIPS指令集的整机设计。
实验的验收将分为两个部分。第一部分是上机操作,包括检查程序运行和即时提问。第二部分是提交书面的实验报告。此外,针对以前教学中出现的问题,实验将采用每个实验逐个检查方式,每个实验都将应当在规定的时间内完成并检查通过,过期视为未完成该实验,不计成绩。以避免期末集中检查方式产生的诸多不良问题,希望同学们抓紧时间,合理安排,认真完成。实验要求及评分标准
一、实验要求:
1.2.3.4.在《计算机组成原理》的课程课程设计过程中,要求学生做到:
预习课程设计指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前作出思考和分析。
仔细观察上机作时出现的各种现象,记录主要情况,作出必要说明和分析。认真书写实验报告。实验报告包括实验目的和要求,实验情况及其分析。对需编程的实验,给出包含详细注释的源程序清单。遵守机房纪律,服从辅导教师指挥,爱护实验设备。
5.实验课程不迟到。如有事不能出席,所缺实验一般不补。
实验的验收将分为两个部分。第一部分是上机操作,包括检查程序运行和即时提问。第二部分是提交书面的实验报告(大作业)。为避免期末考试方式产生的诸多不良问题,希望同学们抓紧时间,合理安排,认真完成。
二、评分标准:
1.没有正确的调试程序,最多只能得50分。2.基本正确的调试程序,可以得60-70分。3.能理解程序并给出详细注释,可得80分。
4.程序书写规范,遵守实验纪律,可得90分。5.上述各项均做得比较好,可得100分。
评分标准的满分为100分,所有的评分标准的下一项均建立在前一项已经满足的情况下。
实验目的
1.深入理解基本模型计算机的功能、组成知识; 2.深入学习计算机各类典型指令的执行流程; 3.学习硬布线控制器的设计过程和相关技术;
4.在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机;
5.定义20条MIPS指令集的典型指令,并编写相应的汇编程序,能在模型机上调试,掌握计算机整机概念;
6.通过熟悉较完整的计算机的设计,全面了解并掌握硬布线控制方式计算机的设计方法,真正理解利用软件进行硬件设计的方法和技巧。实验原理
在部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本实验将能在硬布线控制下自动产生各部件单元控制信号,实现特定的功能。
实验选择了MIPS体系结构中比较典型的指令,使用QuartusII软件工具,通过原理图以及VHDL语言设计CPU的逻辑电路来实现这些指令。另外还用MIPS汇编语言编写了用于CPU测试的简单程序,对所设计的CPU逻辑电路进行功能仿真模拟,以验证CPU逻辑电路的正确性。
实验涉及到的R指令有ADD、SUB、AND、OR、XOR、SLL、SRL、SRA、JR;I指令有ADDI、ANDI、ORI、XORI、LW、SW、BEQ、BNE、LUI;J指令有J、JAL。指令格式如下图所示。
单周期CPU的逻辑电路图
以下是几个机器指令的逻辑表达式:
根据机器指令的可以得到相应的控制信号,举例如下:
以下给出部分原理图以及部分仿真波形图:
F元件中,当CALL=1时,选择31号寄存器,为JAL跳转指令提供寄存器;当CALL=0时,选择输入端的寄存器。
Sc_cu.bdf原理图
指令存储器和数据存储器中的代码分别如下图所示: 以上程序运行结果:
该CPU还可以运行以下乘法程序,其代码、仿真结果与及运算结果如下所示:
课程设计要求
计算机组成原理是计算机科学与技术专业计算机组成原理实践教学课程,实验教学属于一个非常重要的环节,并且比理论教学复杂一些,涉及的深度要广些,具有一定的实用性。本“三性”实验的目的是通过实验的综合训练,培养学生的分析问题和解决问题的能力,使学生掌握整机概念,同时进行计算机系统部件的EDA设计,即借助于EDA工具软件QuartusII完成系统部件逻辑设计,以帮助学生系统的掌握计算机组成原理这门课程的主要内容,为以后进一步学习计算机体系结构打下一个良好的基础。
在计算机组成原理课程设计基本运算模型机,同时引入EDA计算机辅助设计技术是一个非常有益的尝试。它使以往学生望而生畏的计算机组成原理课变得 轻松和有吸引力,节约了资金,缩短了设计的时间周期;给学生提供了极大的创造空间,激发和培养了学生的创新思维能力;使学生设计的作品质量和难度系数都得到了提高。通过学习,学生可以深入理解基本模型计算机的功能、组成知识,深入学习计算机各类典型指令的执行流程,学习硬布线控制器的设计过程和相关技术,掌握LPM_ROM的配置方法,在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机;定义20条MIPS指令集的典型指令,并编写相应的汇编程序,能在模型机上调试,掌握计算机整机概念;通过熟悉较完整的计算机的设计,全面了解并掌握硬布线控制方式计算机的设计方法,真正理解利用软件进行硬件设计的方法和技巧。
通过QuartusII软件在计算机上进行计算机系统部件设计,学生可以采用不同的设计方案,选用软件库中的一般器件或者自行设计的专用器件,而这些器件实验室往往又无法提供,通过计算机仿真的课程设计结果使学生学会从不同角度思考同一个问题,提出不同的解决方案,从而提高学生思考实际问题的能力。
利用计算机组成原理课程实验中的各个部件单元实验,结合EDA技术,运用原理图以及VHDL语言设计完整的单周期中央处理器CPU,再构建计算机整机,能运行所给的汇编程序,在存储器对应单元中看到相应结果。
写出实验报告:
报告内容应包含(1)课题名称,班级、姓名、学号、时间、指导教师(2)实验目的(3)实验用设备及软件包(4)电路工作原理(5)电路设计图,调试仿真结果(6)调试中的故障分析及解决方法(7)整机原理图、源程序代码以及实验结论分析与讨论(8)最后对本次课程设计进行总结,写出收获与体会,如创新设计思想、对电路的改进方法、成功经验、失败教训。(9)报告应文理通顺,图形美观,打印成档(同时交电子文档资料备案)
第四篇:计算机组成原理实验
ALU设计
module ALU(ALU_OP,AB_SW,F_LED_SW,LED);
input[2:0] ALU_OP,AB_SW,F_LED_SW;
output[7:0] LED;reg[7:0] LED;
reg[31:0] A,B,F;reg OF,ZF;
always@(*)begin
end
always@(*)begin
ZF=0;OF=0;case(ALU_OP)
3'b000: begin F=A&B;end 3'b001: begin F=A|B;end 3'b010: begin F=A^B;end 3'b011: begin F=~(A|B);end 3'b100: begin {OF,F}=A+B;OF=OF^F[31];end 3'b101: begin {OF,F}=A-B;OF=OF^F[31];end 3'b110: begin F=A
3'b000: begin A=32'h0000_0000;B=32'h0000_0000;end 3'b001: begin A=32'h0000_0003;B=32'h0000_0607;end 3'b010: begin A=32'h8000_0000;B=32'h8000_0000;end 3'b011: begin A=32'h7FFF_FFFF;B=32'h7FFF_FFFF;end 3'b100: begin A=32'h8000_0000;B=32'hFFFF_FFFF;end 3'b101: begin A=32'hFFFF_FFFF;B=32'h8000_0000;end 3'b110: begin A=32'h1234_5678;B=32'h3333_2222;end 3'b111: begin A=32'h9ABC_DEF0;B=32'h1111_2222;end endcase endcase
if(F==32'b0)ZF=1;end
always@(*)begin
end case(F_LED_SW)
3'b000: LED=F[7:0];3'b001: LED=F[15:8];3'b010: LED=F[23:16];3'b011: LED=F[31:24];default:begin LED[7]=ZF;LED[0]=OF;LED[6:1]=6'b0;end endcase
endmodule 管脚配置
NET “AB_SW[0]” LOC = T10;NET “AB_SW[1]” LOC = T9;NET “AB_SW[2]” LOC = V9;NET “ALU_OP[0]” LOC = M8;NET “ALU_OP[1]” LOC = N8;NET “ALU_OP[2]” LOC = U8;NET “F_LED_SW[0]” LOC = V8;NET “F_LED_SW[1]” LOC = T5;NET “F_LED_SW[2]” LOC = B8;NET “LED[0]” LOC = U16;NET “LED[1]” LOC = V16;NET “LED[2]” LOC = U15;NET “LED[3]” LOC = V15;NET “LED[4]” LOC = M11;NET “LED[5]” LOC = N11;NET “LED[6]” LOC = R11;NET “LED[7]” LOC = T11;寄存器 module jicunqi(input Clk, input Reset, input [4:0] Reg_Addr, input Write_Reg, input [1:0] Sel, input AB, output reg [7:0] LED);reg [31:0] W_Data;wire [31:0] R_Data_A,R_Data_B,LED_Data;REG RU1(Clk,Reset,Reg_Addr,Reg_Addr,Reg_Addr,W_Data,Write_Reg,R_Data_A,R_Data_B);assign LED_Data=AB?R_Data_A : R_Data_B;always @(*)begin
W_Data=32'h0000_0000;
LED=8'b0000_0000;
if(Write_Reg)
begin
case(Sel)
2'b00: W_Data= 32'h1234_5678;
2'b01: W_Data= 32'h89AB_CDEF;2'b10: W_Data= 32'h7FFF_FFFF;2'b11: W_Data= 32'hFFFF_FFFF;endcase end
else
begin
case(Sel)
2'b00: LED=LED_Data[7:0];2'b01: LED=LED_Data[15:8];2'b10: LED=LED_Data[23:16];2'b11: LED=LED_Data[31:24];
endcase end end endmodule `timescale 1ns / 1ps // REG.v module REG(input Clk, input Reset, input [4:0] R_Addr_A, input [4:0] R_Addr_B, input [4:0] W_Addr, input [31:0] W_Data, input Write_Reg, output [31:0] R_Data_A, output [31:0] R_Data_B);
reg [31:0] REG_Files[0:31];integer i;
assign R_Data_A=REG_Files[R_Addr_A];assign R_Data_B=REG_Files[R_Addr_B];
always @(posedge Clk or posedge Reset)begin
if(Reset)
begin
for(i=0;i<=31;i=i+1)
REG_Files[i]<=32'h0000_0000;
end
else
begin
if(Write_Reg)
begin
REG_Files[W_Addr]<=W_Data;
end end end endmodule
管脚配置 NET “Clk” LOC=“C9”;NET “Reset” LOC=“D9”;NET “Reg_Addr[4]” LOC=“T5”;NET “Reg_Addr[3]” LOC=“V8”;NET “Reg_Addr[2]” LOC=“U8”;NET “Reg_Addr[1]” LOC=“N8”;NET “Reg_Addr[0]” LOC=“M8”;NET “Write_Reg” LOC=“V9”;NET “Sel[1]” LOC=“T9”;NET “Sel[0]” LOC=“T10”;NET “AB” LOC=“A8”;NET “LED[7]” LOC=“T11”;NET “LED[6]” LOC=“R11”;NET “LED[5]” LOC=“N11”;NET “LED[4]” LOC=“M11”;NET “LED[3]” LOC=“V15”;NET “LED[2]” LOC=“U15”;NET “LED[1]” LOC=“V16”;NET “LED[0]” LOC=“U16”;
第五篇:_计算机组成原理实验2
计算机组成原理实验日志
实验题目:
进位、移位控制实验
实验目的:
(1)了解带进位控制的运算器的组成结构;(2)验证带进位控制的运算器的功能。(3)了解移位发生器74LS299的功能;(4)验证移位控制电路的组合功能。实验主要步骤:
一、进位
(1)按图1.2-2连接实验电路并检查无误。(2)打开电源开关。
(3)用输入开关向暂存器DR1和DR2置数,方法同前。
(4)关闭数据输入三态门(SW-B=1),打开ALU输出三态门(ALU-B=0),并使LDDR1=0、LDDR2=0,关闭寄存器打入控制门。
(5)对进位标志清零。实验板上“SWITCH UNIT”单元中的CLR开关为标志CY、ZI的清零开关,它为零状态时是清零状态,所以将此开关做1→0→1操作,即可使标志位清零。
注意:进位标志指示灯CY亮时表示进位标志为“0”,无进位;标志指示灯CY灭时表示进位为“1”,有进位。
图1.2-1 带进位运算器通路图
图1.2-2 带进位运算实验接线图
(6)验证带进位运算及进位锁存功能。使Cn=1,AR=0,进行带进位算术运算。例如,做加法运算,使ALU-B=0,S3、S2、S1、S0、M的状态为1、0、0、1、0,此时数据总线上显示的数据为DR1加DR2加当前进位标志的和,但这时的进位状态位还没有打入进位锁存器中,(它是要靠T4节拍来打入的。)这个结果是否有进位产生,则要按动微动开关KK2,若进位标志灯亮,则无进位,反之则有进位。因为做加法运算时数据总线一直显示的数据为DR1+DR2+CY,所以当有进位输入到进位锁存器时,总线显示的数据将为加上当前进位锁存器中锁存的进位的结果。
二、移位
(1)按图1.3-2连接实验电路并检查无误。(2)打开电源开关。(3)向移位寄存器置数。
①拨动输入开关,形成二进制数01101011(或其它数值)。
②使SWITCH UNIT单元中的开关SW-B=0,打开数据输入三态门。③使S0=
1、S1=1,并按动微动开关KK2,则将二进制数01101011置入了移位寄存器。
④使SW-B=1,关闭数据输入三态门。(4)移位运算操作。
①参照表1.3-1中的内容,先将S1、S0置为0、0,检查移位寄存器单元装入的数是否正确,然后通过改变S0、S1、M、299-B的状态,并按动微动开关KK2,观察移位结果。
②根据移位控制电路功能表1.3-1中的内容,分析移位运算的结果是否正确。
图1.3-2 移位运算实验接线图
实验结果: 一.进位
向DR1中置入80H 向DR2中置入 80H CY初始位置为亮 0 加法完成后 CY为灭总线显示01H 二.移位
输入00011000 移位后 00110000 心得体会:
通过本次实验了解了的带进位的加法和移位器的原理。