双算术逻辑单元精简指令集8位微控制器的制作方法

文档序号:6533845阅读:165来源:国知局
专利名称:双算术逻辑单元精简指令集8位微控制器的制作方法
技术领域
本发明涉及通用微控制器(MCU)结构技术领域,特别是涉及双算术逻辑单元(ALU)精简指令集(RISC)的8位微控制器。适用于个人数字终端PDA,电子书,电子词典,手写板,MP3,工业控制等领域。
背景技术
随着半导体技术的发展,集成电路的规模越来越大,集成度越来越高,微控制器和它的相关存储器如闪存(Flash Memory)、电可擦除存储器(E2PROM)、静态随机存储器(SRAM)等以及外设逻辑控制器已经可以大量集成在同一颗芯片上。而RISC的设计结构和强大的电子设计自动化(EDA)方法使得设计人员的工作更加有效,程序编写更趋容易,从而进一步推动了微控制器成本的下降和集成度的提高。
由于采用了RISC体系构架,程序存储空间和数据存储空间分离,微控制器的编程比以前更加方便,运算速度加快,效率增高,在工艺技术高度发展,集成度已经不成问题的今天,微控制器的应用也就更加广泛,现有RISC构架的微控制器已经大有取代原来复杂指令集控制器(CISC)之势。RISC体系近年来之所以大受欢迎,可以归因于下面几个特点1)大多数指令能够在同一时钟周期中执行完毕;2)指令的解码通常是固定的,相比微编码,执行速度极大提高;3)指令格式是固定的,便于解码;4)数据路径流水化,指令能够并行处理,提供了高度的数据同时处理能力;5)采用哈佛总线结构,程序空间、数据空间分开,结构清晰,易学好用。RISC结构最引人瞩目的应用是PowerPC,它是由Apple,IBM,Motorola几家公司联合研制的。而8位MCU的典型代表则是Microchip technology的PIC16C5X系列微控制器。该微控制器使用的是哈佛双总线结构,在这种结构中,数据和程序指令有其独立的存储器和总线。PIC16C5X使用的是一级流水线;当一个指令正在执行的时候,下一个指令会从程序存储器中提前读取出来。由于RAM可兼作寄存器,所以就没有真正意义上的内部寄存器。因为所有的存储器都可以是一个静态存储器(SRAM),所以寄存器的操作就非常精简了。
技术的发展使得人们对生活的舒适度追求更高。在很多应用场合上述这些传统微控制器的性能已经远远不能满足人们对其控制性能的应用需要,其主要矛盾集中在两个方面一是微控制器的运算性能差,不能满足数据处理的要求;二是存储区空间小,不能满足编程的需要。因此在一些情况下,迫使人们不得不选用价格昂贵的16位、32位处理器,而这些处理器的高成本和高功耗等代价,常常会使实施项目的计划流产。因此,8位微控制器必须要突破数据存储空间不足、数据处理能力较弱的缺点,给软件设计师提供充足的程序空间,数据空间,和足够强大的数据处理能力,以满足大多数应用的需要。另一方面,毫无疑问,在设计微控制器时,软件所起的作用是举足轻重的,微控制器的应用设计是直接与软件程序员和硬件工程师之间的界面密切相关的,即微控制器的指令集作为软硬件工程师之间的桥梁,它设计的成功与否关乎微控制器的成败。指令集的设计必须完备、高效,使得绝大多数运算都可以执行,经常使用的功能应该用几个相对比较少的指令来完成。这些应用需求使得人们希望设计出一种微控制器,以给应用软件研发者提供完整而又高效的指令集,并且有较高的数据处理速度和存储空间。
发明的内容本发明的目的在于克服现有8位微控制器存储空间小、数据处理速度低的不足,提供一种双算术逻辑单元RISC结构的8位微控制器,以全面扩展8位微控制器的数据空间,并且为8位微控制器增加部分16位算术指令处理能力和单周期比特操作能力,提高8位微控制器的运算性能,形成适用于PDA,电子书,电子字典、MP3等大数据量,高运算速度的应用需求的高性能嵌入式微处理器。
实现本发明目的的关键技术是在原有8位RISC结构的通用寄存器堆和通用算术逻辑单元ALU-1中,并列连接多功能寄存器堆和多功能算术逻辑单元ALU-2,并分别在原有8位RISC结构的指令译码器中设置有比特定位器和比特操作判断器,在通用算术逻辑单元ALU-1中设置有比特运算器。
整个控制器包括程序存储器,用于存储程序,通过程序指针来访问,把程序指针指定的程序存储器地址的指令读出,送到指令寄存器,该程序存储器可以是Flash、E2PROM、ROM等;程序计数器,即程序指针,用于指出将要执行的指令在程序存储器中存放的物理地址,它由指令译码器译出信号控制在时钟上升沿时进行偏移运算,完成顺序加1或者跳转到指定的位置的操作,其输出为当前要读出的指令地址,该地址作为程序存储器的地址指针,控制程序存储器的数据输出;指令寄存器,用于暂存从程序存储器取得的指令,其输出送到指令译码器进行译码;指令译码器,用于将寄存在指令寄存器的指令进行译码解释,生成相应的控制信号,控制寄存器堆、算术逻辑单元ALU的动作以及数据总线的数据流向、地址总线的选取、程序计数器的跳转,堆栈指针的移动等;比特定位器,用于对比特操作指令作比特定位运算,确定比特位置;比特操作判断器,用于判定当前指令译码器中的指令是否是比特操作指令,确定是否把比特操作使能信号置1;堆栈指针,用于程序转移时,保存/恢复程序指针,即在调用子程序时,保存子程序的入口地址,指定程序指针在数据存储区中保存的地址,在保存程序指针后,堆栈指针将指向下一个堆栈位置;在子程序返回时,从指定位置恢复原来程序指针的值,返回子程序的入口地址。程序在开始的时候,需要建立堆栈,即在数据空间指定一定的地址范围,该堆栈指针在堆栈建立后,指向堆栈底部位置,在工作状态时当每次进栈操作,则堆栈指针加1,当每次出栈操作,则堆栈指针减1;静态随机存储器SRAM,用于存储运算过程中的数据,通过多功能寄存器堆中指定的地址总线访问,具有8位数据总线作为数据输入输出接口;通用寄存器堆,用作累加器,为通用算术逻辑单元ALU-1提供操作数并保存运算结果;通用算术逻辑单元ALU-1,完成8位算术逻辑运算和比特操作运算;通用算术逻辑单元ALU-1中设置有比特运算器,用于完成比特操作,即执行比特读出BTRAN、比特置位BSET、比特清零BCLR和比特改写BCHN等指令;比特运算器,用于完成比特操作,执行比特读出BTRAN、比特置位BSET、比特清零BCLR和比特改写BCHN等指令;多功能寄存器堆,用于完成8位数据累加,扩展带宽数据累加,数据地址指针等功能,为多功能算术逻辑单元ALU-2提供操作数并保存运算结果;多功能算术逻辑单元ALU-2,用于进行扩展带宽的算术逻辑运算和地址计算;状态寄存器,用于对算术逻辑单元的运算结果作出标记;该标记由中断使能位I,符号位S,负数标志N,零标志Z,溢出标志V,和进位标志C组成;状态寄存器的内容由ALU计算结果确定,也可以通过地址总线进行寄存器访问,由8位数据总线写入或者读出;时钟单元,生成微控制器所需要的时钟,主要为流水线提供流水相位时钟、异常复位的看门狗(WDR)时钟、节能模式的IDLE、SLEEP时钟以及测试扫描时钟;其他外围接口,根据需要,配置的外围接口可以包括定时器/计数器、模数/数模转换、中断单元,通用异步接收发送器(UART),比较器,串行总线(I2C),串行外设接口(SPI)及通用输入输出接口(GPIO)等。
上述多功能寄存器堆的构成为双口RAM,具有两个输出端口和两个输入端口;所述的两个输出端口地址分别为源操作数的地址和目的操作数的地址,由指令译码器控制,从指令译码器、地址寄存器中选择;两个输出端口的输出数据送到多功能算术逻辑单元ALU-2的输入端口,作为多功能算术逻辑单元ALU-2的输入选项,数据带宽等于扩展带宽。所述的两个输入端口,一个为8位带宽输入端口,一个为扩展带宽输入端口,8位输入端口的地址由指令译码器确定,扩展带宽端口的地址也由指令译码器确定;两个端口的输入数据,8位带宽输入端口连接到8位数据总线,该多功能寄存器堆通过该8位数据端口通过8位数据总线完成外部访问;扩展带宽输入连接多功能算术逻辑单元ALU-2的输出端口。多功能寄存器堆的工作模式有三种,一是单字节工作模式,以单字节为单元访问,完成通用寄存器堆功能和多功能寄存器堆的外部读写;二是多字节工作模式,以多字节为单元访问,用于配合多功能算术逻辑单元ALU-2完成多字节扩展带宽算术逻辑运算;三是计数器工作模式,用作地址寄存器,完成地址指针运算。多功能寄存器堆被用作地址寄存器功能时,能够在指令执行时,不仅可以自动根据地址带宽的设定完成地址的运算,而且可以和外加的分页寄存器配合无限扩展数据寻址空间;上述多功能算术逻辑单元ALU-2,在进行扩展带宽算术逻辑运算时,有两个操作数,一个是作为多功能寄存器堆输出的目的操作数,另一个是由指令译码器从多功能寄存器堆、常数(0x0,0x1,0xFF)、8位数据总线中选取的源操作数,由该两个操作数运算的结果输出到多功能寄存器堆。该算术逻辑单元可以在一个时钟周期内完成16位、24位、32位等扩展后带宽的算术逻辑运算,提高数据通讯带宽和多字节数据处理能力;进行地址运算,是在指令译码器译码的指令为静态随机存储器SRAM的访问指令时,由指令译码器译码的控制信号首先将算术逻辑单元ALU-2,配置成地址运算器,将多功能寄存器堆配置为地址寄存器,然后在算术逻辑单元ALU-2执行该访问指令时,自动完成地址寄存器内容的加1、递1或者加减指令译码器指定的数值运算,并将运算结果写回所述的地址寄存器。
上述比特定位器对比特操作指令作比特定位运算,首先将比特操作指令中包含的比特位置信息进行译码,用唯一的0或1标定需要进行比特操作的比特位置,然后通过比特操作使能信号控制将该比特位置信息加载到数据总线。
上述比特运算器完成比特操作是通过指令译码器生成控制信号,确定出要进行操作的寄存器和加载到数据总线的比特位置,作为通用算术逻辑单元ALU-1的两个操作数,并且控制算术逻辑单元ALU-1对该两个操作数进行逻辑运算完成比特操作。
上述多功能寄存器堆和多功能算术逻辑单元ALU-2,通过数据总线与通用寄存器堆和通用算术逻辑单元ALU-1连接。
本发明工作过程如下在系统复位以后,程序计数器归零,程序指针指向程序存储器的零地址,从零地址开始读取指令;程序存储器按照程序计数器指出的地址把要执行的程序指令读出来并送给指令寄存器,同时,程序计数器进行计数,指向下一条指令;指令寄存器在每个时钟周期的上升沿,从程序总线读取指令,送给指令译码器;指令译码器对指令进行译码,确定要进行的操作,生成控制信号,控制寄存器堆和算术逻辑单元的动作;寄存器堆包括通用寄存器堆和多功能寄存器堆,充当累加器,用来给算术逻辑单元提供操作数并且保存其运算结果;算术逻辑单元,包括通用算术逻辑单元ALU-1和多功能算术逻辑单元ALU-2,根据指令译码器产生的控制信号,选取操作数,进行相应运算,并影响状态寄存器的状态位,算术逻辑单元可以完成通常的算术运算和逻辑运算,也能够完成寄存器的比特操作,以及数据从存储器的读出和写入和作为程序计数器的通道,把程序计数器的内容通过算术逻辑单元分次传送到8位数据总线,保存到数据存储器用于子程序的调用,或者传递到外部端口,用于程序的监控与调试;在指令译码器进行译码,算术逻辑单元进行运算的同时,更新后的程序计数器指定的指令被读入指令寄存器,准备下一次的指令执行周期,如此形成了程序的执行。
本发明由于采用双算术逻辑单元RISC结构,可在传统的中央处理器CPU构架中嵌入16位,甚至24位、32位的一些算术逻辑操作,满足了音频等特殊的应用需求,提高了系统的运算能力和指令执行速度,使16位运算指令的执行速度达到了1.0 IPC,同时极大的扩展了数据空间,如表1所示。
表1 本发明与现有常见8位微控制器性能比较如下


