寄存器模型理解

寄存器模型概览

概览

寄存器:一方面可以通过读出寄存器的状态来得知硬件当前的状况;另一方面可以通过配置寄存器使寄存器工作在一定模式下。

硬件中的各个功能模块可以由处理器来配置功能以及访问状态,而与处理器的对话及是通过寄存器的读写来实现的

寄存器的硬件实现是通过触发器实现的,每一个bit触发器都对应寄存器的功能关系描述

一个寄存器是由32bit位构成,可以分成多个域,每个域往往代表一项独立的功能,不同的域,对于外部读写而言大致可分为WO、RO、RW、RC(读后擦除)和W1C(只写一次)

对于mcdf寄存器模块描述,将0×00功能寄存器和0×10状态寄存器位用下图表示

 一般而言一个寄存器是32位宽,寄存器的地址索引关系是按照字对齐,上图中每个域的属性都不相同,reserved域表示的是该域所包含的比特位暂时保留已做日后功能的扩展使用,对该域的读写不起任何作用,无法写入而且读出值也是他的复位值

这些寄存器按照地址排列及构成寄存器块,寄存器块中除了包括寄存器外还包括存储器,他们的功能都近乎读写功能,以及表示为同外界通信的接口。

 MCDF的寄存器功能模式即可按上图一个register block表示。

一个功能模块的多个寄存器可以组团构成一个寄存器模型,上图中除了硬件实现的寄存器模块,也还有验证环境的寄存器模块,两个模块包含的寄存器信息高度一致,属于验证环境的寄存器模型可以抽象出一个层次化的寄存器列表,该列表所包含的域、属性、地址信息都和硬件寄存器内容高度一致

对于功能验证而言,可以将总线访问寄存器的方式抽象为寄存器模型模式访问的方式,这种方法使得寄存其后期地址的修改或者域的添加不会对已有的激励构成影响,提高测试序列的复用性


中心化管理方式

中心化管理的寄存器描述文件可以让软件建立的寄存器模型的内容和硬件寄存器保持一致,这样可以 尽量降低出现分歧和错误的可能;寄存器描述文档采用了结构化的文档描述方式,这也是为什么可以通过XML或者Fxcel(CSV)德等结构化方式来实现寄存器的功能描述

 推荐使用自动生成寄存器模型的流程。

未完待续、、、

uvm_reg相关概念

与寄存器模型寄存器模型相关的类以及相应的功能

