寄存器文件,随机访问存储器读写理解

时序电路与寄存器原理
本文介绍了时序电路的基本概念,探讨了寄存器和时序逻辑之间的关系,并详细解析了寄存器文件的工作原理及其实现方式。此外,还通过指令处理流程展示了寄存器在实际应用中的工作过程。

状态:特征是会保持一段时间的,不会突变。

时序(sequential ,顺序)电路:预测输出会怎么变化,是由当前状态和输入决定。(时序电路的特征和时钟没关系)




寄存器和时序逻辑什么关系。!!!!!  通过控制逻辑(时钟信号与地址为输入),控制存储器是否接受时钟信号的控制,若接受,则存储器,实际就是钟控触发器(在上升沿时,触发器接受输入)。 见下图(指反映写的情况)。



不是内部存在着时序电路的电路,就存在时序电路的特征(输出反馈到输入,改变输入时,输出当前的输出也称为输入一部分)。 触发器是时序电路,随机访问存储器(包括寄存器文件)是由触发器构成的,但是在读取数据时,存储器就类似于组合电路了。


寄存器——.   :

特点:(1)输出不是简单的等于输入的某个函数(组合电路特征。),而是在时钟控制下响应。 否则输出和输入没关系,保持状态(输出)。

    (2)在使能输入0情况下,状态保持不变,时钟控制响应寄存器响应了,结果发现使能输入为0,则仍然保持输出状态。

结论:寄存器输出状态的改变,需要两个条件,1. 时钟控制允许 2.输入对于当前状态对应的输入发生改变。 3. 使能端为0。 3个条件是并的关系。


寄存器文件实现原理(即随机访问存储器实现原理):  有读端口和写端口,每个端口都包含数据信号通路地址输入

    (1)当读取时,地址输入可以选取某一个寄存器,即寄存器输出信号电路接上了端口的输出信号电路,所以可以看成,读取数据好像就是一个以地址为输入,数据为输出的一个组合逻辑电路块,实际是使能作用。(实际上,地址线和数据线是总线,即接到了每个寄存器,所以地址线是使能线,选取某个寄存器,即某个寄存器能接受输入)

    (2)当写过程时,数据需要存储在寄存器的“输出”上。 所以地址输入选中存储的寄存器,数据输入信号电路接上寄存器输入电路,再时钟控制允许,则写入成功。

    (3)数据保存过程,当使能为0,寄存器不受任何输入影响。



所以,寄存器要集成为寄存器文件,上图4-16还需要加入使能输入端(即地址线),时钟控制信号线。




指令处理对应的数字电路过程(牵涉到内存读写,寄存器读写), 

取指:在该周期,PC寄存器输出( 地址),使能了存储器PC和PC+1字节的存储,icode:ifun,ra:rb信号在数据总线上。

译码:总线RA,RB字段接到寄存器文件的地址输入(寄存器是多端口,可以同时读写多个寄存器),读取是使能,不用时钟。

执行:寄存器文件输出接到ALU的数据输入,总线的func字段接到ALU的控制输入. ALU组合电路计算,输出VALE。

访问:

写回:VALE信号线接到R[rb],等到时钟到来就能写入

更新PC:PC+2信号接到PC,等到时钟到来就能写入

这是SEQ处理器的模式,一个周期处理一条完整的指令,非流水线。

### 寄存器映射存储器映射的概念 #### 存储器映射 存储器映射是指为物理内存按照一定的编码规则分配地址的行为。存储器本身不具备地址信息,其地址需要由片厂商或用户来定义[^1]。这一过程使得 CPU 能够通过特定的地址访问到对应的存储单元。通常情况下,存储器映射是由片制造商预先设定好的,用户无法随意更改[^3]。 #### 寄存器映射 寄存器映射则是指将硬件中的控制和状态寄存器映射到统一的地址空间中。这意味着程序可以通过读写这些寄存器所在的地址来进行设备配置、数据传输或其他操作[^4]。寄存器映射的核心在于让处理器能够像访问普通存储器一样访问外设的功能寄存器。 --- ### 工作原理 #### 存储器映射的工作原理 存储器映射的主要目的是建立一个逻辑上的地址空间,使 CPU 可以方便地定位并访问所需的存储位置。例如,在 STM32 中,程序存储器、数据存储器以及外设寄存器都被安排在一个连续的 4GB 地址范围内。这种设计简化了系统的寻址机制,因为所有的资源都共享同一套地址体系。 当执行一条加载指令时,CPU 将依据目标地址从相应的存储区取出所需的数据;而在存储命令下,则会把指定的内容写入该地址所指向的位置。整个过程中涉及到了解码电路的作用,它负责识别当前请求的目标属于哪一类资源(如 RAM 或 Flash),从而完成实际的操作。 #### 寄存器映射的工作原理 对于寄存器而言,它们往往代表了一些特殊用途的小型临时保存区域或者接口参数设置点位集合体。通过对某个固定偏移量处发起读/写动作即可实现对外部模块属性调整或是获取实时反馈信息等功能。比如 GPIO 控制端口中包含了方向设定、高低电平切换等多个子字段,每一个都可以单独操控而不影响其他部分正常运作情况下的独立性原则得到充分体现出来。 --- ### 主要区别 | **对比维度** | **存储器映射** | **寄存器映射** | |---------------------|----------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------| | 定义 | 给物理存储器分配地址的过程 | 将外设寄存器映射至统一地址空间 | | 对象 | 面向大容量通用型随机存取记忆装置 | 特定于小型专用功能性组件 | | 访问方式 | 连续的大块区域用于存放应用程序代码及变量 | 单独离散式的节点分布在整个系统架构之中 | | 修改权限 | 用户不可轻易改变原有规划 | 开发者可以根据需求灵活定制 | 尽管两者均依赖相同的底层技术基础即地址译码机制达成最终目的,但在具体应用场景上却存在显著差异:前者更注重提供广阔平坦表面供软件运行期间频繁交换大量资料之需;后者则强调精确调控少量关键要素达到高效管理复杂电子线路网络的效果。 --- ```c // 示例代码展示如何访问寄存器 #define GPIOA_BASE_ADDRESS (0x40020000UL) volatile uint32_t *GPIOA_MODER = (uint32_t *)(GPIOA_BASE_ADDRESS + 0x00); void configure_gpio_as_output() { *GPIOA_MODER &= ~(3 << (2 * 5)); // 清除第5引脚模式位 *GPIOA_MODER |= (1 << (2 * 5)); // 设置第5引脚为输出模式 } ``` 上述 C 语言片段演示了针对某型号微控制器内部结构特点编写的一段简单函数用来修改对应端口的方向特性值为例说明了寄存器级编程技巧的实际运用场景之一方面表现形式而已并非全部内容覆盖范围有限仅作为参考材料使用价值较高但不足以完全概括所有可能性选项列表如下所示:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值