具有risc结构的八位微控制器的制作方法

文档序号:6413127阅读:313来源:国知局
专利名称:具有risc结构的八位微控制器的制作方法
技术领域
本发明总体上是与微控制器有关,更具体说是与执行缩减指令集的微控制器有关。
背景技术
目前的亚微米CMOS技术已能使复杂的微控制器集成在芯片上,同时留有足够的硅面积用于实现复杂的存储器和外围逻辑。高端32位和64位RISC机器中最常用的设计结构和方法可以有效地在低成本的8位微控制系统中使用。有了这种高功能而低成本的微控制器,系统的总体集成水平得以继续增加。更有效的程序可以以硬件结构方式执行,而更多的硬件功能可被集成。
近年来,RISC结构已获得普及。最有名的就是由Apple Computer,IBM和Motorola联合开发的Power pC_。虽然没有有关定义RISC处理器性能的协议,但各种不同的RISC结构间具有共同的特性为(1)大多数指令以一个周期执行;(2)单独且简单的加载/存储指令常以二个周期执行;(3)指令译码典型地由硬件完成而不是用微程序编码,造成执行时间更快;(4)大多数指令具有固定格式,因而简化了指令译码;(5)较小的指令集和较少的地址模式;(6)数据通过流水线式,提供了高度的进发处理;以及(7)大的高速寄存器集(也就是所谓寄存器堆)以避免往返于低速系统RAM的过度的数据传送。
有若干半导体制造商生产微控制器。例如,Texas Instruments提供了8位微控制器系统TMS370CX1X。虽然这些微控制器没使用RISC结构,但它们提供的RAM(128或256字节)可用作RAM也可用作通用寄存器。Motorora提供的MC6805系列8位微控制器使用了与Texas Instruments器件类似的双用途RAM。Microchip technology提供有PIC16C5X系列的微控制器。这些微控制器使用了Harvard双总线结构,其中数据和程序指令具有分开的存储器和总线。PIC16C5X使用了与系统RAM共享的寄存器堆。PIC16C5X使用了一层指令流水线;当一条指令执行时,下一条指令预先从程序存储器中被取出。由于RAM还作为寄存器起了双重作用,故不存在实际的内部寄存器组。因所有存储器均为静态RAM;当涉及寄存器操作时性能有所下降。
如上所述,快速设计周期是微控制器设计中的重要考虑因素。无疑,软件在基于计算机的系统中起着重要作用。因而,微控制器的实用设计直接与程序员和硬件设计者之间的接口规范有关,即与微控制器的指令集有关。任何可计算的功能应当以合理的程序空间来实现,指令集在这个意义上应当是完全的。指令集应当是有效的,即经常使用的功能应能以相对少的指令来实现。
因而希望提供一种微控制器设计,它能为应用软件开发人员提供一组完全和有效的指令集。
发明概述本发明是一种具有8位RISC结构的微控制器。8位数据总线在RAM存储器、寄存器堆、通用8位算术逻辑单元(ALU)和状态寄存器之间提供数据通道。微控制器实行Harvard结构,提供了与RAM存储分开的程序存储器存储以及与数据总线分开的程序数据总线。
寄存器堆包括多个8位寄存器。可以组合寄存器堆中某些寄存器以提供16位逻辑寄存器。16位逻辑寄存器提供了有效的地址计算并用作数据存储器和程序存储器的间接地址指针。无论对于数据存储器还是程序存储器而言,两者的程序地址空间和数据地址空间的增加使16位地址空间大大地增加了微控制器的灵活性和实用性。在本发明的一个较佳实施例中,寄存器堆提供了三对8位寄存器,使它们能作为三个独立的16位逻辑寄存器而访问(即读/写)。
为了进一步增强16位寻址的优点,使用了一个专用于寄存器堆的特殊的第二算术逻辑单元。第二ALU含有16位加法器,为16位逻辑寄存器提供16位算法运算。第二ALU可以存储返回到16位逻辑寄存器的16位结果。另外,16位结果可用作为地址。因此,第二ALU的存在提供了有效的16位地址计算而不增加通用8位ALU的负担从而不会降低器件的操作速度。
在寄存器堆中提供的16位逻辑寄存器的进一步扩展就是使用8位RAM页面寄存器。8位RAM页面寄存器逻辑上与16位逻辑寄存器的16位串接以提供24位逻辑地址。这一特性为基础结构基本上是8位设计的微控制器提供了前所未有的寻址范围。特别地,页面寄存器把存储器组织为每页具有64K(64×1024)字节RAM共256页,每个64K的页面由面页寄存器引用。在本发明的较佳实施例中,共有三个页面寄存器,每一个用于寄存器堆提供的三个16位逻辑寄存器之一。
位存储允许对寄存器堆的寄存器之中的任何一位的位置进行一位数据的来回传送。在较佳实施例中,位存储位于状态寄存器中。这种位传送特性允许对寄存器各位位置直接操纵而不用进行许多费时的寄存器移位操作。在许多微控制应用中典型的是,组成一个字节数据的各个位明显地独立于其它位。现有技术的微控制器的指令集一般包括了提供寄存器左移和右移的移位指令。因而,对寄存器给定位位置上的位读写是靠拉移该位(右移或左移)而完成。这是一种破坏性操作,如果要保留原始数据则要求保存寄存器的内容。此外,这是一种贵时的操作且需要用多条程序指令来实现。本发明的位传送操作提供了时间上更有效且消耗空间较小的读写任意位位置的手段。
带进位比较指令对包含寄存器堆的8位寄存器提供了16位增强功能。该指令集的特性提供了有效的方法在8位环境下实行16位量的比较,因而进一步增强了本发明8位微控制器的实用性。
附图简述