图1是本发明的整体结构框2是本发明多功能寄存器堆和多功能算术逻辑单元ALU-2分别在数据带宽扩展为8位,16位,32位时的结构3(a)是本发明用作8位地址寄存器的多功能寄存器堆和用作8位地址运算的多功能算术逻辑单元ALU-2耦合生成8位页内地址总线,并和分页寄存器组合生成地址总线的结构3(b)是本发明用作16位地址寄存器的多功能寄存器堆和用作16位地址运算的多功能算术逻辑单元ALU-2耦合生成16位页内地址总线,并和分页寄存器组合生成地址总线的结构3(c)是本发明用作32位地址寄存器的多功能寄存器堆和用作8位地址运算的多功能算术逻辑单元ALU-2耦合生成32位页内地址总线,并和分页寄存器组合生成地址总线的结构4是本发明指令译码器结构5是本发明程序计数器的结构6是本发明的应用实例XD0308-E的结构框7是现有RISC结构微控制器的结构框图具体实施方式
以下参照附图对本发明作进一步详细描述如图1所示,本发明是一个8位RISC结构的双算术逻辑单元微控制器,具有8位数据总线,16位程序总线,数据访问空间理论上可以不受限制,程序访问空间可达16MB以上。该控制器包括程序总线、程序存储器、程序指针、堆栈指针、静态随机存储器SRAM、通用寄存器堆、通用算术逻辑单元ALU-1、多功能寄存器堆、多功能算术逻辑单元ALU-2、状态寄存器、指令译码器,数据总线、地址总线和定时器、比较器、通用异步收发器(UART)、通用输入输出接口等其它接口,其中8位数据总线分别连接通用寄存器堆、多功能寄存器堆、通用算术逻辑单元ALU-1、多功能算术逻辑单元ALU-2、状态寄存器、SRAM等部件,该8位数据总线是微控制器的数据路径核心。本发明就是以8位数据总线为通道展开的,发明要点包括能进行比特操作的通用算术逻辑单元、多功能算术逻辑单元、通用寄存器堆、多功能寄存器堆、具有比特定位功能的指令译码器,堆栈嵌套技术,程序计数器到数据端口的通道等。其中
程序计数器单元,负责程序存储器内指令的寻址,它的输出为程序指针,在系统加电启动的时候,程序指针指向程序存储器零地址,在程序执行过程中,每读取一条指令,程序指针加1。当子程序调用时,程序计数器的内容通过数据总线被保存在堆栈指针指定的数据存储空间。
程序存储器,用于保存程序指令,在程序写入完成以后,程序存储器处于只读状态,输入为程序指针,连接到程序存储器的地址总线,负责程序空间的寻址;输出为需要执行的当前指令,连接到16位程序总线。
指令寄存器,按照程序指针指定的地址,指令从程序存储器中输出以后,输入到指令寄存器暂存,程序指针释放,程序计数器完成加1计数,指向下一条指令,而指令寄存器中暂存的当前指令输出到指令译码器进行译码。
指令译码器,包括通用指令译码器、比特定位器和比特操作判断器,负责读取并解释当前指令寄存器中暂存的指令,生成相应的控制信号,控制寄存器堆、算术逻辑单元ALU的动作以及数据总线的数据流向、地址总线的选取、程序计数器的跳转,堆栈指针的移动等。当从指令寄存器读取的指令为非比特操作指令时,通用指令译码器译码比特操作无关的通用控制信号,比特控制信号无效,比特操作使能信号置0,由通用控制信号作为控制信号控制微处理器的动作;当从指令寄存器读取的指令为比特操作指令时,通用指令译码器译码相关的通用控制信号,比特定位器对比特操作指令作比特定位运算,首先将比特操作指令中包含的比特位置信息进行译码,用唯一的0或1标定需要进行比特操作的比特位置,然后通过比特操作使能信号控制将该比特位置信息加载到数据总线,并生成比特控制信号;比特操作判断器判定当前指令译码器中的指令是否是比特操作指令,确定是否把比特操作使能信号置1,由通用控制信号、比特控制信号、比特操作使能信号组合成控制信号,确定出要进行操作的寄存器和加载到数据总线的比特位置,作为通用算术逻辑单元ALU-1的两个操作数,并且控制算术逻辑单元ALU-1对该两个操作数进行逻辑运算完成比特操作。
寄存器堆,指令译码器根据指令生成的控制信号决定寄存器堆的工作状态。寄存器堆由通用寄存器堆和多功能寄存器堆组成,在控制信号的控制下,寄存器堆负责给算术逻辑单元ALU提供数据并保存算术逻辑单元的运算结果。
通用寄存器堆的构成为由8位寄存器构成的8位数据带宽的双口RAM,具有两个输出端口和一个输入端口,执行的动作由指令译码器决定;两个输出端口地址分别为源操作数的地址和目的操作数的地址,两个输出端口的输出数据送到通用算术逻辑单元ALU-1的两个输入端口,作为通用算术逻辑单元ALU-1的输入选项;其输入端口连接到8位数据总线,输入地址由指令译码器确定;在工作状态,通用寄存器堆的输入输出地址和输入数据由指令寄存器中寄存的指令经过译码生成控制信号确定。
多功能寄存器堆的构成为双口RAM,具有两个输出端口和两个输入端口;两个输出端口地址分别为源操作数的地址和目的操作数的地址,由控制信号从指令译码器、地址寄存器中选择;两个输出端口的输出数据送到多功能算术逻辑单元ALU-2的输入端口,作为多功能算术逻辑单元ALU-2的输入选项,数据带宽等于扩展带宽。两个输入端口,一个为8位带宽数据输入端口,连接到8位数据总线,其输入地址由指令译码器确定,该多功能寄存器堆由该8位数据端口通过8位数据总线完成外部访问;一个为扩展带宽数据输入端口,连接多功能算术逻辑单元ALU-2的输出,其输入地址由指令译码器确定。在工作状态,多功能寄存器堆有三种工作模式,一是单字节工作模式,以单字节为单元访问,执行通用8位算术逻辑指令,此时多功能寄存器堆等同通用寄存器堆功能,或者执行多功能寄存器堆存取访问,以字节形式完成多功能寄存器堆的对外部8位数据总线的读写,此工作模式为缺省工作模式;二是多字节工作模式,以多字节为单元访问,配合多功能算术逻辑单元ALU-2执行多字节扩展带宽算术逻辑运算指令,一个周期完成多字节算术逻辑操作,并回写到寄存器,此时多功能寄存器堆和多功能算术逻辑单元内部耦合数据总线等于扩展数据多字节宽度。当指令寄存器中缓存的指令为扩展带宽算术逻辑运算指令时,指令译码器控制多功能寄存器堆进入多字节工作模式,多功能寄存器堆内的寄存器以一定数目连续的寄存器为组织单元,以多字节为单元访问,其地址为跳跃地址,跳跃的跨度由指令译码确定,如扩展到16位带宽时,其地址由指令译码器提供,为0x00,0x02,…,扩展到32位带宽时,其地址为0x00,0x04,…,多功能寄存器堆和多功能算术逻辑单元内部耦合的数据带宽相应扩展为该多字节对应的带宽;三是计数器工作模式,用作地址寄存器,完成地址指针运算,地址寄存器根据需要可以设置成8位,16位,32位,……,用于完成寄存器寻址、相对寻址、绝对寻址等大数据空间的寻址方式。当指令寄存器中缓存的指令为静态随机存储器SRAM的访问指令时,指令译码器控制多功能寄存器堆进入计数器工作模式,多功能寄存器堆用作地址寄存器功能,在指令执行时,多功能寄存器堆根据指令译码的控制信号选择控制地址寄存器输出,传送到多功能算术逻辑单元ALU-2,并在该指令执行周期结束时保存多功能算术逻辑单元ALU-2对地址进行自动运算的结果。多功能寄存器堆用作地址寄存器功能时,相应指定的寄存器成为地址寄存器,可以设置为三组,由指令译码控制信号选择其中一组地址寄存器输出到多功能算术逻辑单元,完成自动运算后,由多功能算术逻辑单元输出,称为页内地址总线。页内地址总线可以和外加的分页寄存器配合,分页寄存器提供地址总线的高位部分,完成页面寻址,页内地址总线构成地址总线的低位部分,完成页内寻址,分页寄存器和地址寄存器两部分合并形成地址总线无限扩展数据寻址空间。
算术逻辑单元,指令译码器根据指令生成的控制信号还决定算术逻辑单元的工作状态和操作数的选择。算术逻辑单元分为8位通用算术逻辑单元ALU-1和多功能算术逻辑单元ALU-2,它们分别相应的和通用寄存器堆、多功能寄存器堆耦合使用,完成数据的算术、逻辑运算和比特运算,微控制器指令集的区别主要由该部分体现,指令译码器根据指令代码译出不同的控制信号,控制算术逻辑单元进行不同的操作,从而完成了不同的指令,形成对应的指令集。通用算术逻辑单元ALU-1完成8位的算术逻辑操作和比特操作,其源操作数来源可为通用寄存器堆、多功能寄存器堆、立即数、常数、指令译码器、SRAM等,其目的操作数来源为通用寄存器堆,运算结果通过8位数据总线回写通用寄存器堆或者SRAM。多功能算术逻辑单元ALU-2,完成扩展带宽的算术逻辑运算、地址运算和8位算术逻辑运算。在进行扩展带宽算术逻辑运算时,有两个操作数,一个是作为多功能寄存器堆输出的目的操作数,另一个是由指令译码器从多功能寄存器堆,常数0x0、0x1、0xFF,8位数据总线中选取的源操作数,由该两个操作数运算的结果输出到多功能寄存器堆。该算术逻辑单元可以在一个时钟周期内完成16位、24位、32位等扩展后带宽的算术逻辑运算,提高数据通讯带宽和多字节数据处理能力;进行地址运算,是在指令译码器译码的指令为静态随机存储器SRAM的访问指令时,由指令译码器译码的控制信号首先将算术逻辑单元ALU-2,配置成地址运算器,将多功能寄存器堆配置为地址寄存器,然后在算术逻辑单元ALU-2执行该访问指令时,自动完成地址寄存器内容的加1、递1或者加减指令译码器指定的数值运算,并将运算结果写回所述的地址寄存器。
状态寄存器,是在算术逻辑单元执行完指令操作以后,根据运算结果作相应的改变,使得状态寄存器的内容反映当前微控制器的状态。状态寄存器通过地址总线进行寄存器访问,由8位数据总线写入或者读出。
SRAM,是在程序执行过程中,很多过程数据需要保存,这些数据通过SRAM存取指令保存在SRAM中,SRAM中通过多功能寄存器堆中指定的地址总线访问,具有8位数据总线作为数据输入输出接口。
堆栈指针,是在当程序中存在子程序调用时,而需要用到的堆栈指针。该堆栈指针用于程序转移时,保存/恢复程序指针,即在调用子程序时,保存子程序的入口地址,指定程序指针在数据存储区中保存的地址,在保存程序指针后,堆栈指针将指向下一个堆栈位置;在子程序返回时,从指定位置恢复原来程序指针的值,返回子程序的入口地址。程序在开始的时候,需要建立堆栈,即在数据空间SRAM中指定一定的区域作为堆栈,该堆栈指针在堆栈建立后,指向堆栈底部位置,在工作状态时当每次进栈操作,则堆栈指针加1,当每次出栈操作,则堆栈指针减1;时钟单元提供微控制器所用到的时钟,主要为流水线提供流水相位时钟、异常复位的看门狗WDR时钟、节能模式的IDLE、SLEEP时钟以及测试扫描时钟。本发明采用流水设计,流水相位时钟为系统时钟的一次或者多次分频时钟;看门狗时钟包含一个振荡器,独立运行生成看门狗时钟;节能模式则会关闭相应的时钟。
其他外围接口,包括根据需要配置的外围接口,即定时器/计数器,模数/数模转换,中断单元,看门狗单元,通用异步接收发送器,比较器,串行总线,串行外设接口及通用输入输出接口等。外围接口分配有各自的地址,通过数据总线、地址总线由端口访问指令访问。
所述的通用算术逻辑单元ALU-1与通用寄存器堆耦合使用,分别完成立即寻址算术逻辑指令、立即数运算指令、状态相关指令、寄存器增减指令、不回写算术运算指令、数据反转指令、逻辑移位指令、存储器访问指令、比特操作指令的执行。该立即寻址算术逻辑指令包括ADDB,ADCB,SUBB,SUCB,ANDB,ORB,EORB,MOVB,SNIF,这些指令有两个操作数,都来自通用寄存器堆,结果回写到通用寄存器堆;该立即数运算指令的执行包括ADIB,SUIB,ANIB,ORIB,SETI,该指令有两个操作数,其中目的操作数来自通用寄存器堆,源操作数为立即数,由指令译码器提供,结果写回通用寄存器堆;该状态相关指令的执行,包括COMB,NEGB,CLRB,该批指令为单操作数指令,操作数来自通用寄存器堆,结果不回写,仅仅影响状态寄存器的状态位;该寄存器增减指令的执行,包括INC,DEC,该批指令为单操作数指令,其目的操作数来自通用寄存器堆,源操作数为常数1,结果写回通用寄存器堆;该不回写算术运算指令的执行,包括SSUB,SSUC,SADD,SADC,该批指令有两个操作数,都来自通用寄存器堆,结果不回写,只影响状态寄存器;该数据反转指令包括HDSD,为单操作数指令,操作数来自通用寄存器堆,结果回写到寄存器堆;该逻辑移位指令的执行,包括LSL,LSH,LS1,LS1,RSL,RSH,RS0,RS1,该批指令有两个操作数,其目的操作数来自通用寄存器堆,源操作数为立即数,确定移位的数量,结果回写通用寄存器堆;该存储器访问指令的执行需要和多功能算术逻辑单元ALU-2配合完成,由通用算术逻辑单元ALU-1完成数据的准备,多功能算术逻辑单元ALU-2完成地址的运算,该指令包括LD/ST,LDX/STX,LDY/STY,LDZ/STZ,LDX+/STX+,LDY+/STY+,LDZ+/STZ+,-LDX/-STX,-LDY/-STY,-LDZ/-STZ,LDXP/STXP,LDYP/STYP,LDZP/STZP,这批指令由多功能寄存器堆提供数据地址,并根据指令控制信号改变地址,执行存储指令时,通用算术逻辑单元不作动作,只是把寄存器读出的数据直接放到8位数据总线,执行读取指令时,通用算术逻辑单元ALU-1从8位数据总线读取数据,回写到寄存器堆;该比特操作指令的执行,包括BTRAN、BSET、BCLR和BCHN,完成指定寄存器比特的清零、置1、读出、修改等操作,其结果写入通用寄存器堆并传送到8位数据总线,供外部部件访问。
所述的多功能算术逻辑单元ALU-2如图2。
参照图2,多功能算术逻辑单元ALU-2与多功能寄存器堆耦合使用,可以有多种组合形式,当多功能寄存器堆以8比特寄存器形式构成时,耦合带宽为8比特,多功能算术逻辑单元ALU-2对应为8比特ALU,以字节形式访问多功能寄存器堆,多功能算术逻辑单元ALU-2完成8比特算术逻辑运算,执行通用算术逻辑指令,也完成多功能寄存器堆的读写,执行存储器访问指令;当多功能寄存器堆以16比特、32比特等多字节寄存器形式构成时,耦合带宽位为16比特,32比特等扩展的多字节宽度,多功能算术逻辑单元ALU-2对应为16比特,32比特多字节运算,多功能寄存器以2个、4个字节等多字节并行输出数据,多功能算术逻辑单元ALU-2完成多字节算术逻辑运算,执行多字节算术逻辑指令,或者多功能算术逻辑单元ALU-2完成地址运算,执行存储器访问指令。多功能算术逻辑单元可以进行16比特等多字节的算术逻辑运算,使该微控制器具有在8比特操作环境中,在单周期内完成多字节运算的能力,从而增加该微控制器的运算控制能力,拓展其应用场合。
多功能算术逻辑单元ALU-2与多功能寄存器堆耦合使用,完成8比特算术逻辑运算、地址运算指令、多字节算术运算指令的执行。该8比特算术逻辑运算指令用于8比特算术逻辑运算,此时等同通用算术逻辑单元ALU-1,可以执行所有通用算术逻辑指令;该扩展带宽多字节算术逻辑运算,包括ADDW,ADCW,SUBW,SUCW,ANDW,ORW,EORW字算术逻辑指令的执行,这些指令有两个操作数,都来自多功能寄存器堆,一个时钟周期内完成字运算,结果写回多功能寄存器堆;完成立即数多字节算术逻辑指令的执行,包括ADIW,SUIW,ANIW,ORIW,SETW,这些指令有两个操作数,其中目的操作数来自多功能寄存器堆,源操作数为立即数,能够在一个时钟周期之内完成字运算,结果写回多功能寄存器堆;该多字节状态相关指令包括COMW,NEGW,CLRW,这些指令为单操作数指令,操作数来自多功能寄存器堆,结果不回写,仅仅影响状态寄存器的状态位。多功能算术逻辑单元的特殊运算能力可以方便的支持特殊场合的宽带运算需求和矩阵操作等指令的设计实现。
多功能寄存器堆可以组织成以多个字节组合成为总线的形式,和多功能算术逻辑单元ALU-2耦合进行地址运算,为存储器访问提供了有效的寻址手段,增加了程序和数据的寻址空间,大大提高了微控制器的数据访问能力。存储器访问指令和端口读写指令的执行需要和通用算术逻辑单元ALU-1配合完成,由通用算术逻辑单元ALU-1完成数据的准备,多功能算术逻辑单元ALU-2完成地址的运算。该存储器访问指令包括LD/ST,LDX/STX,LDY/STY,LDZ/STZ,LDX+/STX+,LDY+/STY+,LDZ+/STZ+,-LDX/-STX,-LDY /-STY,-LDZ/-STZ,LDXP/STXP,LDYP/STYP,LDZP/STZP。端口读写指令包括PTRD、PTWR。
所述的多功能寄存器堆如图3所示。
参照图3,当多功能寄存器堆完成地址寄存器功能时,可以和SRAM中指定的分页寄存器联合,形成扩展的地址指针。
如图3(a)所示,多功能寄存器堆以8比特字节形式为组织单元,配置成三个地址寄存器x,y,z,地址寄存器和参与地址运算的立即数作为操作数输入到多功能算术逻辑单元ALU-2进行地址运算,运算结果输出到页内地址总线,并回写到地址寄存器。本发明分别把由地址寄存器x,y,z运算的来的页内地址总线命名为页内地址总线x,y,z,作为地址总线的低位部分,用于2^8字节的页内寻址空间;在SRAM中,对应三个地址寄存器x,y,z指定了三个宽度为n比特的页面寄存器PageX,PageY,PageZ,分别作为地址总线的高位部分,对应地址寄存器的宽度,页内寻址空间为2^8字节;;在指令执行时,指令译码器译码指令,生成控制信号,控制从三个地址寄存器x,y,z选择一个作为页内地址总线,进行地址运算,从三个页面寄存器中选择对应的页面寄存器,进行页面寻址,页内地址总线和对应的页面寄存器耦合作为8+n位地址总线,形成(2^8)*(2^n)字节的寻址能力,完成数据空间的寻址。
如图3(b)所示,多功能寄存器堆以16比特字形式为组织单元,配置成三个地址寄存器r,s,t,地址寄存器和参与地址运算的立即数作为操作数输入到多功能算术逻辑单元ALU-2进行地址运算,运算结果输出到页内地址总线,并回写到地址寄存器。本发明分别把由地址寄存器r,s,t运算的来的页内地址总线命名为页内地址总线r,s,t,作为地址总线的低位部分,对应地址寄存器的宽度,页内寻址空间为2^16字节;在SRAM中,对应三个地址寄存器r,s,t指定了三个宽度为n比特的页面寄存器PageR,PageS,PageT,分别作为地址总线的高位部分,用于2^n的页面寻址;在指令执行时,指令译码器译码指令,生成控制信号,控制从三个地址寄存器r,s,t选择一个作为页内地址总线,进行地址运算,从三个页面寄存器中选择对应的页面寄存器,进行页面寻址,页内地址总线和对应的页面寄存器耦合作为16+n位地址总线,形成(2^16)*(2^n)字节的寻址能力,完成数据空间的寻址。
图3(c)所示,多功能寄存器堆以32比特双字形式为组织单元,配置成三个地址寄存器u,v,w,地址寄存器和参与地址运算的立即数作为操作数输入到多功能算术逻辑单元ALU-2进行地址运算,运算结果输出到页内地址总线,并回写到地址寄存器。本发明分别把由地址寄存器u,v,w运算的来的页内地址总线命名为页内地址总线u,v,w,作为地址总线的低位部分,对应地址寄存器的宽度,页内寻址空间为2^32字节;在SRAM中,对应三个地址寄存器u,v,w指定了三个宽度为n比特的页面寄存器PageU,PageV,PageW,分别作为地址总线的高位部分,用于2^n的页面寻址;在指令执行时,指令译码器译码指令,生成控制信号,控制从三个地址寄存器u,v,w选择一个作为页内地址总线,进行地址运算,从三个页面寄存器中选择对应的页面寄存器,进行页面寻址,页内地址总线和对应的页面寄存器耦合作为32+n位地址总线,形成(2^32)*(2^n)字节的寻址能力,完成数据空间的寻址。本发明多功能寄存器堆的最佳实施方案是以16比特字形式为组织单元构成三组独立的16位地址寄存器,形成三个独立的16位页内地址指针,访问数据空间的低64K字节,该64K字节称为页面,而外部分页寄存器宽度可以根据需要配置,寻址若干个页面,每个页面为64K字节,分页寄存器把由16位寄存器寻址的页面串联起来形成更大的数据空间。这个特点使得8位MCU有了前所未有的寻址空间,理论上,只要分页寄存器的宽度足够大,数据空间可以是无限的。比如,当分页寄存器为4位时,存储器可以分成16页64K,即64K*16=1M字节的RAM;而当分页寄存器为8位时,存储器可以分成256页64K,即64K*256=16M字节的RAM。当然,分页寄存器可以通过判断16位地址指针寄存器的运算结果是否有进位,来确定是否进行翻页操作。根据工业应用的需要,本发明的最佳应用为设计三个分页寄存器,分别与多功能寄存器堆的三个16位地址寄存器耦合,形成三个地址指针,记录三个数据空间位置,方便的用于矩阵运算和其他音视频数据控制。
所述的指令译码器单元如图4所示。
参照图4,指令译码器包括通用指令译码器、比特操作判断器、比特定位器三部分。通用指令译码器负责指令的译码,生成控制信号;比特操作判断器判断是否为比特相关指令,确定是否把比特使能信号置1;比特定位器进行确定比特位置。这样的译码结构,容许在指令集中增加各种比特操作指令,如比特置1,比特清零,比特读出,比特写入,比特替换,比特判断转移等,这些指令能够在一个时钟周期完成寄存器的比特位操作,无需复杂的寄存器转换和指令组合,大大方便了程序的编写,节省了运算时间。这批指令有BTRAN、BSET、BCLR和BCHN,在比特操作使能后,比特定位器通对指令中的若干位比特信息译码,进行比特译码定位,把指令中包含的比特信息进行译码,确定比特位置,完成以下几种比特操作(1)生成用“1”标定的比特定位代码,如0000_1000,和通用算术逻辑单元ALU-1结合,作为一个操作数传送到通用算术逻辑单元,另一个操作数为需要进行比特操作的寄存器,通用算术逻辑单元ALU-1进行“或”运算,完成寄存器比特位的置1;(2)生成用“0”标定的比特定位代码,如1111_0111,和ALU单元结合,作为一个操作数传送到算术逻辑单元,另一个操作数为需要进行比特操作的寄存器,通用算术逻辑单元ALU-1做“与”运算,完成寄存器比特位的清零;(3)生成用需要传送的比特置“M”标定的比特定位代码,如0000_M0000,和ALU单元结合,作为一个操作数传送到通用算术逻辑单元ALU-1,另一个操作数为需要进行比特操作的寄存器,算术逻辑单元做“或”运算,完成对寄存器M位的数值传送,数值“M”写入M标定的位;(4)生成用“1”标定的比特定位代码,如0000_1000,和通用算术逻辑单元结合,作为一个操作数传送到算术逻辑单元,另一个操作数为需要进行比特操作的寄存器,算术逻辑单元进行“与”运算,读取寄存器中被标定比特数值。
上述四种比特操作而衍生的比特指令给程序控制带来了很大方便,运用这些指令,程序员可以很方便的控制到寄存器的每一个比特,既降低了编程的难度,又极大的提高程序的运行效率,节约了程序空间。
此外,比特操作判断器还完成由比特位控制的程序跳转,完成跳转指令的执行,包括JbEQ,JbNQ,JbGE,JbSE。指令译码器对指令进行译码,生成跳转的控制信号和跳转判断信号,比特定位器进行比特定位,选定比特的置1或置0作为跳转使能信号决定是否跳转,当选定比特与约定相同时,跳转使能,跳转控制信号控制程序计数器做偏置运算,指向跳转后的新位置,当前读入指令寄存器的指令丢弃不予执行,从新位置重新读取指令译码执行,此时,该跳转指令占据两个时钟周期;当选定比特与约定不同时,跳转不使能,程序计数器顺序计数,指令寄存器中的指令译码执行,该跳转指令占据一个时钟周期。跳转指令不影响状态寄存器的值。
所述的程序计数器如图5所示。
参照图5,程序计数器由计数器和运算器组成。计数器的最佳方案为由23位寄存器构成程序指针,形成16M字节的寻址能力;运算器实现加1运算和跳转偏移运算,计数器相应完成顺序计数和转移计数。在执行算术逻辑、比特运算和存储器访问等指令时,运算器加1,计数器作顺序计数,当执行一些分支转移指令时,程序计数器需要跳转,运算器进行跳转偏移运算,计算要跳转的目的地址,计数器完成转移计数。程序计数器模块可以完成无条件跳转指令、子程序调用返回指令、寄存器保存/恢复指令。该无条件跳转指令包括RGO,IGO和GO。指令译码器判断读入的指令为无条件跳转指令,生成控制信号,控制程序计数器进行偏置运算,程序指针指向跳转后的新位置,当前读入指令寄存器的指令丢弃不予执行,从新位置重新读取指令执行,该批跳转指令占据两个时钟周期。该子程序调用/返回指令包括RCALL/PCALL/CALL,RET/RETI。指令译码器判定读入的指令为子程序调用指令,生成控制信号,把程序计数器的内容按照从低到高的顺序保存到堆栈指针指定的数据空间,该空间称为堆栈。堆栈指针相应的改变,指向下一个堆栈位置,然后程序计数器进行跳转运算,跳转到新的位置——子程序的入口位置,读取指令,执行,原来读入指令寄存器的内容丢弃,不予执行。该指令的执行周期由程序计数器的长度决定,当程序计数器为三个字节时,需要三个时钟周期,长度为四个字节时,需要四个时钟周期。RET/RETI子程序返回指令为子程序调用指令的耦合指令,在子程序执行结束后,子程序返回原来的父程序,此时需要恢复子程序在父程序的入口位置。指令译码器译码返回指令,生成控制信号,从堆栈指针指定的堆栈位置,逐一把原来保存在堆栈中的程序指针值读出,从高到低,写回程序计数器,程序返回跳转前的位置,重新读取指令,进行译码,执行,而子程序返回前读入指令寄存器的指令丢弃不予执行,堆栈指针相应回移。该指令的执行周期同样由程序计数器的长度决定。该寄存器保存/恢复指令包括PUSH/POP,其中PUSH指令用来保存在程序执行过程中需要保存的寄存器内容,执行该指令时,指令译码器生成控制信号,把寄存器的内容通过8位数据总线传送到堆栈指针指定的堆栈位置保存,堆栈指针指向下一个堆栈位置;POP指令用来恢复在程序执行过程中保存的寄存器的内容,执行该指令时,指令译码器生成控制信号,把原来保存的寄存器的内容从堆栈指针指定的堆栈位置读出,通过8位数据总线写回到指定的寄存器,寄存器数据恢复,堆栈指针相应修改,回移一个堆栈位置。
本发明的具体应用实例是在电子书的微控制器XD0308-E中的应用,如图6所示。
参照图6,在电子书的微控制器XD0308-E中,通用寄存器堆设计为16个8比特寄存器,对应地址空间为0x0000~0x000F;通用算术逻辑单元ALU-1完成8比特算术逻辑运算和比特运算;多功能寄存器堆设计为16个8比特寄存器,对应地址空间为0x0010~0x001F,以8比特字节带宽形式访问,或者以16比特字带宽形式访问。当以16比特字形式访问时,则以偶地址开始,并可以组织成三个16比特地址寄存器形式,形成64K字节的页内寻址空间,在SRAM中指定有10位分页寄存器,地址寄存器和分页寄存器构成2^10*2^16=64M字节的数据空间寻址能力。多功能算术逻辑单元ALU-2设计为16位算术逻辑单元,可以在一个时钟周期内完成16位的加减法、数据转移、数据交换,“与”、“或”等算术逻辑操作,也可以在寻址的同时进行地址的自动运算,无需专门指令修改地址指针,节约指令执行周期,提高运算效率。指令译码器负责指令译码,生成控制信号,产生对通用寄存器堆,多功能寄存器堆,通用算术逻辑单元ALU-1,多功能算术逻辑单元ALU-2等单元的操作控制,其中比特操作判断器仲裁在指令寄存器中的指令是否含有比特操作,比特定位器进行比特定位,确定要操作的比特位置,通用算术逻辑单元ALU-1设置的比特运算器进行比特运算,在在一个时钟周期内完成寄存器的任意位置比特的读写。本应用实例中,该控制器的操作流程为控制器复位->程序计数器清零->从程序区读取指令->指令暂存/程序计数器加1->指令译码->生成控制信号->选择寄存器堆->选择ALU单元->执行运算->结果回写->读取下一条指令。采用0.18um工艺加工时,该流程工作的XD0308-E运算速度可达200MIPS,即每秒可以执行200M条指令;16位运算,寄存器任意比特修改等复杂指令的执行速度达到1.0IPC,即每时钟周期执行1条指令,运算能力有了极大的提高,处理能力是传统的CISC结构8位微控制器8051的100倍以上,可以充分满足Ebook,MP3,手写板等应用。
本发明实例通过实际流片,对样片进行编程测试可以得出如下数据(1)本应用实例XD0308-E与市场其他产品的性能比较如表2表2 XD0308-E与现有其他产品的性能比较

