收藏 分享(赏)

模块组成原理实验讲义2012101.doc

上传人:nanchangxurui 文档编号:7829676 上传时间:2022-09-22 格式:DOC 页数:81 大小:3.38MB
下载 相关 举报
模块组成原理实验讲义2012101.doc_第1页
第1页 / 共81页
模块组成原理实验讲义2012101.doc_第2页
第2页 / 共81页
模块组成原理实验讲义2012101.doc_第3页
第3页 / 共81页
模块组成原理实验讲义2012101.doc_第4页
第4页 / 共81页
模块组成原理实验讲义2012101.doc_第5页
第5页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 KX_DN 系列系列 现代计算机组成原理实验讲义现代计算机组成原理实验讲义 C1C1 杭州康芯电子有限公司www.kx-201210- -2目 录前言.4第 1 章 实验所用模块说明5第 2 章 实验说明6第 3 章 计算机功能模块的原理与设计64.1 CPU 基本功能与结构.64.2 计算机中的基本部件.74.2.1 算术逻辑单元.7 4.2.2 数据缓冲寄存器.9 4.2.3 移位运算器.9 4.2.4 程序存储器与数据存储器.10 4.2.5 程序计数器与地址寄存器.10 4.2.6 指令寄存器.12 4.2.7 微程序控制器.12 4.2.8 微程序控制器电路结构.14 4.2.9

2、时序发生器.164.3 数据通路设计.17 4.3.1 模型计算机的数据通路.15 4.3.2 模型机的电路结构.18 实验 4-1 算术逻辑运算单元 ALU 设计实验.19 实验 4-2 带进位算术逻辑运算单元 ALU 设计实验21 实验 4-3 移位运算器设计实验.22 实验 4-4 LPM_ROM 实验.23 实验 4-5 LPM_RAM 实验.24 实验 4-6 微控制器实验 1:节拍脉冲发生器时序电路实验25 实验 4-7 微控制器实验 2:程序计数器 PC 与地址寄存器 AR 实验.26 实验 4-8 微控制器实验 3:微控制器组成实验27第 5 章 8 位模型计算机原理与设计.2

3、9- -3实验 5-1 基本模型计算机设计与实现.29 实验 5-2 带移位运算的模型机设计与实现.30 实验 5-3 含 16 条指令的 CPU 设计与实现.31 实验 5-4 较复杂 CPU 应用程序设计实验.32第 6 章 16 位实用 CPU 原理与创新实验与设计.36实验 6-1 16 位计算机基本部件实验.36实验 6-2 16 位 CPU 验证性设计综合实验.37实验 6-3 新指令设计及程序测试实验.37实验 6-4 16 位 CPU 的优化设计与创新38实验 6-5 KX9016v1 系统硬件升级 CPU 设计竞赛项目.38第 7 章 流水线 CPU 原理实验与设计.39 实

4、验 7-1 高速硬件乘法器设计实验.39 实验 7-2 高速硬件除法器设计实验.40 实验 7-3 CACHE 实验.41第 8 章 流水线 CPU 设计实验与设计43 实验 8-1Stage1 取指令段设计实验43 1PC 选择模块 pcselector 实验.44 2程序计数器加 1 模块实验.443IF/ID 流水线寄存器实验444程序存储器 LPM_ROM 实验.445Stage1 综合实验44实验 8-2 Stage2 指令译码段设计实验.44 1符号扩展模块实验.44 2寄存器文件模块实验.44 3分支控制模块实验.45 4ID/EX 段的流水线寄存器实验.45 5Stage 2

5、指令译码段综合实验.45实验 8-3 Stage3 指令译码段设计实- -4验.46 1运算器 ALU 实验.47 2移位运算器实验.47 3数据输入模块实验.47 4EX/MEM 段流水线寄存器实验.47 5Stage3 综合实验.47实验 8-4 Stage4/5 存储与写回段设计实验.481数据存储器实验.482MEM/WB 流水线寄存器实验.483输出端口寄存器实验.484多路数据选择/输出实验48实验 8-5 数据相关性控制实验.48实验 8-6 数据通路设计实验.49实验 8-7 流水线 CPU 综合设计.50第 10 章 基于经典处理器 IP 的 SOC 实现.52 10.1 基

