账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
微控制器核心技术
 

【作者: 誠君】2002年02月05日 星期二

浏览人次:【18666】

微控制器(microcontroller)又称作MCU(Micro-Control Unit)或简称μC;因为Microchip公司生产了一系列的microPIC微控制器,故简称PIC(Programmable IC),所以,也有人将微控制器称作PIC。微控制器的内部架构简单、价格低廉,已经被广泛地应用于电子资讯产品。


最近因为无线宽频和资讯家电产品的流行,不同类型的微控制器也和其它元件结合,例如:基频晶片、DSP等,均被应用在可连上网际网路、WLAN、蓝芽等新产品上。


与微处理器比较

微控制器有别于微处理器(microprocessor),如(图一)所示,一般用途的微处理器或通用处理器(Gereral -Purpose Processor;GPP)只具有CPU而没有其它单元,记忆体、计时器(timer)、输出入埠....等资源都需外接。


微控制器则具有这些基本单元,虽然这些资源都不是很多,但是它五脏俱全,足够应用于电子消费产品。正因为它的资源有限,而且在它出厂时,这些资源就已经被固定了,所以,应用产品开发者是无法改变它的。在挑选以微处理器或微控制器来「挑大梁」时,须依成本、功能、设计复杂度等方面来考量,而且这个选择或许会深深地影响产品开发商的未来发展,所以必须相当谨慎。


与ASP比较

另一方面,特殊应用处理器(Application Specific Processor;ASP)最近也常被应用,它具有CPU和一些内建的资源,可是它是针对特殊应用而设计的,例如:HDTV、ADSL、Cable Modem. ...等,和微控制器相比,ASP的内建资源比微控制器多,在三者之中,ASP的价格一般是比较贵的。


不过因为它的应用在同领域中比较开放(亦即任一公司都能应用它,故无侵犯智财权的问题),所以,与应用上较封闭的特殊应用晶片(Application Specific IC;ASIC)比较起来,它又便宜许多。而且ASP也比ASIC通用,在客户要求快速出货的压力和需求之下,许多新型的MCU或PIC和ASP也被设计生产出来,它们已经成为电子产品制造业者最常使用的处理器了。


CPU与MCU

CPU

CPU是任何处理器的核心,微控制器的运算都是经过它完成的。简言之,CPU必须做两件最基本的工作:找取(fetch)和执行(execute)。所有CPU都具有记录器、算数逻辑单元(Arithmetic/Logic Unit;ALU)、程式计数器(Program Counter;PC)、和指令解码器(instruction decoder)。


ALU负责加法、减法、乘法、除法、和AND、OR、NOT的运算;指令解码器就像一本字典,能解释CPU所找到的指令的意义;指令解码器能解释的指令越多,需要的电晶体数目就越多、设计也就越复杂。在程式计数器内储存着指令的位址,实际上,这个位址是记忆体(RO​​M或RAM)的位址。


CPU读取程式计数器内的值,并将此值置于位址汇流排(address bus)上,当CPU启动「读取数据的信号」(data READ signal)时,「记忆体位址等于程式计数器内的值的记忆体位址内的值会被置于数据汇流排上」。前一个「」内的描述很饶舌吧,这是「指标」(pointer:)的观念,用简单的图说可以表示成(表一)。 CPU会利用位址汇流排在记忆体位址1400处找取,找到的值就是B0。 B0会被放在数据汇流排上,送给CPU。CPU会使用指令解码器将BO解码成可执行的指令,最后,CPU执行这个指令。


表一 CPU读取程式计数器内的值

程式计数器内的值 指标 记忆体位址 记忆体位址内的值
1400 -> 1400 B0

数据汇流排和位址汇流排

数据汇流排和位址汇流排都是CPU和其周边元件的桥梁。它们的关系如(图一)所示。


数据汇流排

数据汇流排是用来传收进出CPU的数据,数据汇流排越大,数据传输量就越大,CPU的处理能力也就越强。微控制器一般都是使用8位元大小的数据汇流排,亦即,其数据汇流排一次可传收一个位元组。数据汇流排是双向的,因为CPU必须使用它来传送和接收数据。


位址汇流排

位址汇流排是用来标示连接在CPU上的记忆体和周边装置的位址。位址汇流排数目越大,CPU可连接的周边装置和记忆体数量就越多。


