北邮计算机组成原理课程设计 代码与实验报告
- 格式:docx
- 大小:484.95 KB
- 文档页数:25
计算机组成原理课程设计报告班级::学号:完成时间:一、课程设计目的1.在实验机上设计实现机器指令及对应的微指令〔微程序〕并验证,从而进一步掌握微程序设计控制器的根本方法并了解指令系统与硬件构造的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3.培养综合实践及独立分析、解决问题的能力。
二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进展设计的验证。
三、课程设计使用的设备〔环境〕1.硬件● COP2000实验仪● PC机2.软件●COP2000仿真软件四、课程设计的具体容〔步骤〕1.详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:1〕指令系统特点与设计模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。
指令码的最低两位用来选择R0-R3存放器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。
而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。
在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。
模型机有24位控制位以控制存放器的输入、输出,选择运算器的运算功能,存储器的读写。
指令系统包括以下七类:23〕指令格式该模型机微指令系统的特点〔包括其微指令格式的说明等〕:微指令格式2.计算机中实现乘法和除法的原理〔1〕无符号乘法①实例演示〔即,列4位乘法具体例子演算的算式〕:被乘数为1001〔二进制〕,即为十进制的9;乘数为0110〔二进制〕,即为十进制的6。
那么,可以通过笔算得到:1001×0110=00110110即十进制运算结果为:9×6=54无符号乘法的实例演示如图1所示:1 0 0 1 ;被乘数× 0 1 1 0 ;乘数0 0 0 0 ;初始值〔零〕+ 0 0 0 0 〔0〕;乘数最低位为0,局部积加0,被乘数左移一;位,乘数右移一位。
(3)开关ALUB=0,开启输出三态门,开关SWB=1,关闭输入三态门,同时让 LDDR1=0,LDDR2=0。
(4)如果原来有进位,CY=1,进位灯亮,但需要清零进位标志时,具体操作方法如下:
◆S3、S2、S1、S0、M的状态置为0 0 0 0 0,AR信号置为“0”电平(清
零操作时DRl寄存器中的数应不等于FF)。
◆按动手动脉冲发生开关,CY=0,即清进位标志。
注:进位标志指示灯
CY亮时表示进位标志为“1”,有进位;进位标志指示灯CY灭时,表示进位位为“0”,无进位。
(5)验证带进位运算及进位锁存功能
这里有两种情况:
●进位标志已清零,即CY=0,进位灯灭。
✧使开关CN=0,再来进行带进位算术运算。
例如步骤(2)参与运算的两个数
为55H和AAH,当S3、S2、S1、S0状态为10010,此时输出数据总线显示灯上显示的数据为DRl加DR2再加初始进位位“1”(因CN=0),相加的结果应为ALU=00,并且产生进位,此时按动手动脉冲开关,则进位标志灯亮,表示有进位。
✧使开关CN=1,当S3、S2、S1、S0状态为10010,则相加的结累ALU=FF,并
且不产生进位。
●原来有进位,即CY=1,进位灯亮。
此时不考虑CN的状态,再来进行带进位
算术运算。
同样步骤(2)参与运算的两个数为55H和AAH,当S3、S2、S1、S0、M状态为10010,此时输出数据总线显示灯上显示的数据为DRl加DR2再加当前进位标志CY,相加的结果同样为ALU=00,并且产生进位,此时按动手。
长治学院课程设计报告课程名称:计算机组成原理课程设计设计题目:设计一台性能简单的计算机系别:计算机系专业:计科1101班组别:第三组学生姓名: 学号:起止日期: 2013年7月4日~ 2013年7月10日****:***目录一、课程设计的目的 ----------------------------------1二、设计要求 ----------------------------------------1三、设计的方法及过程---------------------------------23.1整机设计 --------------------------------------23.1.1 根据设计要求正确设置正确设置多路开关-------23.1.2操作控制信号及其实现方式-------------------23.1.3根据接线表画出整机的线路图-----------------2 3.2.设计指令系统----------------------------------3 3.3.设计微指令及指令的微程序----------------------43.3.1设计微地址 --------------------------------4 3.3.2写出指令的执行流程-------------------------3 3.3.3编写指令的微程序---------------------------53.4.编写并执行应用程序----------------------------8四、心得体会-----------------------------------------7 一课程设计的目的通过课程设计更清楚地理解下列基本概念:(1)计算机的硬件基本组成;(2)计算机中机器指令的设计;(3)计算机中机器指令的执行过程;(4)微程序控制器的工作原理;(5)微指令的格式设计原理;二设计要求题一研制以台性能如下的实验计算机。
课程名称:计算机系统结构实验名称:代码优化实验班级:09211311姓名:schnee学号:日期:2012年4月20日目录1.实验目的 (3)2.实验原理 (3)3.优化程序代码清单及注释说明 (3)4.实验分析 (4)观察程序中出现的数据/结构/控制相关,指出程序中出现上述现象的指令组合。
(4)考察增加浮点运算部件对性能的影响。
(5)考察增加FORWARD部件对性能的影响。
(5)观察转移指令在转移成功和转移不成功时候的流水线开销。
(6)5.实验心得和总结 (6)1.实验目的学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。
2.实验原理采用静态调度方法重排指令序列,减少相关,优化程序。
3.优化程序代码清单及注释说明1..data2.VectorLength: .word 163.Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,164.Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,165.Printf1: .asciiz "Vector ="6.Printf2: .asciiz " %f"7..align 28.PrintPrompt: .word Printf19.PrintPar: . word Printf210.Result: .space 411..text12.main: ;**** Print prompt "Vector ="13.addi r14,r0,PrintPrompt14.trap 515. addi r2,r0,0 ;调换两行代码,;提前写入R2以减少下面语句的相关16.lw r20,VectorLength17.Loop:18.ld f10,Vector1(r2)19.ld f12,Vector2(r2)20.addi r2,r2,4 ;r2地址加4个字节,;相当于寻找下一个元素;将下面的句子1移动到此处21.cvti2d f0,f10 ;把int型改为double D0(f0:f1)22.cvti2d f2,f12 ;把int型改为double D1(f2:f3)23.subi r20,r20,1 ;r20值设为16,此处-1以循环16次;此处是将下面的句子2移动到此处24. addd f4,f2,f0 ;add D2=D0+D1;**** Finish,write result into stdout25.sd Result,f426.addi r14,r0,PrintPar27.trap 528.;addi r2,r2,4 ;句子129.;subi r20,r20,1 ;句子230. bnez r20,Loop;**** End31.trap 04.实验分析这个实验的优化思路在于:1、根据原先实验3中实验分析1)中关于相关性的分析来找出代码中的相关性,2、对其中具有相关性的指令,通过把无关紧要的代码提前或者拖后至相关性语句之间,以此来减少甚至消除数据相关性所造成的stall带来的效率低下。
《计算机组成原理实验》报告1姓名学号教师时间地点机位实验名称:数据传送实验一、实验目的1. 理解自然语言形式命令的人工译码过程。
2. 学习系统部件和数据总线间传送数据的操作。
二、实验原理寄存器的作用是用于保存数据的。
CP226实验仪用74HC574(8D型上升沿触发器)构成各种寄存器。
74HC574 74HC574工作波形图表1:74HC574功能表寄存器A的原理图寄存器W的原理图寄存器组(R0-R3)的原理图三、实验内容1、将57H写入A寄存器。
2、将68H写入W寄存器。
3、将12H写入R0寄存器。
四、实验步骤1、将57H写入A寄存器。
①二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据57H。
表2(电平为:低高低高低高高高)置控制信号为选通寄存器A,置K0(AEN)为0。
②关闭机箱电源,用导线把K0 和AEN连接。
③检查连线和电键位置,确信无误。
④开启机箱电源,按下RST键复位,再按小键盘TV/ME键3次显示屏进入Hand…手动状态。
按下小键盘STEP脉冲键,CK由高变低,观察现象;放开小键盘STEP键,CK脉冲由低变高,产生一个上升沿,数据57H打入选通的寄存器A,观察现象。
2、将68H写入W寄存器。
①二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据68H。
置控制信号为选通寄存器W,置K1(WEN)为0,K0(AEN)为1。
②用导线把K1和WEN连接。
③检查连线和电键位置,确信无误。
④按下小键盘STEP脉冲键,CK由高变低,观察现象;放开小键盘STEP键,CK脉冲由低变高,产生一个上升沿,数据68H打入选通的寄存器W,观察现象。
3、将12H写入R0寄存器。
①二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据12H。
置控制信号为选通寄存器R0。
置K1(WEN)为1,K0(AEN)为1。
②用不同颜色的导线把K5和RRD连接,K4和RWR连接,K3和SB连接,K2和SA连接。
计算机组成原理实验报告课程名称计算机组成原理实验学院计算机专业班级学号学生姓名指导教师20年月日实验一:基础汇编语言程序设计实验1实验目的●学习和了解TEC-XP+教学实验监控命令的用法;●学习和了解TEC-XP+教学实验系统的指令系统;●学习简单的TEC-XP+教学实验系统汇编程序设计。
2实验设备及器材●工作良好的PC机;●TEC-XP+教学实验系统和仿真终端软件PCEC。
3实验说明和原理实验原理在于汇编语言能够直接控制底层硬件的状态,通过简单的汇编指令查看、显示、修改寄存器、存储器等硬件内容。
实验箱正如一集成的开发板,而我们正是通过基础的汇编语言对开发板进行使用和学习,过程中我们不仅需要运用汇编语言的知识,还需要结合数字逻辑中所学的关于存储器、触发器等基本器件的原理,通过串口通讯,实现程序的烧录,实验箱与PC端的通讯。
4实验内容1)学习联机使用TEC-XP+教学实验系统和仿真终端软件PCEC;2)学习使用WINDOWS界面的串口通讯软件;3)使用监控程序的R命令显示/修改寄存器内容、D命令显示存储内容、E命令修改存储内容;4)使用A命令写一小段汇编程序,U命令反汇编输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。
5实验步骤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电源指示灯亮;8)在PC机上运行PCEC16.EXE文件,根据连接的PC机的串口设置所用PC机的串口为"1"或"2",其他的设置一般不用改动,直接回车即可; (8)按一下"RESET"按键,再按一下"START"按键,主机上显示:6实验截图及思考题【例3】计算1到10的累加和。
一、课程设计题目简单模型机的微程序设计二、课程设计目的a)计算机的硬件基本组成;b)计算机中机器指令的设计;c)计算机中机器指令的执行过程;d)微程序控制器的工作原理。
e)微指令的格式设计原则;三、问题解决(1)、程序中的微指令的各个字段的作用。
哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。
答:第24-19位称为算逻部件的控制字段;第18位为存储器功能控制字段,第17,16位为选择字段,用于选择外设和内存;第15-13位称为A字段,用于产生各寄存器的数据装入微命令;第12-10位称为B字段,用于控制各寄存器的数据送入总线的微命令;第9-7位称为C字段,用于微指令控制空能;NA字段为第6-1位,用于下条指令地址的计算。
其中算逻部件控制字段,存储器功能控制字段,选择字段,ABC字段均为不译码的,NA字段在C字段为000时不译码,为001,010,011,100时分别进行P(1)-P(4)测试译码,可看为间接译码,是将其与IR字段部分位相或算出下条指令地址。
(2)、微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。
什么情况下,次地址字段才是将要执行的微指令的地址。
答:微程序中的微指令不是顺序执行的,如为P(1) [或者P(2)/ P(3)/ P(4)]测试,则次地址的微地址的4~1位是用次地址字段NA(4~1位)或指令寄存器IR(8~5位)所产生,NA字段的6~5位保持不变;如不是测试的话,那么次地址即为该微指令NA字段所指向的微地址。
当设计的微指令指向下条指令,次地址字段才是将要执行的微指令的地址。
(3)、在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解释其它指令的微指令的微地址冲突。
答:在微程序中根据机器指令的5~8位进行测试,实现相关分支。
在设计机器指令时需考虑对应的微地址入口,每个机器指令均需对应一个微指令的地址。
计算机组成原理大型实验任务书(计算机12级1、2、3班和实验班)一、实验目的:深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。
二、实验说明:要进行这项大型实验,必须清楚地懂得:(1)TEC-2机的功能部件及其连接关系;(2)TEC-2机每个功能部件的功能与具体组成;(3)TEC-2机支持的指令格式;(4)TEC-2机的微指令格式,AM2910芯片的用法;(5)已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接;(6)要实现的新指令的格式与功能。
三、实验内容:选定指令格式、操作码,设计如下指令:(1)把用绝对地址表示的内存单元A中的内容与内存单元B中的内容相加,结果存于内存单元C中。
指令格式:D4××,ADDR1,ADDR2,ADDR3 四字指令(控存入口100H)功能:[ADDR3]=[ADDR1]+[ADDR2](2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。
指令格式:E0 DR SR,ADDR (SR,DR源、目的寄存器各4位)双字指令(控存入口130H)功能:DR=SR - [ADDR](3)转移指令。
判断两个通用寄存器内容是否相等,若相等则转移到指定绝对地址,否则顺序执行。
指令格式:E5 DR SR,ADDR 双字指令(控存入口140H)功能:if DR==SR goto ADDR else顺序执行。
设计:利用指令的CND字段,即IR10~8,令IR10~8=101,即CC=Z则当DR==SR时Z=1,微程序不跳转,接着执行MEM PC(即)而当DR!=SR时Z=0,微程序跳转至A4。
四、实验要求:(1)根据内容自行设计相关指令微程序;(务必利用非上机时间设计好微程序)(2)设计测试程序、实验数据并上机调试。
(3)设计报告内容:包括1、设计目的2、设计内容3、微程序设计(含指令格式、功能、设计及微程序)4、实验数据(测试所设计指令的程序及结果)。
计算机组成原理的实验报告一、实验目的本次实验的主要目的是深入理解计算机组成原理中的关键概念和组件,通过实际操作和观察,增强对计算机硬件系统的认识和掌握能力。
具体包括:1、了解计算机内部各部件的工作原理和相互关系。
2、熟悉计算机指令的执行流程和数据的传输方式。
3、掌握计算机存储系统的组织和管理方法。
4、培养分析和解决计算机硬件相关问题的能力。
二、实验设备本次实验使用的设备包括计算机、逻辑分析仪、示波器以及相关的实验软件和工具。
三、实验内容1、运算器实验进行了简单的算术运算和逻辑运算,如加法、减法、与、或等操作。
观察运算结果在寄存器中的存储和变化情况。
2、控制器实验模拟了指令的取指、译码和执行过程。
分析不同指令对计算机状态的影响。
3、存储系统实验研究了内存的读写操作和地址映射方式。
考察了缓存的工作原理和命中率的计算。
4、总线实验观察数据在总线上的传输过程和时序。
分析总线竞争和仲裁的机制。
四、实验步骤1、运算器实验步骤连接实验设备,将运算器模块与计算机主机相连。
打开实验软件,设置运算类型和操作数。
启动运算,通过逻辑分析仪观察运算过程中的信号变化。
记录运算结果,并与预期结果进行比较。
2、控制器实验步骤连接控制器模块到计算机。
输入指令序列,使用示波器监测控制信号的产生和变化。
分析指令执行过程中各个阶段的状态转换。
3、存储系统实验步骤搭建存储系统实验电路。
进行内存读写操作,改变地址和数据,观察存储单元的内容变化。
分析缓存的替换策略和命中率的影响因素。
4、总线实验步骤连接总线模块,配置总线参数。
多个设备同时发送数据,观察总线的仲裁过程。
测量数据传输的时序和带宽。
五、实验结果与分析1、运算器实验结果加法、减法等运算结果准确,符合预期。
逻辑运算的结果也正确无误。
观察到在运算过程中,寄存器的值按照预定的规则进行更新。
分析:运算器的功能正常,能够准确执行各种运算操作,其内部的电路和逻辑设计合理。
2、控制器实验结果指令能够正确取指、译码和执行,控制信号的产生和时序符合指令的要求。
北京邮电大学课程设计报告注:评语要体现每个学生的工作情况,可以加页。
计算机组成原理课程设计实验报告采用硬布线控制器的顺序模型处理器设计与调试一、实验目的(1)融会贯通计算机组成原理各章节教学内容,通过知识的综合应用,加深对CPU各模块工作原理及相互联系的认识,建立清晰的整机概念。
(2)掌握硬布线控制器的设计方法。
(3)学习运用可编程逻辑技术进行逻辑设计和调试的基本步骤和方法(4)学习运用VHDL语言,用编写编译下载程序到altera芯片运行。
(5)培养科学研究的独立工作能力,获得工程设计与组装调试的实践经验二、实验设备TEC-8实验系统一台PC计算机一台逻辑笔一只USB下载器一根三、设计与调试任务(1)设计一个硬连线控制器,和TEC-8模型计算机的数据通路结合在一起,构成一个完整的CPU,该CPU要求:能够完成控制台操作:启动程序运行、读存储器、写存储器、读寄存器、写寄存器;能够执行表中的指令,完成规定的操作。
(2)在Quarts下对硬布线控制器设计方案进行编辑和编译。
(3)将编译后的硬布线控制器下载到TEC-8实验台上的EPM7128中,使其成为一个硬布线控制器。
(4)根据指令系统,编写检测硬布线控制器正确性的测试程序,并用测试程序对硬布线控制器在单拍方式下进行调试,直到成功。
四、实验原理(1)硬布线控制器基本原理硬布线控制器是一种把控制部件看作产生专门固定时序控制信号的逻辑电路,这种逻辑电路是一种由门电路和触发器构成的复杂树形逻辑网络。
当执行不同机器指令时,通过激活一系列彼此很不相同的控制信号来实现对指令的解释。
每个微操作控制信号C是一系列输入量的逻辑函数,即用组合逻辑来实现C=f(Im,Mi,Tk,Bj)Im是机器指令操作码译码器的输出信号,Mi是节拍电位信号,Tk是节拍脉冲信号,Bj表示来自执行部件的反馈信息,是状态条件信号。
在TEC-8实验系统中,节拍脉冲信号Tk,(T1~T3)已经直接输送给数据通路。
4位指令操作码IR4~IR7直接成为Im的一部分;SWC、SWB、SWA可以看做是Im的另一部分。
Mi是时序发生器产生的节拍信号W1~W3;Bi包括ALU产生的进位信号C、结果为0信号Z等。
(2)硬布线控制器逻辑模块图硬布线控制器的某一操作控制信号 C在某条特定指令和状态条件下,在某一序号的特定节拍电位和节拍脉冲时间间隔中起作用,从而激活这条控制信号线,对执行部件实施控制。
图中芯片的输出信号就是微操作控制信号,它用来对执行部件进行控制。
另有一些信号则根据条件变量来改变时序发生器的计数顺序,以便跳过某些状态,从而可以缩短指令周期。
其中IR7~IR4,SWA,SWB,SWC是机器指令操作码译码器的输出信号,W1,W2,W3是节拍电位信号,T1,T2,T3是节拍脉冲信号,C,Z是结果反馈信息,图中树形逻辑网络N在接收三个输入信号来源的信号后输出LDZ,LDC,CIN,LIR,SELCTL,STOP等微操作控制信号,用来对执行部件进行控制。
(3)TEC-8数据通路图控制器:CLR: IN STD_LOGIC; -- 清零信号T3, W1,W2,W3: IN STD_LOGIC; --时序信号C,Z: IN STD_LOGIC; -- 标志信号LDZ: OUT STD_LOGIC; --当它为1时,如果运算结果为0,在T3的上升沿,将1写入到Zbiaozhi寄存器;如果运算结果不为0,将0保存到Z标志寄存器。
LDC: OUT STD_LOGIC; --当它为1时,在T3的上升沿将运算得到的进位保存到C标志寄存器。
CIN: OUT STD_LOGIC; --进位输出。
M: OUT STD_LOGIC; --控制算术逻辑运算类型ABUS: OUT STD_LOGIC; --当它为1时,将开关数据送到数据总线DBUS;当它为0时,禁止开关数据送数据总线DBUS。
DRW: OUT STD_LOGIC; --为1时,在T3上升沿对RD1、RD0选中的寄存器进行写操作,将数据总线DBUS上的数D7~D0写入选定的寄存器。
PCINC: OUT STD_LOGIC; --当它为1时,在T3的上升沿PC加1。
LPC: OUT STD_LOGIC; --当它为1时,在T3的上升沿,将数据总线DBUS上的D7~D0写入程序计数器PC。
LAR: OUT STD_LOGIC; --当它为1时,在T3的上升沿,将数据总线DBUS上的D7~D0写入地址寄存器AR。
PCADD: OUT STD_LOGIC; --当它为1时,将当前的PC值加上相对转移量,生成新的PC。
ARINC: OUT STD_LOGIC; --当它为1时,在T3的上升沿AR加1。
SELCTL: OUT STD_LOGIC; --当它为1时,TEC-8实验系统处于实验台状态,当它为0时,TEC-8实验系统处于运行程序状态。
MEMW: OUT STD_LOGIC; --当它为1时,在T2为1期间将数据总线DBUS上的D7~D0写入双端口RAM。
写入的存储器单元由AR7~AR0指定。
STOP: OUT STD_LOGIC; --当它为1时,在T3结束后时序发生器停止输出节拍脉冲T1、T2、T3。
LIR: OUT STD_LOGIC; --当它为1时,在T3的上升沿将从双端口RAM的右端口读出的指令INS7~INS0写入指令寄存器IR。
读出的存储器单元由PC7~PC0指定。
SBUS: OUT STD_LOGIC; --当它为1时,数据开关SD7~SD0的数送数据总线DBUS。
MBUS: OUT STD_LOGIC; --当它为1时,将双端口RAM的左端口数据送到数据总线DBUS SHORT: OUT STD_LOGIC; --只产生节拍W1。
LONG: OUT STD_LOGIC; --产生节拍W1、W2、W3。
SW: IN STD_LOGIC_VECTOR(2 DOWNTO 0); -- 即SWC SWB SWA,控制台方式控制信号IR:I N STD_LOGIC_VECTOR(3 DOWNTO 0); -- 即IR7-IR4 ,指令的操作码S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- ALU的方式控制,与M配合以选择逻辑或算数运算SEL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- 寄存器选择向量(4)机器指令流程图设计五、设计步骤与实验过程(1)设计步骤1、学习硬布线控制器基本原理2、设计机器指令周期流程图3、设计组合逻辑译码表4、根据组合逻辑译码表和控制器流程图写出VHDL代码5、分配各输入输出信号管脚6、下载程序到芯片7、反复调试(2)实验日志、故障及排除方案2016.8.29日志:熟悉实验台遇到问题及解决方案:由于学习tec8实验台已有一段时间,操作不熟练,按照以前的实验步骤,写存储器,读存储器,写寄存器,读寄存器。
2016.8.30日志:复习用VHDL语言编写程序遇到问题及解决方案:1、语法记不清,重新理解了ENTITY、PROCESS、ARCHITECTURE等意义和使用方法。
2、Quartus操作方法也已忘记,重新找到以前的课件,按照课件一步一步练习操作,2016.8.31日志:尝试建立一个可以编译下载到EMP7128SLC84-15芯片的工程,并将示例程序编译后分配管脚,下载到芯片。
遇到问题及解决方案:1、因为一开始使用的是64位的quartus,分配管脚报错:license文件不支持该芯片,用32位的重新建工程就编译通过。
2、因为用的是自己的win10的电脑,无法识别USB下载器,又将工程拷贝到实验室电脑上成功下载到芯片。
3、一开始不清楚从哪输入IR7~IR4、C、Z,和同学讨论后,理解了将程序先存入存储器,连线后可执行微程序。
2016.9.1日志:1、研究输入输出信号的具体作用。
2、根据硬布线控制器参考流程图写组合逻辑译码表。
3、按要求编写程序VHDL代码。
遇到问题及解决方案:1、循环操作中读寄存器的ST0判断与取值难以直接改变,ST0作为一个signal,不可以在两个process中同时有赋值语句,所以设置了SST0控制,SST0为1时ST0置1。
2、不知道如何利用T3控制,后经和组员讨论利用T3下降沿来完成时序同步。
2016.9.2日志:1、继续编写程序。
2、初步在实验台调试编写的程序遇到问题及解决方案:1、初次调试运行程序时指令输出不正确,检查程序后发现需要每次进入进程时初始化。
2、前几次调试时写寄存器操作跳转出错,检查代码发现未给SST0置0。
3、SST0对ST0的控制需要同步处理,即在一个拍结束后再对ST0控制。
2016.9.5日志:1、逐条验证编写的指令。
2、运行老师给的检验程序遇到问题及解决方案:1、老师的检验程序运行至JMP时IR显示出错,查找原因,发现LD命令未能正确运行,排除法找出是代码错误引起。
一共找出两个错误。
(1)课本程序框图中LD语句W3的节拍里未注明S的取值,写程序时理解为初始化为0,请教同学后,理解了S应保持W2时的值不变;(2)修改代码后仍运行不正确,检查管脚配置发现漏掉了M,加上后编译运行,结果正确2、欲添加自己的指令,不能确定指令相应的输出信号与代码,经查书和上网查找后解决问题。
六、算法设计(伪代码)1、首先是时序PROCESS,伪代码描述如下:PROCESS (RST0,SST0,T3,SW,CLR)BEGINIF CLR='0' THENST0清零;ELSIF SW有意义THEN -- SW四种情况均要用到ST0控制if 同步信号到来then -- 通过T3实现标记置位/复位同步完成对ST0的复位和置位;END IF;else NULL;end if;END IF;END PROCESS;2、其次是指令控制PROCESS,设计思想涉及到两级的译码结构(两重SWITCH-CASE)结构,由于要实线“可以在任何地方开始程序”,在取值时需要做一些调整。
用伪代码描述如下:PROCESS(SW,W3,W2,W1,IR,CLR)BEGIN初始化;CASE SW ISWHEN "100"=>IF ST0='0' THEN写R0和R1;SST0有效;ELSIF ST0='1' THEN写R2和R3;RST0有效;END IF;WHEN "011"=>每拍读两个;WHEN "010"=>IF ST0='0' THEN给首地址;SST0有效;ELSIF ST0='1' THEN自增;END IF;WHEN "001"=>IF ST0='0' THEN给首地址;SST0有效;ELSIF ST0='1' THEN自增;END IF;WHEN "000"=>IF ST0 = '0' THEN给首地址;SST0有效;ELSIF ST0 = '1' THEN取指,并保证ST0永远为1;CASE IR IS0001-1111操作码译码;END CASE;END IF;END CASE;END PROCESS;七、实验VHDL代码LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;ENTITY CPU ISPORT(CLR:IN STD_LOGIC; -- 清零信号T3,W1,W2,W3:IN STD_LOGIC; --时序信号C,Z:IN STD_LOGIC; -- 标志信号LDZ:OUT STD_LOGIC; --当它为1时,如果运算结果为0,在T3的上升沿,将1写入到Zbiaozhi寄存器;如果运算结果不为0,将0保存到Z标志寄存器。