6、于 8051 单片机核的 SOC 系统实现.53 10.1.1 K8051 单片机软核基本功能和结构.53 10.2 基 8088 IP 核的 SOC 系统实现.57 10.2.1 8088 IP 核 SOC 系统.57 10.2.2 基于 8088 CPU IP 软核的最小系统构建.58 10.2.3 可编程并行接口 8255 IP核60 10.2.4 8255 IP 核基本功能测试61 10.2.5 8255 IP 在 8088 IP 核系统中的应用示例.63 10.2.6 8254/8253 IP 核可编程定时器/计数器.65 10.2.7 8254 IP 核基本功能测试66 10.2.

7、8 8254 IP 核在 8088 系统中的应用示例.67 10.2.9 8259 IP 中断控制器的功能和用法68 10.2.10 8259 IP 在 8086/8088 系统中的应用70 10.2.11 8237 DMA 控制器71 10.2.12 16550 IP 核可编程串行通信模块72 10.3 基于 8086 IP 软核的 SOC 微机系统设计.73 10.3.1 8086Z CPU 性能特点.74 10.3.2 KX86Z 微机系统的结构与功能74 10.3.3 KX86Z_FULL 系统上 MS-DOS 的使- -5用75 10.3.4 在 KX86Z_FULL 系统进行 C

8、程序或 BASIC 程序编程.7710.3.5 在 KX86Z_FULL 上启动 Windows 3.0.77 实验与设计77前前 言言 讲义说明:讲义说明:此此讲义讲义根据科学出版社出版的第二版根据科学出版社出版的第二版 现现代代计计算机算机组组成原理成原理 节选实验节选实验部分。具体部分。具体可参考此教程。可参考此教程。此此讲义对设备讲义对设备功能介功能介绍请绍请参照参照 EDA 实验讲义实验讲义 内容,内容,这这里不在里不在赘赘述。述。实验设备实验设备的配置及光的配置及光盘说盘说明明请请参照参照 EDA 实验讲义实验讲义 前言部分。前言部分。此此实验讲义仅对计实验讲义仅对计算机算机组组成

9、原理的成原理的实验实验内容内容进进行介行介绍绍,关于理,关于理论论和原理和原理请请参照科参照科学出版社出版,潘松等学出版社出版,潘松等编编著的著的 现现代代计计算机算机组组成原理成原理 第二版。第二版。 声声 明明凡本公司提供的凡本公司提供的实验实验源程序及源程序及资资料料仅仅用作教学研究之用,不得用于商用作教学研究之用,不得用于商业业开开发发, ,否否则则将追究法律将追究法律责责任。任。 版本版本历历史史- -6版本版本修改日期修改日期修改内容修改内容C12012-10第一版本第一版本第 1 章、实验所用的模块说明1、实验基本输入和输出模块:、实验基本输入和输出模块:1.1 32 位输出显示

