计算机组成原理课程设计——CPU与简单模型机设计

article/2025/10/16 14:36:34

一、设计目的

1、掌握一个简单CPU的组成原理。

2、在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。

3、掌握微程序控制器设计。

二、设计任务与要求      

  • 设计任务:

用所学知识,设计并构造一台简单模型机。验证指导书所给出的五条指令的模型机实验。在此基础上,新设计五条机器指令。画出指令流程图,编写相应的微程序和机器语言调试程序,并上机调试通过。掌握整机概念。

  • 设计要求:

1.验证实验测试通过。接线完成。形成调试程序和微程序文本文件。联机写入和校验,并联机执行。为后边设计打下基础。

2.设计LDI指令并测试通过。包括指令格式、代码。指令流程图。微程序。调试程序。主要成果形成TEST1.TXT文件。

3.设计ADD指令并测试通过。要求同上。

4.设计AND指令并测试通过。同上。

5.设计 RL指令并测试通过。同上。

6.设计LAD指令并测试通过。同上。

三、设计方案

1、设计思路

第一步:按照机器指令的功能设计微程序指令流程图

第二步:按照微指令来设计微程序

第三步:将微程序写入后联机运行

2、使用的I/O设备

二进制数码开关,作为输入设备(IN),两位十六进制LED数码管,作为输出设备(OUT)。

3、使用的功能模块

CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计 数器(PC)和地址寄存器(AR)组成。

 4、功能模块的作用

(1)ALU作用:处理各种算术运算和逻辑运算。

(2)微程序控制器作用:基本任务是完成当前指令的翻译和执行。

(3)通用寄存器作用:可用于传送和暂存数据,也可参与算数逻辑运算并保存运算结果。

(4)程序计数器作用:用于存放下一条指令所在单元的地址的地方。

(5)地址寄存器作用:在移位脉冲作用下,存储在集萃器中的数据能逐位向左或向右的功能,可用来寄存数码,实现数据的串行——并行的转换、数值的运算及数据处理等功能。

四、连线图设计 

五、验证实验

1、包括五条指令的验证:IN(输入)、ADD(二进制加法)、OUT(输出)、JUMP(无条件转移)、HLT(停机)。

 

其中JUMP为双字节指令,其余均为单字节指令,其中********为addr所对应的二进制地址码。

2、根据要求设计微程序流程图。

其微指令格式如表5-1-1:

  1. 3.将每条微指令代码化将程序流程图按照指令格式转化成相应的“二进制代码表”
  2. 4.从 IN 单元读入数据送 R0 R0和自身相加,结果送R0 R0的值送OUT单元显示 

根据要求得到以下程序。

地址         内容          助记符              说明

00000000   00100000 ;    START: IN R0     从IN单元读入数据送至R0

00000001   00000000 ;    ADD  R0,R0        RO与自身相加送至R0

00000010   00110000 ;   OUT R0               R0值送至OUT单元显示

00000011   11100000 ;   JMP START            跳转至00H地址

00000100   00000000 ;

00000101   01010000 ;    HLT 停机

  1. 5.具体操作步骤

(1)采用联机写入校验:微程序和机器程序得以指定的格式写入到以 TXT 为后缀的文件中,微程序和机器程序的格式如下:

机器指令格式说明: $P XX XX

   $P :  机器指令代码

    XX : 十六进制地址

    XX : 机器指令标志

微指令格式说明: $M XX XXXXXX

     $M :微指令代码

XX:十六进制地址

XXXXXX:微指令标志

(2)TEST0.txt文件

; //*************************************** //

; // //

; // CPU 与简单模型机实验指令文件 //

; // //

; // By TangDu CO.,LTD //

; // //

; //*************************************** //

; //****** Start Of Main Memory Data ****** //

$P 00 20 ;  START: IN R0 IN 单元读入数据送 R0

$P 01 00 ;  ADD R0,R0 R0 和自身相加,结果送 R0

$P 02 30 ;  OUT R0 R0 的值送 OUT 单元显示