由表2可见,XD0308-E运算速度最快,其最高工作频率是AVR系列的15倍以上,是PIC八位系列、80/89C51系列的8倍;XD0308-E程序空间是其它微处理器的200倍以上,数据空间是其它微处理器的1000倍,可以很方便的满足电子词典、电子书、MP3等应用对高处理性能、大数据空间的要求。
(2)本应用实例XD0308-E与现有的8位微处理器在音频应用时的程序空间的需求和处理性能比较如表3。
表3 XD0308-E与现有的8位微处理器的性能比较

从表3可以得出以下结论(1)8MHz的XD0308-E微处理器的处理速度相当于235MHz的89C51微处理器的处理速度;(2)8MHz的XD0308-E处理速度比20MHz的PIC1616C74速度高出6.25倍;(3)在相同工作频率条件下,XD0308-E的功耗比AVR要低五分之一,程序空间需求小三分之一。
以上比较数据表明,采用本发明的XD0308-E在设计程序,特别是音频相关程序设计时,代码效率很高,在速度上比PIC、AVR系列微处理器更快,功耗上则比PIC、AVR系列微处理器更低,可广泛用于个人数字终端PDA,电子书,电子词典,手写板,MP3,工业控制等领域。
对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。
权利要求
1.一种双算术逻辑单元精简指令集8位微控制器,包括程序总线、程序存储器、程序指针、堆栈指针、静态随机存储器SRAM、通用寄存器堆、通用算术逻辑单元ALU-1、多功能寄存器堆、多功能算术逻辑单元ALU-2、状态寄存器、指令译码器,数据总线、地址总线,其特征在于(1)通用寄存器堆和通用算术逻辑单元ALU-1并列连接有多功能寄存器堆和多功能算术逻辑单元ALU-2,该多功能寄存器堆用于完成8位数据累加,扩展带宽数据累加,数据空间地址指针等功能,并为多功能算术逻辑单元ALU-2提供操作数,保存其运算结果;该多功能算术逻辑单元ALU-2用于完成扩展带宽的算术逻辑运算、地址运算和8位算术逻辑运算;(2)指令译码器中设置有比特定位器和比特操作判断器,该比特定位器用于对比特操作指令作比特定位运算,确定比特位置;该比特操作判断器,用于判定当前指令译码器中的指令是否是比特操作指令,确定是否把比特操作使能信号置1;(3)通用算术逻辑单元ALU-1中设置有比特运算器,用于完成比特操作,即执行比特读出BTRAN、比特置位BSET、比特清零BCLR和比特改写BCHN等指令。
2.根据权利要求1所述的微控制器,其特征在于多功能寄存器堆的结构为双口RAM,即具有两个输出端口和两个输入端口;所述的两个输出端口的输出数据送到多功能算术逻辑单元ALU-2的输入端口,作为多功能算术逻辑单元ALU-2的输入选项,数据带宽等于扩展带宽;所述的两个输入端口,一个为8位带宽输入端口,连接到8位数据总线,一个为扩展带宽输入端口,接多功能算术逻辑单元ALU-2的输出端口。
3.根据权利要求1或2所述的微控制器,其特征在于多功能寄存器堆的输出端口地址由指令译码器控制,从指令译码器、地址寄存器中选择,8位输入端口的地址由指令译码器确定,扩展带宽端口的地址为地址寄存器。
4.根据权利要求1或2所述的微控制器,其特征在于多功能寄存器堆的工作模式有三种,一是单字节工作模式,以单字节为单元访问,完成通用寄存器堆功能和多功能寄存器堆的外部读写;二是多字节工作模式,以多字节为单元访问,用于配合多功能算术逻辑单元ALU-2完成多字节扩展带宽算术逻辑运算;三是计数器工作模式,用作地址寄存器,完成地址指针运算。
5.根据权利要求1所述的微控制器,其特征在于多功能算术逻辑单元ALU-2,在进行扩展带宽算术逻辑运算时,有两个操作数,一个是作为多功能寄存器堆输出的目的操作数,另一个是由指令译码器从多功能寄存器堆、常数、8位数据总线中选取的源操作数,将所述两个操作数运算的结果输出到多功能寄存器堆。
6.根据权利要求1所述的微控制器,其特征在于多功能算术逻辑单元ALU-2进行地址运算,是在指令译码器译码的指令为静态随机存储器SRAM的访问指令时,由指令译码器译码的控制信号首先将算术逻辑单元ALU-2,配置成地址运算器,将多功能寄存器堆配置为地址寄存器,然后在算术逻辑单元ALU-2执行该访问指令时,自动完成地址寄存器内容的加1、递1或者加减指令译码器指定的数值运算,并将运算结果写回所述的地址寄存器。
7.根据权利要求1所述的微控制器,其特征在于比特定位器对比特操作指令作比特定位运算,首先将比特操作指令中包含的比特位置信息进行译码,用唯一的0或1标定需要进行比特操作的比特位置,然后通过比特操作使能信号控制将该比特位置信息加载到数据总线。
8.根据权利要求1所述的微控制器,其特征在于比特运算器完成比特操作是通过指令译码器生成控制信号,确定出要进行操作的寄存器和加载到数据总线的比特位置,作为通用算术逻辑单元ALU-1的两个操作数,并且控制通用算术逻辑单元ALU-1对该两个操作数进行逻辑运算完成比特操作。
9.根据权利要求1所述的微控制器,其特征在于多功能寄存器堆和多功能算术逻辑单元ALU-2,通过数据总线与通用寄存器堆和通用算术逻辑单元ALU-1连接。
全文摘要
本发明公开了一种双算术逻辑单元精简指令集8位微控制器。主要解决现有8位微控制器数据处理能力差,数据空间小的不足。采用在现有8位RISC结构的通用寄存器堆和通用算术逻辑单元ALU-1中,并列连接多功能寄存器堆和多功能算术逻辑单元ALU-2,并分别在原有RISC结构的指令译码器中设置比特定位器和比特操作判断器,在通用算术逻辑单元ALU-1中设置比特运算器的结构,通过多功能寄存器堆和多功能算术逻辑单元ALU-2耦合,增加8比特微处理器对多字节数据的运算能力和数据处理能力,并提供数据空间的寄存器寻址方式,扩大数据寻址空间。本发明的数据存储空间达到64M,16位运算指令的执行速度达到1.0 IPC,可用于个人数字终端PDA,电子书,手写板,MP3,工业控制等领域。
文档编号G06F9/38GK1766834SQ200510041649
公开日2006年5月3日 申请日期2005年1月20日 优先权日2005年1月20日
发明者史江一, 郝跃, 马晓华, 马佩军, 刘锋 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1