计算公式为:


CPU支援的位址总数=2x,
x=位址汇流排线的数目(address lines)。

微控制器一般都是使用16位元大小的位址汇流排,所以,其位址总数是65536或64Kbytes,亦即一般微控制器的CPU可支援64Kbytes的记忆体空间(包含ROM和RAM)。位址汇流排是单向的,因为CPU使用它来传送位址。


记录器

微控制器内的记录器是CPU的暂存装置,所以,也称作暂存器。它储存了将被CPU处理的数据(data)或这些数据的位址。大多数微控制器之记录器是8位元(bit)大小,不过,也有4或16位元大小,一般所谓的8位元或4位元微控制器,就是指微控制器的记录器大小是8位元或4位元,或者说微控制器能处理的唯一数据型态(data type)是8位元或4位元。


位元组块

若为8位元,就表示此微控制器的CPU每次找取(fetch)一个字元(CHAR)或一个位元组(BYTE),韧体设计人员必须将大于8位元的数据拆解成数个介于00H到FFH(或十进位的0到255)之间的字元或位元组数据,这些位元组数据称作「位元组块」(byte-sized chunks)。


每个CPU记录器都有一个名称,一般而言,有累加器(Accumulator;A)、B、R0~R7记录器、数据指标器(Data Pointer;DPTR)、程式计数器、TL0和TH0(计时用)、P0(输出入埠用)、旗标记录器(Program Status Word;PSW)、堆叠指标器(Stack Pointer:SP)......等。


它们会与CPU、ROM、RAM、输出入埠和其它硬体介面配合,一起完成程式运算工作。其实,不管使用何种处理器,GPP或ASP或MCU(μC或PIC),认识它们内部的记录器是一切应用设计的起点。相对的,对晶片设计者而言,规划记录器是晶片系统设计的第一步。


《图一 微处理器(A)和微控制器(B)的区别》
《图一 微处理器(A)和微控制器(B)的区别》

ROM

内建于微控制器的唯读记忆体(on-chip ROM)大小,依照不同的厂牌而各有不同。例如:80C51、8751、AT8951有4K bytes的ROM;AT89C52有8K bytes的ROM;DS5000-32有32 bytes的ROM;目前,也有通用的64K bytes微控制器,这些高阶的微控制器大多内建有EEPROM或FLASH或ROM。这些ROM是用来储存韧体(firmware)程式码的,所以,也称作「程式码空间」(code space)。


两种微控制器之应用

8031 MCU

如果设计者事先不知未来开发出来的程式大小为何,此时,设计者可以选择8031微控制器,因为它的ROM大小为零,这可让设计者弹性地选择不同大小的ROM或FLASH或EEPROM,并以外接的方式连接到8031的输出入埠。


当微控制器开机(power up)时,Vcc电压加在重置(RESET)接脚上,此时,程式计数器(PC)的值是0000H,因此,第一个指令运算码(opcode)必须位于0000H,后续的运算元(operand)则位于0001H。


8051 MCU

8051微控制器在开机时,会自动地执行ROM里的韧体程式(booting),这是因为它在韧体程式开头使用了ORG指令,其它类型的微控制器也必须使用此类型的指令来开启系统。这种类似PC内基本输出入系统(BIOS)的自动执行功能,几乎是所有处理器必备的功能。


在PC开机时,它的CPU会先执行BIOS ROM里的韧体程式,以侦测周边装置的种类和特性,并启动这些周边装置。最后,交由作业系统执行自动执行档(autoexec.bat)将系统完全开启。较复杂的微控制器系统虽没有作业系统,但是,它仍然会依照韧体程式的指令侦测和启动周边装置。


应用工程(AE)的重要性

一般而言,晶片设计商都会提供开发用的参考工板和韧体样版程式。不过,由于通用型微控制器价格低廉,所以很少有提供参考工板,仅免费提供韧体样版程式;甚至不提供任何韧体,此时微控制器里的ROM应该是空白的。由于大多数通用型微控制器的程式设计工作并不困难,而且其使用手册或市面上贩售的书籍都有详细的解说可以参考,所以韧体设计者无须担心。


验证设计