class ctral_reg extends uvm_reg
  `uvm_objects_utils(ctral_reg)
  uvm_reg_field reserved;
  rand uvm_reg_field pkt_len;
  function new(string name = "ctral_reg");
    super.new(name, 32, UVM_NO_COVERAGE);
  endfunction
  virtual function build();
    reserved = uvm_reg_field::type_id :: create("reserved");
    pkt_len = uvm_reg_field :: type_id :: create("pkt_len");
    reserved.configure(this,26,6, "RO", 0 , 26h'0,1 ,0 ,0);
    pkt_len.configure(this, 3, 3, "RW", 0, 2'h0 , 1 ,1, 0);
  endfunction
endclass

class stat_reg extends uvm_reg
  `uvm_objects_utils(ctral_reg)
  uvm_reg_field reserved;
  rand uvm_reg_field fifo_vaild;
  function new(string name = "stat_reg");
    super.new(name, 32, UVM_NO_COVERAGE);
  endfunction
  virtual function build();
    reserved = uvm_reg_field::type_id :: create("reserved");
    fifo_vaild = uvm_reg_field :: type_id :: create("fifo_vaild");
    reserved.configure(this,24,8, "RO", 0 , 24h'0,1 ,0 ,0);
    pkt_len.configure(this, 8, 0, "RO", 0, 8'h0 , 1 ,1, 0);
  endfunction
endclass

class mcdf_rgm extends uvm_reg_block
  `uvm_object_utils(mcdf_rgm)
  rand ctral chnl0_ctral_reg;
  rand stat chnl0_stat_reg;
  rand_reg_map map;
  function new(string name = "mcdf_rgm");
    super.new(name, 32, UVM_NO_COVERAGE);
  endfunction
  virtual function build();
    chnl0_ctrl_reg = uvm_reg_field :: type_id :: create("chnl0_ctrl_reg");
    chnl0_ctrl_reg.configure(this);
    chnl0_stat_reg = uvm_reg_field :: type_id :: create("chnl0_stat_reg");
    chnl0_stat_reg.configure(this);
    map = create_map("map", 'h0, 4, UVM_LITTLE_ENDIAN);
    map.add_reg(chnl0_ctrl_reg, 32'h00000000,"RW");
    map.add_reg(chnl0_stat_reg, 32'h00000010,"RO");
    lock_model();
  endfunction
endclass : mcdf_rgm
  
  



寄存器建模的基本要点和顺序:

定义单个寄存器时,需要把寄存器的各个域整理出来,创建之后通过uvm_reg_field::configure()函数进行配置各自属性

定义uvm_reg_block时, 需要注意uvm_reg_block和uvm_mem、uvm_reg、uvm_reg_map之间的包含关系,uvm_reg和uvm_mem分别对应独立的寄存器和存储器,一个而一个uvm_reg_block可以用来模拟一个功能模块的寄存器模型,可以容纳多个uvm_reg和uvm_mem实例;map一方面用来表示寄存器和存储对应的偏移地址,同时由于一个reg_block可以包含多个map,各个map的作用可以用来对应不同总线和地址段。在uvm_block中创建了多个uvm_reg之后,需要调用uvm_reg::configure()去配置各个uvm_reg的实例

考虑到uvm_reg_map 也会在uvm_reg_block中例化,在例化之后还需要通过uvm_reg_map::add—_reg()函数来添加对应的偏移地址和访问属性,只有规定了这些属性,才能在之后的前门访问给出正确的地址

uvm_reg_block可以给更大的系统做寄存器建模,这意味着uvm_reg_block之间也可以有层次,上上一级的uvm_reg_block可以通过添加子一级的uvm_reg_map构建全局版图,继而通过uvm_reg_block和uvm_reg_map之间的层次关系来构建更系统的寄存器模型

模型使用流程

 验证过程中的不同角色会参与到上面的部分流程:

系统工程师需要提供寄存器描述文件

模块验证人员需要生成寄存器模型

vip开发人员需要提供总线适配器

TB构建人员需要集成寄存器模型

模块验证人员还需要完成后续的寄存器模型检查和功能覆盖率收集

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 一、实验目的 1 二、采用设备 1 三、设计安排 2 第一阶段:………………………………………………………………………………………2 第二阶段:……………………………………………………………………………………...2 第三阶段:………………………………………………………………………………….…..3 四、设计内容 2 4.1设计原理…………………………………………………………………….3 4.2主存储器的读、写和运行……………………………………………………3 4.3 指令寄存器介绍……………………………………………………………4 4.4 输入/输出设备……………………………………………………………4 五、设计与实现 7 5.1.1 以下是带移位运算的模型机的设计与实现………………………………9 5.1.2 将微程序流程图按微指令格式转化而成的“二进制微代码表”………9 5.1.3移位运算的模型机的设计和实现代码状况………………………………10 六、接线设计 10 6.1 实验接线……………………………………………………………………11 6.2 读写程序……………………………………………………………………11 6.3 运行程序……………………………………………………………………12 七、实验测试 12 7.1.1 IN命令测试图……………………………………………………………13 7.1.2 ADD命令测试图…………………………………………………………14 7.1.3RLC命令测试图…………………………………………………………….15 7.1.4 得到第二个IN命令………………………………………………..……17 八、实验总结与分析 22
前 言   致 谢   第一部分 走近Java   第1章 走近Java / 2   1.1 概述 / 2   1.2 Java技术体系 / 3   1.3 Java发展史 / 5   1.4 展望Java技术的未来 / 9   1.4.1 模块化 / 9   1.4.2 混合语言 / 9   1.4.3 多核并行 / 11   1.4.4 进一步丰富语法 / 12   1.4.5 64位虚拟机 / 13   1.5 实战:自己编译JDK / 13   1.5.1 获取JDK源码 / 13   1.5.2 系统需求 / 14   1.5.3 构建编译环境 / 15   1.5.4 准备依赖项 / 17   1.5.5 进行编译 / 18   1.6 本章小结 / 21   第二部分 自动内存管理机制   第2章 Java内存区域与内存溢出异常 / 24   2.1 概述 / 24   2.2 运行时数据区域 / 25   2.2.1 程序计数器 / 25   2.2.2 Java虚拟机栈 / 26   2.2.3 本地方法栈 / 27   2.2.4 Java堆 / 27   2.2.5 方法区 / 28   2.2.6 运行时常量池 / 29   2.2.7 直接内存 / 29   2.3 对象访问 / 30   2.4 实战:OutOfMemoryError异常 / 32   2.4.1 Java堆溢出 / 32   2.4.2 虚拟机栈和本地方法栈溢出 / 35   2.4.3 运行时常量池溢出 / 38   2.4.4 方法区溢出 / 39   2.4.5 本机直接内存溢出 / 41   2.5 本章小结 / 42   第3章 垃圾收集器与内存分配策略 / 43   3.1 概述 / 43   3.2 对象已死? / 44   3.2.1 引用计数算法 / 44   3.2.2 根搜索算法 / 46   3.2.3 再谈引用 / 47   3.2.4 生存还是死亡? / 48   3.2.5 回收方法区 / 50   3.3 垃圾收集算法 / 51   3.3.1 标记 -清除算法 / 51   3.3.2 复制算法 / 52   3.3.3 标记-整理算法 / 54   3.3.4 分代收集算法 / 54   3.4 垃圾收集器 / 55   3.4.1 Serial收集器 / 56   3.4.2 ParNew收集器 / 57   3.4.3 Parallel Scavenge收集器 / 59   3.4.4 Serial Old收集器 / 60   3.4.5 Parallel Old收集器 / 61   3.4.6 CMS收集器 / 61   3.4.7 G1收集器 / 64   3.4.8 垃圾收集器参数总结 / 64   3.5 内存分配与回收策略 / 65   3.5.1 对象优先在Eden分配 / 66   3.5.2 大对象直接进入老年代 / 68   3.5.3 长期存活的对象将进入老年代 / 69   3.5.4 动态对象年龄判定 / 71   3.5.5 空间分配担保 / 73   3.6 本章小结 / 75   第4章 虚拟机性能监控与故障处理工具 / 76   4.1 概述 / 76   4.2 JDK的命令行工具 / 76   4.2.1 jps:虚拟机进程状况工具 / 79   4.2.2 jstat:虚拟机统计信息监视工具 / 80   4.2.3 jinfo:Java配置信息工具 / 82   4.2.4 jmap:Java内存映像工具 / 82   4.2.5 jhat:虚拟机堆转储快照分析工具 / 84   4.2.6 jstack:Java堆栈跟踪工具 / 85   4.3 JDK的可视化工具 / 87   4.3.1 JConsole:Java监视与管理控制台 / 88   4.3.2 VisualVM:多合一故障处理工具 / 96   4.4 本章小结 / 105   第5章 调优案例分析与实战 / 106   5.1 概述 / 106   5.2 案例分析 / 106   5.2.1 高性能硬件上的程序部署策略 / 106   5.2.2 集群间同步导致的内存溢出 / 109   5.2.3 堆外内存导致的溢出错误 / 110   5.2.4 外部命令导致系统缓慢 / 112   5.2.5 服务器JVM进程崩溃 / 113   5.3 实战:Eclipse运行速度调优 / 114   5.3.1 调优前的程序运行状态 / 114   5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117   5.3.3 编译时间和类加载时间的优化 / 122   5.3.4 调
1. 深入掌握CPU的工作原理,包括ALU、控制器、寄存器、存储器等部件的工作原理; 2. 熟悉和掌握指令系统的设计方法,并设计简单的指令系统; 3. 理解和掌握小型计算机的工作原理,以系统的方法建立起整机概念; 4. 理解和掌握基于VHDL语言和TEC-CA硬件平台设计模型机的方法。 二、设计要求   参考所给的16位实验CPU的设计与实现,体会其整体设计思路,并理解该CPU的工作原理。在此基础上,对该16位的实验CPU(称为参考CPU)进行改造,以设计得到一个8位的CPU。总的要求是将原来16位的数据通路,改成8位的数据通路,总的要求如下: 将原来8位的OP码,改成4位的OP码; 将原来8位的地址码(包含2个操作数),改成4位的地址码(包含2个操作数)。   在上述总要求的基础上,对实验CPU的指令系统、ALU、控制器、寄存器、存储器进行相应的改造。具体要求如下: 修改指令格式,将原来指令长为16位的指令格式改成8位的指令长格式; 设计总共16条指令的指令系统。此指令系统可以是参考CPU指令系统的子集,但参考CPU指令系统中A组和B组中的指令至少都要选用2条。此外,常见的算术逻辑运算、跳转等指令要纳入所设计的指令系统; 设计8位的寄存器,每个寄存器有1个输入端口和2个输出端口。寄存器的数量受控于每一个操作数的位数,具体要看指令格式如何设计; 设计8位的ALU,具体要实现哪些功能与指令系统有关。设计时,不直接修改参考CPU的VHDL代码,而是改用类似之前基础实验时设计ALU的方式设计; 设计8位的控制逻辑部件,具体结合指令功能、硬布线逻辑进行修改; 设计8位的地址寄存器IR、程序计数器PC、地址寄存器AR; 设计8位的存储器读写部件。由于改用了8位的数据通路,不能直接采用DEC-CA平台上的2片16位的存储芯片,需要按照基础实验3的方法设计存储器。此种方法不能通过DebugController下载测试指令,因此测试指令如何置入到存储器中是一个难点。设计时,可以考虑简单点地把指令写死在存储器中(可用于验证指令的执行),然后用只读方式读出来;或者考虑在reset的那一节拍里,实现存储器中待测试指令的置入; (可选项)设计8位的数据寄存器DR; (可选项)不直接设计存储器RAM,而是采用DEC-CA平台上的2片16位的存储芯片.在实现了第9个要求的基础上,实现由Debugcontroller置入待测试指令; (可选项)顶层实体,不是由BDF方式画图实现,而是用类似基础实验4(通用寄存器组)中设计顶层实体的方式,用VHDL语言来实现。 (可选项)自己设想   利用设计好的指令系统,编写汇编代码,以便测试所有设计的指令及指令涉及的相关功能。设计好测试用的汇编代码后,然后利用Quartus II软件附带的DebugController编写汇编编译规则。接着,利用DebugController软件把汇编编译之后的二进制代码置入到所采用的存储器中,并对设计好的8位CPU进行测试。
1 目录 课程设计任务书 1 1.设计目的及设计原理 2 1.1设计目的 2 1.2设计原理 3 2.模型机的逻辑框图 3 3.指令系统及其指令格式 4 3.1指令系统 4 3.2指令格式 6 4.微程序的设计及其实现的方法 7 4.1微指令格式的设计 7 4.2后续微地址的产生方法 7 4.3 微程序入口地址的形成 8 5.模型机时序分析 10 6.指令执行流程 11 7.源程序,程序的指令代码及微程序 12 7.1 源程序 12 7.2 程序的指令代码 12 7.3微程序 13 8.实现过程 14 9.课程设计总结 19 课程设计任务书 学生姓名: 陈千 专业班级: 物联网1103班 指导教师: 程艳芬 工作单位:计算机科学与技术学院 题 目: 基本模型机的设计——加减法指令的实现 初始条件: 理论:学完"电工电子学"、"数字逻辑"、"汇编语言程序设计"、和"计算机组成原理"课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。 周二:系统分析,设计程序。 周三、四:编程并上实验平台调试 周五:撰写课程设计报告。 指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 模型机的设计——加减法指令的实现 1.设计目的及设计原理 1.1设计目的 运用所学的知识,通过使用软件HKCPT掌握各个单元模块的工作原理,进一步将其组成完整的系统,构成一台基本的模型计算机,并了解程序编译、加载的过程,以及通过微单步、单拍调试理解模型机中的数据流向。 本实验主要是设计加减法指令的实现,将汇编语言程序设计,数字逻辑与或运算原理以及计算机组成原理3方面的知识结合到一起利用此软件平台实现连续几个数的加减法运算,从而了解逻辑运算运算单元的运行过程。 1.2设计原理 CPU是计算机的核心,它是通过指令和微指令的执行来工作的。指令是计算机要完成的某一项功能,每一条机器指令对应到执行的过程中是一段微程序。一段微程序含多条微指令,而一条微指令又含多个微命令。一个微命令驱动某个硬件部件执行某种操作。通过这样一个关系,从而达到由计算机指令来驱动计算机各个硬部件的协调工作以实现一条指令的执行。 在之前的各个模块实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的实验系统中,模型机的运行是在微程序的控制下,实现特定指令的功能。在本实验平台中,模型机从内存中取出、解释、执行机器指令都将由微指令和之相配合的时序来完成,即一条机器指令对应一个微程序。 2.模型机的逻辑框图 简单的模型计算机是由算术逻辑单元、微程序单元、堆栈寄存器单元、累加器,启停、时序单元、总线和存储器单元组成。 在模型机中,我们将要实现RAM的读写指令,寄存器读写指令,跳转指令,ALU的加、减、与、或指令。把通用寄存器作为累加器A,进行左、右移等指令,整体构成一个单累加器多寄存器的系统。 整机的逻辑框图如下: 3.指令系统及其指令格式 3.1指令系统 本实验平台内采用的是8位数据总线和8位地址总线方式,设计指令系统时,主要考虑的是指令的类型,寻址方式和编码方式。 指令类型包括算术/逻辑运算类指令、移位操作类指令(带进位或不带进位)、数据传送类指令、程序跳转指令(有条件或无条件)、存储器操作类指令等。寻址方式包括直接地址寻址、寄存器直接寻址、寄存器间接寻址、立即数寻址等。指令格式的设定一般与机 的字长、存储器的容量以及指令的功能有关。主要包括操作码字段和地址码字段。本实验中操作码为8位,数据的传送单位为8位。 指令系统如下表: 指令助记符 指令功能 指令编码 微周期 微操作 取指微指令 T0 PC
计算机组成原理课程设计……一台模型计算机的设计 一、教学目的、任务与实验设备 1. 教学目的 (1)融会贯通本课程各章节的内容,通过知识的综合运用,加深对计算机系统各模 块的工作原理及相互联系的认识,加深计算机工作中"时间—空间"概念的理解,从而清晰 地建立计算机的整机概念。 (2)学习设计和调试计算机的基本步骤和方法,提高使用软件仿真工具和集成电路的基 本技能。 (3)培养科学研究的独立工作能力,取得工程设计与组装调试的实践和经验。 2.设计与调试任务 (1)按给定的数据格式和指令系统,在所提供的器件范围内,设计一台微程序控制 的模型计算机。 (2)根据设计图纸,在MAX+PLUS 平台上进行仿真,并下载到EL教学实验箱上进行调试成功。 (3)在调试成功的基础上,整理出设计图纸和其他文件。包括: 总框图(数据通路 图); 微程序控制器逻辑图; 微程序流程图; 微程序代码表; 元件排列图(或VHD程 序清单); 设计说明书; 调试小结。 2. 实验设备 1. PC机一台 2. EL教学实验箱 3. MAX+PLUS 配套软件 二、数据格式和指令系统 本模型机是一个8位定点二进制计算机,具有四个通用寄存器:R0~R3,能执行11条 指令,主存容量为256KB。 1. 数据格式 数据按规定采用定点补码表示法,字长为8位,其中最高位(第7位)为符号位,小数 点位置定在符号位后面,其格式如下: 数值相对于十进制数的表示范围为: -1 X 1―2―7 2. 指令格式及功能 由于本模型机机器字只有8位二进制长度,故使用单字长指令和双字长指令。 LDR Ri,D 格式 7 4 3 2 1 0 "0 0 0 0"Ri "不 用 " "D " 功能: Ri M(D) 2. STR Ri,D 格式 7 4 3 2 1 0 "0 0 0 1"Ri "不 用 " "D " 功能: M(D) (Ri) 3. ADD Ri,Rj 格式 7 4 3 2 1 0 "0 0 1 0"Ri "Rj " 功能: Ri (Ri)+ (Rj) 4. SUB Ri,Rj 格式 7 4 3 2 1 0 "0 0 1 1"Ri "Rj " 功能: Ri (Ri)- (Rj) 5. AND Ri,Rj 格式 7 4 3 2 1 0 "0 1 0 0"Ri "Rj " 功能: Ri (Ri) (Rj) 6. OR Ri,Rj 格式 7 4 3 2 1 0 "0 1 0 1"Ri "Rj " 功能: Ri (Ri) (Rj) 7. MUL Ri,Rj 格式 7 4 3 2 1 0 "0 1 1 0"Ri "Rj " 功能: Ri (Ri)× (Rj) 8. 转移指令 格式 7 4 3 2 1 0 "0 1 1 1"条件 "不 用 " "D " 功能: 条件码 00 无条件转移 PC D 01 有进位转移 PC D 10. 结果为0转移 PC D 11. 结果为负转移 PC D IN Ri,M j 格式 7 4 3 2 1 0 "1 0 0 0"Ri "Mj " 其中M j为设备地址,可以指定四种外围设备,当M j=01时,选中实验箱的二进制代码开关。功能: Ri (M j) OUT Ri,M j 格式 7 4 3 2 1 0 "1 0 0 0"Ri "Mj " 当M j=10时,选中实验箱的显示灯。功能: (M j) Ri HALT(停机指令) 格式 7 4 3 2 1 0 "1 0 0 0"不用 "不用 " 功能: 用于实现停机。 三、总体设计 总体设计的主要任务是 (1) 选定CPU中所使用的产要器件; (2) 根据指令系统、选用的器件和设计指标,设计指令流的数据通路; (3) 根据指令系统、选用的器件和设计指标,设计数据流的数据通路。 计算机的工作过程,实质上是不同的数据流在控制信号作用下在限定的数据通路中进 行传送。数据通路不同,指令所经过的操作过程也不同,机器的结构也就不—样,因此数 据通路的设计是至关重要的。所谓数据通路的设计,也就是确定机器各逻辑部件相对位 置的总框图。 数据远路的设计,目前还没有非常标准的方法。主要是依据设计者的经验,并参考现 有机器的三种典型形式(单总线、双总线或三总线结构),根据指令系统的要求,可采 用试探方法来完成。其主要步骤如下: (1) 对指令系统中的各条指令进行分析,得出所需要的指令周期与操作序列,以便决定各器 件的类型和数量。 (2) 构成一个总框图草图,进行各逻辑部件之间的互相连接,即初步确定数据通路,使得由 指令系统所包涵的数据通路都能实现,并满足技术指标的要求。 (3) 检验全部指令周期的操作序列,确定所需要的控制点和控制信号。 (4) 检查所设计的数据通路,尽可能降低成本,简化线路。 以上过程可以反复进行,以便得到一个较好的方
模型计算机的设计 一、教学目的、任务与实验设备 1. 教学目的 (1)融会贯通本课程各章节的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,加深计算机工作中“时间—空间”概念的理解,从而清晰地建立计算机的整机概念。 (2)学习设计和调试计算机的基本步骤和方法,提高使用软件仿真工具和集成电路的基本技能。 (3)培养科学研究的独立工作能力,取得工程设计与组装调试的实践和经验。 2.设计与调试任务 (1)按给定的数据格式和指令系统,在所提供的器件范围内,设计一台微程序控制的模型计算机。 (2)根据设计图纸,在MAX+PLUS 平台上进行仿真,并下载到EL教学实验箱上进行调试成功。 (3)在调试成功的基础上,整理出设计图纸和其他文件。包括:①总框图(数据通路图);②微程序控制器逻辑图;②微程序流程图;④微程序代码表;⑤元件排列图(或VHD程序清单);⑥设计说明书;⑦调试小结。 2. 实验设备 (1) PC机一台 (2) EL教学实验箱 (3) MAX+PLUS Ⅱ配套软件 二、数据格式和指令系统 本模型机是一个8位定点二进制计算机,具有四个通用寄存器:R0~R3,能执行11条指令,主存容量为256KB。 1. 数据格式 数据按规定采用定点补码表示法,字长为8位,其中最高位(第7位)为符号位,小数点位置定在符号位后面,其格式如下: 数值相对于十进制数的表示范围为: -1≤X≤1―2―7 2. 指令格式及功能 由于本模型机机器字只有8位二进制长度,故使用单字长指令和双字长指令。 ⑴ LDR Ri,D 格式 7 4 3 2 1 0 0 0 0 0 Ri 不 用 D 功能: Ri←M(D) (2) STR Ri,D 格式 7 4 3 2 1 0 0 0 0 1 Ri 不 用 D 功能: M(D)←(Ri) (3) ADD Ri,Rj 格式 7 4 3 2 1 0 0 0 1 0 Ri Rj 功能: Ri ←(Ri)+ (Rj) (4) SUB Ri,Rj 格式 7 4 3 2 1 0 0 0 1 1 Ri Rj 功能: Ri ←(Ri)- (Rj) (5) AND Ri,Rj 格式 7 4 3 2 1 0 0 1 0 0 Ri Rj 功能: Ri ←(Ri)∧ (Rj) (6) OR Ri,Rj 格式 7 4 3 2 1 0 0 1 0 1 Ri Rj 功能: Ri ←(Ri)∨ (Rj) (7) MUL Ri,Rj 格式 7 4 3 2 1 0 0 1 1 0 Ri Rj 功能: Ri ←(Ri)× (Rj) (8) 转移指令 格式 7 4 3 2 1 0 0 1 1 1 条件 不 用 D 功能: 条件码 00 无条件转移 PC ← D 01 有进位转移 PC ← D 10 结果为0转移 PC ← D 11 结果为负转移 PC ← D ⑼ IN Ri,M j 格式 7 4 3 2 1 0 1 0 0 0 Ri Mj 其中M j为设备地址,可以指定四种外围设备,当M j=01时,选中实验箱的二进制代码开关。功能: Ri ← (M j) ⑽ OUT Ri,M j 格式 7 4 3 2 1 0 1 0 0 0 Ri Mj 当M j=10时,选中实验箱的显示灯。功能: (M j)← Ri ⑾ HALT(停机指令) 格式 7 4 3 2 1 0 1 0 0 0 不用 不用 功能: 用于实现停机。 三、总体设计 总体设计的主要任务是 (1) 选定CPU中所使用的产要器件; (2) 根据指令系统、选用的器件和设计指标,设计指令流的数据通路; (3) 根据指令系统、选用的器件和设计指标,设计数据流的数据通路。 计算机的工作过程,实质上是不同的数据流在控制信号作用下在限定的数据通路中进行传送。数据通路不同,指令所经过的操作过程也不同,机器的结构也就不—样,因此数据通路的设计是至关重要的。所谓数据通路的设计,也就是确定机器各逻辑部件相对位置的总框图。 数据远路的设计,目前还没有非常标准的方法。主要是依据设计者的经验,并参考现有机器的三种典型形式(单总线、双总线或三总线结构),根据指令系统的要求,可采用试探方法来完成。其主要步骤如下: (1) 对指令系统中的各条指令进行分析,得出所需要的指令周期与操作序列,以便决定各器件的类型和数量。 (2) 构成一个总框图草图,进行各逻辑部件之间的互相连接,即初步确定数据通路,使得由指令系统所包涵的数据通路都能实现,并满足技术指标的要求。 (3) 检验全部指令周期的操作序列,确定所需要的控制点和控制信号。 (4) 检查所设计的数据通路,尽可能降低成本,简化线路。 以上过程可以反复进行,以便得到一个较好的方案。 图1给出了一个没有考虑乘法除法指令操作的总框图参考方案,注意,在此方案确定之后,应该检查所选用的各个器件是否满足数据通路的要求。实际上,数据通路的设计与器件的选择应同时进行而不能分离地工作。其次,接入总线的器件都要有三态输出,以便与总线连接。另外,在信息传送过程中应当注意器件原码和反码输出的配合关系。 图1所示的方案采用单总线结构,使用的许多器件都是三态输出,这种方案便于总线的连接和扩展,但缺点是指令和数据的传送都要经过总线,因此对总线的使用权就要分配得当。另外,执行算术逻辑指令时,先将第一个操作数由通用寄存器Ri送至缓冲寄存器DR1,然后再由通用寄存器Rj取第二个操作数送至缓冲寄存器DR2,之后送往ALU进行运算。显然,执行—条算术逻辑指令的时间相应要长一些。 图1 模型机数据通路框图 四、微程序控制器 数据通路框图—旦确定,指令流与数据流的通路也就随之最后确定,因而运算器和控制器的大部分结构也就确定下来了。 图1中各功能器件上还标注了控制点及其控制信号.这些控制信号就是微程序控制器进行设计的依据。 1.微指令格式 微指令格式建议采用水平型微指令,微命令编码采用直接表示法和分段直接译码法相结合的混合表示法,以缩短微指令长度。后继地址采用断定方式。微指令格式如下: 控制字段 判别字段 下址字段 同学们应根据本模型的具体情况来确定各字段的长度。 2. 微程序控制器 根据微指令和微程序的长度,确定控制存储器需选用几片EPROM(2716)用位扩展方式组成。 3.微程序设计 将机器的全部指令系统采用微指令序列实现的过程,叫做微程序设计。一条机器指令对应一个微程序,11条机器指令应当对应11个微程序。 微指令格式确定后,微程序的横向设计在于正确地选择数据通路,纵向设计在于确定后继微指令地址.事实上,微程序设计的关键在于纵向设计,即如何确定下一条微指令的地址。通常的做法是先确定微程序分支处的微地址,因为微程序分支处需要进行判别测试。这些微地址确定以后,就可以在一个“微地址表”中把相应的微地址单元填进去,以免后面的设计中重复使用而未发现,以致造成设计错误。 五、输入输出 输入输出是人机联系的重要手段,输入可采用开关、键盘等方式,输出可采用字符显示或打印输出等方式。考虑到成本与设备因素,本模型机采用最简单的二进制开关输入和发光二极管显示的方法,换句话说,本模型机中只使用两种“外部设备”:一种是二进制代码开关,它作为输入设备;另一种是发光二极管,它作为输出设备。 本设计为了节省器件,输入输出时可以不设置专门的数据缓冲寄存器。例如输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入的信息也就不变。输出时,将输出数据送到数据总线BUS上,驱动发光二极管进行显示。 如果采用正规的输入输出方法,可采用相应的器件构成接口电路。 六、组装与调试 1. 元器件的布局与连接 由图1看出,数据通路一旦确定之后,在调试过程中将会很少有变化。因此从组装和调试的角度来看,模型机总框图可划分为如下三个相对独立的功能模块: (1)运算器、存储器和系统总线 (2)时序产生器 (3)微程序控制器 本模型机所使用的器件较多,布线的工作量相当大,希望同学们认真、细致地工作。 元器件布局的一般原则是尽心能地按功能电路相对集中,这样做的好处是各器件之间的连线较短,同时也便于组装和调试. 为了安装和调试检查方便,集成电路应当以相同方向排列。通常总是把集成电路片的定位缺口向左,此时它的电源脚在左上角,接地脚在右下角。这种排列有利于设置电源线与地线。规整的布线不仅对调试维修带来方便,也可以保证线路可靠地工作,任何马马虎虎的接线将会给调试带来难以想象的后果,因此在布线前必须对布线质量给予高度重视。 2. 分调试 按功能模块进行分调是实现总调的前提和基础,因为只有各功能模块工作正常后,才能保证全机的正确运行。为此必须—步一个脚印、精心做好分调试,切不可赶急图快,以免在未做好分调的情况下进入总调,而最后又不得不返回头来重新分调。分调的重点放在时序产生器和微程序控制器上。 3. 总调 当各模块分调正常后,可将控制器发出的控制信号线接到相应的功能部件中去,转入全机总调试。 总调的第一步,事实上是检查全部微程序流程图。方法是用单步方式读出并执行微指令。进行的顺序是:先执行控制台指令的微程序流程图,然后执行机器指令的微程序流程图。当全部微程序流程图检查完毕后,如果存储器和运算器功能执行正确,就算总调第一步完成。 第二步是在内存中装入包括有全部指令系统的一段程序和有关数据,进一步可采用单指令方式或连续方式执行,以验证机器执行指令的正确性。 第三步是编写一段表演程序,令机器运行。 第四步是运行指导教师给出的验收程序。如果通过,就算大功告成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值