微控制器(MCU)介绍及基本结构和指令
◆MCU 架构介绍
Microcontroller(微控制器) 又可简称MCU 或μC,也有人称为单芯片微控制器(Single Chip
Microcontroller), 将ROM 、RAM 、CPU 、I/O集合在同一个芯片中, 为不同的应用场合做不同组合控制. 微控制器在经过这几年不断地研究, 发展, 历经4位,8位, 到现在的16位及32位, 甚至64位. 产品的成熟度, 以及投入厂商之多, 应用范围之广, 真可谓之空前. 目前在国外大厂因开发较早, 产品线广, 所以技术领先, 而本土厂商则以多功能为产品导向取胜. 但不可讳言的, 本土厂商的价格战是对外商造成威胁的关键因素.
由于制程的改进,8位MCU 与4位MCU 价差相去无几,8位已渐成为市场主流;针对4位MCU ,大部份供货商采接单生产,目前4位MCU 大部份应用在计算器、车表、车用防盗装置、呼叫器、无线电话、CD Player、LCD 驱动控制器、LCD Game、儿童玩具、磅秤、充电器、胎压计、温湿度计、遥控器及傻瓜相机等;8位MCU 大部份应用在电表、马达控制器、电动玩具机、变频式冷气机、呼叫器、传真机、来电辨识器(Caller ID)、电话录音机、CRT Display、键盘及USB 等;16位MCU 大部份应用在行动电话、数字相机及摄录放影机等;32位MCU 大部份应用在Modem 、GPS 、PDA 、HPC 、STB 、Hub 、Bridge 、Router 、工作站、ISDN 电话、激光打印机与彩色传真机;64位MCU 大部份应用在高阶工作站、多媒体互动系统、高级电视游乐器(如SEGA 的Dreamcast 及Nintendo 的GameBoy )及高级终端机等。
而在MCU 开发方面, 以架构而言, 可分为两大主流;RISC(如HOLTEK HT48XXX系列) 与CISC(如华邦W78系列). RISC (Reduced Instruction Set Computer) 代表MCU 的所有指令都是利用一些简单的指令组成的,简单的指令代表 MCU 的线路可以尽量做到最佳化,而提高执行速率,相对的使得一个指令所需的时间减到最短。HOLTEK 的HT46XX(A/D MCU系列) HT47XX(R to F MCU 系列) HT48XX(一般I/O MCU系列) HT49XX(LCD MCU系列) 便是采用 RISC 结构来设计。不管是 RISC 或是 CISC(Complex Instruction Set Computer),设计MCU 的目的便是为人类服务的,对于 RISC 来说,因为指令集的精简,所以许多工作都必须组合简单的指令,而针对较复杂组合的工作便需要由『编译程序』(compiler) 来执行,而 CISC MCU因为硬件所提供的指令集较多,所以许多工作都能够以一个或是数个指令来代替,compiler 的工作因而减少许多。
以一个数值运算程序来说,使用 CISC 指令集的MCU 运算对于一个积分表达式可能只需要十个机器指令,而 RISC MCU在执行相同的程序时,却因为CPU 本身不提供浮点数乘法的指令,所以可能需要执行上百个机器指令 (但每一个指令可能只需要 CISC 指令十分之一的时间) ,而由程序语言转换成机器指令的动作是由程序语言的 Compiler 来执行,所以在 RISC MCU的Compiler 便会较复杂 。因为同样一个高级语言 A=B*C 的运算,在 RISC MCU转换为机器指令可能有许多种组合,而每一种组合的『时间/空间』组合都不尽相同。
所以 RISC 与 CISC 的取舍之间,似乎也是MCU 硬件架构与软件(Compiler) 的平衡之争,应该没有绝对优势的一方,只能说因应不同的需求而有不同的产品,例如工作单纯的打印机核心 MCU ,便适合使用效能稳定,但单位指令效率较佳的 RISC MCU.
微控制器(MCU)的基本架构
微控制器产品架构由早期以累积器为基础的CPU ,演进至现今含精简指令(RISC)或同时含RISC 、DSP 如Motorola 的68356, 也有如DEC 的SAIIC 、与Hitachi 的SH-DSP 系列等之32位嵌入式微控制器 ,每一系列产品又因应不同的应用与接口需求 ,衍生出不同规格的产品 。微控制器产品以特性做为区分的标准与市场统计的依据 ,区分为4位 、8位 、以及16/32位等三大类 。各厂商依其不同功能组合 ,发展出系列性的微控制器产品 ,如NEC 供应PD75X 的4位系列 ,Toshiba 供应47CXX 的4位系列 、HOLTEK 供应HT48CXX 的8位系列 、及Intel 之MCS-96的16位系列等。
以下就微控器的基本架构做介绍, 如下先介绍MCU 架构方块图。
MCU 架构方块图
程序内存
程序内存(Program ROM)在微控制器中是只读而不可写入之记忆单元,此内存主要用来放置使用者所开发之程序,而其性质乃属于不常更动或永不变动之资料,微控制器之动作便是依据储存于此区之程序指令运作。在8位单芯片中常见的程序内存容量有0.5K 、IK 、2K 、4K 及8K ,而通常应用在微控制器的程序内存有下列几种方式,见(表一) :
表一
另外关于程序保密部分,不论是加密或保险丝烧断保护 ,都是为了防止程序被未授权之使用者窥看、窃取(如反组译程序 、修改内容 、盗取程序等) 。程序保密这个功能选择只在提供OTP 、开窗型包装、EEPROM 及 Flash ROM上使用,因为这些IC 可借由烧录器来回读取程序代码,在Mask 版本则不需要进行程序保密的步骤 。
随机存取内存
随机存取内存(Random Access Memory;RAM),亦称为读/写内存(Read-Write Memory),常是被用来暂时存放资料、或是程序执行存放资料的地方,用途相当广泛。以HOLTEK 8位微控制器为例, 其容量有64、96、160及224个Byte 选择。
累积器
累积器(Accumulator),是MCU 的运作中枢 ,80%的指令都与累积器有关 ; 资料可以被存放在累积器中,直到总线或其它单元准备接受它、或直到程序需要它为止 。
缓存器
缓存器(Register)是MCU 内部用来暂时存放资料的地方,每个缓存器的功能各不相同,但却有一共同的特性,就是可以直接读/写,因其位于MCU 的内部,故减少了一些不必要的等待及寻址时间, 另外有些MCU 的I/O Port,也以缓存器型态来直接存取控制。
堆栈及堆栈指针
堆栈(Stack)及堆栈指针(Stack Pointer),堆栈就和盘子一样,一个一个由下往上堆,而取出时则由上一个一个往下拿,不能由中间抽出,因此又称为后进先出队列(Last-In-First-Out Queues)」。功能如下;
一. 暂时存放PC(Program Count)的值,适用于" 子程序呼叫”,或中断发生时将PC 的值暂时储存起来;
二. 可视为缓存器使用,以Push,Pop 来完成;
三. 有些MCU 其Stack Level数是固定的(如HOLTEK μC系列) ,有些则可自定。
运算逻辑单元
运算逻辑单元(Algorithm Logic Unit;ALU),其功能在于执行算术指令及逻辑判断,除了产生结果之外,也产生相关的Flag(Zero、Carry 、Borrow 、Status) ,每一个MCU 都不完全一样,尤其是Carry Flag一定要查看指令解说表。
输入/输出(I/O Port)
在单芯片微电脑应用系统中,I/O的扩充不是目的,而是为了提供外部设备一个输入/输出的信道,做为外界与MCU 间的沟通管道。例如接键盘、显示器、驱动开关控制或测量等; 在I/O扩充时必
须考虑与之相连接的外围设备硬件电路特性,如:电位匹配、干扰抑制、驱动能力(如Source,Sink 能力) 等。
微控制器在I/O埠方面备有多种电路形式,其中有多端口可以经由软件以位单位来设定输出/入方向。各埠附加大电流、高耐压的缓冲器,以直接驱动LED 与高功率晶体管,以及做模拟讯号的输入之用。
定时器、定时器
定时器(Time Counter)、定时器(Timer),由外加振荡晶体,经除频电路来提供MCU 数种不同的时基(Time Base)。常应用于:
一. 时钟之时基(如1sec 、500ms 、62.5ms 、15.625ms 等);
二. PWM(Pulse Width Modulation)之Time Base;
三. Key Scan;
四. LED Scan;
五. Frequency output;
六. Pulse Reading;
七. APO (Auto Power OFF)等。
计数器
计数器(Event Counter)专用于累计外部的事件个数,可能为Pulse 或其它资料,也可用以产生正确的时间延迟。常应用于:
一、另一种Time Base,外加固定频率;
二、计数器;
三、可规划成另一种立即中断输入;
四、计速器(Speed Meter)、转速表(Tachometer)。
中断
中断(Interrupt)用来处理立即事件、或列为优先处理之事件,负责时间计数器超时中断、及外部事件产生中断请求等工作。大部分微控制器的中断处理系统是多层的,内设有中断优先级电路,以决定先后顺序。常应用于:
一、MCU 呈被动Standby 状态(Halt-Stop),由外加信号来Wakeup;
二、需要立即处理(传感器、开关、警报器、电源故障预警器);
三、需要一个固定间隔来处理(Display ,Key Scan ,Read-Time Clock);
微控制器上的外围资源
看了这么多微控制器的的基本架构后,让我们继续来了解微控制器还可以加挂那些外围资源,以扩充、延伸其功能。
串行输出(Serial I/O)
微控制器内含Serial I/O是为了提供对外部外围Device 的通讯管道,各家种类不同,常见的有以下几种:
◆UART(Universal Asynchronous Receiver Transmitter):Intel,Atmel;
◆USART(Universal Synchronous/Asynchronous Receiver
Transmitter ):Siemens;
◆SPI(Serial Peripheral Interface):Motorola;
◆SCI(Sertal Communications Interface):这是UART 的加强版;
◆I2C bus(lnter Integrated Circuit bus):Philips;
◆Microwire/Plus:National Semiconductor;
液晶驱动装置(LCD Driver)
在显示接口上,LCD(Liquid Crystal Display)是常运用的显示装置,例如在一些多功能的电话、数字温度计、呼叫器、大哥大、掌上型游戏机以上皆可以发现它的踪迹。因此内含LCD 驱动线路的微控制器运用相当广泛,有两种驱动方式可供选用:Segment 和Dot Matrix,例如:之前流行的宠物蛋是使用Dot Matrix的LCD 显示器; 日系的微控制器厂商提供多样内含LCD 驱动装置的微控制器可供选用, 另外HOLTEK HT49XX 系列 也提供LCD 驱动装置的微控制器。
萤光管驱动装置(VFT Driver)
LCD 显示器在无光源或无背光的环境下,我们即无法读取显示器之内容,而VFT 显示器可提供高亮度、且色彩多变化的视觉效果,常应用于高级的家电产品上,如:碟影机、DSP 均衡器。要求炫丽输出效果的产品,在微控制器的选择上VFT(Vacuum Fluorescent Tube)Driver是重要的资源之一。
OSD
对于电视及监视器人性化接口是不可缺少的功能之一,OSD(On Screen Display)部分显示回路为接收水平同步信号(H-Sync)及垂直同步信号(V-Sync),再将信号透过RGB 及Blanking 将屏幕信息送出,其显示颜色至多可达八种。各微控制器指令执行速率会造成OSD 的显示行数及字段的不同,显示行数由二行至数十行,字段则由15~26个字符或更多,通常执行速率较快者可显示较多的行数、字段,速率较慢者在显示上会有直接的受限。
模拟转换数字接口(ADC)
由于微控制器诸多应用上,需要侦测外部环境状况,做为处理数据上的参考,如在TV 应用方面其调谐器(Tuner)之自动频率控制(Auto Frequency Control)讯号,即为电压讯号,其它如温度之侦测也多是转换为电压讯号,所以模拟/数字转换(Analog to Digital Converter)的应用在工业及消费电子上都很广泛。
模拟之场合是如此频繁,所以各厂家提供模拟/数字之转换便成为一般之标准规格(如HOLTEK HT46XX 系列) ,虽然如此,对于模拟/数字之分辨率各家差异很大,由3位~10位皆有,视各不同需求而异。虽然提供的转换信道有很多,通常内部仅有一个电路处理,靠选择器切换,对于时间考虑不是特别强调之应用上,不致有太大之影响。
另外还有一种模拟/数字之转换方式, 就是R to F(Resistance to Freguency),一般运用在温度/湿度之侦测, 利用电阻/电容式Sensor 的变化特性, 转换成频率值, 以此频率值来计算温度/湿度的相对性, 此类的IC 如HOLTEK HT47XX系列。
数字转换模拟接口(DAC)
在控制模拟组件需要模拟讯号,以微控制器而言, 就必须内建数字/模拟转换(Digital to Analog Converter) 来因应. 其内部由数字/模拟转换缓存器及一阶梯电阻构成, 数字/模拟的分辨率各为8位. 在一个8位/参考电压为5V 的微控制器, 假设一个数字值60转换成模拟值的计算方式是(60/256x5Volts)=1.171875V
例如应用在锁相回路上,VCO(电压控制振荡器) 即可用DAC 做控制。另外Voice IC也是利用原先将语音录制成数字资料, 然后用DAC 方式将数字资料音频转换还原模拟语音讯号。
脉宽调变(PWM)
其目的也是以数字输出搭配外围回路,达到模拟的效果,其组成有前置配器(Pre-divider)、计数器(Counter)、数据闩锁(Data Latches)、及比较电路
(Compare Circuits)等。PWM(Pulse Width Modulation)分辨率由程控,当然在一般的I/O埠亦可用时间及Duty Cycle计算技巧来达成PWM 之功能,但反应速度会受到限制,且以今日各大半导体厂家皆提供其PWM 功能之微控制器就便利性而言 (如HOLTEK HT46XX系列) ,实在不需再将心思放在PWM 之撰写上, 以减轻软件的负担。而PWM 之功能由6位~14位之分辨率,适合各种不同的需求。
DTMF 产生器、接收器
电话由原来的Pulse 演进为现在的Tone 译码方式,不但提高了译码的速度,也增加了可靠性与抗噪声能力,DTMF(Dual Tone Multiple Frequency)顾名思义就是混合两种频率的音频讯号,所以译码不易出差错。应用在电话产品的微控制器时,DTMF 这个资源常是选择的重要规格。
看门狗(Watchdog Timer)
微控制器在产品中是不允许当机的,但受到噪声干扰或操作不当时,需有防范措施确保微控制器在当机的情况下能够自动重置,让微控制器能够继续运作. 我们可以说看门狗(Watchdog timer)是用来监看微控制器是否为不正常的当机,许多微控制器都已把它列为标准配备。
看门狗定时器实际上就像一个自跑式的RC 振荡器,它完全不必外加零件,意即不管是芯片的时脉振荡接脚的时脉振荡有没有停止,它还是继续计数而不随之中断而停止,即便是芯片进入省电的Halt 状态(在Halt 状态下,芯片之时脉停止振荡也一定不曾停止Watchdog timer之计时,当计时逾时后将使本芯片自动重置,I/O脚输出保持不变,耗电相当的省) ,Watchdog timer要不要致能,在OTP 版本必须在程序烧录时决定,以便决定要不要烧断其保险丝,在Mask 版本由使用者选择是否使用这个功能。
双时脉(Dual Clock)
微控制器的供应时脉愈高时 ,相对地耗电量也愈大 因此在一些使用电池供应的产品选用时 ,双时脉常是必须考虑的功能 ,一般副时脉是以32.768KHz 运作,主要做为计时(Real Time Clock)之用。
所以综合上面所言, 微控制器的指令集结构较单纯、容易发展及修改、I/O及中断处理能力强,主要发展工作集中在软件设计上,只要透过发展系统(ICE:In-Circuit Emulator)及万用板即可进行线上仿真工作,进行设计及修改的工作。由于微控制器具备单价低、系统硬件架构简单、应用程序的发展及修改容易、芯片稳定度佳、可靠度高,是故其应用领域极广,几乎是无所不在。故在不同的场合选择不同的配备,充份了解微控制器的内部资源将有助于产品开发且降低成本。相信在未来会陆续增加新的外围资源于微控制器内,应用的范围也愈来愈广,也因目前已经取代传统电路设计观念,进而成为新的设计主流。
作者:陈进成 毕业于海洋大学 电子工程学系
目前服务于盛群半导体 微控制器产品处