晶片设计商验证复杂的微控制器前后(before & after tape out),也必须自行设计硬体验证程式和供客户参考的工板及韧体样版程式,这些程式可事先烧录于模拟用的FPGA里,等检验无误后,就要烧录到微控制器的ROM里,做最后的确认。若在验证过程中发现了问题或瑕疵,就要退回重新设计,重覆执行设计和验证的流程,直到确认无误为止。


这些都是系统整合或应用工程(Application Engineer;AE)的工作,在晶片设计过程中,它是属于后段工程,所以有些主管称它是售后服务(post-service)或行销后段(post-sale )工作。


权责划分不够

因此,有些公司将这个工作隶属于客户服务部门,有别于使用VHDL或verilog设计晶片的研发部门。甚至国内有些小型的晶片设计公司将客户的需求和规格制定等行销前段(pre-sale)的工作都纳入客户服务部门,使得系统整合或AE工程师每天为了要解决客户的抱怨和投诉,而无暇认真地设计参考工板及韧体样版程式。


为了提高产品最后的满意度和品质,应该避免这种责任区分不清的做法。总之,由于微控制器市场竞争日趋激烈,如何提高客户满意度和降低成本压力,已经成为厂商们须严肃面对的课题。而重视系统整合和应用评估工作正是提高客户满意度的不二法门。


RAM

不管是微控制器内的RAM或其外部的RAM,都是用来储存数据或数据的位址,因此RAM也称作「数据空间」。


不同微控制器内的RAM大小各不相同,以8051为例,共有128 bytes,这些记忆体被区分成三个群组:


00H到1FH

从00H到1FH共有四个记录器组(register bands)或32 bytes,每组大小是8 bytes。 00H到07H为第一组,称作bank 0;08H到0FH为第二组,称作bank 1;10H到17H为第三组,称作bank 2;18H到1FH为第四组,称作bank 3。


每一套记录器组都有8个记录器,分别是R0、R1、R2、R3、R4、R5、R6、R7。当8051开机时,若程式码的存取位置是以R0~R7表示,则bank 0的R0~R7将是内定(default)被撷取的记录器。


应用特色

若要转换记录器组,则必须改变旗标记录器(PSW)bit 3和bit 4的值(RS0和RS1),这可利用SETB和CLR指令来达成,如表二所示,RS0和RS1的内定值都是0,当CPU执行"SETB PSW.4"时,RS1的值会变成1,RS0的值则维持0,查表一可知,此时,程式已经选择了Bank 2,其RAM位址为10H到17H,而R0~R7的位址也会因此改变。


表二:改变8051 PSW位元组可转换记录器组

 

 

 

RS1(PSW.4)

 

RS0(PSW.3)

Bank 0

0

0

Bank 1

0

1

Bank 2

1

0

Bank 3

1

1


20H到2FH

从20H到2FH共16 bytes,供「单一位元撷取」(bit-addressable access)用。


微控制器的最大优点就是它能读写一个通讯埠里的单一位元(single-bit)、一个RAM记忆体位址、部份记录器(例如:A、B、PSW...等)里的单一位元。


应用特色

大多数微处理器都和Pentium一样,它们的输出入埠是位元组导向(byte-oriented),亦即若要改变单一位元的值,必须先撷取8个位元。在微控制器内,所有运算码皆是位元组导向,而ROM只能储存程式码,所以,CPU和ROM一般都不具「单一位元撷取」的功能。


30H到7FH

从30H到7FH共80 bytes,一般称作「涂鸦板」(scratch pad),作为不同程式间共同使用的区域。此区域可储存从输出入埠传来的数据或任何广域数据(global data)或广域参数(global parameters);使用C语言时,可在.c或.h档起始位置宣告许多广域变数和参数,这些广域变数和参数就储存在这个「涂鸦板」里。


之所以称为「涂鸦板」,是因为不同程式可以读取或改写这些变数或参数的值,使它成为不同程式间交换数据(data exchange)的地方,这就好像任何人都可以在「涂鸦板」上写字一样,作者和文字内容都不受到限制,而且,作者们还可欣赏彼此的创作内容,因此得到这么「俗」的名字。


应用特色

任何处理器系统都需要这个「涂鸦板」,有些非微控制器晶片虽然没有「涂鸦板」的RAM,却有「涂鸦板」的记录器(Scratch Pad Register;SPR),这SPR类似「涂鸦板」的RAM,主要是用来暂存数据(temporary data storage)的,有时也可用来控制其它记录器的开启和关闭。


