一个简单的CPU设计(黄欢)

更新时间:2024-04-04 22:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课 题: 简单的CPU模型 专 业: 计算机科学与技术 班 级: 01 学 号: 20102225 姓 名: 黄欢 指导教师: 姚家宁 设计日期: 2012年12月12日 成 绩:

重庆大学城市科技学院电气信息学院

重庆大学城市科技学院电气信息学院课程设计报告

计算机组成原理课程设计报告

一、设计目的

计算机组成原理课程设计的主要任务是让学生通过动脑和动手解决计算机设计中的实际问题。综合运用所学计算机组成原理知识,在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本的模型计算机,掌握整机概念,并设计机器指令系统,编写程序,在所设计的模型计算机上调试运行。 通过一个简单的CPU设计,明确计算机的控制原理与控制过程,巩固和灵活应用所学的理论知识,掌握计算机组成的一般设计方法,提高学生设计能力和实践操作技能,为从事计算机研制与设计打下基础。

二、设计要求

(1).振荡器,时间脉冲→时间(节拍) (2).时间指令→微命令 (3).指令操作码→指令(信号)

三、实现过程

1、系统概述

控制单元的主要功能是需要发出各种不同的微操作控制信号,从存储器取出的指令或有效地址都先送至MDR再送至IR,省去IR送至MAR的数据通路,凡是需从IR送至MAR的操作均有MDR送至MAR代替。计算机中有一运行标志触发器G,当G=1时,表示机器运行;当G=0时,表示停机。此CPU指令系统中包含CLA、COM、INC、SHR、CSL、STP、ADD、SUB、AND、LDA、STA、JMP、JZ、JN、JC 。

1

重庆大学城市科技学院电气信息学院课程设计报告

主存 MDR PC CPU AC IR ALU CU 标志 控制信号 +1 MAR 控制信号 时钟 G

一个简单的CPU模型

2、设计方案

(1).组合逻辑设计

组合逻辑设计控制单元时,首先根据上述微操作的节拍安排,列出微操作命令的操作时间表,然后写出没一个微操作命令(控制信号)的逻辑表达式,最后根据逻辑表达式画出相应的组合逻辑电路图。 1>列出微操作命令的操作时间表

上述条机器指令的微操作命令的操作l对间表。表中FE、IND和EX为CPU工作周期标志.T0~T2为节拍,I为间址标志,在取指周期的T2时刻·若测得I=1,则置‘1”IND触发器,进入间址周期;若I=0,则置“1”EX触发器,进入执行周期。同理,若IND=1 (表示多次间址),则继续间接寻址。在执行周期的T2时刻如果没有中断请求,则置“1”FE, 进入下一条指令的取指周期。为简单起见,表中空格中“O”默认未画出。

2>进行微操作信号综合

对微操作进行综合分析、归类,根据微操作时间表可以写出各微操作控制信号的逻辑表达式。表达式一般包括下列因素:

微操作控制信=机器周期∧节拍∧脉冲∧操作码∧机器状态条件条件

(2).微命令产生器

产生微命令方法:组合逻辑微命令产生器。 1>指令格式

2

重庆大学城市科技学院电气信息学院课程设计报告

模型机采用定长指令格式,每条指令16位长,操作码占4位(15~12位),两个操作数各占6位,每个操作数的寻址方式各占一位,源操作数的寻址方式为5位,操作数占4~0位,目的操作数的寻址方式占第11位,操作数占第10~6位。当寻址方式为直接寻址时,操作数位置上是内存地址号,当为寄存器寻址时,操作数位置上是寄存器号。涉及到的操作有LOAD、ADD、SUB、AND、OR、JZ、STA、INC、DEC、NOT、JMP、NOP等等。

15 12 11 10 6 5 4 0 OP 寻址方寄存器号或内存号 寻址方寄存器号或内存式 式 号 目的操作数 源操作数 2>指令类型

操作 ADD SUB AND OR JZ STA LOAD INC DEC NOT JMP NOP 编码 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 含义 加 减 与 或 判断相等 传送 赋初值 自增 自减 非 无条件跳转 无操作 3、 设计与分析

