单片机的"位"

  常见的MCU有8位、16位、32位、64位以及更早之前有4位(当然现在也在使用),至于128位的?可能PowerPC有的吧,但貌似已经不属于MCU的范围了吧。

  那么到底我们是怎么来划分这个“位”的呢?

  取决于Internal Data Bus Width 内部数据总线宽度。

  目前MCU有两种架构:

    1.冯·诺依曼结构(Von-Neumann Architecture)或(普林斯顿体系架构(Princetion Architecture))

      PM(Program Memory)和DM(Data Memory)两个存储器共用一个总线,此总线位数即为单片机的位数。

      例如:MSP430

      MSP430G2系列是16-bit RISC CPU,内核包含一个16-bit的ALU,寄存器也是16位,16-bit address bus、16-bit data bus也就是MABW(Memory Address Bus Width) 等于MDBW(Memory Data Bus Width)。

      一般来说标准的架构是这样的,但现在更多的是改进型架构,会出现PMBW(Progrm Memory Bus Width)大于DMBW(Data  Memory  BusWidth)的情况,此时MABW大于等于MDBW。

      例如:MSP430

      MSP430F5系列是16-bit RISC CPU,但内核包含一个16-bit或20-bit的ALU,寄存器是20位,但16-bit address bus或20-bit address bus、16-bit data bus也就是MABW大于等于MDBW。

      此时能因为ALU是20位,寄存器是20位就说这个CPU是20位CPU吗?显然不能,因为前面说了“位”取决于IDBW,MABW的改变只是提升了CPU的寻址范围,从16位的64KB提高到了20位的1MB。

      注:这里说MSP430X CPU是Von-Neumann Architecture改进型为个人看法。

    2.哈佛架构(Harvard Architecture)

      在Harvard Architecture中PM和DB是相互独立的,那么PMBW(Pragram Memory Bus Width)和DMBW(Data Memory Bus Width)就可以不同,或者说Harvard Architecture就是为了这个的不同才设计的。

      例如:PIC 8位系列

        “Instructions and Data on separate busses”,也就是说PMB和DMB是相互独立的。

        “Wide program memory buses (12, 14 & 16-bit)”,程序存储器位宽(PMW)分为12-bit、14-bit和16bit,官方手册里面写的是“12-Bit Wide Instructions”(PIC10F系列)这个就是PMW,此时我们不能说它是12位的CPU,因为DMW是8位的,ALU和寄存器都是8位的。

        说明:PMB的AW(Addess Width)和DMB的AW也可以不同,不仅这两个可以不同,PMAW(Program Memory Address Width)和PMW、DMAW(Data Memory Address Width)和DMW也可以不同。

以上为个人总结,仅供参考,如有侵权请告知。

以下为参考资料

  MAB(Memory Address Bus) 存储器地址总线  MABW(Memory Address Bus Width) 存储器地址总线位宽

  MDB(Memory Data Bus)     存储器数据总线  MDBW(Memory Data Bus Width)      存储器数据总线位宽

  以上两者的位宽(Width)在Von-Neumann Architecture中是相等的,即MABW=MDBW。

  在一定总线频率下,位宽越宽,带宽越宽,也就意味着提高了数据存取的速率。

附:

  总线基础知识:

  1、总线的带宽(总线数据传输速率)

    总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系:

    总线的带宽=总线的工作频率*总线的位宽/8

  2、总线的位宽

    总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传输率越大,总线的带宽越宽。

  3、总线的工作频率

  总线的工作时钟频率以Mhz为单位,工作频率越高,总线工作速度越快,总线带宽越宽。

时间: 2024-10-26 07:31:22

单片机的"位"的相关文章

基于51单片机8位数码管(74HC595芯片)的使用方法

#include <AT89X51.H> #include <intrins.h> // 函数原形定义 #define uchar unsigned char #define uint unsigned int void main (void); // 主函数 void LED_OUT(uchar X); // LED单字节串行移位函数 void LED_print (uchar p, uchar x) ; unsigned char code LED_0F[]; // LED字模

第五篇:本人多年来积累的单片机程序 资料下载(绝对干货,内附下载链接)

