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

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

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

一. 组成原理

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

相关文章

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和