CN1306640A - 微控制器指令集 - Google Patents

微控制器指令集 Download PDF

Info

Publication number
CN1306640A
CN1306640A CN00800648A CN00800648A CN1306640A CN 1306640 A CN1306640 A CN 1306640A CN 00800648 A CN00800648 A CN 00800648A CN 00800648 A CN00800648 A CN 00800648A CN 1306640 A CN1306640 A CN 1306640A
Authority
CN
China
Prior art keywords
instruction
register
ffff
microcontroller
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN00800648A
Other languages
English (en)
Other versions
CN1186718C (zh
Inventor
爱德华·B·博尔斯
罗德尼·德雷克
达雷尔·约翰森
萨米特·米特拉
约瑟夫·W·特里斯
兰迪·L·亚克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23071732&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN1306640(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of CN1306640A publication Critical patent/CN1306640A/zh
Application granted granted Critical
Publication of CN1186718C publication Critical patent/CN1186718C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Abstract

提供带有用于操纵微控制器行为的指令集的位控制器装置。该装置及其系统提供启动使得模块仿真成为可能的线性化地址空间。可以通过寄存器文件和数据存储器进行直接寻址或间接寻址。包括程序计数器(PC)和工作寄存器(W)在内的专用功能寄存器映射到数据存储器中。正交(对称)指令集使得能够使用任何寻址模式在任何寄存器上进行任何操作。因此,两个文件寄存器将被用于某两个操作数指令中。这允许数据在不通过W寄存器的情况下直接在两个寄存器之间移动。因此提高了性能并降低了对程序存储器的使用。

Description

微控制器指令集
本申请涉及下列申请:由Randy L.Yach等人(MTI-1225)发明、提交于98年7月3日、美国专利申请号为08/887,876的专利申请“FORCE PAGE ZEROPAGING SCHEME FOR MICROCONTROLLERS USING DATA ACCESS MEMORY’;由RodneyJ.Drake等人(MTI-1254)发明、提交于98年8月29日、美国专利申请号为08/937,682的专利申请“ROBUST MULTIPLE WORK INSTRUCTION AND METHODTHEREFOR”;由Surnit Mitra等人(MTI-1265)发明、提交于97年10月7日、美国专利申请号为08/946,426的专利申请“PROCESSOR ARCHITECTURE SCHEMEFOR IMPLEMENTING VARIOUS ADDRESSING MODES AND METHOD THEREFOR”;由Rodney J.Drake等人(MTI-1298)发明、提交于98年10月28日、美国专利申请号为08/958,940的专利申请“A SYSTEM FOR ALLOWING A TWO WORDINSTRUCTION T0 BE EXECUTED IN A SINGLE CYCLE AND METHOD THEREFOR”;由Igor Wojewoda,Surnit Mitra,and Rodney J.Drake(MTI-1299)发明、提交于97年10月28日、美国专利申请号为08/959,405的专利申请“PROCESSOR ARCHITECTURE SCHEME HA VING MULTIPLE SOURCE FOR SUPPL YINGBANK ADDRESS VALUES AND METHOD THEREFORE’;由Rodney J.Drake等人(MTI-1300)发明、提交于98年10月29日、美国专利申请号为08/959,559的专利申请“DATA POINTER FOR OUTPUTTING INDIRECT ADDRESSING MODEADDRESSES WITHIN A SINGLE CYCLE AND METHOD THEREFOR’;由Allen等人(MTI-1306)发明、提交于98年10月28日、美国专利申请号为08/958,939的“PRE-DECODED STACK POINTER WITH POST INCREMENT/DECREMENTOPERATION”以及由Triece等人(MTI-1314)发明、提交于97年10月29日、美国专利申请号为08/959,942的专利申请“PROCESSOR ARCHITECTURE SCHEMEAND INSTRUCTION SET FOR MAXIMIZING A V AILABLE OPCODES AND FORIMPLEMENTING V ARIOUS ADDRESSING MODES’,为了发明的通用性,所有这些申请通过引证合并在这里。
                                 发明背景
发明领域
本发明涉及微控制器,具体地说,本发明涉及被集成到用于操作微控制器的运行状态的指令集中的操作码指令。
相关技术描述
微控制单元(MCU)已经在制造和电子工业使用了很多年。图1示出了中规模(mid-range)设备的典型磁心存储器总线布置。在很多时候,微控制器使用精简指令集计算技术(RISC)微处理器。某些这种设备的高性能可以归功于通常在RISC微处理器中找到的体系结构特点。这些特点包括:
□哈佛体系结构
□长字指令
□单字指令
□单周期指令
□精简指令集
□寄存器文件体系结构
□正交(对称)指令哈佛体系结构:
如图1所示,哈佛体系结构具有程序存储器26和数据存储器22作为分离的存储器,并且由CPU24从分离的总线存取。这改善了通过CPU34、利用同一总线从同一存储器取程序和数据的传统冯·诺伊曼体系结构(如图3所示)的带宽。为了执行指令,冯·诺伊曼机必须通过8位总线进行一次或多次(一般为多次)存取以取得该指令。然后还可能需要取得数据、操作它以及写回结果。正如从这份说明书中能够看到的那样,那种总线可能极其拥挤。
与冯·诺伊曼机对比,在哈佛体系结构下,指令的全部14位在一个单周期中取。因此,在哈佛体系结构下,在存取程序存储器时,数据存储器位于独立的总线上,可以读和写。这些分离的总线在取下一条指令的同时,允许执行一条指令。长字指令:
长字指令具有比8位数据存储器总线更宽(更多的位)的指令。由于该两种总线是分离的,所以这是可能的。由于该程序存储器宽度针对该体系结构的需要作了优化,因此还进一步允许将指令排成允许更有效地使用该程序存储器的不同于8位宽的数据字。单字指令:
单字指令操作码为14位宽,这一宽度使得操作码含有全部单字指令成为可能。14位宽程序存储器存取总线在单一周期中取一个14位指令。对于单字指令,程序存储单元的字数等于该设备的指令数。这意味着全部存储单元都是有效指令。在冯·诺伊曼体系结构(如图3所示)中,大多数指令一般是多字节。然而,一般来说具有4K字节程序存储器的设备要允许接近2K指令。这个2∶1比例是在该应用代码上归纳出来、并依赖于该应用代码的。由于每个指令可以占用多个字节,因此不能保证每个存储单元都是有效指令。指令流水线:
指令流水线是重叠了指令取和执行的两级(two-stage)流水线。该指令取占一个机器周期(TCY),同时该执行占用另一TCY。但由于当前指令取和以前的指令的执行的重叠,所以每个单一TCY取一指令,并执行另一指令。单周期指令:
由于程序存储器总线为14为宽,所以整个指令在一个单一TCY中取得。该指令包含所需的全部信息,并且在一个单一周期中执行。如果指令的结果修改了程序计数器的内容,则在执行时可能有一个周期的延迟。这需要刷新(flush)流水线并取得新指令。精简指令集:
当一个指令集设计合理,并且具有高正交性(对称性)时,需要较少的指令就可以实现全部必须的任务。由于指令较少,可以更迅速地学会整个指令集。寄存器文件体系结构:
寄存器文件/数据存储器可以直接或间接寻址。所有特殊功能的寄存器,包括程序计数器映射到数据寄存其中。正交(对称)指令:
正交指令使得利用任意寻址模式在任意寄存器上实现任何操作成为可能。对称性质以及缺少专用指令使得编程简单而有效。此外,学习曲线显著降低。中规模指令集仅仅使用两个面向非寄存器(non-register oriented)指令,这两个指令被用于两个核心特点。一个是将该设备置于低功率使用模式的SLEEP指令。另一个是通过阻止芯片上的监视定时器(WDT)溢出和复位该设备,来确认该芯片正确运行的CLRWDT指令。时钟电路图/指令周期:
时钟输入(来自OSC1)内分为四等份,以产生四个非重叠的正交时钟,即Q1、Q2、Q3和Q4。在内部,程序计数器(PC)在每到Q1时递增,并且在Q4中,从该程序存储器取指令以及将其锁存到指令寄存器。在紧接的Q1至Q4期间译码和执行该指令。该时钟和指令执行流图解于图4和5中。指令流/流水线操作:
一个“指令周期”由包含象图4和5所示的Tcy的如图4所示的四个Q周期(Q1、Q2、Q3和Q4)组成。在图5,注意到除了任何程序转移以外的其它所有指令都在一个周期中执行。由于在取新指令并执行它的同时,要从该流水线“刷新”取来的指令,所以程序转移占两个周期。
取指令占一个指令周期,而译码和执行占另一个指令周期。然而由于流水线操作,每个指令在一个周期中有效地执行。如果一个指令导致程序计数器发生变化(例如GOTO),则需要一个额外的周期来完成该指令(图5)。指令“取指”起始于在Q1中递增程序计数器时。在“执行”周期中,获取来的指令在周期Q1中将锁存到“指令寄存器(IR)”。然后在Q2、Q3和Q4周期期间译码和执行这个指令。在Q2(操作数读)期间读数据存储器,并在Q4(目的单元写)期间写数据存储器。图5是关于所示指令序列的两级流水线的操作。在时间TCY0,从程序存储器取第一指令。在TCY1期间,在取第二指令的同时执行该第一指令。在TCY2期间,在取第三指令的同时,执行该第二指令。在TCY3期间,在执行该第三指令(CALL SUB_1)的同时,取第四指令。在第三指令结束执行时,CPU强迫第四指令的地址指向堆栈,并将程序计数器(PC)变成SUB_1的地址。这意味着在TCY3期间取来的指令需要从流水线中“刷新”。在TCY4期间,刷新第四指令(作为NOP执行),并取地址SUB_1处的指令。最后,在TCY5期间执行第五指令,并取地址SUB_1+1上的指令。
虽然现有技术的微控制器有用,但不能仿真各种模块。另外,象图1所述的微处理器类型不能使地址空间线性化。最后,现有技术的微处理器还容易受到编译程序错误问题的影响。假定能够线性化地址空间以使得能够模块仿真微处理器所真正需要的装置、方法和系统。在现有技术中还需要减少编译程序错误。
                            发明概述
本发明通过提供能消除很多现有技术中经历的编译程序错误的微控制器指令集来克服上面提到的问题以及现有技术中存在的其它缺点和不足。另外,提供使被线性化的地址空间的装置和系统也能够进行模块仿真。
本发明能够直接或间接地寻址它的寄存器文件或数据存储器。包括程序计数器(PC)和工作寄存器(W)在内的所有特定的功能寄存器都被映射到数据存储器内。本发明具有正交(对称)指令集,它使得用任何寻址模式在任何寄存器上进行任何操作成为可能。这种对称特性和缺少“专用最佳状态(special optimal situation)”使得用本发明编程既简单又高效。另外,写软件应用的学习曲线明显降低。本发明比现有技术改进的方面之一是允许在某些两个操作数指令中使用两个文件存储器。这允许数据直接在两个存储器之间移动而不需要通过W存储器。因此增加操作性能并降低对程序存储器的使用。
本发明的优选实施例包括一个ALU/W存储器,一个PLA,一个8位倍增器,一个带堆栈的程序计数器(PC),一个表格锁存器/表格指针,一个ROM锁存器/IR锁存器,一些FSR(反馈移位寄存器),中断向量线路系统,以及大量通用状态寄存器。与现有技术不同,本发明的设计中免去了在分离模块中对定时器的需要,复位生成环路(WDT、POR、BOR等)、中断标志、启动标志、INTCON寄存器、RCON寄存器、配置位、设备ID字、ID存储单元和时钟驱动器(clock driver)。
在参考下面的详细描述和伴随附图后,附属的实施例对于本领域的熟练人员将会很容易理解。
                          附图简述
图1是现有技术的中规模微控制器单元的示意框图;
图2是现有技术的Harvard体系结构的示意框图;
图3是现有技术的冯诺依曼体系结构的示意框图;
图4是现有技术的时钟/指令周期的定时图;
图5是多多指令执行的示意图解;
图6是本发明的微控制器核心的示意框图;
图7是本发明的Q周期有效的(active)定时图;
图8是本发明的时钟/指令周期的定时图;
图9是本发明的指令流水线的流程图;
图10是本发明的指令流水线的流程图;
图11是本发明的指令流水线的流程图;
图12是本发明的指令流水线的流程图;
图13是本发明的指令流水线的流程图;
图14是本发明的指令流水线的流程图;
图15是本发明的状态寄存器的框图;
图16是本发明的程序计数器的框图;
图17是使用CALL和GOTO指令的本发明的程序计数器的框图;
图18是本发明的栈指针寄存器的框图;
图19是本发明的栈上部寄存器的顶的框图;
图20是本发明的栈高位寄存器顶部的框图;
图21是本发明的栈低位寄存器顶部的框图;
图22图解了本发明的堆栈复位操作;
图23图解了本发明的初始化的堆栈上的第一次CALL。
图24图解了本发明的堆栈上的第二次连续CALL。
图25图解了本发明的堆栈上的第31和第32次连续CALL。
图26图解了本发明的堆栈返回POP操作;
图27图解了引起在本发明内的堆栈下溢的条件的堆栈返回POP;
图28是本发明的堆栈上的PUSH指令;
图29是本发明的堆栈上的POP指令;
图30是本发明的一个程序存储器的映象和堆栈的框图;
图31是本发明的存储器映象的框图;
图32是本发明的存储器内的指令的框图;
图33是本发明的不同程序模式的设备存储器映象的框图;
图34是描述本发明的MEMCON寄存器的框图;
图35是描述本发明的CONFIG7配置字节的框图;
图36是本发明的16位外存储器连接结构的框图;
图37是本发明的8位外存储器连接结构的框图;
图38是本发明的典型端口函数清单;
图39是在本发明的16位模式中的外部程序存储器总线的定时图;
图40是在本发明的8位模式中的外部程序存储器总线的定时图;
图41是本发明的外部总线周期类型清单;
图42是本发明的数据存储器映象和指令“a”位的框图;
图43是本发明的专用功能寄存器的映象;
图44是本发明的核心专用功能寄存器的示意图;
图45是图44的核心专用功能寄存器的示意图的后续部分;
图46是本发明的直接短寻址模式的示意框图;
图47是本发明的BSR操作的示意框图;
图48是在仿真/测试模式期间,本发明的BSR操作的示意框图;
图49是本发明的直接强迫寻址模式的示意框图;
图50是本发明的直接强迫寻址模式的示意框图;
图51是本发明的直接长寻址模式的示意框图;
图52是本发明的间接寻址模式的示意框图;
图53是本发明的间接寻址模式的示意框图;
图54是本发明的描述性清单操作码字段;
图55是本发明的间接寻址符号清单;
图56图解了本发明的指令的一般格式;
图57是本发明的指令集的部分清单;
图58是本发明的指令集的部分清单;
图59是本发明的指令集的部分清单;
图60是关于本发明的面向字节的文件寄存器操作的流程图;
图61是关于本发明的面向字节的文件寄存器操作(执行)的流程图;
图62是关于本发明的CLRF、NEGF、SETF(取)指令的流程图;
图63是关于本发明的CLRF、NEGF、SETF(执行)指令的流程图;
图64是关于本发明的DECFSZ、DCFSNZ、INCFSZ、ICFSNZ(取)指令的流程图;
图65是关于本发明的DECFSZ、DCFSNZ、INCFSZ、ICFSNZ(执行)指令的流程图;
图66是关于本发明的CPFSEQ、CPFSQT、CPFSLT和TSFSZ(取)指令的流程图;
图67是关于本发明的CPFSEQ、CPFSQT、CPFSLT和TSFSZ(执行)指令的流程图;
图68是关于本发明的MULWF(取)指令的流程图;
图69是关于本发明的MULWF(执行)指令的流程图;
图70是关于本发明的MULFF(取)指令的流程图;
图71是关于本发明的MULFF(执行1)指令的流程图;
图72是关于本发明的MULFF(执行2)指令的流程图;
图73是关于本发明的BCF、BSF、BTG(取)指令的流程图;
图74是关于本发明的BCF、BSF、BTG(取)指令的流程图;
图75是关于本发明的BTFSC和BTFSS(取)指令的流程图;
图76是关于本发明的BTFSC和BTFSS(执行)指令的流程图;
图77是关于本发明的字面值操作(Literal Operation)(取)的流程图;
图78是关于本发明的字面值操作(执行)的流程图;
图79是关于本发明的LFSR(取)指令的流程图;
图80是关于本发明的LFSR(执行1)指令的流程图;
图81是关于本发明的LFSR(执行2)指令的流程图;
图82是关于本发明的DAW(取)指令的流程图;
图83是关于本发明的DAW(执行)指令的流程图;
图84是关于本发明的MULLW(取)指令的流程图;
图85是关于本发明的MULLW(执行)指令的流程图;
图86是关于本发明的CLRWDT、HALT、RESET和SLEEP(取)指令的流程图;
图87是关于本发明的CLRWDT、HALT、RESET和SLEEP(执行)指令的流程图;
图88是关于本发明的MOVELB(取)指令的流程图;
图89是关于本发明的MOVLB(执行)指令的流程图;
图90是关于本发明的转移操作(branch Operation)(取)的流程图;
图91是关于本发明的转移操作(执行)的流程图;
图92是关于本发明的BRA和RCALL(取)指令的流程图;
图93是关于本发明的BRA和RCALL(执行)指令的流程图;
图94是关于本发明的PUSH(取)指令的流程图;
图95是关于本发明的PUSH(执行)指令的流程图;
图96是关于本发明的POP(取)指令的流程图;
图97是关于本发明的POP(执行)指令的流程图;
图98是关于本发明的RETURN和RETFIE(取)指令的流程图;
图99是关于本发明的RETURN和RETFIE(执行)指令的流程图;
图100是关于本发明的RETLW(取)指令的流程图;
图101是关于本发明的RETLW(执行)指令的流程图;
图102是关于本发明的GOTO(取)指令的流程图;
图103是关于本发明的GOTO(执行1)指令的流程图;
图104是关于本发明的GOTO(执行2)指令的流程图;
图105是关于本发明的CALL(取)指令的流程图;
图106是关于本发明的CALL(执行1)指令的流程图;
图107是关于本发明的CALL(执行2)指令的流程图;
图108是关于本发明的TBLRD*,TBLRD*+,TBLRD*-和TBLRD*+(取)指令的流程图;
图109是关于本发明的TBLRD*,TBLRD*+,TBLRD*-和TBLRD*+(执行1)指令的流程图;
图110是关于本发明的TBLRD*,TBLRD*+,TBLRD*-和TBLRD*+(执行2)指令的流程图;
图111是关于本发明的TBLWT*,TBLWT*+,TBLWT*-和TBLWT*+(取)指令的流程图;
图112是关于本发明的TBLWT*,TBLWT*+,TBLWT*-和TBLWT*+(执行1)指令的流程图;
图113是关于本发明的TBLWT*,TBLWT*+,TBLWT*-和TBLWT*+(执行2)指令的流程图;
图114是本发明的译码映象指令。
优选实施例的详细描述
在几个实施例中,本发明是用于提供包括能够模块仿真的线性化的地址空间的微控制器指令集和微控制器体系结构的装置、方法和系统。
本发明优选实施例的装置的体系结构改进了现有技术的8位数据路径、和带四相内部时钟电路的16位指令长度的Harvard体系结构。另外,该优选实施例具有线性化的存储器寻址方案,它省去了分页(paging)和分组(banking)。本发明的存储器寻址方案允许程序存储器的寻址能力达到2M字节。本发明还支持模块仿真。
本发明通过提供能消除很多现有技术中经历的编译程序错误的微控制器指令集来克服上面提到的问题,以及现有技术中存在的其它缺点和不足。另外,提供的能够线性化的地址空间的装置和系统使模块仿真成为可能。
本发明能够直接或间接地寻址它的寄存器文件或数据存储器。所有特定的功能寄存器,包括程序计数器(PC)和工作寄存器(W)都被映射到数据存储器内。本发明具有正交(对称)指令集,这使得用任何寻址模式在任何寄存器上进行任何操作成为可能。这种对称特性和缺乏“专用最佳状态存储单元”使得用本发明编程既简单又高效。另外,学习曲线明显降低。本发明的同族发明之一的体系结构比现有技术的提高是允许在某两个操作数指令中使用两个文件存储器。这允许数据直接在两个存储器之间移动而不需要通过W存储器。因此增加操作性能并降低对程序存储器的使用。图6是本发明的微控制器核心的框图。
图6显示了本发明的微控制器核心100。按照惯例,图6中的连接信号线可包含带有邻近指示信号线的带宽(按位)的数字的斜杠。参考图6的右上角,我们可看到一个用于将数据存储到中央处理单元,和从中央处理单元转移出来(下面将描述)的数据存储器104。数据存储器104由多个地址单元组成。在本发明的优选实施例中,数据存储器104是一个线性化的4K存储器,它被分成多个16页或组(bank)。典型的是,每个组具有256个地址单元。在优选实施例中,多个组之一指定为一般或专用目的寄存器,在这里也就是最上面那个0组。
选择电路108通过地址锁存器102连接到数据存储器104。选择电路108用来选择在数据存储器104中提供组地址值的多个信源(source)之一。
本发明的优选实施例包括带有工作(W)寄存器136的ALU140、PLA、8位乘法器、带有堆栈170的程序计数器(PC)168、表锁存器124、表指针148、带有IR锁存器126的ROM锁存器152、FSR集120、121、122、中断向量电路系统和大量通用的状态寄存器。与现有技术不同,本发明的设计中省略了在分离模块、所有复位发生电路(WDT、POR、BOR等)、中断标志、启动标志、INTCON寄存器、RCON寄存器、结构位、设备ID字、ID存储单元、和时钟驱动器中对定时器的需要。
I/O表:
本发明使用的输入/输出(I/O)指令的详细清单,I/O清单显示如表1。
表1 I/O清单
    名称 I/O数     标准操作 操作测试模块 程序模块 仿真模块
Addr<21:0> 22/O 程序存储器地址
Nqbank<3:0> 4/O 低态有效RAM组选择
D<15:0> 16/I 程序寄存器数据
Db<7:0> 8/I/O     数据总线
forcext 1/I 强制外部测试模式
irp<7:0> 8/O     外设地址
irp9 1/O     指令寄存器位9
ncodeprt 1/I  低态有效代码保护
   ncoderprt     1/I  EPROM写的低态有效端
    nhalt     1/I 低有效暂停
    nintake     1/I 低态有效中断的早期确认以及从休眠状态唤醒
    np<7:0>     8/O 表锁存数据
    npcmux     1/O 低态有效PC多路复用
    npchold     1/O 低态有效PC保持
    nprtchg     1/I 低态有效改变中断
   nq4clrwdt     1/O 低态有效清wdt
    nq4sleep     1/O 低态有效休眠
    nqrd     1/O 低态有效读文件
    nreset     1/I 低态有效复位
    nwrf     1/O 低态有效写文件
    q1:q4     4/I     4相Q时钟
    q13     1/I     Q时钟组合
    q23     1/I     Q时钟组合
    q41     1/I     Q时钟组合
    test0     1/I 测试模式0
    Tsthvdet     1/I     高压检测
    Wreprom     1/O     写eprom
    Writem     1/O     写存储器
    wrtbl     1/O     表写指令
    Nintakd     1/I     中断确认延迟
    intak     1/I     中断确认
时钟电路/指令周期
时钟输入(来自OSC1)内部地分为四等份,以产生四个非重叠的正交时钟,即如图7所示的Q1、Q2、Q3和Q4。在内部,程序计数器(PC)在每个Q1递增,并且利用Q4从该程序存储器取指令以及将其锁存到指令寄存器。在紧接的Q1至Q4期间译码和执行该指令。PLA译码在Q1期间完成。在Q1和Q2周期中,操作数将被从存储器或外设中读,并且ALU执行计算。在Q4期间,将结果写目的存储单元。该时钟和指令执行流表示在图8中。
Q周期有效
每个指令周期(TCY)包含图7所示的四个Q周期。该Q周期与设备的振荡周期(TOSC)相同。该Q周期为每个指令周期的译码、读、处理数据、写等提供定时/标识。该下方图表(图7)表示了该Q周期与指令周期的关系。构成一个指令周期(TCY)的四个Q周期可以推广成:
Q1:指令译码周期或强制的NOP
Q2:指令读周期或NOP
Q3:处理数据
Q4:指令写周期或NOP
每个指令将表示该指令的详细的Q周期操作。
指令流/流水线
一个“指令周期”由四个Q周期(Q1、Q2、Q3和Q4)组成。指令取和指令执行以流水线方式进行,以使得取指令占一个指令周期而译码和执行占另一个指令周期。然而由于是流水线操作,所以每个指令在一个周期中有效地执行。存在四种类型的指令流。第一种是正常的1周期1字输送的指令。如图9所示,执行这些指令将占用一个有效的周期。第二是2周期1字的流水线刷新指令。这些指令包括相对转移、相对调用、跳转和返回。当一个指令改变PC时,则放弃被输送的取动作。如图10所示,这将使得为了执行这些指令而占用两个有效的周期。第三种是表操作指令。这些指令将暂停取操作,以插入和读或写周期到程序存储器。如图11所示,在执行表操作的同时取来的指令保留1周期,然后在紧跟该表操作的周期中执行。第四种是新的两字指令。这些指令包括MOVFF和MOVLF。在这些指令中,指令之后的取包含地址的余数。对于执行第一字期间的MOVFF指令,机器将执行对源寄存器的读。在执行第二字期间,获得源地址,然后指令将完成如图12所示的移动。尽管它按图13所示在2周期中移动2个字面值到FSRnH和FSRnL,但MOVLF与此相似。第五种是用于CALL和GOTO的两字指令。在这些指令中,在指令之后的取包含跳转和调用目的单元址的余数。通常,这些指令需要3个周期来执行,2个周期用于取2指令字、1个周期用于随后的流水线刷新。然而,通过在第二次取时提供高速通道,PC可以在指令执行的第一周期用完成的值来更新,从而导致如图14所示的2个周期的指令。第六种是中断识别的执行。中断期间的指令周期将在下面的中断部分讨论。
ALU
本发明包含8位运算器(ALU)142和工作寄存器136,如图6所示。ALU 142是一个通用运算器。它在工作寄存器和任何寄存器文件内的数据之间执行算术和布尔运算。ALU142是8位宽,并能够进行加、减、移位和逻辑运算。除非特别指出,实际上算术运算是二的补码。工作寄存器(W)136是用于ALU140操作的8位工作寄存器。W寄存器136是可寻址、并能够直接写或读的寄存器。ALU140能够在两位操作数或单一操作数上进行算术或逻辑运算。所有单一操作数指令在W寄存器136上或在给出的文件寄存器上操作。对于二位操作数指令,操作数之一是W寄存器136,另一个要么是文件寄存器或8位立即数,要么是等效的存储介质。
根据执行的指令,ALU140可能影响STATUS寄存器(下面将讨论)中的进位标志(C)、数字进位标志(DC)、零标志(Z)、溢出标志(OV)和负号标志(N)位的值。在减法中,C和DC位分别作为借位和数字借出位进行操作。
本发明的优选实施例包括包含在图6的设备的ALU142中的8×8硬件乘法器134。通过将乘法作为一个硬件操作,则该操作在单一指令周期中完成。该硬件操作是给出16位结果的无符号乘法。其结果存入16位乘积寄存器(PRODH:PRODL)。该乘法器不影响状态寄存器中的任何标志。
状态寄存器
STATUS寄存器包含ALU140的状态位。图15显示了该状态寄存器。在本发明的一个优选实施例中,位7-5是无效的,读为`0`。
位4是“N”,即符号标志位。该位用于符号运算(2的补码)。它指示结果是否为负值,(ALUMSb=1),1=结果为负,0=结果为正。
位3是“OV”,即溢出标志位。该位用于符号运算(2的补码)。它指示7位值溢出,该溢出引起符号位(位7)改变状态。对于这个位,1=符号运算发生溢出,(在这个运算操作中),0=未发生溢出。
位2是“Z”,即零标志位。对于这个位,1=算术或逻辑运算结果是零,0=算术或逻辑运算结果是非零。
位1是“DC”,即数字进位标志/借位标志位。对于这个位,1=从出现的结果的第四低阶位的进位,0=未从结果的第四低阶位进位。
应该注意,对于借位,极性是相反的。
位0是“C”,即进位/借位标志位。对于这个位,1=从出现的结果的最高有效位(the most significant bit)的进位,0=从结果的最高有效位无进位。如位1,对于借位,极性是相反的。
在减法中,C和DC位分别作为借位和数字借位运算。进位标志是ALU的位7进位。数字进位标志是ALU的位3进位。如果ALU的结果位<7:0>是`0`,则零标志为真。N是ALU的结果位7。如果2的补码结果超过+127或低于-128则置位溢出位。溢出是ALU的位6进位与ALU的位7进位的“异或”。与其它寄存器一样,STATUS寄存器可以是任何指令的目的单元。如果STATUS寄存器是影响任何状态位的指令的写目的单元,则禁止对状态位的写。这些位根据ALU的结果和指令规则置位或刷新。因此,以STATUS寄存器作为目的单元的指令的结果可能与预期的不同。
例如,CLRF REG指令通常将寄存器写0并置位Z位。CLAF STATUS指令则禁止写N、V、DC和C位,并置位Z位。这使得STATUS寄存器显示为000u uluu。因此,仅仅推荐用BCF、BSF、SWAPF和MOVWF指令改变STATUS寄存器,原因是这些指令不影响任何状态位。要知道其它指令如何影响状态位,参见“指令集概览”。
程序计数器模块
程序计数器(PC)168(见图6)修改成允许最大达21位的扩展。这通过增加类似地操作的5位宽PCLATU寄存器到PCLATH寄存器来实现。而且在程序存储器中PC168还被修改成地址字节而不是地址字。为了实现这一目的,在总是0的PC168的LSb中有一字节寻址位。PCL的LSb位可读但不可写。假如用户试图写“1”到该LSb中,那么结果将变成“0”。为了便于隐式地测试EPROM,置位PC168的一个隐藏位第22位(位21)(如图16)。该PC正常情况下为0。当进入测试模式或编程模式时,该位被置位并且从该测试区中取出指令。一旦这位被置位,就不能通过程序的执行来清零,该设备必须复位。
程序计数器(PC)168为一个如图16所示的21位寄存器。PCL184和PC168的低位字节映射到数据存储器104中(如图6)。PCL184就象其它寄存器一样可读和可写。PCH182和PCU180均是该PC的高位字节,并且不可能直接寻址。既然PCH182和PCU180都不能映射到数据或程序存储器160,因此寄存器PCLATH178(PC的高位锁存器)和PCLATU176(PC的上位锁存器)被用作控制PC168的高位字节的锁存。
PCLATH178和PCLATU176被映射到数据存储器104。用户可以通过PCLATH178和PCLATU176分别地读、写PCH182和PCU180。在Q1期间,每次指令取之后PC168位是按2递增的字,除非:
·被GOTO、CALL、RETURN、RETLW、RETFIE或转移指令修改。
·被中断指令修改。
·由于一个指令将对PCL160作为目的单元写。
“跳转”等效于被跳转的地址中的一个强制的NOP周期。图16和图17表示各种情况下的程序计数器操作。
参考图16,对不同指令的PC168、CLATH178和PCLATU176的操作如下:
a.在PCL上的读指令:
对于读PCL184的任何指令。全部具有d=0的字节指令;MOVFF PCL,X;CPFSEQ;CPFSGT;CPFSLT;MULWF;读到TSTFSZ然后到PCL再到数据总线、再到ALU或该目的单元的指令。最后,读PCL到PLATH和读PCU到PCLATU的指令。
b.在PCL上的写指令:
写到PCL184的任何指令。例如MOVWF;CLRF;SETF,然后写8位数据到数据总线174,然后再写到PCL184的指令。此外,写PCLATH到PLATH以及写PCLATU到PCU的指令。
c.在PCL上的读-修改-写(Read-Modify-Write)指令:
在PCL上的读-写-修改的任何指令。全部具有d=1的字节指令;位指令;NEGF读指令:PCL到ALU的数据总线。写指令:写8位结果到数据总线和到PCL;然后PCLATH到PCH;最后PCLATU到PCU。
读-修改-写仅仅以结果影响PCL184。分别将PCLATH178和PCLATU176的值装入PCH182和PCU180。例如,对于“ADDWF”,PCL184将导致下面的跳转。如果在该指令之前PC=0003F0h、W=30h、PCLATH=05h和PCLATU=1h,则在该指令执行之后PC=010520h。为完成一个真20位计算的跳转,用户需要计算20位目的单元址,写PCLATH178和PCLATU176,然后将低位值写到PCL168。
d.RETURN指令:
指向PC<20:0>的堆栈<MRU>使用图17,用于GOTO和CALL指令的PC168、PCLATH178和PCLATU176的操作如下:
e.CALL,GOTO指令:
在2字指令(操作码)中提供一个目的单元址。第一字操作码<6:0>到PCL<7:1>。第一字操作码<7>到PCLATH<0>以及到PCH<0>。第二字操作码<6:0>到PCLATH<7:1>以及PCH<7:1>。第二字操作码<11:7>到PCLATU<11:7>以及PCU<4:0>。
应该注意,下面相关于PC168的操作不改变PCLATH178和PCLATU176:
a.RETLW,RETURN,和RETFIE指令。
b.中断向量强加到PC。
c.PCL上的读-修改-写指令(如BSFPCL,2)。
返回堆栈操作
本发明具有31级深返回(或硬件)堆栈。在现有技术中,增加堆栈的深度以便允许更复杂的程序。该堆栈既不是程序也不是数据存储器空间的一部分。
当执行CALL或RECALL指令或通知中断时,PC168被推入堆栈。在RETURN,RETLW或RETFIE指令时,PC168值被弹出堆栈。PCLATU176和PCLATH178不受任何返回指令的影响。
该堆栈通过21位RAM和5位堆栈指针作为一个31字操作,在所有都复位后,该堆栈指针初始化到00000b。这里没有与堆栈指针000h相关的RAM字。这只是一个复位值。当一个CALL型指令引起推入堆栈操作时,该堆栈指针首先递增,由堆栈指针指向的RAM存储单元与PC的内容一同被写。当RETURN型指令引起从堆栈上弹出时,由STKPTR指向的RAM存储单元的内容被转移到PC,然后堆栈指针递减。
栈顶存取
栈顶可读并可写。三个寄存器存储单元,TOSU,TOSH和TOSL寻址由STKPTR指向的堆栈RAM存储单元。这允许用户在需要的情况下执行软件栈。在CALL或RECALL指令或中断后,软件可通过读TOSU,TOSH和TOSL寄存器读推入值。这些值可被置于用户定义的软件栈上。在返回期间,该软件可以取代TOSU、TOSH和TOSL并执行返回。应该注意在这个时期用户必须终止全局中断启动位以避免疏忽引起的堆栈操作。
PUSH和POP指令
因为栈顶(TOP)可读并可写,所以推入一个值到堆栈和从堆栈弹出一个值而不干扰正常程序执行的能力是所需要的选择。为了将当前PC值推入堆栈,可执行PUSH指令。这将把当前PC值推入堆栈;设置TOS=PC和PC=PC+2。从堆栈中弹出TOS值并用前面推入的值取代,而不干扰正常执行,通过使用POP指令达到。该POP指令从堆栈弹出TOS值,但是这个值不写PC;然后前面推入栈的值变成TOS值。
返回堆栈指针(STKPTR)
STKPTR寄存器包含返回堆栈指针值和上溢以及下溢位。堆栈上溢位(STKOVE)和下溢位(STKUNE)允许软件检验堆栈条件。STKOVE和STKUNE仅仅在POR刚刚复位后就清除。
在PC推入栈31次后(没有从堆栈弹出任何值),第32次推入改写第31次推入的值并设定STKOVF位,而STKPTR保持为11111b。第33次推入改写第32次推入的值(以此类推),而STKPTR保持为11111b。
在堆栈被弹出足够多次以卸空堆栈后,其下一次弹出将返回零值到PC并设定STKUNF位,而STKPTR保持为00000b。再下一次弹出再返回零(以此类推)而STKPTR保持为00000b。注意在下溢时返回零到PC会引起向量化成可以检验堆栈情况并采取适当行动的复位向量的效应。
堆栈指针可以通过SKTKPTR寄存器存取。用户可以读或写堆栈指针的值。这可以由RTOS用于返回堆栈的维护。图18显示了SKTKPTR寄存器。堆栈指针的值将是0到31。在复位时堆栈指针的值将是0。堆栈指针当推入时将增加,当弹出时将递减。
堆栈上溢/下溢复位
在用户选择时,上溢和下溢可引起设备复位以中断程序代码。用结构位STVRE可启动复位。当STVRE位无效时,上溢或下溢置位适当的STKOVF或STKUNF位并不引起复位。当STVRE位启动时,上溢或下溢置位适当的STKOVF或STKUNF位并引起设备复位,与WDT复位特性非常相似。在其它情况下,STKOVF或STKUNF位不被清除,除非用户软件清除它们或POR复位清除它们。图18-21图解了堆栈寄存器。图22-29图解了堆栈操作。
程序存储器
本发明的优选实施例具有高达2M字节(2M)×8用户程序存储器空间。程序存储器首先包含用于执行的指令,然而,使用表读和写指令可存储和存取数据表。另一个2M×8测试程序存储器空间可用来测试ROM、结构位、以及标识字。
具有21位程序计数器的设备能够寻址2M×8程序存储器空间。这里还有在正常操作时被隐藏起来的第22PC位,当它被置位时,可以存取结构位、设备ID和测试ROM。这个位可被置位为测试模式或程序模式,为清除这个位设备必须复位。在这个位置位的情况下,不能存取用户程序存储器空间。因为在程序存储器中PC必须在每偶数字节的边界上存取指令,PC的LSb是表示为‘0’,对每个指令PC按2递增。
复位向量位于000000h,高优先权中断向量位于000008h,低优先权中断向量位于000018h(见图30)。
程序存储器结构
程序存储器中的每个位置都有一个字节地址。另外,每两个相邻的字节有一个字地址。图31显示了以字节和字地址显示的程序存储器映象。在程序存储器内,指令必须是按字对齐的。图32显示了具有几个示例性指令以及放入该映象的那些指令的十六进制代码的程序存储器映象。表操作将以整个字节工作。表决不必是字对准的,因此表块可以在任何字节地址起始或结束。一个例外的情况是,表写被用于对内部程序存储器或外部字宽闪速存储器进行编程。当编程时,写数据可能需要对准由编程方法使用的字宽。
程序存储器模式
本发明可在五个可能的程序存储器结构中的一个内操作。结构通过结构位选择。可能的模式是:
·MP-微处理器
·EMC-扩展的微控制器
·PEMC-保护的扩展的微控制器
·PMC-保护的微控制器
微控制器和保护的微控制器模式仅仅允许内部运行。任何在程序存储器以外的存取都读做零。保护的微控制器模式也能实现密码保护特性。微控制器是未编程(un-programed)设备的缺省模式。
扩展的微控制器模式存取内部程序存储器以及外部程序存储器。运行自动在内部和外部存储器之间切换。地址的21位允许2M字节范围的程序存储器。保护的扩展微控制器模式将通过防止表读/写到内部存储器来进行内部程序存储器的代码保护,而同时仍然允许外部程序存储器的运行以及表读/写。
微控制器模式仅仅存取外部程序存储器。忽略芯片内程序存储器。地址的21位允许2M字节范围程序存储器。
在设备正常操作期间,通过使用TBLRD指令测试存储器和结构位是可读的。如果在RCON寄存器中的LWRT位被置位或者设备在测试和编程模式时,这个区域仅仅可使用TBLWT指令来更改。
这些区域仅仅在测试和编程模式时可以执行。
扩展微控制器模式和微控制器模式仅仅在具有定义为I/O引线的一部分的外部存储器总线的设备中可利用。表2列出了哪一种模式可存取内部和外部存储器。图33图解了在不同程序模式下的设备存储器映象。
    操作模式     内部程序存储器     外部程序存储器
    微处理器     无存取 执行/TBLRD/TBLWT
    扩展微控制器 执行/TBLRD/TBLWT 执行/TBLRD/TBLWT
保护的扩展微控制器     执行 执行/TBLRD/TBLWT
    微控制器   执行/TBLRD/TBLWT     无存取
保护的微控制器     执行/TBLRD     无存取
外部程序存储器接口
不论选择微处理器或扩展的微控制器模式,多达四个端口被配置作为系统总线。两个端口和第三个之一部分是多路复用的地址/数据总线,另一端口之一部分被用于控制信号。需要外部元件多路分离地址和数据。外部存储器接口可以以8位数据模式或16位数据模式运行。外部存储器接口上的地址总是字节地址。
图36和37描述了外部存储器分别与16位和8位数据的连接。外部程序存储器总线共享在引线上的I/O端口功能。图38列出了在I/O引线上外部总线功能的典型映象。在扩展微控制器模式,当设备在内部存储器以外执行时,控制信号NOT将有效。它们将达到这样一个状态:AD<15:0>,A<19:0>是三态;OE,WRH,WRL,UB和LB信号是‘1’,UBA0和ALE是‘0’。
16位外部接口
如果外部接口是16位,指令将作为16位字获取。OE输出允许信号将立即启动程序存储器的两个字节以输出16位字。地址的最低有效位BA0不需要连接到存储器设备。
外部表读逻辑上一次执行一个字节,尽管存储器将外部读16位字。地址的最低有效位将在高和低位字节(对低位字节LSb=0,对高位字节LSb=1)之间内部选择。微处理器和扩展的微控制器模式的外部地址是21位宽;这允许寻址达到2M字节。
在16位总线上的外部表写逻辑上一次执行一个字节。实际写将依赖连接的外设类型和在MEMCON寄存器中的WM<1:0>位,如图34所示。表操作部分详述了实际写周期。
8位外部接口
如果外部接口是8位,指令将作为两个8位字节获取。两个字节在一个指令周期内获取。地址的最低有效位必须连接到存储器设备。OE输出允许信号和BA0=1将启动指令的最高有效字节以在周期的Q3部分从程序存储器读,然后BA0将转变成0,最低有效字节在周期的Q3部分读;形成16位指令字。
外部表读也同样是一次执行一个字节,外部表写一次执行一个字节。WRL在每次外部写时是有效的。
当选择8位接口时,不使用WRH、UB和UL线,并且引线回复到I/O端口功能。结构位选择外部接口的8位模式。
外部等待周期
外部存储器接口支持等待周期。外部存储器等待周期仅仅应用在外部总线上的表读和表写操作上。因为设备的运行与取指令紧密相连,运行速度快于获取速率没由任何意义。所以,如果程序取出需要减慢,处理器速度必须以不同的Tcy时间减慢。
在MEMCON寄存器内的WAIT<1:0>位将在每个存储器取周期选择0,1,2或3个附加Tcy周期。等待周期对于16位接口上的表读和写有效。在8位接口上,对于表读和写,等周期仅仅发生在Q4。
在加电时等待的缺省置位是输出最大达3Tcy周期的等待。这确保慢存储器在复位后马上工作在微处理器模式下。被称作WIT的结构位将启动或禁止等待状态。图39图解了16位接口,图40图解了8位接口,两种情况下都显示没有等待的程序存储器指令获取,以及有等待状态的表读。
外部总线信号禁止
为了在利用连接到外部总线的引线时允许一定的灵活性,在结构位配置几个禁止控制。同样,如在扩展微控制器模式和允许DMA功能时可能会做那样,为了禁止整个外部总线,注册如图35所示的MEM-CON寄存器中的EBDIS位。该禁止将允许用户三态(tri-state)整个外部总线接口。这将允许DMA操作以及由程序控制经过I/O功能直接控制外设。
在仿真系统,-ME设备必须具有代表总线中断结构位的输入端,以允许I/O端口功能检测作为外部接口的引线状态。-ME设备还具有专用的输入引线,它指示仿真系统是微处理器还是扩展微控制器模式。
数据存储器
在本发明中,数据存储器和通用RAM的大小可以扩展到4096字节。数据存储器地址是12位宽。数据存储器被分组成为包含通用寄存器(GPR)集和专用功能寄存器(SFR)集的256字节的16个组(bank)。
GPR集构造成组合的GRP寄存器尺寸的字节宽度RAM阵列。SFR集被一般分布在由它们控制其功能的外设中。
这些组由组选择寄存器(BSR<3:0>)选择。BSR寄存器理论上可以存取超过16个组,然而,直接长寻址模式限制到12位地址或16个组。BSR也相应地受限制。
设备指令在一个指令周期可以读、修改和写特定存储单元。在每个周期仅有一个地址发生,所以在一个单周期中不可能读一个存储单元同时修改/写另一个存储单元。图42显示了一个示例性数据存储器映象。
通用寄存器
在所有PIC设备中,所有数据RAM可被用做任何指令寄存器。数据存储器的大多数组仅仅包含GPR存储器。在所有设备中必须有包含在组0中的GPR存储器。
在组0中的GPR集的数量的绝对值最小是128。被称作存取RAM的这个GPR区域对于允许程序员拥有一个不管BSR的置位如何都可存取的数据结构是必要的。
专用功能寄存器
SFR是专用寄存器,一般用于设备和外部控制和状态功能。它们可以由所有指令存取。如果可能,所有SFR集应该被包含在组15的上部128字节。如果SER集不使用特定设备上的所有可用存储单元,则没有使用的存储单元将是无效的,读做‘0’。某些设备,如LCD控制器可以在其它组而不是组15具有SER。
在组15中的SFR边界可以一个设备一个设备地修改。在存取组内必须包括至少16个GPR。图43显示了一个可能的专用功能寄存器映象。图44和45显示了核心的专用功能寄存器的概览。
寻址模式
本发明支持7种数据寻址模式:
·固有
·字面值
·直接短
·直接强制
·直接长
·间接
·间接变址偏移
这些模式中,直接强制、直接长和间接变址这三种对于PIC体系结构是新的模式。
固有模式
一些指令如DAW不需要寻址,而是在操作码中明确规定。
字面值模式
字面值指令包含字面值字段,一般用在数学运算如ADDLW中。字面值寻址还用在GOTO、CALL和转移操作码。
直接短模式
大多数数学和移动指令以直接短寻址模式操作。在这种寻址模式中,这个指令包含数据的八位最低有效地址。地址的剩余四位来自组选择寄存器或BSR。BSR用于在数据存储器区域内的组之间切换(见图47)。
对于大通用存储器空间的需要规定了通用RAM分组方案。BSR的低半字节选择当前有效的通用RAM组。MOVLB组指令已经被提供给指令集以用来协助它。
如果当前选择的组不执行(如组13),则任何读都将读做‘0’。将结束任何对位地址的写,并且状态寄存器为将被适当置位/清除。
直接强制模式
所有的专用功能存器(SFR)集被映射到数据存储器空间。为了允许方便地存取SFR集,通常,它们全部被映射到组15。为简化存取,不管BSR的内容如何,在指令中有1位字段将该地址指向普通RAM的组0的下半部分,以及SFR集的组15的上半部分。然后利用设置成BSR=n的BSR,可以用任何指令寻址3个组;组0和15处于直接强制模式,组“n”处于直接短模式。
直接长模式
直接长寻址编码数据地址的所有12位成为指令。只有MOVFF指令使用这种模式。
间接寻址模式
间接寻址是寻址数据存储器的模式,这里在指令中的数据存储器地址由其它寄存器确定。这对于数据存储器中的数据表或堆栈有用。图53显示了间接寻址的操作。FSR寄存器的值用作数据存储器地址。
间接寻址寄存器模式
本发明具有三个12位寄存器用于间接寻址。这些寄存器是:
·FSR0H和FSR0L
·FSR1H和FSR1L
·FSR2H和FSR2L
整个FSR集都是12位寄存器,允许在4096字节数据存储器地址范围内的任何单元寻址。
另外,这里有不被实际执行的INDF0,INDF1和INDF2寄存器。以对应的FSR寄存器作为数据地址的值对这些寄存器读或写触发间接寻址,如果文件INDF0(或INDF1,2)自身经FSR被间接读,则所有‘0’被读(零标志位被置位)。类似地,如果INDF0(或INDF1,2)被间接写,则操作将等效于NOP,而STATUS位不受影响。
间接寻址操作模式
每个INDF寄存器具有四个与它相关的地址。当对这四个INDF存储单元之一进行数据存取时,选择的地址将把FSR寄存器(关于有偏移的间接寻址模式见3.14.6.3节)配置成:
·间接存取(算后递减)后FSR值(地址)的自动递减。
·间接存取(算后递增)后FSR值(地址)的自动递增。
·间接存取(算前递增)前FSR值(地址)的自动递增。
·间接存取(没有变化)后FSR值(地址)没有变化。当使用自动递增或自动递减特性时,在FSR上的效果不反映到状态寄存器。例如,如果间接寻址导致FSR等于‘0’,将不置位Z位。添加这些特性允许FSR除了它在数据表操作中的使用外,还可被用做堆栈指针。
间接变址寻址模式
每个INDF都具有与执行间接变址存取相关的地址。当对INDF存储单元的数据存取发生时,FSR被配置成:
·在间接存取前在W寄存器添加符号值,并在FSR添加值以形成地址。
·FSR值不变。
间接寻址(INDF)寄存器的间接写
如果FSR寄存器包含指向间接寄存器(FEFh-FEBh,FE7h-FE3h,FDFh-FDBh)之一的值,则间接读将读00h(置位零标志位),同时间接写将等效于NOP(状态位不受影响)。
指针(FSR)寄存器的间接写
如果间接寻址操作在目的单元址是FSRnH或FSRnL寄存器的单元执行,则写操作将控制前或算后递增/递减功能。例如:
FSR0=FSR8h(比FSR0L存储单元少一)
W=50h
MOVWF*(++FSR0);(PREINC0)将按一递增FSR0至到FE9h,指向FSR0L。然后,W写FSR0L将改变FSR0L为50h。但是,
FSR0=FE9h(FSR0L存储单元)
W=50h
MOVWF*FSR0++;(POSTINC0)在FSR0的递增发生的同时,尝试将W写FSR0L。W写将优先于算后递增,FSR0L将是50h。
指令集概览
本发明的指令集包括77个指令。由于现有技术的体系结构中有过多的页面和组切换,因此程序和数据存储器映象需要线性化,该指令集被修改成有利于这种线性化。本发明的优选实施例的数据存储器空间具有最大4K字节,它由每个256字节的16个组组成。在本发明的优选实施例中,对于位于一个组的所有专用功能寄存器,最好在所有指令的操作码中设计一个位,用于执行可以强制一个虚拟组的文件处理。因此,为了存取专用功能寄存器,不需要切换组。
在优选实施例中,程序存储器空间比现有技术的系统有改进,具有最大的2M字节。PC从13位增加到21位,一些引起跳转的指令(CALL、GOTO)改成2字指令以装入PC的21位值。对现有技术的另一个改进是包含模块仿真。这需要在两个用于仿真的芯片之间通讯,以及达到所需的速度,在同一个指令周期中不可能具有不同的源和目的寄存器。因此,取消了现有技术中的MOVPF和MOVFP指令。为保持这个功能性,需添加一个2字指令MOVFF。
本发明的指令集可分成3种类型:
·面向字节指令
·面向位指令
·字面值和控制操作
图56显示了这些格式。图54显示了关于操作码的字段描述。
这些描述对于理解图57-59和附录A中出现的每个专用指令的描述的操作码有用。图114显示指令译码映象。
对于面向字节的指令,‘f’代表文件寄存器指针,‘d’代表目的指针。文件寄存器指针指定哪一个文件寄存器将被指令使用。目的标识符指定操作的结果将被放置在何处。如果‘d’=‘0’,则结果被置于W寄存器。如果‘d’=‘1’,则结果被置于通过指令指定的文件寄存器。
再者,对于面向字节的指令,‘a’代表虚存段选择位。如果‘a’=‘0’,则BSR被覆盖而虚拟组被选择。如果‘a’=‘1’,则组选择寄存器(BSR)不被覆盖。
对于面向位的指令,‘b’代表位字段标识符,它选择被操作影响的位号,‘f’代表放置该位的文件的地址。
对于字面和控制操作,‘k’代表8、12、16或20位常数或字面值。另外,‘s’代表快速调用/返回选择位。如果‘s’=‘0’,则屏蔽寄存器(shadow register)不使用。如果‘s’=‘1’,则W、BSR和STATUS寄存器在RETURN或RETFIE指令下从屏蔽寄存器刷新,或者在CALL指令下屏蔽寄存器从它们相应的寄存器中装入。最后,‘n’是2’的补码数,它确定相对转移指令的跳转方向和幅度。
该指令集高度正交,并被分组成:
·面向字节操作
·面向位操作
·字面值和控制操作
所有指令在一个单周期内执行,除非:
·条件测试为真
·作为指令的结果,程序计数器被改变
·执行文档到文档传送
·执行表读或表写指令在那种情况下,执行占用两个指令周期,其中第二个周期作为NOP执行。
用做源/目的的专用功能寄存器
本发明的正交指令集允许读和写所有文档寄存器,包括专用功能寄存器。这里有一些用户应当知道的特殊情况:
STATUS作为目的单元
如果一个指令写STATUS寄存器,则可以根据指令的结果置位或清除Z、C、DC、OV和N位,并重写写的原始数据位。
PCL作为源或目的单元
在PCL上的读,写或读-修改-写可能有下列结果:
  ·对于读PCL,首先读PCU到PCLATU;然后读PCH到PCLATH;
    然后读PCL到目的单元。
  ·对于写PCL,首先写PCLATU到PCU;然后写PCLATH到PCH;
    然后写8位结果值到PCL。
  ·对于读-修改-写:首先读PCL成ALU的操作数;然后写PCLATH
     到PCH;写PCLATU到PCU,然后写8位结果值到PCL。
这里:
  ·PCL=程序计数器低位字节
  ·PCH=程序计数器高位字节
  ·PCLATH=程序计数器高位支撑锁存器(holding latch)
  ·PCU=程序计数器上位字节
  ·PCLATU=程序计数器上位支撑锁存器
  ·dest=目的单元、W或f
位操作
通过首先读整个寄存器,在选择的位上操作并将结果写(读-修改-写(R-M-W))来运行所有位操作。用户应该牢记,当运行某些专用功能寄存器例如端口时,应该注意由设备(包括中断标志位)操作的状态位在Q1周期被置位或清除。因此在包含这些位的寄存器上运行R-M-W指令时没有问题。
图60-113包括在本发明的指令集中的每个指令的一般操作的流程。各个图显示了本发明指令集内的取和执行指令的通用的以及特别的步骤。例如,图6显示了面向字节的文档寄存器的操作的获取步骤,它包括指令ADDWF、ADDWFC、ANDWF、COMF、DECF、INCF、IORWF、MOVF、RLCF、RLNCE、RRCF、RRNCF、SUBFWB、SUBWF、SUBWFB、SWAPF、XORWF、MOVWF和NOP。同样,图61显示了面向字节文件寄存器操作的执行步骤,它包括指令:ADDWF、ADDWFC、ANDWF、COMF、DECF、INCF、IORWF、MOVF、RLCF、RLNCE、RRCF、RRNCF、SUBFWB、SUBWF、SUBWFB、SWAPF和XORWF(但MOVWF仅仅是虚读,NOP是虚读和虚写)。
图77显示了用于字面值操作(Literal Operation)的获取步骤,它包括指令:ADDLW、ANDLW、IORLW、MOVLW、SUBLW和XORLW。与前面一样,图78显示了用于字面值操作的执行步骤,它包括指令:ADDLW、ANDLW、IORLW、MOVLW、SUBLW,和XORLW。
图90显示了转移操作的获取流程图,它包括指令:BC、BN、BNC、BNN、BNV、BNZ、BV和BZ。同样,图91显示了转移操作的执行流程图,它包括指令:BC、BN、BNC、BNN、BNV、BNZ、BV和BZ。其余图显示了指令集内其它指令的获取和执行步骤。
对于那些需要两次取才能获得全部指令的多字指令,用三个流程图来描述整个取和执行程序。例如,MOVFF指令在图70-72中描述。图70显示了相对标准的获取操作。然而,图71显示了在操作框的左边的MOVFF的第一部分的执行,而在操作框的右边部分显示了指令的第二字的获取。相应地,图72简单地显示了MOVFF指令的第二字的执行步骤。对其它多字指令也提供了类似的流程图:LFSR(图79-81);GOTO(图02-104);CALL(图105-107);TBLRD*;TBLRD*+;TBLRD*-)和TBLRD+*(图108-110);TBLWT*,TBLWT*+,TBLWT*-和TBLWT+*(图111-113)。
附录A包括了本发明的指令集的操作码和指令的详细清单。为了各种目的,附录A的材料通过参考合并在这里。
因此,本发明能够很好地适用于实现目标和获得上面提到的结果和优点,以及其它固有特性。虽然本发明参考一个特别的优选实施例进行叙述和定义组,这种参考并不意味着对本发明的限制,从这里没有推论出限制条件。对于相关领域的普通技术人员来说,本发明能够被很大程度地修改、变化以及在形势和功能上等效的材料替代。对本发明的优选实施例的描述和形容仅仅作为示例,并没有穷尽本发明的范围。因此,本发明打算通过后面所附的权利要求的精神和领域限定,并给出对本发明的各个方面的全面认识。

Claims (71)

1.一个微控制器包括:
中央处理单元;
与所述中央处理单元有操作关系的线性化的地址空间,所述线性化的地址空间能够通过数据存储器以直接寻址模式或间接寻址模式寻址;
在所述中央处理单元内的程序计数器寄存器,所述程序计数器映射到所述数据存储器;
在所述中央处理单元内的工作寄存器,所述工作寄存器映射到所述数据存储器;和
存储在程序存储器内的正交指令集,所述指令集构造并配置成指定所述微控制器的至少一个操作;
其中所述微控制器能够使用任何所述寻址模式在任何所述寄存器上进行任何所述操作。
2.一个微控制器包括:
中央处理单元;
与所述中央处理单元有重要关系的线性化的地址空间,所述线性化的地址空间能够通过寄存器文件以直接寻址模式或间接寻址模式寻址;
在所述中央处理单元内的程序计数器寄存器,所述程序计数器映射到所述寄存器文件;
在所述中央处理单元内的工作寄存器,所述工作寄存器映射到所述寄存器文件;和
存储在程序存储器内的正交指令集,所述指令集构造并配置成指定所述微控制器的至少一个操作;
其中所述微控制器能够使用任何所述寻址模式在任何所述寄存器上进行任何所述操作。
3.如权利要求1的微控制器,其中所述指令集包括具有0000 1111 kkkkkkkk编码的指令,其中‘W’寄存器的内容被加到8位字面值‘k’,结果被置于‘W’寄存器,所述字面值‘k’在所述指令的所述kkkk kkkk部分指定。
4.如权利要求1的微控制器,其中所述指令集包括具有0010 01da ffff ffff编码的指令,其中‘W’寄存器的内容被加到‘f’寄存器,所述‘f’寄存器的存储单元由所说指令的所述kkkk kkkk部分指定。所述指令的‘d’部分指定所述指令结果要发送到的存储单元,所述指令的所述‘a’位影响多个被选择的存储单元。
5.如权利要求1的微控制器,其中所述指令集包括具有0010 00da ffffffff编码的指令,其中‘W’寄存器的内容被加到进位标志和‘f’寄存器的内容中,由所说指令的所述ffff ffff部分指定所述‘f’寄存器的存储单元。所述指令的‘d’部分指定所述指令结果要发送到的存储单元,所述指令的所述‘a’位影响多个被选择的存储单元。
6.如权利要求1的微控制器,其中所述指令集包括具有0000 1011 kkkkkkkk编码的指令,其中‘W’寄存器的内容与被所述指令的所述kkkk kkkk部分指定的8位字面值‘k’进行“与”运算,所述指令的结果被置于‘W’寄存器,
7.如权利要求1的微控制器,其中所述指令集包括具有0010 00da ffffffff编码的指令,其中‘W’寄存器的内容与‘f’寄存器内容进行“与”运算,由所说指令的所述ffff ffff部分指定所述‘f’寄存器的存储单元。所述指令的‘d’部分指定所述指令结果要发送到的存储单元,所述指令的所述‘a’位影响多个被选择的存储单元。
8.如权利要求1的微控制器,其中所述指令集包括具有1110 0010 nnnnnnnn编码的指令,其中如果进位位被置位为‘1’,则以所述指令集写的程序将转移到所述指令的所述nnnn nnnn部分指定的存储单元。
9.如权利要求1的微控制器,其中所述指令集包括具有1001 bbba ffffffff编码的指令,其中在‘f’寄存器中的‘b’位被清除,由所述指令的所述bbb部分指定所述位‘b’,所说指令的所述ffff ffff部分指定用于所述‘f’寄存器的存储单元,所述指令的所述‘a’位影响多个被选择的存储单元。
10.如权利要求1的微控制器,其中所述指令集包括具有1110 0110 nnnnnnnn编码的指令,其中如果负位被置位为1,则从所述指令集的所述指令构成的程序将转移到所述指令的所述nnnn nnnn部分指定的存储单元。
11.如权利要求1的微控制器,其中所述指令集包括具有1110 0011 nnnnnnnn编码的指令,其中如果进位位被置位为0,则从所述指令集构成的程序将转移到所述指令的所述nnnn nnnn部分指定的存储单元。
12.如权利要求1的微控制器,其中所述指令集包括具有1110 0111 nnnnnnnn编码的指令,其中如果负位被置位为0,则从所述指令集构成的程序将转移到所述指令的所述nnnn nnnn部分指定的存储单元。
13.如权利要求1的微控制器,其中所述指令集包括具有1110 0101 nnnnnnnn编码的指令,其中如果上溢位被置位为0,则从所述指令集构成的程序将转移到所述指令的所述nnnn nnnn部分指定的存储单元。
14.如权利要求1的微控制器,其中所述指令集包括具有1110 0001 nnnnnnnn编码的指令,其中如果零位被置位为0,则从所述指令集构成的程序将转移到所述指令的所述nnnn nnnn部分指定的存储单元。
15.如权利要求1的微控制器,其中所述指令集包括具有1110 0nnn nnnnnnnn编码的指令,其中从所述指令集构成的程序将转移到所述指令的所述nnnnnnn nnnn部分指定的存储单元。
16.如权利要求1的微控制器,其中所述指令集包括具有1000 bbba ffffffff编码的指令,其中在‘f’寄存器中的‘b’位被置位,所说指令的所述ffffffff部分指定所述‘f’寄存器的存储单元,所述指令的所述bbb部分指定所述位‘b’,所述指令的所述‘a’位用来指定存储单元。
17.如权利要求1的微控制器,其中所述指令集包括具有1010 bbba ffffffff编码的指令,其中如果在‘f’寄存器中的‘b’位被置位为0,则所述指令集构成的程序内的下一个指令跳转,所述指令的所述bbb部分指定所述位‘b’,所说指令的所述ffff ffff部分指定所述‘f’寄存器的存储单元,所述指令的所述‘a’位用来指定存储单元。
18.如权利要求1的微控制器,其中所述指令集包括具有1010 bbba ffffffff编码的指令,其中如果在‘f’寄存器中的‘b’位被置位为1,则所述指令集构成的程序的下一个指令跳转,所述指令的所述bbb部分指定所述位‘b’,所说指令的所述ffff ffff部分指定用于所述‘f’寄存器的存储单元,所述指令的所述‘a’位用来指定存储单元。
19.如权利要求1的微控制器,其中所述指令集包括具有0111 bbba ffffffff编码的指令,其中在数据存储单元‘f’内的‘b’位被反转,所说指令的所述ffff ffff部分指定所述存储单元‘f’,所述指令的所述bbb部分指定所述位‘b’,所述指令的所述‘a’位用来指定存储单元。
20.如权利要求1的微控制器,其中所述指令集包括具有1110 0100 nnnnnnnn编码的指令,其中如果上溢位被置位为‘1’,则从所述指令集构成的程序将转移到所述指令的所述nnnn nnnn部分指定的存储单元。
21.如权利要求1的微控制器,其中所述指令集包括具有1110 0000 nnnnnnnn编码的指令,其中如果零位被置位为1,则从所述指令集构成的程序将转移到所述指令的所述nnnn nnnn部分指定的存储单元。
22.如权利要求1的微控制器,其中所述指令集包括具有1110 110s kkkkkkkk 1111 kkkk kkkk kkkk编码的指令,其中所述指令是整个2兆字节存储器范围的子例行程序调用,所述指令的所述‘s’位用来修改所述指令的行为,所述指令的所述kkkk kkkk kkkk部分指定所述存储器存储单元。
23.如权利要求1的微控制器,其中所述指令集包括具有0110 101a ffff ffff编码的指令,其中所述指令清除由所述指令的所述ffff ffff部分指定的专用寄存器的内容,所述指令的所述‘a’位用来修改所述指令的行为。
24.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 00000100编码的指令,其中所述指令复位监视定时器。
25.如权利要求1的微控制器,其中所述指令集包括具有0001 11da ffff ffff编码的指令,其中将寄存器‘f’的内容求补,所述寄存器‘f’由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’位指定是否所述指令的结果被存回到所述寄存器‘f’,所述指令的所述‘a’位用来指定存储单元。
26.如权利要求1的微控制器,其中所述指令集包括具有0110 11da ffff ffff编码的指令,其中将在所述指令的所述ffff ffff部分指定的数据存储器存储单元‘f’的内容与‘W’寄存器的内容相比较,所述指令的所述‘a’位用来指定存储单元。
27.如权利要求1的微控制器,其中所述指令集包括具有0110 010a ffff ffff编码的指令,其中将由所述存储器的所述ffff ffff部分指定的数据存储器存储单元‘f’的内容与‘W’寄存器的内容相比较,所述指令的所述‘a’位用来指定存储单元。
28.如权利要求1的微控制器,其中所述指令集包括具有0110 000a ffff ffff编码的指令,其中将数据存储器存储单元‘f’的内容与‘W’寄存器的内容相比较,所述指令的所述‘a’位用来指定存储单元。所述指令的所述ffff ffff部分用来指定用于数据存储器存储单元‘f’的地址。
29.如权利要求1的微控制器,其中所述指令集包括具有0000 00000000 0111编码的指令,其中所述指令调整在‘W’寄存器内的八位值以产生正确压缩BCD结果。
30.如权利要求1的微控制器,其中所述指令集包括具有0100 11da ffff ffff编码的指令,其中寄存器‘f’的内容递减,所述指令的所述ffff ffff部分指定用于所述寄存器‘f’的数据存储器存储单元‘f’,所述指令的所述‘d’位确定所述指令的结果的放置,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
31.如权利要求1的微控制器,其中所述指令集包括具有0000 01da ffff ffff编码的指令,其中寄存器‘f’的内容递减,所述指令的所述ffff ffff部分指定用于所述寄存器‘f’的存储单元,所述指令的所述‘d’位指明是否所述指令的结果被存储在所述寄存器‘f’,所述指令的所述‘a’位指明如何选择存储单元。
32.如权利要求1的微控制器,其中所述指令集包括具有0010 11da ffff ffff编码的指令,其中数据存储器存储单元‘f’的内容递减,指令的所述‘d’位指明所述指令的结果是否放置在寄存器‘W’内,所述指令的所述‘a’位影响选择多个存储单元中的哪一个,所述指令的所述ffff ffff部分指定在所述存储单元内的存储单元。
33.如权利要求1的微控制器,其中所述指令集包括具有1110 1111 kkkkkkkk 1111 kkkk kkkk kkkk编码的指令,其中所述指令为一种程序提供一个无条件转移,该程序由所述指令的所述kkkk kkkk kkkk部分指定的、由任何在2兆字节存储器范围内的所述指令集中构成。
34.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 00000001编码的指令,其中由所述指令集构成的程序的执行被中断。
35.如权利要求1的微控制器,其中所述指令集包括具有0010 10da ffff ffff编码的指令,其中数据存储器存储单元‘f’的内容递增,所述指令的所述ffffffff部分指定在所述寄存器‘f’的数据存储单元,所述指令的所述‘d’位确定所述指令的结果的放置,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
36.如权利要求1的微控制器,其中所述指令集包括具有0011 11da ffff ffff编码的指令,其中数据存储器存储单元‘f’的内容递增,所述指令的所述ffffffff部分指定在所述寄存器‘f’的数据存储单元,所述指令的所述‘d’位确定所述指令的结果的放置,所述指令的所述‘a’位影响选择多个存储单元中的哪一个,如果所述指令的所述结果是0,则删除由所述指令集构成的程序的下一个指令,将执行NOP指令取代所述被删除的指令。
37.如权利要求1的微控制器,其中所述指令集包括具有0011 11da ffff ffff编码的指令,其中数据存储器存储单元‘f’的内容递增,所述指令的所述ffffffff部分指定在所述寄存器‘f’的数据存储单元,如果所述指令的所述‘d’位被置位为1,则所述指令的结果被放置在‘f’寄存器内,所述指令的所述‘a’位影响选择多个存储单元中的哪一个,如果所述指令的所述结果是0,则删除由所述指令集构成的程序的下一个指令,将执行NOP指令取代所述被删除的指令。
38.如权利要求1的微控制器,其中所述指令集包括具有0000 1001 kkkkkkkk编码的指令,其中‘W’寄存器的内容与八位字面值‘k’进行“或”运算,所述八位字面值‘k’由所述指令的所述kkkk kkkk部分指定。
39.如权利要求1的微控制器,其中所述指令集包括具有0001 00da ffff ffff编码的指令,其中所述指令用‘W’寄存器和‘f寄存器进行“或”运算,所述指令的所述ffff ffff部分指定所述寄存器‘f’的数据存储单元,如果所述指令的所述‘d’位被置位为0,则所述指令的结果放回‘f’寄存器内,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
40.如权利要求1的微控制器,其中所述指令集包括具有1110 1110 00ffkkkk 1111 0000 kkkk kkkk编码的指令,其中12位字面值‘k’被装入由所述指令的所述ff部分指定的文件选择寄存器,所述12位字面值‘k’在所述指令的所述kkkk kkkk kkkk部分内被编码。
41.如权利要求1的微控制器,其中所述指令集包括具有0101 00da ffff ffff编码的指令,其中寄存器‘f’的内容根据所述指令的所述‘d’位状态被移动到目的单元,如果所述指令的所述‘d’位被置位为0,则所述指令的结果被放置在‘W’寄存器内,如果所述指令的所述‘d’位被置位为1,则所述指令的结果放回‘f’寄存器内,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
42.如权利要求1的微控制器,其中所述指令集包括具有1100 ffff ffff ffff1111 gggg gggg gggg编码的指令,其中源寄存器‘f’的内容被移动到目的寄存器’g’,所述源寄存器‘f’的存储单元可以是4096字节数据空间的任何单元,所述目的寄存器’g’的存储单元可以是所述数据空间的任何单元。
43.如权利要求1的微控制器,其中所述指令集包括具有0000 0001kkkk kkkk编码的指令,其中8位字面值‘k’被装入存储单元选择寄存器(BSR),所述8位字面值‘k’在所述指令的所述kkkk kkkk kkkk部分内被编码。
44.如权利要求1的微控制器,其中所述指令集包括具有0000 1110kkkk kkkk编码的指令,其中8位字面值‘k’被装入‘W’寄存器,所述8位字面值‘k’在所述指令的所述kkkk kkkk kkkk部分内被编码。
45.如权利要求1的微控制器,其中所述指令集包括具有0000 1101kkkk kkkk编码的指令,其中所述指令在‘W’寄存器和8位字面值‘k’之间执行无符号的乘法,用于所述字面值‘k’的地址包含在所述指令的所述kkkkkkkk部分内。
46.如权利要求1的微控制器,其中所述指令集包括具有0000 001a ffff ffff编码的指令,其中所述指令在‘W’寄存器和寄存器文件存储单元‘f’之间执行无符号的乘法,用于所述文件存储单元‘f’包含在所述指令的所述ffff ffff部分内,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
47.如权利要求1的微控制器,其中所述指令集包括具有0110 110a ffff ffff编码的指令,其中所述指令将‘f’寄存器的内容求反,‘f’寄存器的地址由所述指令的所述ffff ffff部分指定,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
48.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 00000000 1111 xxxx xxxx xxxx编码的指令,其中所述指令不执行任何操作,并忽略所述指令的所述xxxx xxxx xxxx部分的内容。
49.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 00000110编码的指令,其中栈顶(TOS)值从返回栈弹出并被删除。
50.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 00000101编码的指令,其中等效于程序计数寄存器加上2的值被弹出到返回栈的顶。
51.如权利要求1的微控制器,其中所述指令集包括具有1101 1nnn nnnnnnnn编码的指令,其中所述指令从所述指令集构成的程序内的当前存储单元执行对多达1K的子程序的子程序调用,所述指令的所述nnn nnnn nnnn部分指定所述子程序的地址。
52.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 11111111编码的指令,其中所述指令提供在软件内执行MCLR复位的方法。
53.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 0001000s编码的指令,其中所述指令从中断返回,所述指令的所述‘s’部分处理影子寄存器的内容。
54.如权利要求1的微控制器,其中所述指令集包括具有0011 01da ffff ffff编码的指令,其中将‘f’寄存器的内容带进位左移一位,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要发送到的存储单元,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
55.如权利要求1的微控制器,其中所述指令集包括具有0100 01da ffff ffff编码的指令,其中将‘f’寄存器的内容左移一位,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要发送到的存储单元,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
56.如权利要求1的微控制器,其中所述指令集包括具有0011 00da ffff ffff编码的指令,其中将‘f’寄存器的内容带进位右移一位,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要发送到的存储单元,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
57.如权利要求1的微控制器,其中所述指令集包括具有0100 00da ffff ffff编码的指令,其中将‘f’寄存器的内容右移一位,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要发送到的存储单元,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
58.如权利要求1的微控制器,其中所述指令集包括具有0110 100a ffff ffff编码的指令,其中‘f’寄存器的内容被置位到FFh,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
59.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 00000011编码的指令,其中清除掉电状态位,置位超时状态位,清除监视定时器和清除算后定标。
60.如权利要求1的微控制器,其中所述指令集包括具有0101 01da ffff ffff编码的指令,其中从‘W’寄存器减去‘f’寄存器与进位标志的和,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要发送到的存储单元,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
61.如权利要求1的微控制器,其中所述指令集包括具有0000 1000 kkkkkkkk编码的指令,其中从8位字面值‘k’减去‘W’寄存器的内容,所述指令的结果被放置在‘W’寄存器,所述字面值‘k’的存储单元包含在所述指令的所述kkkk kkkk部分。
62.如权利要求1的微控制器,其中所述指令集包括具有0101 11da ffff ffff编码的指令,其中从‘f’寄存器减去‘W’寄存器的内容,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要发送到的存储单元,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
63.如权利要求1的微控制器,其中所述指令集包括具有0101 10da ffff ffff编码的指令,其中从‘f’寄存器减去‘W’寄存器的内容与进位标志的和,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要发送到的存储单元,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
64.如权利要求1的微控制器,其中所述指令集包括具有0011 10da ffff ffff编码的指令,其中‘f’寄存器的上半字节与所述‘f’寄存器的下半字节交换,‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要发送到的存储单元,所述指令的所述‘a’位影响选择多个存储单元中的哪一个。
65.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 000010nn编码的指令,其中所述指令的所述nn部分是由分别相应于不变、算后递增、算后递减和算前递增的一种配置的00、01、10或11组成的组中选择的项;用于确定一个21位表格指针的配置的所述指令的所述nn部分,由所述表格指针指向的程序存储器存储单元的内容被装入一个8位表格锁存器。
66.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 000011nn编码的指令,其中所述指令的所述nn部分是由分别相应于不变、算后递增、算后递减和算前递增的一种配置的00、01、10或11组成的组中选择的项;用于确定一个21位表格指针的配置的所述指令的所述nn部分,8位表格锁存器的内容被写由所述表格指针指向的程序存储器存储单元。
67.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 11100000编码的指令,其中所述指令是关于00028h的调试器陷阱。
68.如权利要求1的微控制器,其中所述指令集包括具有0000 0000 11100001编码的指令,其中所述指令是调试器陷阱的返回。
69.如权利要求1的微控制器,其中所述指令集包括具有0110 011a ffff ffff编码的指令,其中检查所述‘f’寄存器的内容来确定是否其值为0,所述‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,如果‘f’寄存器的所述值为0,则放弃下一个指令并且执行一个NOP指令,所述指令的所述‘a’位影响多个存储器组的哪一个被选择。
70.如权利要求1的微控制器,其中所述指令集包括具有0000 1010 kkkkkkkk编码的指令,其中‘W’寄存器的内容与一个8位字面值‘k’做“异或”运算,所述指令的结果被放进所述‘W’寄存器中,所述字面值‘k’的存储单元在所述指令的所述kkkk kkkk部分指定。
71.如权利要求1的微控制器,其中所述指令集包括具有0001 10da ffff ffff编码的指令,其中‘W’寄存器的内容与‘f’寄存器的内容做“异或”运算,所述‘f’寄存器的存储单元由所述指令的所述ffff ffff部分指定,所述指令的所述‘d’部分指定所述指令的结果要送到的一个存储单元,所述指令的所述‘a’位影响多个存储器组的哪一个被选择。
CNB008006482A 1999-03-26 2000-03-23 微控制器指令集 Expired - Lifetime CN1186718C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/280,112 1999-03-26
US09/280,112 US6708268B1 (en) 1999-03-26 1999-03-26 Microcontroller instruction set

Publications (2)

Publication Number Publication Date
CN1306640A true CN1306640A (zh) 2001-08-01
CN1186718C CN1186718C (zh) 2005-01-26

Family

ID=23071732

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008006482A Expired - Lifetime CN1186718C (zh) 1999-03-26 2000-03-23 微控制器指令集

Country Status (8)

Country Link
US (3) US6708268B1 (zh)
EP (2) EP2296087B1 (zh)
JP (1) JP2002540523A (zh)
KR (1) KR20010043826A (zh)
CN (1) CN1186718C (zh)
AT (1) ATE522860T1 (zh)
TW (1) TW527565B (zh)
WO (1) WO2000058828A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101084484B (zh) * 2003-10-24 2010-08-18 密克罗奇普技术公司 用于快速存取堆栈存储器的方法和系统
CN101821723B (zh) * 2007-11-21 2013-03-13 密克罗奇普技术公司 以太网控制器
CN108563446A (zh) * 2018-03-30 2018-09-21 北京中科睿芯智能计算产业研究院有限公司 一种粗粒度数据流架构中的数据复用和同步的方法、装置
CN110609706A (zh) * 2019-06-13 2019-12-24 眸芯科技(上海)有限公司 配置寄存器的方法及应用
CN112699067A (zh) * 2021-01-04 2021-04-23 瑞芯微电子股份有限公司 一种指令寻址方法及装置
CN113076135A (zh) * 2021-04-06 2021-07-06 谷芯(广州)技术有限公司 一种针对专用指令集处理器的逻辑资源共享方法
CN112699067B (zh) * 2021-01-04 2024-05-14 瑞芯微电子股份有限公司 一种指令寻址方法及装置

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708268B1 (en) * 1999-03-26 2004-03-16 Microchip Technology Incorporated Microcontroller instruction set
EP1503291B1 (en) * 2003-07-30 2009-07-15 Texas Instruments Incorporated Reformat logic to reformat a memory access to a device
KR100960095B1 (ko) * 2003-10-23 2010-05-31 마이크로칩 테크놀로지 인코포레이티드 마이크로컨트롤러 명령어 셋트
WO2005043383A1 (en) 2003-10-23 2005-05-12 Microchip Technology Incorporated Microcontroller instruction set
US8234482B2 (en) * 2005-10-13 2012-07-31 Google Inc. Universal embedded controller for freeing CPU from operations of peripheral subsystem units with table of functions including an instruction specifying battery controller select protocol
US8533439B2 (en) 2005-11-07 2013-09-10 Atmel Corporation Elastic shared RAM array including contiguous instruction and data portions distinct from each other
US7581074B2 (en) * 2006-05-19 2009-08-25 International Business Machines Corporation Facilitating use of storage access keys to access storage
US7594094B2 (en) * 2006-05-19 2009-09-22 International Business Machines Corporation Move data facility with optional specifications
US7712076B2 (en) * 2006-09-13 2010-05-04 International Business Machines Corporation Register indirect access of program floating point registers by millicode
US8004988B2 (en) 2007-11-21 2011-08-23 Microchip Technology Incorporated Ethernet controller
US8539210B2 (en) * 2007-11-30 2013-09-17 Microchip Technology Incorporated Context switching with automatic saving of special function registers memory-mapped to all banks
US7996651B2 (en) * 2007-11-30 2011-08-09 Microchip Technology Incorporated Enhanced microprocessor or microcontroller
US9274804B2 (en) * 2009-02-03 2016-03-01 Hewlett-Packard Development Company, L.P. Overlapped boot task fetches and boot task execution to reduce boot time in an electrical device
US8799552B2 (en) * 2009-02-11 2014-08-05 Microchip Technology Incorporated Microcontroller with special banking instructions
US8392693B2 (en) * 2009-08-28 2013-03-05 Via Technologies, Inc. Fast REP STOS using grabline operations
US8738830B2 (en) 2011-03-03 2014-05-27 Hewlett-Packard Development Company, L.P. Hardware interrupt processing circuit
US9189283B2 (en) 2011-03-03 2015-11-17 Hewlett-Packard Development Company, L.P. Task launching on hardware resource for client
US9645823B2 (en) 2011-03-03 2017-05-09 Hewlett-Packard Development Company, L.P. Hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity
US9274793B2 (en) * 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US8516225B2 (en) * 2011-03-25 2013-08-20 Koichi Kitagishi Central processing unit and microcontroller
WO2013101147A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Configurable reduced instruction set core
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US10255073B2 (en) * 2016-05-12 2019-04-09 Microchip Technology Incorporated Microcontroller with variable length move instructions using direct immediate addressing or indirect register offset addressing
US10678506B2 (en) * 2017-08-01 2020-06-09 Arm Limited Matching consecutive values in a data processing apparatus
KR102642305B1 (ko) 2018-09-12 2024-02-28 삼성전자주식회사 Oled 패널 및 이를 포함하는 표시 장치
JP2023082311A (ja) * 2021-12-02 2023-06-14 ローム株式会社 演算装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4124893A (en) 1976-10-18 1978-11-07 Honeywell Information Systems Inc. Microword address branching bit arrangement
US4118773A (en) 1977-04-01 1978-10-03 Honeywell Information Systems Inc. Microprogram memory bank addressing system
US4276595A (en) * 1978-06-30 1981-06-30 International Business Machines Corporation Microinstruction storage units employing partial address generators
KR900003591B1 (ko) * 1985-04-08 1990-05-26 가부시기 가이샤 히다찌 세이사꾸쇼 데이터 처리장치
JP2635057B2 (ja) * 1987-11-04 1997-07-30 株式会社日立製作所 マイクロプロセッサ
EP0614550B1 (en) * 1991-11-12 2000-02-02 Microchip Technology Inc. Self-programming microcontroller with stored instruction to command program from external memory and method
DE69231227T2 (de) 1991-11-12 2001-03-01 Microchip Tech Inc Mikrokontroller mit schmelzsicherungs-emulierenden speichern und testverfahren
JP3339132B2 (ja) * 1993-09-14 2002-10-28 ソニー株式会社 中央処理装置
WO1995032466A1 (en) * 1994-05-19 1995-11-30 Vlsi Technology, Inc. Flexible register mapping scheme
US5734858A (en) * 1994-10-24 1998-03-31 Microsoft Corporation Method and apparatus for simulating banked memory as a linear address space
US5704052A (en) 1994-11-06 1997-12-30 Unisys Corporation Bit processing unit for performing complex logical operations within a single clock cycle
US5649207A (en) 1994-12-01 1997-07-15 Kawasaki Steel Corporation Microprocessor unit having interrupt mechanism
US5553023A (en) * 1994-12-23 1996-09-03 Lsi Logic Corporation Memory partitioning
US6055211A (en) 1997-07-03 2000-04-25 Microchip Technology Incorporated Force page zero paging scheme for microcontrollers using data random access memory
US5987583A (en) * 1997-10-07 1999-11-16 Microchip Technology Inc. Processor architecture scheme and instruction set for maximizing available opcodes and address selection modes
US6009509A (en) 1997-10-08 1999-12-28 International Business Machines Corporation Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US6029241A (en) 1997-10-28 2000-02-22 Microchip Technology Incorporated Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor
US6058467A (en) * 1998-08-07 2000-05-02 Dallas Semiconductor Corporation Standard cell, 4-cycle, 8-bit microcontroller
US6708268B1 (en) 1999-03-26 2004-03-16 Microchip Technology Incorporated Microcontroller instruction set

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101084484B (zh) * 2003-10-24 2010-08-18 密克罗奇普技术公司 用于快速存取堆栈存储器的方法和系统
CN101821723B (zh) * 2007-11-21 2013-03-13 密克罗奇普技术公司 以太网控制器
CN108563446A (zh) * 2018-03-30 2018-09-21 北京中科睿芯智能计算产业研究院有限公司 一种粗粒度数据流架构中的数据复用和同步的方法、装置
CN108563446B (zh) * 2018-03-30 2021-06-25 北京中科睿芯智能计算产业研究院有限公司 一种粗粒度数据流架构中的数据复用和同步的方法、装置
CN110609706A (zh) * 2019-06-13 2019-12-24 眸芯科技(上海)有限公司 配置寄存器的方法及应用
CN112699067A (zh) * 2021-01-04 2021-04-23 瑞芯微电子股份有限公司 一种指令寻址方法及装置
CN112699067B (zh) * 2021-01-04 2024-05-14 瑞芯微电子股份有限公司 一种指令寻址方法及装置
CN113076135A (zh) * 2021-04-06 2021-07-06 谷芯(广州)技术有限公司 一种针对专用指令集处理器的逻辑资源共享方法
CN113076135B (zh) * 2021-04-06 2023-12-26 谷芯(广州)技术有限公司 一种针对专用指令集处理器的逻辑资源共享方法

Also Published As

Publication number Publication date
JP2002540523A (ja) 2002-11-26
US20040177211A1 (en) 2004-09-09
KR20010043826A (ko) 2001-05-25
US6708268B1 (en) 2004-03-16
US20040158692A1 (en) 2004-08-12
CN1186718C (zh) 2005-01-26
EP2296087B1 (en) 2012-08-22
TW527565B (en) 2003-04-11
EP1080406B1 (en) 2011-08-31
US7206924B2 (en) 2007-04-17
WO2000058828A1 (en) 2000-10-05
EP2296087A1 (en) 2011-03-16
ATE522860T1 (de) 2011-09-15
US7203818B2 (en) 2007-04-10
EP1080406A1 (en) 2001-03-07

Similar Documents

Publication Publication Date Title
CN1186718C (zh) 微控制器指令集
CN1135468C (zh) 对存储设备中信号数据字执行数字信号处理的方法和装置
CN1126030C (zh) 数据处理装置
CN1584824A (zh) 一种基于cisc结构的微处理器构架及指令实现方式
CN1027198C (zh) 计算装置
CN100338568C (zh) 开发片上系统用的开发环境的生成方法
CN1103961C (zh) 协处理器的数据访问控制装置和方法
CN1472646A (zh) 适应性强具备最佳化功能的编译装置
CN1246772C (zh) 处理器
CN1303536C (zh) 执行自高速缓存的快速推测式加载运算的微处理器及方法
CN1688966A (zh) 包括对准或者广播指令的多媒体协处理器控制机制
CN1641607A (zh) 页表中维护性能监测结构用于监测程序性能的方法和设备
CN1886744A (zh) 在可扩展的处理器架构中增加高级指令所用的方法和装置
CN1497435A (zh) 处理器
CN1875345A (zh) 在编译过程中表示和检查程序组件的一致性的可扩展类型系统
CN1605058A (zh) 关于嵌入式字段可编程门阵列核心的接口结构
CN1866399A (zh) 存储器控制器、非易失性存储器、非易失性存储系统和数据写入方法
CN1860441A (zh) 用于可重新配置环境中的高效高性能数据操作元件
CN1645328A (zh) 编译装置及编译方法
CN1269052C (zh) 支持缩小代码长度的常量还原型处理器
CN1226323A (zh) 数据处理装置寄存器
CN1137421C (zh) 可编程控制器
CN1516001A (zh) 一种新型risc流水线微控制器构架及其操作方法
CN1286004C (zh) 支持程序编码长度减小的微处理器
CN1942859A (zh) 操作系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20050126

CX01 Expiry of patent term