10、位输出显示 HEX 模块(图模块(图 1-1)此模块由一单片机控制和相关驱动电路。其功能和用法如下:(1)8 位 HEX16 进制码显示,可向外输出二进制共 32 位。 (2)无抖动单脉冲输出。在数字系统设计中,手动按键式无抖动脉冲的发生经常会被用到。标注“1”共 4 个座,每个座提供 2 组 4 位二进制的输出端口:每 A、B、C、D 为从高到低一组,上面对应数码管显示 16 进制码,通过 10 芯线连接向外部提供信号。标注“2”复位键,输出显示归“0”如 CPU 的图图 1-1 32 位输出显示位输出显示 HEX 模块模块 单步运行、计数器对单脉冲的记录等。标注“3”输入键,每个键输入 4

11、 位二进制,从底到高渐进输入,进译码电路输出 16 进制码在数码上显示,并通过标注“1”端口输出对应二进制信号。在数字系统设计中,手动按键式无抖动脉冲的发生经常会被用到。如 CPU 的输入信号,加法器,减法器等输入信号。原理图请参考文件夹“原理图 KX_OTP.pdf“。1.2 32 位输入显示位输入显示 HEX 模块(图模块(图 12)此模块为外部输入 32 位二进制信号进此模块的译码电路显示 16 进制。标注“1”32 位共提供 4 个座,每个座提供 2组 4 位二进制的输入端,每 A、B、C、D 为一组。在数字系统设计中,手动按键式无抖动脉冲的发生经常会被用到。如 CPU 的单步运行、计

12、数器对单脉冲的记录等。原理图请参考文件夹“原理图 KX_INPT.pdf“。图 1-2 32 位输入显示模块1.3 提供高低电平开关(图提供高低电平开关(图 13)此模块节选主系统右下方,共8 个乒乓开关,拨上输出“1” ,拨下“0” ,右边为输出的端口,其边- -7上每个开关标识和开关上端的 图图 13标识对应起来即可。此模块适合做控制信号,如 CLR ,进位,使能等。1.4 提供高低电平开关(图提供高低电平开关(图 14)此模块节选主系统下方,共 8 个 LED 放光管,输入“1”点亮,上方是输入端口,其边上的标识和 LED 边上的标识对应起来即可,适合作为进位显示、移位显示灯实验图 14

13、第 2 章、实验讲义说明以下实验节选自科学出版社出版、潘松编著的现代计算机组成原理第二版的有关章节,为了用户能和此教程相对应,以下章节和教材的章节相同,详细理论及原理请参考此教程。第 4 章 计算机功能模块的原理与设计微型计算机的硬件主要由控制器、运算器、存储器、输入设备和输出设备 5 部分组成。作为计算机的核心部件,即中央处理器(CPU)集成了运算器,控制器及部分接口电路。现在,随着集成电路集成度的不断提高,将微机中越来越多的部件集成于同一片集成电路上,即所谓片上系统。本章主要讨论传统计算机组成原理中涉及的 CPU 中的主要模块及相关的计算机功能模块的工作原理和设计方法,为使用这些模块构建一

14、片完整的CPU,乃至一台基于片上系统的模型计算机作必要的准备工作。为了使尚不具备 HDL 知识的读者集中精力面对电路模块的基本原理和设计方法,除极个别的情况外,在本章及第 5 章中,对于功能模块及相关电路的表述形式尽可能限于 Quartus II 原理图的宏模块和原理图。至于极个别的 HDL 表述,只需关注其具体功能。4.1 CPU 基本功能与结构CPU 由基本的功能模块和与之相连接的数据通路所组成。对于 CPU 的设计,必须首先了解其结构细节及其基本模块的功能。然后对各模块电路进行编辑设计、逻辑综合、时序仿真和硬件测试,直至硬件实现。最后组装成一个完整的硬件系统,这个过程当然还包括指令系统的

15、设计和软件程序调试等步骤。1CPU 的功能为使计算机系统完成既定任务,就要使其各部件能协调工作。CPU 的功能是通过软件指令的执行,进而控制各部件协调工作来体现的,CPU 的功能主要包括:(1)指令控制。为了使计算机解决某些问题,计算机程序员需要针对计算机编制程序,而这些程序就是指令的有序集合。按照“存储程序控制”的概念,程序被装入计算机的程序存储器,即主存后,启动的计算机即能按预先设定的要求有条不紊地执行指令,进而完成既定的任务。因此,严格控制程序的执行顺序,是- -8CPU 的首要任务。(2)操作控制。一条具体指令的执行,需要涉及计算机中若干个部件或功能模块。控制这些部件协同工作,则需要靠

16、一系列操作信号的默契配合。而 CPU 正是通过执行每一条指令来产生这些操作信号的,CPU 将操作信号传送给被控部件,并能检测各个部件发送的信号,从而协调各个工作部件,按指令要求完成规定的任务。(3)时序控制。为使计算机按照程序员的要求有条不紊地工作,对各种操作信号的产生时间、稳定时间、撤销时间及相互间的关系都应有严格的要求。CPU 对操作信号施加时间上的控制,称为时序控制。只有严格的时序控制,才能保证各功能部件的合理配合,构成协调工作的计算机系统。严格合理的时序控制也是 CPU的重要工作。(4)数据处理。对涉及数值数据的算术运算,逻辑变量的逻辑运算以及其他非数值数据(如字符、字符串)的处理,可

17、统称为数据加工或数据处理。数据处理是完成程序功能的基础,因此它也是 CPU 的基本任务。2CPU 结构CPU 由运算器、控制器和数据通道三大部分有机组成。这三个部分功能各异,但工作配合密切,缺一不可。图 4-1 是 8 位 CPU 主要组成部件的功能模块图。运算器主要由算术逻辑单元 ALU、数据寄存器、暂存寄存器和状态条件寄存器等部件组成。它们属于数据加工处理部件,负责执行算术运算和逻辑运算操作。其中,运算器进行的全部操作都由控制器发出的控制信号来完成的。从图 4-1 可以看到,控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器 5 部分组成。控制器是协调和指挥整个计算机系统工

18、作的“决策机构” 。控制器的主要任务是: 取指令。即从主存中取出一条指令,存放到指令寄存器中。指令的操作码部分送给指令译码器,并修改程序计数器,指出下一条指令在主存中的存放地址。 指令译码。对译码器中指令操作码进行识别和解释,产生相应的操作控制信号,启动相应的部件,完成指令规定的动作。 数据流控制。指挥和控制 CPU、主存及输入输出部件之间的数据流动方向。运算器和控制器间的协调工作涉及大量的控制信息和数据信息的流通,这就需要一套高效的数据信息通道。控制信号和被处理的数据都将在这一通道中流动,这从图 4-1 也可大致看到,图中各功能模块的信息通道最终都汇集到一条总的通信线路上,来自各模块的信息,

19、包括控制信息和数据信息将分时借用这条通道流向预定的方向及相应模块,这就是计算机的总线系统。4.2 计算机中的基本部件为了聚焦核心问题,这里所谓的计算机主要包括 CPU、程序存储器/数据存储器两个大的部分。本节主要讨论这两大部件中的基本组成模块的结构、功能及其实现方法,或者说设计与功能测试方法。4.2.14.2.1算术逻辑单元算术逻辑单元前面已经谈到,CPU 中的一个重要部件是运算器,这是数据加工处理的部件。运算器由算术逻辑单元(ALU) 、数据缓冲寄存器、寄存器组和状态寄存器组成。运算器接受控制器的命令,完成具体的数据加工任务。运算器对累加器和数据缓冲寄存器的内容进行算术运算或逻辑运算,运算的

20、结果保存到累加器中,同时建立相应的状态标志,并将它们存放到状态寄存器中。图 4-1 CPU 组成部件的功能模块图- -9CPU 中的算术逻辑单元是计算机的核心部件之一,它能执行加法和减法等算术运算,也能执行“与” 、“或” 、 “非”等逻辑运算。对于 8 位算术逻辑单元的基本功能可以根据由标准逻辑器件 74LS181(4 位)组合的电路结构的功能用硬件描述语言来表述。例 4-1 就是算术逻辑单元 ALU 的 Verilog HDL 程序,这是根据表4-1 的 ALU 逻辑功能及 8 位处理部件的要求写出的。表 4-1 是 ALU 的基本算术与逻辑功能表。表 4-1 ALU 的运算功能M=H 逻

21、辑操作M=L 算术操作选择端S3 S2 S1 S0逻辑功能Cn=L(无进位)Cn=H(有进位)0 0 0 0AF AF 1加AF 0 0 0 1BAFBAF加 1)(BAF0 0 1 0BAF BAF+1BAF0 0 1 10F减 1(2 的补码)F0F0 1 0 0ABF BAAF加加 1BAAF加0 1 0 1BF 加)(BAFBA加+1)(BAFBA0 1 1 0BAFBAF减1减减BAF 0 1 1 1BAF BAF1)(减BAF1 0 0 0BAFABAF加加 1ABAF加1 0 0 1BAFBAF加加 1BAF加1 0 1 0BF ABBAF)加(加 1ABBAF加)(1 0 1

22、1ABF ABF 1减ABF 1 1 0 01F*AAF加1加加AAF 1 1 0 1BAFABAF)加(加 1ABAF)加(1 1 1 0BAFABAF)加(加 1ABAF)加(1 1 1 1AF AF 1减AF 注 1、* 表示每一位都移至下一更高有效位, “+”是逻辑或, “加”是算术加。注 2、在借位减法表达上,表 4-1 与 TTL 器件 74LS181 的真值表略有不同。如表 4-1 所示,M 信号端是算术运算/逻辑运算的方式选择位。当 M=H(高电平)时,ALU 进行逻辑运算;当 M=L(低电平)时,ALU 进行算术运算。Cn 是低位的进位,当 Cn 为低电平时,作无进位运算,而

23、当 Cn为高电平时,作有进位运算。S3、S2、S1、S0 分别是 4 位运算操作方式的选择控制端,从 00001111 共有 16种不同的选择。在算术运算方式下,或逻辑运算方式下都分别具有各自不同的 16 种运算操作。在例 4-1 中,各端口信号的作用分别是:S3:0是 ALU 的操作选择信号;A 和 B 分别是参加算术运算或逻辑运算的两个 8 位输入操作数;F 是 ALU 运算后的 8 位数据输出结果;CN 是进入 ALU 进行算术运算的低位进位位,或进行逻辑运算的进位标志; CO 是运算结果产生进位/借位的输出标志位;FZ 是运算结果为零的输出标志位;F 是运算输出结果。图 4-2 是例

24、4-1 的逻辑模块图,是利用第 2 章图 2-27 所示的选择项将例 4-1 变换成的元件符号,这个元件可以在今后的 CPU 设计的顶层原理图中直接调用。读者可以暂时只关注此模块的外部功能,即其时序特性。例 4-1 描述的算术逻辑单元 ALU181A.v 的仿真测试波形如图 4-3 所示。读者可以将此波形图给出的计算结果逐项对照表 4-1,进行验证。例如根据表 4-1,当 M=0、S=1001(9)、Cn=1 时作含进位的普通算术加法,图 4-3 显示,在此数据对应下,输出结果 F=A+B+Cn=34H+ACH+1=E1H,且 CO=0。【例4-1】module ALU181A (S, A,

25、B, F, M, CN, CO, FZ);input3:0 S; input7:0 A,B; input M, CN; output7:0 F; output CO, FZ; wire7:0 F; wire CO;wire8:0 A9, B9; reg FZ; reg8:0 F9; assign A9=1b0,A ; assign B9=1b0,B; always (M or CN or A9 or B9 or S) begin case (S)图 4-2 ALU 逻辑图- -10 4b0000 : if (M=0) F9=A9+CN ; else F9=A9; 4b0001 : if (M=

26、0) F9=(A9|B9) + CN ; else F9=(A9|B9); 4b0010 : if (M=0) F9=(A9|(B9)+ CN; else F9=(A9)&B9; 4b0011 : if (M=0) F9=9b000000000-CN; else F9=9b000000000; 4b0100 : if (M=0) F9=A9+(A9 & B9)+CN; else F9=(A9 & B9) ; 4b0101 : if (M=0) F9=(A9|B9)+(A9& B9)+CN; else F9= B9 ; 4b0110 : if (M=0) F9= A9-B9-CN ; else

27、F9=A9B9 ; 4b0111 : if (M=0) F9=(A9 &(B9)-CN; else F9=A9&(B9) ; 4b1000 : if (M=0) F9=A9+(A9 & B9)+CN; else F9=(A9)|B9 ; 4b1001 : if (M=0) F9=A9+B9+CN; else F9=(A9B9); 4b1010 : if (M=0) F9=(A9|(B9)+(A9&B9)+CN; else F9=B9 ; 4b1011 : if (M=0) F9=(A9 & B9)-CN ; else F9=A9&B9 ; 4b1100 : if (M=0) F9=A9+A9+

28、CN; else F9=9b000000001 ; 4b1101 : if (M=0) F9=(A9|B9)+A9+CN; else F9=A9|(B9) ; 4b1110 : if (M=0) F9=(A9|(B9)+A9+CN; else F9=A9|B9 ; 4b1111 : if (M=0) F9=A9-CN ; else F9=A9 ; default : F9=9b000000000; endcase if (A9=B9) FZ=1b0; else FZ=1b1 ; end assign F=F97:0 ; assign CO=F98 ;endmodule图 4-3 例 4-1 仿

29、真波形4.2.24.2.2 数据缓冲寄存器数据缓冲寄存器数据缓冲寄存器(DR)的作用是存放 CPU 从主存,即程序存储器或数据存储器中读取的一个指令字或一个数据字。数据缓冲寄存器的作用包括:1、作为 CPU 与主存及外围设备间的信息中转站,对数据起暂存作用;2、作为暂存寄存器,为算术逻辑部件 ALU 提供一个或两个参加运算的操作数。数据缓冲寄存器采用锁存器结构,图 4-4 所示的数据宽度为 8 位,data7:0是数据输入端;q7:0是数据输出端;gate 是数据锁存控制端。当 gate 为高电平时,数据进入锁存器;而当 gate 为低电平时,锁存器保持已输入的数据。此类寄存器中的状态寄存器是

30、用来保存当执行算术运算指令,逻辑运算指令或各类测试指令时,自动产生的状态结果;这些结果为后续指令的正确执行提供了判断依据。这些状态结果主要包括运算结果进位标志和运算结果为零标志等。寄存器也可以直接调用LPM 模块来实现。在 3.2.2 节中已详细介绍了此类寄存器的调用方法和仿真测试波形图 4-4 数据缓冲寄存器表 4-2 移位运算器的功能MS1S0功 能00任意保持010带进位循环左移011循环左移100循环右移101带进位循环右移111加载待移位数110加载待移位数- -114.2.34.2.3 移位运算器移位运算器移位运算器主要完成数据的移位和通过移位实现的运算功能。移位运算器有多种形式,

31、这里介绍的移位运算器的功能如表 4-2 所示。表中显示,M、S1、S0分别控制移位运算的功能状态。移位运算器具有数据装入、数据保持、循环右移、带进位循环右移,循环左移、带进位循环左移等功能。移位运算器设计的最方便的途径是用硬件描述语言来实现。例 4-2 就是根据表 4-2,用 Verilog HDL 描述的移位运算器。图 4-5 是其逻辑图符号,可在顶层原理图中调用。【例 4-2】module SFT8 (CLK, M, C0, S, D, QB, CN); input CLK, M, C0; input1:0 S; input7:0 D; output7:0 QB; output CN; w

32、ire7:0 QB; wire CN; wire2:0 ABC; reg7:0 REG; reg CY; always (posedge CLK) case (ABC) 3b011 : begin REG0=C0; REG7:1=REG6:0; CY=REG7; end 3b010 : begin REG0=REG7; REG7:1=REG6:0; end 3b100 : begin REG7=REG0; REG6:0=REG7:1; end 3b101 : begin REG7=C0; REG6:0=REG7:1; CY=REG0; end 3b110 : begin REG7:0=D7:0

33、; end 3b111 : begin REG7:0=D7:0; end default : begin REG = REG ; CYR0MOV R1,1将立即数 1R1(R1 存放参与运算的奇数)MOV R2,0将立即数 0R2(R2 存放累加和)LP1:CMP R0,R1将 R0 中的整数 n 与 R1 中的奇数进行比较JB LP2若 R1R0,则转到 LP2 处执行ADD R1,R2否则,累加求和INC R1R1 的内容加 2,形成下一个奇数INC R1JMP LP1跳转到 LP1 继续执行LP2:OUT R2输出累加和JMP LP0重新开始2确定指令格式确定指令格式。为了完成求和功能,

34、需要使用 8 条指令,其中包括算术指令、I/O 指令、转移指令和加 1 指令等:(1)I/O 指令。输入(IN)和输出(OUT)指令采用单字节指令,其格式如表 5-25 所示。其中,Addr=01 时选中“INPUT DEVICE”中的键盘输入设备,addr=10 时,选中“OUTPUT DEVICE”中的 LCD 点阵液晶屏作为输出设备。(2)比较和相加指令。比较指令(CMP)和相加指令(ADD)用单字节表示,采用寄存器直接寻址方式,其格式如表 5-26 所示,其中 rs 为源寄存器,rd 为目的寄存器,其地址编码如表 5-27 所示。 (3)转移指令。无条件转移(JMP)和结果为零或有进位

35、转移指令(JB),指令格式如表 5-28 所示。(4)MOV 指令。指令格式如下:表 5-28 转移等指令格式 表 5-29 MOV 指令格式 (5)加 1 指令 INC。指令格式如表 5-30 所示;而数据格式如表 5-31 所示。 - -35 表 5-30 INC 指令格式 表 5-31 数据格式 3设计指令系统设计指令系统。此模型机有 8 条基本指令。每条指令的格式、汇编符号、功能如表 5-32 所示。表 5-32 指令系统助记符号指令格式功 能IN rd1000XXrdinput rd 寄存器OUT rd1111XXrdrd outputADD rs,rd1100rsrdrs + rd

36、 rdCMP rs,rd1010rsrdrs rd rdINC rd1101XXrdRd +1 rdMOV data,rd1001XXrddatadata rdJMP addr1110XXXXaddrAddr PCJB addr1011XXXXaddr若小于,则 addr PC4将汇编语言源程序编译成机器代码。将汇编语言源程序编译成机器代码。按照指令格式与汇编语言源程序对应的机器语言源程序如表 5-33 所示。表 5-33 实验程序助记符地址机器代码功能LP0:IN R000H80HInput R0MOV R1,101H91H1R102H01HMOV R2,003H92H0R204H00HLP

37、1:CMP R0,R105HA1HR0-R1R1JB L206HB0H(LP2) PC07H0DHADD R1,R208HC6HR1+R2R2INC R109HD1HR1+1R1INC R10AHD1HR1+1R1JMP L10BHE0H(LP1)PC0CH05HLP2:OUT R20DHF2HR2outputJMP LP00EHE0H(LP0)PC0FH00H表 5-34 微地址和微指令表- -365设计微程序流程图。设计微程序流程图。根据应用程序中所用到的汇编语言指令(共 8 条指令) ,确定各条指令所需的微操作流程,设计微程序流程图如图 5-37 所示。6确定微地址和微指令确定微地址和微

38、指令。微地址和微指令如表 5-34 所示。7设计设计 LPM_rom 的初始化文件。的初始化文件。根据微指令表编写.mif 文件(示例文件在 CPU8.bdf 中元件 LPM_ROM0的文件 rom_8.mif)8重新编译。重新编译。在 Quartus II 环境下设计模型机电路的工程文件。将模型机电路图文件与微指令 LPM_rom 的初始化文件一起重新编译,并下载到实验台目标系统中。9时序仿真。时序仿真。在 Quartus II 环 针对输入的程序,进行完整的仿真。给出图 5-38 所示的仿真波形,并对照表 5-35 和实验程序表 5-33,详细分析模型机系统的运行时序,和微指令的操作细节。

39、10硬件测试。硬件测试。根据 5.3.8 节的流程和接入的相关电路,利用 Quartus II 所能提供的所有硬件测试工具,对模型机系统在执行实验程序时,进行实时测试,并把结果与仿真波形对照,给出详细报告。11单步运行调试程序。单步运行调试程序。实验系统设置同实验 5-1。SWB、SWA=11,记录程序执行过程中的实验数据、通过 LCD 显示屏跟踪程序的执行情况,观察、分析所设计的微指令是否正确,发现问题及时调整、修改,重新进行编译、下载和单步调试。微指令详细执行情况如表 5-35 所示。23 008001PCARPC+1RAMBUSBUSIR0101ED820200C0482001ED83P

40、(1)SWBUSBUSRd10001001PCARPC+11101ED83RsBUSBUSDR01201A204PCARPC+11301ED95RsBUSBUSDR01401A206RdBUSBUSDR01501A416PCARPC+11601ED98RdLED17010401RAMBUSBUSRd03009001RdBUSBUSDR10401B405 250180C7DR0-DR1CyFC05618B41 0701800101 IN MOV CMP JB ADD INC JMP OUT000181101001ED94P(4)PCARPC+121 01ED8CPCARPC+120 01ED94

41、(SW)BUSBUSRAM22062011RAMBUSBUSDR024002010KWE(01) KRD(00) RP(11)运行微程序控制台微程序01微地址采用八进制微指令采用十六进制微地址微操作微指令010101P(3)FC=1FC=02700D181 07018001RAMBUSBUSPC0101RdBUSBUSDR10601B41931919A01DR0+DR1BUSRd011DR12600A00EDR0+1BUSRd32919B4101RAMBUSBUSPC3000D18101图 5-37 实验 5-4 的微程序流程图- -37表 5-35 微指令执行情况应用程序的功能是对从 1 开

42、始的奇数进行累加,相加结果存放在 R2 中,即 R2=1+3+5+。表 5-28 给出了程序的详细执行过程,当循环程序 LP1 执行了两次以后,R2=1+3=04H。实验中,从键盘输入的整数 07H 存放在 R0 中,在对 R2 内容进行累加之前,首先要判断相加的奇数是否小于输入的整数 07H。若奇数小于 07H,则对 R2 进行累加;若奇数大于或等于 07H,则退出循环程序。当循环程序执行到第 4 次时,奇数变为 07H,与输入的整数相等,因此程序退出循环。程序最终的执行结果是:R2=1+3+5=09H。12连续运行连续运行。若单步调试正确,可在键盘(input)输入程序所需数据后将实验台从

43、单步切换到连续运行- -38方式。为了连续运行,可以将 STEP 锁定在连续时钟上。13实验报告:实验报告:(1)设计过程。指令系统、微程序流程图、汇编语言源程序和对应的机器语言源程序、模型机原理图,工作原理。 (2)实验数据。包括调试过程、问题排查、数据处理、结论。 (3)对设计过程的分析和总结图 5-38 模型机时序仿真波形(截取其中部分)第 6 章 16 位实用 CPU 原理与创新实验与设计6-1.6-1. 1616 位计算机基本部件实验位计算机基本部件实验(1) 实验目的:1学习掌握部件单元电路设计的相关技术,掌握上机调试方法;2学习掌握用 HDL 设计计算机基本组成模块的方法;3学会

44、对所设计的电路进行时序仿真和硬件测试。(2) 实验原理:参考 6.2 节有关内容。了解和掌握 16 位 CPU 的主要部件的工作原理。(3) 实验步骤:参照 6.2 节和参考第 3 章,对此 6.2 节介绍的所有部件逐个进行设计(已有设计示例)、仿真、锁定引脚,下载和硬件测试,包括:1、输入该部件的 HDL 程序代码,进行编译和调试;2、对该器件进行时序仿真;3、选择 FPGA 芯片,引脚锁定,重新编译后,下载到实验台进行硬件测试。(4) 实验任务:1掌握在 QuartusII 环境下,对 6.2 节介绍的所有组成此 CPU 的基本单元进行设计和功能验证;2详细分析例 6-8 的控制器程序,在

45、了解其所有功能,包括各控制信号的功能的条件下,对此程序进行仿真,更具体了解各控制信号与程序相关语句的关系,及时序情况。(5) 实验报告:实验原理,实验步骤和具体实验结果;实验中遇到的主要问题和分析解决问题的思路。6-2.6-2. 1616 位位 CPUCPU 验证性设计综合实验验证性设计综合实验(1) 实验目的:1理解 16 位计算机的功能、组成原理;2深入学习计算机各类典型指令的执行流程;3学习掌握部件单元电路设计的相关技术,掌握上机调试方法;4掌握应用程序在用 FPGA 所设计的 CPU上仿真和软硬件综合调试方法。实验原理参考本章相关内容。(2) 实验任务 1:根据图 6-2 电路图,以原

46、理图方式正确无误地编辑建立此 16 位 CPU 的完整电路;根据表 6-6 的汇编程序编辑此程序的机器码,及对应的 mif 文件,以待加载到 LPM_RAM 中。(3) 实验任务 2:根据 6.4 节,进行验证性设计和测试。参考仿真波形图图 6-14 和图 6-15,对 CPU 电路进行仿真。注意在这之前,参考第 3 章相关内容,把含程序机器码和相关数据的 mif 文件在调用 LPM_RAM的设置中指定好,以便编译时能自动配置进 RAM 中。根据仿真情况逐步调整系统设计,排除各种硬件错误,特别是把 CPU 中各个部件模块的功能调整好。使之最后获得的仿真波形与图 6-14 与 6-15 一致。(

47、4) 实验任务 3:根据 6.4.2 节的图 5-19 建立硬件测试电路。然后利用逻辑分析仪 SignalTapII 对下载于FPGA 中的 CPU 模块进行实测。尽量获得与时序仿真波形基本一致的实时测试波形。(5) 实验任务 4:根据图 6-17 调入 In-System Sources and Probes 测试模块,多设一些 Probes 端口,争取将- -39尽可能多的数据线和控制信号线加入,以便更详细地了解此 CPU 的硬件工作情况,包括对每一个指令执行的详细控制时序情况、相关模块的数据传输和处理情况、控制器的工作情况等。将获得的波形与时序仿真波形进行对照。记录并详述所有 7 条指令

48、的执行情况细节,写在实验报告中。在实测中还要使用 In-System Memory Content Editor 工具及时了解 LPM_RAM 中的数据,及相关数据的变化情况。最后完成实验报告。6-3.6-3. 新指令设计及程序测试实验新指令设计及程序测试实验参考实验示例和实验课件3_COMPUTER_PRLCHPT6 和课件(1) 实验目的:学习为实用 CPU 设计各种新的指令。学习调试和测试新指令的运行情况。(2) 实验原理:参考本章相关内容。(3) 实验任务 1:参考表 6-4、6.3.5 节及例 6-8 程序,设计两条新指令,即转跳指令 JMPGTI 和 JMPI。然后将它们的相关程序

49、嵌入例 6-8 的控制器程序中,然后通过以上实验已建立好的 CPU 电路,对这两个指令进行仿真测试,直至调试正确。(4) 实验任务 2:根据表 6-5 的程序,编辑程序机器码和 mif 文件,设此文件名是 ram_16.MIF。此文件中还要包括指定区域待搬运的数据块。文件数据即对应地址如图 6-26 所示。最后在 CPU 上运行调试这个程序,包括软件仿真和硬件测试。这是一个数据搬运程序,硬件实测中用 In-System Sources and Probes 和 In-System Memory Content Editor 最为方便直观。图 6-27 所示是用 In-System Memory

50、 Content Editor 实测到的数据搬运前的 RAM 中所有数据的情况。试给出执行搬运程序后,In-System Memory Content Editor 实测到的数据图。 (5) 实验任务 3:在图 6-2 所示的顶层电路中加入适当控制电路模块,将此 CPU 在 FPGA 中运行时产生的主要数据输出至不同类型的液晶显示器(如彩色数字液晶或黑白点阵液晶等)显示出来。例如图 6-28 所示,是普通点阵型液晶显示此 CPU 内相关数据的情况,图旁的表中给出了液晶显示文字的含义。(6) 实验任务 4:参考表 6-4,分别设计新指令 XOR 和 ROTL。在 CPU 上调试已嵌入例 6-8

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 政务民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报