$P 03 E0 ;  JMP START 跳转至 00H 地址

$P 04 00 ;

$P 05 50 ;  HLT 停机

; //******* End Of Main Memory Data ******* //

; //**** Start Of MicroController Data **** //

$M 00 000001 ;  NOP

$M 01 006D43 ;  PC->AR,PC 1

$M 03 107070 ;  MEM->IR, P<1>

$M 04 002405 ;  R0->B

$M 05 04B201 ;  A B->R0

$M 1D 105141 ;  MEM->PC

$M 30 001404 ;  R0->A

$M 32 183001 ;  IN->R0

$M 33 280401 ;  R0->OUT

$M 35 000035 ;  NOP

$M 3C 006D5D ;  PC->AR,PC 1

; //** End Of MicroController Data **//

选择联机软件的“【转储】—【装载】”功能,在打开文件对话框中选择上面所保存的文件TEST0.txt, 软件自动将机器程序和微程序写入指定单元。

选择联机软件的“【转储】—【刷新指令区】”可以读出下位机所有的机器指令和微指令, 并在指令区显示,对照文件检查微程序和机器程序是否正确,如果不正确,则说明写入操作失 败,应重新写入,可以通过联机软件单独修改某个单元的指令,以修改微指令为例,先用鼠标 左键单击指令区的‘微存’TAB 按钮,然后再单击需修改单元的数据,此时该单元变为编辑框, 输入 6 位数据并回车,编辑框消失,并以红色显示写入的数据。

(3)运行程序方法:联机运行

将时序与操作台单元的开关 KK1 和 KK3 置为‘运行’档,进入软件界面,选择菜单命令 “【实验】—【简单模型机】”,打开简单模型机数据通路图。

按动CON单元的总清按钮CLR,然后通过软件运行程序,选择相应的功能命令,即可联机 运行、监控、调试程序,当模型机执行完JMP指令后,检查OUT单元显示的数是否为IN单元值的2倍。在数据通路图和微程序流中观测指令的执行过程,并观测软件中地址总线、数据总线以及微指令显示和下位机是否一致。

  1. 功能设计
  1. 1.机器指令功能说明(ADD+LDI+AND+RL+LAD

序号

助记符

机器指令代码

十六进制代码

功能说明

0

ADD   R0im

00000000

00H

 R0<-(R0) + im

1

AND   R0im

00010000

10H

R0<-(R0) ∧ im

2

IN   R0, K

00100000

20H

R0<- IN

3

OUT   L0,R0

00110000

30H

OUT<-L0

4

MOV   R0,[R0]

01000000

40H

R0<- [R0]

5

HLT

01010000

50H

暂停

6

LDI   R0, im

01100000

60H

R0<- im

7

 INC    R0

01110000

70H

R0<-(R0) + 1

8

SUB    R0,im

10000000

80H

 R0<-(R0) - im

9

OR    R0,im

10010000

90H

R0<-(R0)∨ im

10

RR    R0, 1

10100000

A0H

R0<-将(R0)右移1位

11

RL    R0, 1

10110000

B0H

R0<-将(R0)左移1位

12

LAD  R0, addr

11000000

C0H

  R0<-[addr]

13

STA  addr, R0

11010000

D0H

 ADDR<-(R0)

14

 JMP  addr

11100000

E0H

  PC<-E

15

BZC

11110000

F0H

注释:im为立即数。addr为直接地址。从而相应的指令变为双字节指令。

2、指令流程图设计

   

3、微程序设计

ADD:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

06

006D47

00000

0000

110

110

101

000111

07

102008

00010

0000

010

000

000

001000

08

04B201

00000

1001

011

001

000

000001

31

001406

00000

0000

001

010

000

000110

LDI:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

09

103001

00010

0000

011

000

000

000001

3C

006D5D

00000

0000

110

110

101

011101

AND:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

07

006D08

00000

0000

110

110

100

001000

08

102009

00010

0000

010

000

000

001001

09

013201

00000

0010

011

001

000

000001

31

001407

00000

0000

001

010

000

000111

RL:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

06

03B201

00000

0111

011

001

000

000001

3B

001406

00000

0000

001

010

000

000110

LAD:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

08

106009

00010

0000

110

000

000

001001

09

103001

00010

0000

011

000

000

000001

3C

006D48

00000

0000

110

110

101

001000

4、调试程序设计

  1. 最终联机程序清单
  1. 1.验证

; //*************************************** //

; // //

; // CPU 与简单模型机实验指令文件 //

; // //

; // By TangDu CO.,LTD //

; // //

; //*************************************** //

; //****** Start Of Main Memory Data ****** //

$P 00 20 ; START: IN R0 IN 单元读入数据送 R0

$P 01 00 ; ADD R0,R0 R0 和自身相加,结果送 R0

$P 02 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 03 E0 ; JMP START 跳转至 00H 地址

$P 04 00 ;

$P 05 50 ; HLT 停机

; //******* End Of Main Memory Data ******* //

; //**** Start Of MicroController Data **** //

$M 00 000001 ; NOP

$M 01 006D43 ; PC->AR,PC 1

$M 03 107070 ; MEM->IR, P<1>

$M 04 002405 ; R0->B

$M 05 04B201 ; A B->R0

$M 1D 105141 ; MEM->PC

$M 30 001404 ; R0->A

$M 32 183001 ; IN->R0

$M 33 280401 ; R0->OUT

$M 35 000035 ; NOP

$M 3C 006D5D ; PC->AR,PC 1

; //** End Of MicroController Data **//

  1. 2.ADD

$P 00 20 ; START: IN R0 IN 单元读入数据送 R0

$P 01 00 ; ADD R0,R0 R0 和自身相加,结果送 R0

$P 02 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 03 E0 ; JMP START 跳转至 00H 地址

$P 04 00 ;

$P 05 50 ; HLT 停机

$M 06 006D47 ;

$M 07 102008 ;

$M 08 04B201 ;

$M 31 001406 ; R0->A

  1. 3.LDI

$P 00 60 ; LDI

$P 01 33 ;

$P 02 00 ; ADD R0,R0 R0 和自身相加,结果送 R0

$P 03 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 04 E0 ; JMP START 

$P 05 00 ;

$P 06 03 ; 

$P 07 50 ; HLT 停机

$M 09 103001 ; MEM->R0

$M 3C 006D5D ; PC->AR,PC 1

  1. 4.AND

$P 00 20 ; IN

$P 01 10 ; AND

$P 02 F0 ;

$P 03 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 04 E0 ; JMP START 跳转至 00H 地址

$P 05 00 ;

$P 06 50 ; HLT 停机

$M 07 006D08 ; PC->AR PC+1

$M 08 102009 ; MEM->B

$M 09 013201 ; AB

$M 31 001407 ; R0->A

  1. 5.RL

$P 00 20 ; START: IN R0 IN 单元读入数据送 R0

$P 01 B0 ; RL

$P 02 00 ; ADD R0,R0 R0 和自身相加,结果送 R0

$P 03 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 04 E0 ; JMP START 跳转至 00H 地址

$P 05 00 ;

$P 06 50 ; HLT 停机

$M 06 03B201 ;R0->A

$M 3B 001406 ;A左移->R0

  1. 6.LAD

$P 00 C0 ; LAD

$P 01 37 ;

$P 02 30 ; JMP START 跳转至 00H 地址

$P 03 40 ;

$P 04 50 ; HLT 停机

$M 00 000001 ; NOP

$M 08 106009 ; MEM->AR

$M 09 103001 ; MEM->R0

$M 3C 006D48 ; PC->AR,PC 加 1

八、调试过程

1.验证

2.ADD

   

  1. 3.AND

    

  1. 4.LDI

 

  1. 5.RL

  1. 6.LAD

   

9、参考文献

   [1]白中英、戴志涛主编.《计算机组成原理》.第五版 科学出版社


http://chatgpt.dhexx.cn/article/wUDQUYhj.shtml

相关文章

计算机组成原理——课程设计

《计算机组成原理》 课程设计 一、目的和要求 深入了解计算机各种指令的执行过程&#xff0c;以及控制器的组成&#xff0c;指令系统微程序设计的具体知识&#xff0c;进一步理解和掌握动态微程序设计的概念&#xff1b;完成微程序控制的特定功能计算机的指令系统设计和调试。…

计算机组成原理课程设计:复杂模型机

课程设计报告 课程名称&#xff1a; 计算机组成原理 设计题目&#xff1a; 复杂模型机 目 录 1、课程设计任务书 3 1.1设计任务 3 1.2性能指标和设计要求 3 2、本设计的模型机体系结构及功能 4 2.1 模型机的体系结构 5 2.2 模型机所具有的基本功能 5 3、 模型机硬件设计 5 3…

用excel、matlab、python绘制正态分布图

用excel、matlab、python绘制正态分布图 excel绘图matlab绘图python绘图 为加深对统计知识的理解&#xff0c;老师要求用excel和matlab绘图&#xff0c;在这想介绍3个常见的绘图软件来绘制正态分布密度函数曲线和正态分布分布函数曲线。 excel: matlab&#xff1a; excel绘图…

统计信号处理基础 习题解答1-2

题目&#xff1a; 一个未知参数θ影响一个随机变量实验的结果&#xff0c;这个随机实验可以看成随机变量x。x的PDF为 进行一系列的实验&#xff0c;发现x总是在区间[97,103]内。结果我们得出结论&#xff1a;θ肯定是100&#xff0c;这种推测正确么&#xff1f; 解答&#xf…

数学建模(NO.9斯皮尔曼相关系数)

斯皮尔曼相关系数 一. 定义方法一&#xff1a;计算公式法三.方法二&#xff1a;利用皮尔逊相关系数法四.Matlab计算五.斯皮尔曼和皮尔逊对比六.斯皮尔曼相关系数的假设检验1.小样本&#xff08;查表&#xff09;2.大样本&#xff08;计算统计量&#xff09; 七.两个比较八.相关…

【FinE】统计与计量指标计算(Matlab)

导航 CDF函数(normal distribution)CDF函数(t-location-scale distribution)CAPM模型 β \beta β计算误差项 ε i \varepsilon_i εi​计算correlation and covariance t t t分布拟合序列Generalized Hyperbolic Distributionapproximation method 1approximation method 2 Go…

【概率论与数理统计】python实验

实验一抛硬币试验的模拟 利用python产生一系列0和1的随机数&#xff0c;模拟抛硬币试验。验证抛一枚质地均匀的硬币&#xff0c;正面向上的频率的稳定值为0.5。 实验步骤 &#xff08;1&#xff09;生成0和1的随机数序列&#xff0c;将其放入列表count中&#xff1b;也可用函数…

matlab 数理统计,概率论和数理统计(matlab应用)1

概率论和数理统计(matlab应用)1 (2006-04-29 08:53:49) 12.1 概 述 自然界和社会上会发生各种各样的现象&#xff0c;其中有的现象在一定条件下是一定要发生的&#xff0c;有的则表现出一定的随机性&#xff0c;但总体上又有一定的规律可循。一般称前者为确定性事件&#xff0c…

正态分布中normpdf和normcdf的区别

同时&#xff0c;也可以扩展为其它函数的区别&#xff0c;即pdf与cdf

matlab中normcdf函数用法,Matlab中标准正态分布的密度函数是normcdf(x,0,1)

中标准正属于项目资本现金流量表中现金流出构成的是() 态分USCI模块中的波特率由分频器和调制器共同作用生成。 在MSP430F66xx时钟设置中XT1的XIN和XOUT引脚接32768Hz低频晶振&#xff0c;密度则UCSCTL6的UCSCTL6 & ~XT1OFF表示使能XT1&#xff0c;UCSCTL6 | XCAP_3表示选择…

matlab中normcdf和normpdf区别

最近准备参加个数学建模&#xff0c;其中校赛题目是有关于正态分布的排队论&#xff0c;在做的时候总是发现有问题&#xff0c;后来仔细研究才发现在matlab中关于正态分布有两个函数normcdf和normpdf。

【Matlab】正态分布常用函数normpdf_normcdf_norminv_normrnd_normfit

1.normpdf 功能&#xff1a;正态分布概率密度函数 用法 Y normpdf(X,mu,sigma) Y normpdf(X) % (mu 0, sigma 1) Y normpdf(X,mu) % (sigma 1)例子 % code1 % 画标准正态分布概率密度函数 x -10:0.01:10; y normpdf(x, 0, 1); plot(x,y); grid on;结果&#xff1a…

firefox iMacros

iMacros是一个基于firefox的插件&#xff0c;它可以帮助你自动填写表单&#xff0c;自动提交&#xff0c;自动上传下载等 iMacros就是一个可以帮助你实现自动化重复性的任务。无论你对Firefox做什么&#xff0c;iMacros可以自动执行它。网络设计人员可以使用的功能测试和回归测…

SEO必备的利器–iMacros

Via http://www.snailtoday.com/2012/02/imacros/ 今天向大家介绍一个做SEO必备的利器–iMacros&#xff0c;我们可以用它来自动发布博客评论、自动注册论坛账号、自动发布文章等&#xff0c;几乎可以和一些SEO软件相媲美。其实在之前翻译的一篇文章《10000美元/天是这样炼成的…

imacros:使用外部编辑器

2019独角兽企业重金招聘Python工程师标准>>> 在imacros中&#xff0c;右击iim文件&#xff0c;选择编辑宏&#xff0c;会调用imacros自带的编辑器进行编辑。 其实也可以自定义&#xff1a; 在Paths选项卡中选择外部编辑器&#xff1a; 转载于:https://my.oschina.ne…

FF的插件iMacros简单交流

今天组织了公司第一次软件测试沙龙&#xff0c;主题是自动化测试插件--iMacros&#xff0c;公司的一位同事分享了他关于iMacros使用的一些心得给我们分享&#xff0c;现小小总结一下&#xff1a; iMacros是一款功能比较强的FF插件&#xff08;当然也有IE和chrome的版本&#xf…

imacros:初次尝试

2019独角兽企业重金招聘Python工程师标准>>> 安装 打开火狐插件管理页面&#xff0c;搜索、安装&#xff1a; 当然&#xff0c;用的免费版本。 安装后&#xff0c;工具栏出现&#xff1a; 示例 VERSION BUILD9030808 RECORDERFX TAB T1 TAB CLOSEALLOTHERS URL GOT…

imacros:运行javascript

2019独角兽企业重金招聘Python工程师标准>>> 将#Current.iim重命名为js后缀的文件&#xff0c;例如test.js。注意&#xff0c;每次录制时都会有新的#Current.iim产生&#xff0c;若无则会新建&#xff0c;有则覆盖内容。 运行test.js&#xff1a; 这里的js有较多的限…

如何使用iMacros进行web程序中页面加载的性能测试

iMacros 的官方简介如下&#xff0c;这里就不做翻译了&#xff0c;本人觉得还是看原汁原味的介绍好。 iMacros is an extension for the Mozilla Firefox web browsers which adds record and replay functionality similar to that found in web testing and form filler sof…

火狐浏览器Firefox 如何使用iMacros 自动填写网页表单

1 我们首先访问一个想要自动填写表单的网站。我们以百度为例&#xff0c;右侧有登录窗口。 2 然后我们点开刚安装上的iMacros插件&#xff0c;一般安装之后就会自动出现在浏览器的某个地方&#xff0c;点击记录选项卡&#xff0c;再点击记录。 3 iMacros将立即开始记录宏命令…