堆叠记录器(SP)和RAM

「堆叠」(stack)是RAM记忆体的一部份,CPU用它来暂时储存数据和位址。因为在微控制器中,可暂存资讯的记录器数目有限,所以,必须使用这些堆叠空间。在CPU中有堆叠记录器,用来表示目前堆叠的位址。例如:8051中的堆叠记录器是8-bit大小,所以,理论上,堆叠记忆体的总容量应该是00H到FFH。不过,因为8051的RAM大小一般只有128 bytes,而且,必须留给输出入埠和其它介面使用。


一般而言,当8051开机时,堆叠记录器的值是07H,这表示RAM记忆体位址08H是第一个堆叠。当8051开机时,SP=07H,PUSH 6会将R6里的值25H放到堆叠里,此堆叠在第二记录器组(Register Bank 1)里08H的位置上,亦即SP=08H。


当PUSH 1时,SP=09H,在R1里的值12H会被放到RAM记忆体位址09H的位置,此时,R1和R6可供其它用途,因此可节省记忆体的空间。当需要使用这些暂存值时,可利用POP指令从堆叠中将暂存值一一读出。


此外,CPU也利用堆叠来暂存紧邻在CALL指令下一行的指令位址或者说当时程式计数器里的值,等执行子程式完毕返回(return)后,CPU就可从堆叠中得知下一个要执行的指令位置。


位址模式(addressing modes)

因为数据可能储存在记录器、记忆体中、或藉由程式立即给值(immediate value),所以CPU必须使用各种方法撷取这些数据,这些撷取数据的方法就称作「位址模式」。任何一种微处理器都有位址模式,这些模式在微处理出厂时就已经固定了,韧体设计者是无法改变它们的。


常见位址模式

常见的「位址模式」有五种:立即位址模式、记录器位址模式、直接位址模式、记录器间接位址模式、索引位址模式(indexed addressing mode)。


1. 立即位址模式:例如:MOV A, #25H。符号#必须在程式给的值前面。


2. 记录器位址模式:例如:MOV A, R0


来源和目的记录器的位元大小必须相同。记录器和累加器间可以移动


(MOV)数据,但是,MOV R4 R5是错误的,必须使用直接位址模式:


MOV 4 5才行。


3. 直接位址模式:在8051中,RAM除了在位址30~7FH的区域(涂鸦板)以外,其余都是记录器组,每个记录器组里面有8个记录器,它们是R0~ R7。直接位址模式可以直接使用位址0~7来分别表示它们。例如:MOV A, 4等同于MOV A, R4。直接位址模式只能撷取微控制器内的RAM和记录器位置。


4. 记录器间接位址模式:使用记录器R0和R1来储存RAM的位址,数据其实是在此RAM位址里面。这就是C语言里「参考」(reference)的观念,C语言的符号是&,组合语言的符号是@。例如:MOV A, @R0。


5. 索引位址模式:简言之,就是利用DPTR记录器来暂存内部或外部记忆体的位址。


结语

微控制器的技术虽然简单,可是也不是一两天就能学会。除本文介绍的以外,还包含:计时器/计数器、I/O埠的控制、中断(interrupt)处理、串列埠通讯、周边装置控制等,限于篇幅无法全部说明。不过只要设计者用心,不管是设计微控制器的核心元件或应用微控制器控制周边,大体而言,都是非常容易的。


相关文章
以协助因应AI永无止尽的能源需求为使命
ST以MCU创新应用技术潮流 打造多元解决方案
ST:精准度只是标配 感测器需执行简单运算的智慧功能
意法半导体持续专注永续发展 加速实现碳中和目标承诺
优化MCU SPI驱动程式实现高ADC吞吐率
comments powered by Disqus
相关讨论
  相关新闻
» 工研院主办VLSI TSA研讨会登场 聚焦异质整合与小晶片、高速运算、AI算力
» 国科会扩大国际半导体人才交流 首座晶创海外基地拍板布拉格
» SEMI:2023年全球半导体设备市况 出货微降至1,063亿美元
» TrendForce:台湾强震过後 半导体、面板业尚未见重大灾损
» 亚湾2.0以智慧科技领航国际 加速产业加值升级


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK84Q2KZR5GSTACUKX
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw