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

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

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

一. 组成原理

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

相关文章

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方