首先打个广告:如果需要做毕设以及嵌入式项目合作,欢迎进入我们工作室:创想嵌入式设计工作室 本人搜集的大量单片机源码资料及毕业设计资料,足有1200+套,很多实用的demo源码和毕业设计参考方案,可用于做项目时借鉴,博尾附有下载链接.(内附本人联系方式,可一起交流探讨,交朋友) 为了方便 查找,我已将项目源码的目录整理出来了,方便 采用"ctrl +F"快速查找验证是否有需要的demo.可以一键打包下载,也可只下载需要的demo. 下载链接内附本人联系方式,如果在安装过程中遇到问题,可以

数码管的使用方法

数码管是嵌入式开发中比较常用的一个模块,本篇文章根据本人近期查阅的资料以及学习笔记整理成文,尽可能详尽的讲解常用数码管原理和使用方法.有不足和疏忽的地方,请不吝指正. 目录 1.工作 原理 2.电气特性 3.驱动方式 4.开发实例 5.亮度和锁存器 6.使用中注意事项 一.工作原理 数码管 是一种半导体发光器件,其基本单元是发光二极管.能显示4位数字的叫四位数码管,当然也有多位和只有一位的数码管,他们的电气原理相同.数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单

四轴飞行器设计报告

单片机应用技术实训设计报告(四轴飞行器) 所属系部: 电气信息工程系 班 级: (2014)通信技术1班 姓 名: 彭世秋 指导老师: 施 芸 摘 要 为了满足四轴飞行器的设计要求,设计了以微控制器为核心的控制系统和算法.首先进行了各单元电路方案的比较论证,确定了硬件设计方案.四轴飞行器采用了固连在刚性十字架交叉结构上的4个无刷电机驱动的一种飞行器,以ARM公司的Context-M3 CPU內核为基础,围绕新的Context-M3 CPU內核演化而来的意法半导体公司的STM32F103高容量单片

51单片机特别功用存放器和位界说

接下来的几节,我们会带着人人编写第一个单片机程序.在此之前,我们先来理解一些 51 单片机特有的程序语法以及 Keil 软件的根本操作步调,请人人必定要有耐烦.我们次要是用 C 言语来对单片机编程,而有的单片机有那么几条很特别的独有的编程语句,51 单片机就有,先引见 2 条.第一条语句是:sfr  P0 = 0x80;sfr 这个症结字,是 51 单片机特有的,他的感化是界说一个单片机特别功用存放器(special function register).51 单片机外部有许多个小模块,每一个模

合泰8位单片机使用小结

合泰单片机是台湾芯片,集成开发环境为HT-3000.大陆这边的芯片代理商是盛群半导体有限公司,官网上的程序用例都是由汇编编写的,当然也对C语言很好的支持,是标准C的子集.在工作中使用到的是8位的HT48R006,在开发过程中,需要注意一下几点: 1.在HT-3000中有相关的配置,包括时钟的选择,管脚的功能配置,看门狗的使能,看门狗的喂狗指令方式. 2.寄存器是支持位寻址的,包含了对应的头文件后,就能使用相关的位标示符. 3.在系统时钟配置为内部时钟时,PA5,PA6作为普通IO引脚来使用,若使

8位16位32位单片机区别

8位16位32位区别 8位单片机的数据总线宽度为8位,通常直接只能处理8位数据: 16位单片机的数据总线宽度为16位,通常可直接处理8位或16位数据. 8位数据类型所占大小 16位数据类型所占大小 stm32,k60数据类型

8位单片机可用的 mktime localtime函数

8位单片机可用的 mktime  localtime函数及源码 最近在做一个8位单片机项目,其中用到了时间戳转换函数,这个在32位机上一个库函数就解决了问题,没想到在8位单片机中没有对应库(time.h),没有办法只有自己来写. 目标:1,满足和库函数mktime  localtime所计算出的数据一至:2,考虑8位单片机的处理能力慢软件效率问题. 分享给大家,方便有同样需求的朋友. gcc 环境进行测试: 测试程序: 1 #include <stdio.h> 2 #include <s

freescale 16位单片机的地址映射

以MC9S12XS128MAL为例,其实DG128之类的类似.如图一,128代表的是单片机中的FLASH大小为128K Byte,同理64代表的是单片机中的FLASH大小为64 K Byte,256代表的是单片机中的FLASH大小为256 K Byte.但是S12(X)所使用的内核CPU12(X)的地址总线为16位,寻址范围最大为2^16 =64K Byte,而这64K Byte的寻址空间还包括寄存器.EEPROM(利用Data Flash模拟).RAM等,因此不是所有的64K Byte都是用来