众所周知,绝大多数芯片的寄存器地址都是以0,4,8,c结尾,那为什么是以0,4,8,c结尾呢?这个问题在我刚参加工作后的一段时间一直没太搞明白,后来才逐渐有了一定的理解。

说到这个问题又必须提到计算机中数据存储的单位,分为位,字节,字。一个位代表一个bit,一个字节代表8位,字在不同的计算机中大小不同,在32位机中一个字是32bit,而在64位机中一个字是64bit。

在我们常用的地址空间中,一个地址对应一个字节,称为字节地址。但由于我们是32位的寄存器,包含4个字节,所以就对应了4个地址,称为字地址空间。

那既然都是0,4,8,c结尾,地址的低两位都是0,那么这两个bit是不是就从来都是无效的呢?也不是,只是一般情况下我们的寄存器都是32位一起配置,那么这种情况下低两位是无效的,但我们如果是想在32位总线中实现字节地址空间,也就是8bit单独配置,就需要用到低两位进行32位寄存器中的字节选择。

一个典型的应用例子就是AHB协议中HSIZE[2:0]信号的使用,HSIZE信号规定了每次传输的大小,从3'b0到3'b111分别对应了8到1024的传输,如果我们的HSIZE配置成3'b0或者3'b1时,就需要根据地址的低两位判断写到32位寄存器的那个字节,这里有涉及到了大小端的问题,小端就是低地址写到地位,高地址写到高位,大端与之相反。这种操作方式在AHB中也称为窄传输

关于芯片寄存器地址的理解相关推荐

  1. 关于Modbus 3区、4区寄存器地址的理解以及Freemodbus中开始地址的设定

    在Modbus实际应用中,我们对Modbus 3区.4区的地址有的时候会出现混淆,尤其是类似于404097这种表达方式的地址,就更容易乱,因为我们常常会用串口调试,这个就容易难理解. Modbus 中 ...

  2. DS3231时钟芯片IIC地址

    DS3231时钟芯片 寄存器地址 DS3231地址 0xd0 写 0xd1 读

  3. STM32F103系列芯片的地址和寄存器映射原理、LED轮流闪烁实现

    STM32F103系列芯片的地址和寄存器映射原理.LED轮流闪烁实现 文章目录 STM32F103系列芯片的地址和寄存器映射原理.LED轮流闪烁实现 1 51单片机和STM32的不同点 2 寄存器 2 ...

  4. 什么是地址译码 理解二进制编码

    我们知道存储器都是有多个芯片组合而成的,必然涉及到片选,因此我们将地址分开看 前面的一部分,是片选,也就是选中某个芯片(使用译码器,2-4译码器就是2位地址可以选择4个芯片) 后面的部分,是实际的地址 ...

  5. 8086芯片寄存器简介

    8086芯片寄存器简介 通用寄存器: 数据寄存器: AX (Accumulator):累加寄存器 BX (Base):基地址寄存器 CX (Count):计数器寄存器 DX (Data):数据寄存器 ...

  6. 记录学习(转载) STM32---程序如何在内部运行寄存器编程的理解

    作者:王犀牛 链接:https://www.zhihu.com/question/26562480/answer/33433568 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  7. STM32---程序如何在内部运行寄存器编程的理解

    作者:王犀牛 链接:https://www.zhihu.com/question/26562480/answer/33433568 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  8. Modbus寄存器地址规则

    Modbus协议定义的寄存器地址是5位十进制地址,即: 线圈(DO)地址:00001~09999 触点(DI)地址:10001~19999 输入寄存器(AI)地址:30001~39999 输出寄存器( ...

  9. R40 gpio 寄存器地址操作【原创】

    首先要学会看手册,下面拿PC来做说明. 3.18.3.  Register List Module Name  Base Address PIO  0x01C20800 Register Name   ...

最新文章

  1. 【翻译】Pro LINQ Language Integrated Query in C# 2008 -- 第三章 (LINQ TO Objects) 第一节
  2. 关于mysql的内部联结
  3. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  4. 一些软件软件开发原则
  5. 全面解析并实现逻辑回归(Python)
  6. java方法的定义格式
  7. Python基础之window常见操作
  8. SQL Server中授予用户查看对象定义的权限
  9. 力扣-5773(243周赛)插入后的最大值
  10. 求素数 java 101 200_Java求101~200之间的素数
  11. 如何向github上传代码
  12. 网站漏洞修复之metinfo SQL注入漏洞
  13. N点虚拟主机管理系统 企业版稳定亲测
  14. 读吴军博士新浪微博(2012.09-2014.12)信息整理
  15. python微信投票该用户被锁定、恢复时间_因投票微信账号出现异常被封禁7天的解封方法讲解...
  16. 超级计算机app不能解方程,有了这款被 App Store 官方推荐的超级计算器,该把手头的计算器扔了...
  17. 鸿蒙手机开发者申请,鸿蒙OS 2.0手机开发者Beta公开招募上线:P40/Mate 30可申请
  18. Linux中断子系统---中断申请request_irq()与中断线程化request_threaded_irq()
  19. long(Long)与int(Integer)四种类型之间互相转换的方法分享
  20. JSP+structs图书管理系统

热门文章

  1. C语言算术运算:鸡兔同笼
  2. OO,OO以后,及其极限
  3. fabs ( )【C语言库函数源代码】
  4. 英语影视台词---绿皮书(1)
  5. ORA-10456 ORA-01219
  6. for循环中的break与continue
  7. thinkphp6,压缩图片内存,并上传到oss,质量影响不大。
  8. 14.二维数组:什么是二维数组???
  9. Flask入门教程(视频教程笔记)
  10. 数据结构与算法 实验5 树、二叉树和森林的基本操作