图1所示为本发明微控制器的布局示意图。
图2A~2C描述了用于图1微控制器的寄存器堆的内部表示。
图3A和3B描述了图2A~2C所示的寄存器堆中的寄存器的组织。
图4A和4B所示为本发明的位存储机构。
图5说明了按照本发明使用页面寄存器的24位逻辑地址格式。
图6描述了加入图5所示页面寄存器的图1的微控制器图。
实行本发明的最佳方式参考图1,本发明的微控制器10的设计是围绕8位数据总线12的结构。数据总线为组成微控制器的各组成部分提供数据通道。自带SRAM用作通用数据存储。与SRAM分开的8位寄存器堆为微控制器提供了一组高速8位存储器存储。
通用算术和逻辑单元ALU-1与寄存器堆耦合,为寄存器中存储的数据提供算术计算。ALU-1的输出耦合到8位数据总线12和状态寄存器。组成状态寄存器的各状态位根据ALU-1的结果而设定。状态寄存器包含的典型位包括但不限于进位标志、零标志、负标志、2的补码溢出标志、等于负标志与2的补码溢出标志之间的“异”的符号位以及中断使能位。状态寄存器耦合到数据总线12以允许对状态位进行读/写访问。耦合到数据总线12的其它组成部分包括用于子程序的调用/返回和中断处理的堆栈指针、定时器、中断电路、定时和控制电路、EEPROM和UART。由端口驱动器驱动的I/O数据寄存器为微控制器提供了I/O通道18。
直接地址总线16在程序执行期间提供了对SRAM位置和寄存器堆的直接访问。间接地址总线14提供间接寻址。间址总线14包括用于接收来自寄存器堆的地址,即总线接口14′,它将寄存器堆耦合到间址总线14以把地址发送到SRAM或程序计数器。
微控制器10的指令执行组成部分包括与程序存储器耦合的程序计数器。由程序计数器指定的指令从程序存储器提取并送入指令寄存器。指令译码器对来自指令寄存器的程序指令译码,产生各种控制信号。控制信号经控制线送到微控制器10的其它组成部分以按照经译码的程序指令进行操作。与指令执行部分耦合的总线总称为程序总线。将程序存储器的存储与数据存储分开的结构以及使用与数据总线12分开的程序总线通常称之为Harvard结构。
如上所述,寄存器堆是由多个8位寄存器构成。在本发明的较佳实施例中,有32个8位寄存器。然而要指出,寄存器堆可具有或多或少寄存器,微控制将工作得一样好。通用算术和逻辑单元ALU-1是8位运算器,提供了对寄存器堆中选中的寄存器间的算术运算。ALU-1的输出可以通过数据总线12反馈到寄存器堆中的寄存器。正如下面将要较详细讨论的那样,某些8位寄存器可以成对组合以提供16位逻辑寄存器。在本较佳实施例中,三对8位寄存器提供了三个16位逻辑寄存器X、Y、Z,如图1所示。
回到图2A,本发明的寄存器堆包括寄存器电路100,它提供32个8位寄存器R0-R31。如下所述,寄存器电路100可以规定最后六个寄存器R26-R31作为三对16位逻辑寄存器R27/R26(X)、R29/R28(Y)、R31/R30(Z)。由两个16线数据总线102、104组成的公共总线接口分别对寄存器提供数据入和数据出总线。
由寄存器堆提供的16位寄存器用于SRAM和程序空间寻址的间址寄存器指针。这样,地址计算需要进行例如后增和预减之类的某种16位算术计算。虽然可以使用ALU-1为16位寄存器提供16位算术运算,但由于ALU-1的八位设计使这种运算效率极低。
因而,图2A所示寄存器堆包括了它专用的第二算术和逻辑单元ALU-2以便于与16位逻辑寄存器有关的16位计算。算术和逻辑单元ALU-2是定制的16位设计,以提供间址指针一般所需的特定操作。ALU-2的第一输入由寄存器堆的数据出总线104输入。ALU-2的第二输入由选择器110输入。选择器110从以下三个选择中选取一个数值数值-1、数值+1及常数V。ALU-2的输出通过数据入总线102反馈到X、Y、Z寄存器,使寄存器的内容得以更新。多路复用器114耦合到寄存器堆的总线接口14′。多路复用器件114的一个输入耦合到ALU-2的输出而另一个输出则耦合到数据出总线104。这种安排使多路复用器114能选择性地从ALU-2或从寄存器电路100输出数据。
下述控制信号与所讨论的寄存器堆的特性的操作有关。它们包括加使能,减使能、多路复用选择、V选择、V5-V0,增选择和减选择。这些信号由源自指令译码器的各条控制线传送。参考本发明的微控制器的程序指令,下面将根据这些控制信号讨论寄存器堆的操作。
图2中所示的寄存器电路100的内部结构如图3A方框图所示。本发明的一个实施例提供了32个寄存器R0-R31,每一个均有一组8位输出线121和一组8位输入线123。实际提供的寄存器数目对于本发明并不重要。耦合一组锁存器120-126,选择地将数据锁存到寄存器的输出。这些锁存器提供了图2A所示的公共总线接口102,104的输入和输出数据位bi15…bi0,bo15…bo0。8位寄存器R0-R31间的数据传送是通过数据入锁存器122和数据出锁存器126,分别作为位bi7-bi0和bo7-bo0而提供的。
对于16位逻辑寄存器X、Y、Z提供了附加的数据入和数据出锁存器120、124。X寄存器由寄存器对R27∶R26组成,Y寄存器由寄存器对R29∶R28组成而Z寄存器由寄存器对R31∶R30组成。数据出锁存器120、122锁存16位寄存器之一输出到公共总线接口102、104的输出位bo15…bo0,而数据入锁存器124、126锁存出现在输入位bi15…bi0上的输入数据。数据出锁存器120耦合到高字节寄存器R27、R29和R31的输出线121。类似地,数据出锁存器122耦合到低字节寄存器R26、R28和R30的输出线121。数据入锁存器124、126以相同方式耦合,即数据入锁存器124耦合到高字节寄存器R27、R29和R31的输入线123,而数据入锁存器126耦合到低字节寄存器R26、R28和R30的输入线123。
下述控制信号与所讨论的寄存器电路100的特性的操作有关。它们包括数据16_入,数据16_出,数据8_入,数据8_出,R0选择-R31选择,X选择、Y选择和Z选择。参考本发明的微控制器的程序指令,下面将根据这些控制信号讨论寄存器电路100的操作。
现在将讨论转向本发明的8位微控制器的另一特性。回想上述讨论,对于寄存器任意位置的加载和存储的现有技术要求对寄存器的移位和/或寄存器的掩膜操作,造成了低效的代码并增加了代码长度。另外,这是一种破坏性操作,如果要保留原始数据则要保存寄存器内容。
参考图4A中本发明的寄存器堆内部结构的另一个视图,详细描述了寄存器外存储中另外的组成部分,它提供了对寄存器R0-R31中一位的任意访问。逻辑上,每个寄存器具有1∶8多路复用器130,多路复用器的8个输出中的每一个被耦合到寄存器中的一位。因此,这一位可加载到寄存器的任一位位置上,只要将这一位锁存到多路复用器130的1位输入并将多路复用器130的输入传送到它八个输出之一。每个寄存器还有一个8∶1多路复用器132,它的8个输入中的每一个耦合到寄存器中的一位。因此寄存器中的任何一位位置可以通过选择与感兴趣的位对应的多路复用器输入而复制出来。
继而,寄存器堆逻辑上还包括1∶32多路复用器134和32∶1多路复用器136。首先考虑1∶32复用器134,该复用器具有取自8位数据总线12的1位输入。输入可传送到它的32个输出中的任何一个输出。32个输出中的每一个依次又耦合到1∶8复用器130之一的输入,从而提供了从数据总线12到寄存器堆中寄存器R0-R31的任何一个的任一位位置的通道。其次考虑1∶32复用器136。每一个8∶1复用器132的输出耦合到复用器136的32个输入之一。复用器136的1位输出依次又耦合到数据总线12,从而提供了从任一寄存器R0-R31的任何一位位置到数据总线的数据通道。
图4A所示的状态寄存器包括了用于接收和保持一位数据的1位位置,称之为传送位T-位。状态寄存器耦合到8位数据总线12以提供对它的各位的读/写访问。特别地,结合1∶32复用器134和32∶1复用器136控制T-位位置以通过数据总线从32∶1复用器136接收1位数据或通过数据总线把1位数据传送到1∶32复用器134。
下述控制信号与图4A所示的寄存器堆的特性的操作有关。它们包括BST寄存器选择、BST位选择、BLD寄存器选择和BLD位选择。参考本发明的微控制器的程序指令,下面将根据这些控制信号讨论寄存器堆的操作。
本发明的8位微控制器的另一个特征是如图5所示的增强寻址能力。图中所示为寄存器堆的三个外部附加寄存器,即RAM页面寄存器RAMPX、RAMPY、RAMPZ。RAM页面寄存器结合与它们相应的16位逻辑寄存器X、Y、Z一起操作以提供比先前技术8位微控制器要大大增加的寻址范围。在所揭示的实施例中,RAM页面寄存器是8位寄存器。然而,这并不重要,很清楚本发明可方便地使用具有不同位长度的寄存器而工作。
参考图5,示出了如何构成地址的示意表示。每个RAM页面寄存器与它相应的16位寄存器串接。例如,8位RAM页面寄存器RAMPX与16位X寄存器串接以形成24位地址。在较佳实施例中,RAMPX的8位用作24位逻辑地址的高阶位X[23…16],而X寄存器的16位提供了24位逻辑地址的低阶位X[15…0]。这一结构创建的存储器模式是一组64个字节(64×1024)的页面,每64K页面由一个8位RAM页面寄存器访问,总共256个页面。
现在回到图6描述与本发明所揭示的实施例有关的RAM页面寄存器的具体实施。每个RAM页面寄存器RAMPX、RAMPY、RAMPZ耦合到8位数据总线12,以在程序执行期间接收对8位页面的引用。选择器11(例如3∶1多路复用器)从每个RAM页面寄存器接收8位并将所选的RAM页面寄存器之一的8位传送到选择器的输出。寄存器堆的总线接口14′的16位与来自选择器11的8位串接以形成由间址总线14载送的24位地址。
由于24位地址能寻址16M(16×1024×1024)RAM,本发明的扩展24位寻址允许使用外接RAM(未示出)。所包括的24位外部地址总线20和8位数据总线22用于微控制器和外部RAM(未示出)间的数据访问。根据本发明,寄存器堆、机内SRAM和外部RAM占用同一数据地址空间。寄存器堆占用前32个地址位置而机内SRAM占用其后N个地址位置,N为SRAM的大小。其余的地址空间由外部RAM提供。因而地址范围00到(N-1)映射为机内存储器(寄存器堆和SRAM),而其余地址范围N到(16M-1)映射为外部RAM的存储器位置。例如,机内存储器总共为64K字节,则机内地址范围为$00到$FFFF(“$表示十六进制记号),而外部RAM地址范围为$10000到$FFFFFF。注意,可以改变机内存储器数量而不影响本发明的实用或可操作性,实际存储器数量取决于诸如可用硅面积、器件几何尺寸及设计规则等设计准则。
为了保证机内存储器和外部RAM正确地按给定的地址访问,第二选择器13用于把地址或者传送到内部地址总线14或者传送到外部总线地址20。在较佳实施例中,选择器13是1∶2复用器,其中单个复用器输入被传送到其两个输出之一。这里,单输入是来自选择器11输出的24位地址线。选择器13的输出之一耦合到地址总线14,而其它输出耦合到外部地址总线20。一旦检测到一地址处于机内存储器地址范围、便使选择器13将它的输入传送到地址总线14。注意,仅是24位地址的低阶16位[15…0]被传送到地址总线14。反之,一当检测到一址处于外部存储器的地址范围,选择器13将把它的输入传送到外部地址总线20。多种检测方案的任何一种均可使用,它们均处于普通熟练设计人员的能力之中。例如,一种方案可把24位地址([23…0])的高阶8位地址一起“或”,用其结果来控制选择器13。如或操作结果为假,意味着地址落入机内存储器地址范围,则选择器13应将其输入传送到内部地址总线14。如果或操作结果为真,意味着地址是全24位地址,则选择器13应将其输入传送到外部总线20。
在对本发明的8位微控制器的特性有关的硬件已作了详细说明后,现在转到对微控制器指令集的讨论。首先,本微控制器支持所有微控制器的典型的程序指令,包括算术和逻辑指令,分支指令、数据传送指令以及位测试和位设定指令。另外,本微控制器提供的指令均可用上述图中描述和说明的电路来使能。下面是这些指令的概述ADIW说明将常数加入16位逻辑寄存器L(X(R27:R26)、Y(R29:R28)或Z(R31:
R30))。
存储器访问限于由相应RAM页面寄存器RAMPX、RAMPY和RAMPZ中指定的RAM页面。
操作L←L+K语法ADIWL,K其中L取X,Y和Z之一;K为常数,0≤K≤63示例adiw X,1;X寄存器加1adiw Z,63;Z寄存器加63BST说明从一寄存器存储1位到T-位。
操作T-位←Rd(b)语法BST Rd,b其中Rd为寄存器,R0…R31;b为位位置,0≤b≤7示例;复制位bst r4,3 ;r4的位3存入T-位bid r21,6 ;从T-位加载r21的位6BLD说明从T-位加载1位到一寄存器。
操作Rd(b)←T-位语法BLD Rd,b其中Rd为寄存器,R0…R31;b为位位置,0≤b≤7示例;复制位bst r4,3 ;r4的位3存入T-位bld r21,6;从T-位加载r21的位6CPC说明执行两寄存器的比较,考虑先前的进位,操作Rd-Rr-c其中Rd,Rr为寄存器,R0…R31;c为进位位,语法CPC Rd,Rr示例;比较r3:r2与r1:r0Cp r2,r0 ;比较低字节Cpc r3,r1;比较高字节
brne noteq ;如不等则分支…noteq…;分支目的地nop ;(不作什么)IJMP说明间接跳转到由16位逻辑寄存器,Z[R31:R30]指出的地址。
操作PC[15…0]←Z[15…0]语法IJMP(无操作数)示例;初始化跳转地址mov r30,r0;复制r0到r30中mov r31,r1;复制r1到r31中ijmp ;跳转到由r31,r30指向的指令ICALL说明对由16位逻辑Z寄存器,Z[R31:R30]指向的子程序间接调用。
操作STACK←PC+1SP←SP-2PC[15…0]←Z[15…0]语法ICALL(无操作数)示例;初始化子程序地址mov r30,r0;复制r0到r30中mov r31,r1;复制r1到r31中icall ;跳转到由r31:r30指向的指令LD说明间接从存储器位置加载1字节到寄存器,存储器位置由16位逻辑寄存器,L(X[R27:R26],Y[R29:R28]或Z[R31:R30])所指向。
逻辑。寄存器可为后增的或预减的。存储器访问限于由相应RAM页面寄存器RAMPX、RAMPY和RAMPZ中指定的RAM页面。
操作1: Rd←(L) L不变,或2: Rd←(L)L←L+1 L后增,或3: L←L-1Rd←(L) L预减语法LD Rd,L L不变LD Rd,L+L后增LD Rd,-LL预减其中Rd为寄存器,R0…R31,L为X,Y和Z中之一示例clr r27 ;X高字节清零ldi r26,$20;;X低字节设为$201d r0,x+ ;把存储器位置$20的内容加载到r0(x后增)ld r1,x ;把存储器位置$21的内容加载到r1(x不变)ld r2,-x ;把存储器位置$21的内容加载到r2(x预减)LDD说明按位移量从存储器位置间接加载一字节到寄存器,寄存器位置由16位逻辑寄存器L(Y[R29:R28]或Z[R31:R30])所指向且偏置-位移量。存储器访问限于由相应的RAM页面寄存器RANPY和RAMPZ中指定的RAM页面。
操作Rd←(L+q)语法LDD Rd,L+q其中Rd为寄存器,R0…R31,L为Y和Z之一;q为位移量,0≤q≤63示例clr r29 ;Y高字节清零ldi r28,$20;;Y低字节设为$20ldd r4,Y+2 ;把存储器位置$22的内容加载到r4SRIW
说明从16位逻辑寄存器L(X[R27:R26]或Y[R29:R28]或Z[R31:R30])减去-常数。存储器访问限于由相应的RAM页面寄存器RAMPX、RAMPY和RAMPZ中指定的RAM页面。
操作L←(L-K)语法SBIW L,K其中L为X、Y和Z之一;K为常数,0≤K≤63示例sbiw X,1 ;从X寄存器中减sbiw Z,63;从Z寄存器中减63ST说明从寄存器间接存储1字节到存储器位置,存储器位置由16位逻辑寄存器L(X[R27:R26],Y[R29:R28]或Z[R31;R30])所指向。逻辑寄存器可以后增的或预减的。存储器访问限于由相应RAM页面寄存器RAMPX、RAMPY和RAMPZ中指定的RAM页面。
操作1:(L)←Rd L不变,或2:(L)←(Rd)L←L+1 L后增,或3:L←L-1(L)←Rd L预减语法ST L,Rd L不变ST L+,Rd L后增ST-L,Rd L预减其中L为X、Y和Z中之一;Rd为寄存器,R0…R31,示例clr r27 ;X高字节清零ldi r26,$20;;X低字节设为$20st x+,ro;把r0的内容存入存储器位置$20(x后增)st x,r1 ;把r1的内容存入存储器位置$21(x不变)ldi r26,$23 ;X低字节设为$23st -x,r2;把r2内容存入存储器位置$22中(X预减)
STD说明按位移量从寄存器间接存入一个字节到存储器位置,存储器位置由16位逻辑寄存器L(Y[R29:R28]或Z[R31:R30])所指向且偏置一位移量。存储器访问限于由相应的RAM页面寄存器RAMPY和RAMPZ中指定的RAM页面。
操作(L+q)←Rd语法LDD L+q,Rd其中L为Y和Z之一;q为位移量;0≤q≤63;Rd为寄存器,R0…R31示例clr r29 ;Y高字节清零ldi r28,$20;;Y低字节设为$20std Y+2,r4 ;把r4内容存入存储器位置$22中回顾图1,指令译码器产生的控制信号由控制线载送到微控制器的各组成部分以实现执行经译码的指令所需的操作。讨论将集中在与上述指令相关的控制信号以及它们对上述图中所述电路的作用关系。
首先考虑如图4B所示的位传送指令(BST,BLD)。每个BST和BLD指令包括一个标识特定指令的操作码字段和两个操作数寄存器操作数Rd和位位置操作数b。当由指令译码器对这些指令译码时(图1),将产生寄存器选择控制信号和位选择控制信号。这些控制信号控制复用器132-136以访问所需的位。基于寄存器操作数Rd为BST指令产生BST寄存器选择控制信号。类似地,基于位位置操作数b产生BST位选择控制信号。也对BLD指令产生类似的控制信号。
如图4B所示,BST位选择控制信号对每个寄存器R0-R31的8∶1复用器132操作以从每个寄存器向32∶1复用器136传送指定的位。BST寄存器选择控制信号对32∶1复用器操作以选择32位中指定的一位,以将所选寄存器的选中位传送到8位数据总线12,随后被锁存到状态寄存器的T-位位置。
与BLD指令相应的控制信号以相同的方式对复用器130和134操作。存储在T-位中的1位经数据总线12传送到32∶1复用器134中。该位随后在BLD寄存器选择控制信号的控制下被传送到1∶8复用器132之一,把该位送到指定的寄存器。BLD位选择接着将该位输出到指定寄存器的正确位位置上。
其次考虑16位算术操作ADIW和SBIW,分别为常数值与16位逻辑寄存器X、Y、Z之一的加和减操作。首先参考图2B,ADIW和SBIW指令图表明当由指令译码器(图1)译码时操作码字段和常数值操作数K产生了控制信号。操作码字段或者产生加使能控制信号或者产生减使能控制信号,使ALU-2对它的二个输入执行适当的算术运算。常数值操作数K产生控制信号V5~V0,被馈送到选择器110的V输入中。控制信号V5~V0以二进制形式表示了ADIW和SBIW指令的操作数中所指定的常数K。在本发明揭示的较佳实施例中,常数K为6位数据。另外,常数值操作数K产生V选择控制信号使选择器110输出常数V到ALU-2的一个输入端。ALU-2的其它输入通过数据出总线104来自寄存器堆中的16位寄存器X、Y和Z中选中的一个,将解释如下。ALU-2的输出经数据入总线102反馈到寄存器堆中并存储在所选的16位寄存器中,从而完成了操作。
现在参考图3A和3B,考虑由指令译码器为ADIW和SBIW指令产生的控制信号。寄存器操作数L产生X、Y或Z选择控制信号,使适当的寄存器对能产生对指定的16位逻辑寄存器的读/写访问。X选择信号对寄存器R26和R27使能,Y选择信号对寄存器R28和R29使能,而Z选择信号对寄存器R30和R31使能。操作码字段产生数据16入使能控制信号及数据16出使能控制信号。数据16_出使能控制信号使数据出锁存器120、122输出所选16位逻辑寄存器包含的数据到数据出总线104,如上所述再馈送到ALU-2中。反过来,数据16入使能控制信号使数据入锁存器124、126输入在ALU-2输出端产生的结果和或差。
其次是与16位逻辑寄存器X、Y、Z有关的加载和存储指令(LD,ST)。首先考虑LD和ST操作的方式,16位寄存器有预减或后增二种方式。参考图2C,可见对于具有更新功能的加载/存储操作,操作码字段或产生DECR选择或产生INCR选择控制信号,这取决于更新是预减或后增。DECR选择控制信号和INCR选择控制信号对选择器110操作,输出适当的“-1”或“+1”值送到ALU-2的一个输入端。至ALU-2的其它输入经由数据出总线104来自寄存器堆中16位寄存器X、Y、Z的所选择的一个。产生加使能信号使ALU-2把值“-1”或“+1”加到所选16位寄存器的内容上。复用器选择控制信号对复用器114操作以输出一地址到寄存器堆的总线接口14′。根据指令是预减或是后增改变复用器选择控制信号的定时。如果想要预减方式,在ALU-2执行其操作后产生复用器选择控制信号,这样复用器114可以在经ALU-2操作前把ALU-2的输出传输到总线接口14′。另一方面,如果想要后增方式,复用器选择使复用器114把数据出总线104传送到总线接口14′。两种情况下,ALU-2的输出均经数据入总线102反馈到寄存器堆中以使所选的16位寄存器更新。
现在参考图3A和3B,可见具有更新的LD和ST指令产生X、Y、Z选择控制信号和数据16_入使能控制信号及数据16_出使能控制信号。这些信号的作用与ADIW和SBIW指令有相同的方式,因为在所有场合下,16位寄存器的内容要被更新。除了这些控制信号外,作为对LD和ST指令的寄存器操作数Rd译码的结果还产生R0-R31选择控制信号和数据8_入及数据8_出控制信号。对于加载指令,数据8_入控制信号对低字节数据入锁存器126操作以把由16位寄存器引用的数据锁入,并随后加载到由R0-R31选择控制信号选中的8位寄存器中。对于存储指令,数据8_出控制信号对低字节数据出锁存器122操作以把由R0-R31选择控制信号所选的8位寄存器内容输出,并随后存储到由16位寄存器所指向的存储器位置中。
其次考虑无更新(即元预减或后增操作)的LD和ST指令的形式。关于图2C,由于所选16位寄存器没有更新,为了将16位寄存器(经数据出总线104)传送到间址总线14上只需复用器选择控制信号。关于图3B,产生与具有更新的ID和ST指令相同的控制信号,除了数据16_入使能信号不需要外,因为不出现对16位寄存器的更新。
加载和存储指令的第三种形式使用了加于所选16位寄存器的位移量q。这些是LDD和STD指令。如能从图2B所见,LDD和STD指令的操作方式与ADIW和SBIW指令极其相似。位移值q由控制信号V5~V0表示。加使能控制信号使ALU-2把位移量加到所选的16位寄存器。然而,与ADIW和SBIW不同,LDD和STD指令产生的复用器选择信号允许计算的值作为地址输出到间址总线14。回到图3A和3B,LDD和STD指令产生与LD和ST指令基本相同的控制信号,但有两处例外不产生数据16_入使能,因为不出现对16位寄存器的更新;以及LDD和STD指令令限于Y和Z寄存器。
图3B所示的跳转指令IJMP、ICALL简单涉及到Z寄存器的选择并产生数据16_出使能控制信号以输出Z寄存器内容到间址总线14上。图2B中,IJMP和ICALL指令产生复用_选择控制信号对复用器114操作,使得Z寄存器内容能从寄存器堆的数据出总线104传送到地址总线14。随后将地址装入PC计数器以改变执行控制的流程。
图3B所示带进位比较CPC指令简单涉及为每个指令的寄存器操作数Rd、Rr产生R0-R31选择控制信号之一。数据8_出控制信号输出所选的8位寄存器内容。产生附加的控制信号(未示出)使8位ALU-1从Rd寄存器内容中减去Rr寄存器内容和进位之和。不保存操作结果;然而按照操作结果设定状态寄存器中的标志。
通过在8位环境中提供16位能力,CPC指令增加了微控制器的8位结构。8位操作引起的进位结果可用于随后的8位CPC操作以产生16位效应。例如,16位比较可如下实现;把寄存器R3和R2中包含的16位“值”与寄存器R1和R0中包含的16位“值”相比较;cp r2,r0 ;比较低字节cpc r3,r1 ;比较高字节brne LABEL;如不等则分支LABEL“cp”指令将影响进位位,进位位接着将用于随后的“cpc”指令。寄存器对R3/R2和R1/R0有效地用作二个16位值的保持器。
这里结束了关于本发明的微控制器所揭示的与指令和逻辑电路相关的控制信号的讨论。应理解与执行上述指令有关的控制信号并非只是这些信号。附加的信号被产生来控制微控制器的其它部件。例如,产生地址和读/写选通信号以用于上述与存储器有关的指令的信号。另外,需要执行定时控制以恰当地同步控制信号的发出。然而在集成计算机电路领域的普通熟练人员不需过多的实验就能确定实现本发明所需的附加控制信号和这些信号所必须的定时。
权利要求
1.一种微控制器,包括程序总线;用于存储程序的程序存储器;通过所述程序总线耦合到所述程序存储器的程序执行单元;与所述程序总线分开的8位数据总线;与所述程序存储器分开的耦合到所述8位数据总线的数据存储器;耦合到所述8位数据总线的寄存器堆,所述寄存器堆具有多个8位寄存器,所述寄存器堆进一步具有组合装置,将二个所述8位寄存器组合为单个16位逻辑寄存器而被访问;用于接收所述两个8位寄存器内容的耦连的通用ALU,所述通用ALU具有一耦合到所述8位数据总线的输出;直接地址总线,耦合所述程序执行单元用于在程序执行期间直接访问所述数据存储器和所述寄存器堆;以及间接地址总线,在程序执行期间为所述寄存器堆提供对所述数据存储器的间接数据访问;所述寄存器堆进一步包括耦合到所述组合装置的专用ALU,以在通过所述组合装置访问的16位逻辑寄存器上执行算术功能,所述间接地址总线具有地址接收装置,用于从所述组合装置接收16位值,从而提供16位间接寻址。
2.如权利要求1所述的微控制器,其特征在于所述寄存器堆进一步包括一选择器装置,用于输出数值常数-1、数值常数+1或程序产生的值,为了用通过所述组合装置访问的16位逻辑寄存器执行算术运算,所述专用ALU被耦连从所述选择装置接收输出。
3.如权利要求2所述的微控制器,其特征在于所述两个8位寄存器之一是所述16位逻辑寄存器的低字节,以及所述两个8位寄存器的另一个是所述16位逻辑寄存器的高字节。
4.如权利要求1所述的微控制器,其特征在于进一步包括页面寄存器和耦合到所述地址接收装置的地址形成装置,用于从所述页面寄存器内容形成一地址;以及由所述组合装置提供的16位地址。
5.如权利要求4所述的微控制器,其特征在于所述页面寄存器是8位寄存器,所述页面寄存器被耦合到所述8位数据总线,通过该总线将一值加载到所述页面寄存器中,该值指定了每页为64K的256页中的一页。
6.如权利要求1所述的微控制器,其特征在于进一步包括用于保持单独一位的位存储器以及在位存储器和从所述寄存器堆中选中的一个寄存器中一位位置之间传送1位的装置。
7.如权利要求6所述的微控制器,其特征在于进一步包括耦合到所述8位数据总线的状态寄存器,所述状态寄存器具有多个位位置,其中之一用作所述位存储器。
8.在一个8位微控制器中,所述8位微控制器具有程序总线、程序存储器、经所述程序总线耦合到所述程序存储器的程序执行单元、8位数据总线、与所述程序存储器分开的耦合到所述数据总线的数据存储器、有一个输出与所述数据总线耦合的通用8位ALU以及把所述程序执行单元耦合到所述数据存储器的第一地址总线,其改进包括具有多个可由所述通用8位ALU访问的8位寄存器的寄存器堆,以提供对两个所述8位寄存器的8位算术操作,所述寄存器堆进一步具有把两个所述寄存器作为一个16位寄存器提供访问的寄存器装置,所述寄存器堆还具有16位ALU和值选择器,所述16位ALU被耦连以从所述寄存器装置接收16位数据和从所述值选择器接收数值并用它进行计算;以及用于从所述16位ALU接收计算结果的第二地址总线,所述第二地址总线被耦连在所述寄存器堆和所述数据存储器之间,所述计算结果被用作所述数据存储器中存储器位置的地址。
9.如权利要求8所述的8位微控制器,其特征在于所述值选择器提供数值常数-1、数值常数+1或由程序生成的数值。
10.如权利要求9所述的8位微控制器,其特征在于所述寄存器堆包括传送装置,用于从所述寄存器装置向所述第二地址总线或者传送16位ALU的所述计算结果或者传送16位数据。
11.如权利要求10所述的8位微控制器,其特征在于进一步包括页面寄存器和根据所述页面寄存器内容形成扩展地址的装置以及从所述寄存器装置提供的16位地址。
12.如权利要求11所述的8位微控制器,其特征在于进一步包括外部地址总线和选择性地将所述扩展地址耦连到所述外部地址总线和所述第二地址总线的装置。
13.如权利要求12所述的8位微控制器,其特征在于所述页面寄存器是-8位寄存器。
14.如权利要求12所述的8位微控制器,其特征在于进一步包括一个位存储器和用于在所述位存储器和所述寄存器堆的一寄存器中一位位置间传送1位数据的装置。
15.如权利要求14所述的8位微控制器,其特征在于进一步包括耦合到所述8位数据总线的状态寄存器,所述位存储器是在所述状态寄存器中的1位位置。
16.一种具有基于Harvard结构的8位微控制器,包括用于对程序指令译码并由此产生控制信号的程序指令译码器;数据存储器;寄存器堆,它具有多个8位寄存器、用于作为一个16位逻辑寄存器对两个所述8位寄存器访问的寄存器装置、用于输出“+1”值或“-1”值的数值选择器,以及把所述数值选择器的输出加到单个16位逻辑寄存器的16位加法器;耦连的8位ALU,接收两个所述8位寄存器的内容以对它们进行算术操作;具有一传送位的状态寄存器,用于从所述8位寄存器之一接收一位和复制一位到所述8位寄存器之一;用于在所述8位寄存器和所述状态寄存器的所述传送位之间传送一位的传送装置;将所述数据存储器、所述寄存器堆、所述8位ALU、所述状态寄存器以及所述位传送装置耦合在一起的8位数据总线;将所述寄存器堆耦合到所述数据存储器以访问所述数据存储器的存储位置的地址总线;用于将所述控制信号载送到所述寄存器堆、所述8位ALU、所述状态寄存器以及所述位传送装置的控制线。
17.如权利要求16所述的微控制器,包括第一程序指令子集,每条指令具有指定增加或减少代码的数值操作码和指定一对所述8位寄存器之一的寄存器对操作码,其中所述指令译码器的特征是响应所述寄存器对操作码和所述数值操作码而产生第一控制信号,使得所述寄存器装置把所述寄存器对作为一个16位寄存器而访问;所述数值选择器输出“+1”或“-1”;以及把所述选择器的所述输出加到所述16位寄存器的16位加法器。
18.如权利要求17所述的微控制器,其中所述数值选择器包括用于接收数值常数和输出所述数值常数的装置,所述程序指令第一子集中的某些指令具有指定数值的数值操作码,其中所述指令译码器的进一步特征在于响应于指定数值的这些所述数值操作码而产生第二控制信号,所述第二控制信号是由所述数值选择器接收的所述数值的二进制表示。
19.如权利要求18所述的微控制器,进一步包括程序指令的第二子集,每个指令具有标识所述寄存器堆中一个寄存器的寄存器操作码以及指定由寄存器操作码识别的该寄存器的一位位置的位操作码,其中所述指令译码器的进一步特征在于响应于所述寄存器操作码和所述位操作码而产生第三控制信号,使得所述位传送装置在所述状态寄存器的传送位和由所述寄存器操作码与所述位操作码所指定的该位位置间传送一位。
20.如权利要求19所述的微控制器,进一步包括具有目的寄存器操作码和源寄存器操作码的程序指令,每个操作码指定一个所述8位寄存器,所述状态寄存器进一步包括进位位,所述8位ALU被耦连以接收所述进位位,其中所述指令译码器的进一步特征在于响应于所述目的和所述源寄存器操作码而产生第四组控制信号,使得所得8位ALU执行下述算术计算Rd-Rr-C,其中Rd和Rr分别为由所述目的寄存器和所述源寄存器操作码识别的寄存器的内容,而C是进位位的内容。
全文摘要
基于RISC的8位微控制器(10)包括8位寄存器堆,它除了有通用8位ALU(ALU-1)外还具有一专用算术逻辑单元ALU(ALU-2)。寄存器堆进一步包括组合装置,用于组合一对寄存器(100)以提供直接寻址用的16位逻辑寄存器。专用ALU(ALU-2)是16位ALU,为寄存器对提供一定的算术功能,由此减轻了加在通用寄存器8位ALU(ALU-1)上的计算负担。本发明还包括了页面寄存器(RAMX,RAMY,RAMZ),与16位逻辑寄存器的内容组合提供更大的寻址范围。本发明的8位微控制器的另一个特点是用一条指令直接读/写寄存器堆中任何一位的位置。这就避免了现有技术的微控制器需要进行的各种加载、移位和/或掩模操作。
文档编号G06F9/30GK1236455SQ9719948
公开日1999年11月24日 申请日期1997年10月30日 优先权日1996年11月7日
发明者维加德·沃尔兰, 阿尔夫-埃吉尔·博根, 戈特·米克勒比斯特, 约翰·D·布赖恩特 申请人:爱特梅尔股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1