(1).指令格式设计 指令序类型 号 1 指令 清除累加器指令CLA 描述 该指令完成清除累加器操作,记作0→AC 2 非访3 存指令 4 5 累加器取反指令该指令完成累加器内容取反,结果送累加器的操COM 作,记作AC→AC 累加器加1指令该指令完成累加器内容+1,结果送累加器的操作,INC 记作(AC)+1→AC 算数右移一位指该指令完成累加器内容算术右移一位的操作,记作令SHR R(AC)→AC,AC0→AC0 循环左移一位指该指令完成累加器内容循环左移一位的操作,记作令CSL L(AC)→AC,AC0→ACn 3

重庆大学城市科技学院电气信息学院课程设计报告

6 7 8 访存指令 9 停机指令STP 加法指令ADD 将运行标志触发器置“0”,记住0→G 该指令完成累加器内容与对应主存单元的内容相加,结果送累加器的操作,记作(AC)+(MDR)→AC 该指令完成累加器内容与对应主存单元的内容相减,结果送累加器的操作,记作(AC)-(MDR)→AC 该指令完成累加器内容与对应主存单元的内容相与,结果送累加器的操作,记作(AC)∧(MDR)→AC 该指令将对应主存单元的内容取至累加器中,记作(MDR)→AC 该指令将累加器的内容存于对应内存单元中,记住(AC)→MDR 减法指令SUB 与指令AND 10 取数指令LDA 11 存数指令STA 12 13 转移类指令 14 无条件转移指令该指令完成将指令的地址代码部分送至PC的操JMP 作,记作(MDR)→PC 零转移指令JZ 运算结果为零(标志位Z=1),则指令的地址码部分送至PC,否则程序按原顺序执行,当运算结果不为零时,记作Z·(MDR)+Z·(PC)→PC 若结果为负(标志位N=1),则指令的地址码部分送至PC,否则程序按原顺序执行,记作N·(MDR)+N·(PC)→PC 负转移指令JN 15 进位转移指令JC 若结果有进位(标志位C=1),则指令的地址码部分送至PC,否则程序按原顺序执行,记作C·(MDR)+C·(PC)→PC (2).微操作的节安排

假设机器采用同步控制,每个机器周期包括3个节拍,安排操作节拍时,应注意以下几点:

①有些微操作的次序是不容改变的,故安排微操作节拍时必须注意微操作的先后顺序。

②凡是有被控制对象不同的微操作,若能在一个节拍内执行,应可能安排在同一个节拍内,以节省时间。

③如果有些微操作所占的时间不长,应该将他们安排在一个节拍内完成,并且允许这些微操作有先后次序。

1>取指周期微操作的节拍安排 取指周期的操作是公操作,其完成的任务已在前面进行过描述,再次不重复,这些操作可以安排在3个节拍中完成。

T0 (PC)→MAR,Read T1 M(MAR)→MDR,(PC)+1→PC

4

重庆大学城市科技学院电气信息学院课程设计报告

T2 (MDR)→IR

考虑到指令译码时间较短,可将指令译码OP(IR)→ID也安排在T2节拍内。 2>间址周期微操作的节拍安排

间址周期完成取操作数有效地址的任务,具体操作如下

①将指令的地址码部分(形式地址)送至存储器地址寄存器,记作(MDR)→MAR; ②向主存发读命令,启动主存读操作,记作Read;

③将MAR所指的主存单元中的内容(有效地址)经数据总线读至MDR,记作M(MAR)→MDR;

④将有效地址送至存储器地址寄存器(MAR),记作(MDR)→MAR。此操作在有些机器中可以省略。

这些操作可以安排在3个节拍中完成。 T0 (MDR)→MAR,Read T1 M(MAR)→MDR T2 (MDR)→MAR

3>执行周期微操作的节拍安排 ①非访存指令。

非访存指令在执行周期只有一个微操作,按同步控制的原理,此操作可以安排在T0-T2的任一节拍内,其余节拍空。

·清零指令CLA: T0 T1

T2 0→AC

