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

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

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

一. 组成原理

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

相关文章

基于C++的UDP网络通信系统设计与实现详解

《基于C++的UDP网络通信系统设计与实现详解》在网络编程领域,UDP作为一种无连接的传输层协议,以其高效、低延迟的特性在实时性要求高的应用场景中占据重要地位,下面我们就来看看如何从零开始构建一个完整... 目录前言一、UDP服务器UdpServer.hpp1.1 基本框架设计1.2 初始化函数Init详解

线程池ThreadPoolExecutor应用过程

《线程池ThreadPoolExecutor应用过程》:本文主要介绍如何使用ThreadPoolExecutor创建线程池,包括其构造方法、常用方法、参数校验以及如何选择合适的拒绝策略,文章还讨论... 目录ThreadPoolExecutor构造说明及常用方法为什么强制要求使用ThreadPoolExec

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Java线程池核心参数原理及使用指南

《Java线程池核心参数原理及使用指南》本文详细介绍了Java线程池的基本概念、核心类、核心参数、工作原理、常见类型以及最佳实践,通过理解每个参数的含义和工作原理,可以更好地配置线程池,提高系统性能,... 目录一、线程池概述1.1 什么是线程池1.2 线程池的优势二、线程池核心类三、ThreadPoolE

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询