【微处理器系统原理与应用设计】微处理器的基本架构之组成原理和系统结构

本文主要是介绍【微处理器系统原理与应用设计】微处理器的基本架构之组成原理和系统结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文首先讲解微处理器的重要组成部分,之后会穿插数电的知识进行相关功能电路的设计,以达到从理论到实践的效果。

一. 组成原理

1. 运算器 

ALU是微处理器中执行所有算术和逻辑操作的部件。主要的功能是加减乘除,与或非异或比较等。(1)其中SRC1和SRC2是源操作数(source operand),代表ALU在运算时的输入数据,两个数据源均可以来自寄存器或者是立即数。

(2)OPR是选择信号,通过选择器来决定哪个运算器工作并输出最终的计算结果。

(3)DST是目标寄存器(destination register),表示运算结果存储的位置。

2. 寄存器组

如图2-8,二进制电路采用寄存器来保存数据的电平。N位二进制数可以采用N位寄存器进行保存。寄存器包括锁存使能线(LE),N位输入数据线(D)和N位输出数据线(Q)。仅当LE信号有效时,D才被锁存为Q作为输出。 

如图2-9,可以把多个寄存器的D线并接在一起,由外部信号LS指定哪个寄存器进行锁存,之后通过译码器产生相应的寄存器的锁存信号,从而使该寄存器保存输入线D上的数据。外部信号OSB和OSA用于控制两个选择器的输出QA和QB

3. 处理电路

 如图2-13,处理电路主要由ALU和寄存器组,内部控制通道和信号线组成。各个分部分已经在上述介绍,主要的衔接是寄存器组一组输入线连接内部通道控制选择器(由LS信号控制),两组输出线分别连接ALU的源操作数线。

除此之外,由于在运算过程中会产生借位,溢出,正负,零值等信息,设置了状态寄存器(PSR),通过CF,OV,SF,ZF等进行标识和保存。

4. 控制电路

通过改变处理电路中的不同取值来实现不同的功能,这些信号取值按序排列构成的二进制数称为一条操作指令。表示指令的二进制数本身数值是没有意义的,数的不同位代表不同信息。处理电路仅能识别二进制数表示的指令,也称二进制指令为机器指令。

5. 数据存储 

在运算中需要读取或者存储大量的数据,这些数据保存在存储器中。在处理电路中,产生存储单元的地址是通过ALU计算出来的。存储单元地址是由一个寄存器与另一个寄存器或者常数相加得到。

在处理电路中产生读写存储器的信号时序的电路称为总线接口单元。

6. 处理器结构

整个处理器架构分为两个部件:

一个是与处理数据和控制流程相关的中央处理器(CPU),CPU由运算单元,寄存器组,控制单元以及总线接口单元构成。

一个是用于保存指令和数据的存储器,存储器包括指令存储器和数据存储器。

实现一个具体的功能需要多条指令按照一定顺序先后执行。将这些指令按照顺序排列起来构成了程序代码。程序代码需要预先放在指令存储空间中,处理电路按顺序逐条读取并进行执行。每条指令代码由若干字节构成,所以每条指令的首字节所在的存储地址视为该指令的地址。处理电路需要专用部件来执行读取指令的存储器读操作。

寄存器组有一个专用的程序计数器(PC),其值为当前需要读取的指令的地址。正常情况下,每次读取指令结束后,PC自动递增至下一条指令的地址。

将CPU的所有单元集中到一个芯片中就构成了微处理器(MPU)。当然MPU只是一个处理器,需要搭配内存等非常多的其他外设才可以构成一个系统。MCU内部有处理器、内存、Flash及其他模块,仅仅需要搭配少量外设就可以构成一个系统。 

二. 系统结构 

MPU在功能上由两部分组成:面向指令的控制单元和面向处理的数据通路。如下图所示

 控制单元由控制器,程序计数器,指令地址递增器以及辅助电路构成。PC保存当前读取指令的地址。

控制器主要完成以下操作:

设置或者更新后续指令读取地址;

将指令地址锁存在PC中,使能指令存储器输出该地址保存的指令代码;

控制器对指令代码进行译码生成控制信号;

输出数据路径所需的控制信号,寄存器组选择出相应寄存器值;

ALU对这些数据进行运算;

锁存运算结果到寄存器或者读写数据寄存器。。

控制器的运行可以采用如下所示的状态机进行表示:指令读取(取指),指令译码(译指),操作数选取(取数),数据运算(执行),数据保存(回写)。控制器周而复始地按照这个顺序执行。

 为了实现控制器的状态转移,系统采用统一时钟CLK 来驱动整个电路中的时序逻辑部分。

这篇关于【微处理器系统原理与应用设计】微处理器的基本架构之组成原理和系统结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128403

相关文章

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