·取反指令COM: T0 T1

T2 AC→AC ·加1指令INC: T0 T1

T2 (AC)+1→AC

·算术右移指令SHR: T0 T1

T2 R(AC)→AC,AC0→AC0

·循环左移指令CSL: T0 T1

T2 L(AC) →AC, AC0→ACn

5

重庆大学城市科技学院电气信息学院课程设计报告

·停机指令STP:

T0 T1

T2 0→G ②访存指令

·加法指令ADD X:

T0 (MDR) →MAR,Read T1 M(MAR)→MDR

T2 (AC)+(MDR)→AC(该操作实际包括(AC)→ALU,(MDR)→ALU,

+,ALU→AC)

·减法指令SUB X:

T0 (MDR) →MAR,Read T1 M(MAR)→MDR

T2 (AC)-(MDR)→AC ·与指令AND X:

T0 (MDR) →MAR,Read T1 M(MAR)→MDR

T2 (AC)∧(MDR)→AC ·取数指令LDA X:

T0 (MDR) →MAR,Read T1 M(MAR)→MDR T2 (MDR)→AC ·存数指令STA X: T0 (MDR) →MAR T1 AC→MDR,Write T2 (MDR)→M(MAR) ③转移类指令

·无条件转移JMP X: T0 T1

T2 (MDR)→PC ·结果为零转 JZ X: T0 T1

T2 Z·(MDR)+Z·(PC)→PC ·结果有进位转 JC X: T0 T1

6

重庆大学城市科技学院电气信息学院课程设计报告

T2 C·(MDR)+C·(PC)→PC

·结果为负转 JZ X: T0 T1

T2 N·(MDR)+N·(PC)→PC (3).组合逻辑设计步骤

组合逻辑设计控制单元时,首先根据上述微操作的节拍安排,列出微操作命令的操作时间表,然后写出没一个微操作命令(控制信号)的逻辑表达式,最后根据逻辑表达式画出相应的组合逻辑电路图。 1>列出微操作命令的操作时间表

2>进行微操作信号综合

微操作时间表周状

期节态微操作信CCISCS标拍 条号 LONHST志 件

A M C R L P T

(PC)->MA

1 1 1 1 1 1 0

R Read 1 1 1 1 1 1 FE

M(MAR)->

1 1 1 1 1 1 (TMDR 取

1

(PC)+1->1 1 1 1 1 1 址

PC

)

(MDR)IR

1 1 1 1 1 1 T

OP(IR)->1 1 1 1 1 1 2

ID

I 1->IND I 1->EX

1 1 1 1 1 1 T

(MDR)->M

AR

IN0 Read D(TM(MAR)->

间1

MDR 址(MDR)->M

) T

AR

2 IN

D

1->EX EX(T (MDR)->M

执0 AR

Read 行T) 1

(AC)->MD

R

7

ASADUND B D 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

LSJ

DTM

A A P

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1

1

JJJ

Z C N

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

重庆大学城市科技学院电气信息学院课程设计报告

T2 Z C N Write M(MAR)->

MDR (AC)+MDR

->AC (AC)-MDR

->AC (AC)∧

MDR->AC (MDR)->M

(MAR) (MDR)->A

1

C 0->AC AC->AC (AC)+1->

AC

R(AC)->AC;AC0->A C0

L(AC)->AC;AC0->Can Ad(MDR)-

>PC Ad(MDR)-

>PC Ad(MDR)-

>PC Ad(MDR)-

>PC 0->G

1 1 1 1 1

1

1

1

1

1 1

1

1

1

1 1 1

1

3>微操作信号逻辑表达式如下: 1 M(MAR)→MDR

=T1 {FE+IND(ADD+SUB+AND+LDA+STA+JMP+JZ+JC+JN)+EX(ADD+SUB+AND+LDA)} 2(PC)→MAR=1

3 Read=FE·T0+IND·T0(ADD+SUB+AND+LDA+STA+JMP+JZ+JC+JN) +EX·T0(ADD+SUB+AND+LDA) 4(PC)+1→PC=1 5(MDR)→IR=1 6 OP(IR)→ID=1 7 1→IND=1

8 1→EX=FE·T2+IND·T2(ADD+SUB+AND+LDA+STA+JMP+JZ+JC+JN)

8

重庆大学城市科技学院电气信息学院课程设计报告

9 (MRD) →MAR=

IND·T0(ADD+SUB+AND+LDA+STA+JMP+JZ+JC+JN)+ IND·T2

(ADD+SUB+AND+LDA+STA+JMP+JZ+JC+JN)+EX·T0(ADD+SUB+AND+LDA+STA) 10 (AC)→MDR=EX·T1·STA 11 Write= EX·T1·STA

12 (AC)+(MDR) →AC=EX·T2·ADD 13 (AC)-(MDR) →AC= EX·T2·SUB 14 (AC)∧(MDR) →AC= EX·T2·AND 15 (MDR)→M(MAR)= EX·T2·STA 16 (MDR)→AC= EX·T2·LDA 17 0→AC= EX·T2·CLA

18 AC→AC= EX·T2·COM

19(AC)+1→AC= EX·T2·INC 20 R(AC)→AC= AC0→AC0 = EX·T2·SHR

21 L(AC)→AC= AC0→ACN = EX·T2·CSL

22 Ad(MDR)→PC= EX·T2·JMP 23 Ad(MDR)→PC= EX·T2·JZ 24 Ad(MDR)→PC= EX·T2·JC 25 Ad(MDR)→PC= EX·T2·JN 26 0→G= EX·T2·STP

4>节拍产生

用4选1选择器,产生3个信号的节拍,分别为D0,D1,D2,分别对应T0,T1,T2;芯片真值表如下图所示:

74153的真值表 选择控制输入 A1 0 0 1 1 A2 0 1 0 1 D0 D0 数据输入 D1 D2 D3 输出 W D0 D1 D2 D3 φ D1 φ φ D2 φ φ φ D3 φ φ φ φ φ

9

φ

重庆大学城市科技学院电气信息学院课程设计报告

5>指令信号的产生

15个指令信号(包括CLA、COM、INC、SHR、CSL、STP、ADD、SUB、AND、LDA、STA、JMP、JZ、JN、JC)有两个74138译码器输出,芯片及真值表如下:

74138译码器真值表 使能 S1 S2+S3 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 A2 输入 A1 A0 Y0 Y1 Y2 输出 Y3 Y4 Y5 Y6 Y7 0 0 1 1 0 0 1 0 1 0 0 1 1 1 1 10

1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 重庆大学城市科技学院电气信息学院课程设计报告

1 1 1 0 φ

0 0 0 φ 1 1 1 1 φ φ 0 1 1 φ φ 1 0 1 φ φ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 (4)时序部件 1 .概述

CPU工作的关键部件,产生计算机执行机器指令所需的时序信号。计算机的工作过程:一个指令周期接一个指令周期;在一个指令周期内是一个机器周期接一个机器周期;在一个机器周期内是一个节拍接一个节拍;在一个节拍内产生哪些微操作信号取决于指令操作流程。伴随着指令的执行,计算机内部有两股信息在流动:一股是数据流,流过不同的部件完成不同处理;一股是控制信号流,控制数据从何处流出、经过何地(运算处理部件)、流往何处,微控制信号的产生由指令操作流程规定(操作码),控制信号有效状态的先后顺序由节拍控制。

2.机器周期

目标:一个机器周期执行一条单字指令。 如:ADD DR,SR

执行过程:1)取指;2)译码分析;3)执行(运算);4)写结果。

可合并为三个阶段:1)取指;2)分析、执行;3)写结果(存储器、寄存器)

3.节拍

三个阶段(取指、分析执行、写结果)对应三个节拍。

11

重庆大学城市科技学院电气信息学院课程设计报告

t1:取指—t1上升沿上升沿指令送IR;PC+1(temp)

t2:译码分析、运算处理(Z、C—TEMP);

t3:存储器、寄存器读写,下降沿写寄存器,改变C、Z、PC等。

四、总结

1、总结

这次的计算机组成原理课程设计——一个简单的CPU设计,巩固了我们所掌握的只是,充分的考验我们的实践能力。虽然在设计过程中遇到了一些困难,但我们在参考相关资料和老师的帮助下终于完成了此设计,通过这次的课程设计,我们收获了许多。我们设计的CPU全部指令是单周期指令。CPU操作数存取我们选用通用寄存器型,简化了指令的译码分析电路的复杂度,而整个指令系统只有只有仅仅15条指令但在功能基本上能完成全部基本的操作。并且该指令系统有冗余便于以后指令系统的扩展。在时序逻辑上我们把整个指令的执行周期分为三个阶段即取值、译码和分析。

2、收获与体会

本次实验在姚老师的帮助与教导下,我们完成了本次计算机组成原理的课程设计,其中用到计算机组成原理、汇编语言、数字逻辑等课程的知识,加深了我对他们的理解和知识的综合应用,提高了自己的动手能力和知识综合应用能力。同时也深深的体会到了现在电子技术的强大以及自己知识的欠缺。通过本次实验,使我对课本上的知识有了更深入的理解,让我把课本上的知识转化真正的动手能力。

在仅仅几平方厘米的面积上就集成上百万个电子元器件。通过自己设计CPU我加深了对指令执行过程的理解,通过自己理解代码,知道了每个引脚代表的东西,以前对于每一个阶段CPU具体做了哪些细微的处理,哪些地方发生了改变我一无所知。而在本次试验的调试过程中我看到了执行一条指令时每个阶段具体做了哪些工作,发生了什么变化以及指令之间到底是怎么有条不紊的顺序执行的。

在指令系统的设计过程中我也实实在在的体会到了指令系统的设计对于CPU的设计是多么的重要他不仅影响着你的CPU的上层应用的功能的强弱,而且决定着你的CPU的物理实现的硬件复杂度。我现在的理解是你设计的功能越强大对应的硬件电路就会越复杂调试难度也会相应增加,而你设计的指令系统如果不合理那么相应的硬件电路会变得异常的复杂以至于不可能完成最初的设计

12

重庆大学城市科技学院电气信息学院课程设计报告

要求。

通过本次实验,让我真正的认识到了计算机组成原理这门课程的闪光点,让我对CPU的设计和电子设计自动化等 方面的知识产生了浓厚的兴趣。本次实验,让我了解到了自己在动手能力和知识的掌握方面还存在许多的不足,这就要求了我在以后的学习过程中要严格的要求自己。不断地提高自己,让自己在学习中掌握更扎实的知识,提高自己的能力。

五、附录

串行指令CPU整体结构图CLKFLAGRegSel<寄存器选择>SelSrcSelOprSelDst<数据运算,传送>控制器运算器(含寄存器堆)SCI<进位>SST<设置状态>SA,SB<寄存器选择>FLAGALU输出AIsel<控制AR,IR接收>BusSel<选择总线数据来源>AR(地址寄存器)IR(指令寄存器)符号扩展Bus MUX寄存器数据<调试用>数据总线地址总线wrMem<内存读写>13

重庆大学城市科技学院电气信息学院课程设计报告

串行指令CPU控制器结构图指令字(16位)CLKRESET指令字的高8位(即操作码)FLAGStateGeneratorState(2~0)DecoderSelSrcSelOprSelDstBusSelAISelwrMemSCISSTSASB运算器结构图RARBDQSelSrcMUXExtTo17bitsExtTo17bitsClkSelOprLatchLatchRSCICCinSOPRATIONMUX加法器与门或门异或SHLSHRSARCXFDSSTSelOprCXRAClkSASBRegSelSelDstC,Z,V,SFLAGMUXYRegArrayRARBRegOut

六、参考文献

14

重庆大学城市科技学院电气信息学院课程设计报告

1、蒋本珊《计算机组成原理》清华大学出版社2008年9月第二版 2、毛法尧《数字逻辑》高等教育出版社2008年3月第二版

15

本文来源:https://www.bwwdw.com/article/pe5r.html

Top