ES2396800T3 - Microprocesador o microcontrolador potenciado - Google Patents

Microprocesador o microcontrolador potenciado Download PDF

Info

Publication number
ES2396800T3
ES2396800T3 ES08857235T ES08857235T ES2396800T3 ES 2396800 T3 ES2396800 T3 ES 2396800T3 ES 08857235 T ES08857235 T ES 08857235T ES 08857235 T ES08857235 T ES 08857235T ES 2396800 T3 ES2396800 T3 ES 2396800T3
Authority
ES
Spain
Prior art keywords
memory
indirect
bit
data
address
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.)
Active
Application number
ES08857235T
Other languages
English (en)
Inventor
Joseph Julicher
Zacharias Marthinus Smit
Sean Steedman
Vivien Delport
Jerrold S. Zdenek
Ryan Scott Ellison
Eric Schroeder
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
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Application granted granted Critical
Publication of ES2396800T3 publication Critical patent/ES2396800T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F9/30181Instruction operation extension or modification
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Un dispositivo de microprocesador de n bits que comprende: una unidad central de procesamiento de n bits (CPU); una pluralidad de registros (185) de funciones especiales y de registros de proposito general con los que seestablece una correlacion en memoria con una pluralidad de bancos, en el que los registros (185) de funcionesespeciales comprenden por lo menos dos registros (150; 960) de direccion de memoria indirecta de 16 bits a losque puede acceder dicha CPU a traves de todos los bancos; una unidad de acceso a banco para acoplar dicha CPU con uno de dicha pluralidad de bancos; una memoria (160) de datos acoplada con la CPU; y una memoria (120) de programa acoplada con la CPU, en el que dichos registros (150; 960) de direccion de memoria indirecta pueden accionarse para acceder a dichamemoria (160) de datos o memoria (120) de programa y en el que un bit (965) en cada uno de dichos registros(150; 960) de direccion de memoria indirecta determina un acceso a dicha memoria (160) de datos o a dichamemoria (120) de programa.

Description

Microprocesador o microcontrolador potenciado
El campo tecnico de la presente solicitud se refiere a microprocesadores o a microcontroladores.
Los microcontroladores constituyen, en general, un sistema en un chip y comprenden un microprocesador y una
5 pluralidad de componentes perifericos. Existe una amplia variedad de tales microcontroladores que tienen una arquitectura de 8 bits, de 16 bits y de 32 bits. Los microcontroladores existentes, tal como los microcontroladores de 8 bits fabricados por Microchip Technology Inc., proporcionan una arquitectura flexible. Tales microcontroladores comprenden una arquitectura Harvard en la que las memorias de programa y de datos estan separadas. Los microcontroladores del presente tipo comprenden ademas un sistema de almacenamiento en bancos especifico que
10 permite el acceso a la memoria de datos. En general, la memoria de datos se divide en una pluralidad de bancos y un registro de seleccion de banco define cual de los bancos esta seleccionado y es accesible actualmente. Para acceder a otros bancos, tiene que volver a programarse el registro de seleccion de banco. Incluso a pesar de que un esquema de almacenamiento en bancos, por lo tanto, solo permite el acceso a un banco de memoria definido, estos controladores incluyen unas instrucciones que fuerzan una conmutacion a un banco predefinido. Esto proporciona
15 un rendimiento mejorado y potente a pesar de las limitaciones de acceso generales.
No obstante, aun existen cuellos de botella en el acceso a la memoria. Por lo tanto, existe necesidad de una arquitectura de microcontrolador mejorada.
Por lo tanto, es un objetivo de la invencion mejorar el acceso a la memoria, potenciando de este modo la funcionalidad de un microprocesador o microcontrolador. El presente objetivo puede lograrse mediante un 20 microprocesador de n bits y un procedimiento tal como se define en las reivindicaciones independientes. Mejoras adicionales se caracterizan en las reivindicaciones dependientes.
De acuerdo con una realizacion, un dispositivo de microprocesador de n bits puede comprender una unidad central de procesamiento de n bits (CPU); una pluralidad de registros de funciones especiales y de registros de proposito general con los que se establece una correlacion en memoria con una pluralidad de bancos, con por lo menos dos 25 registros de direccion de memoria indirecta de 16 bits a los que puede acceder dicha CPU a traves de todos los bancos; una unidad de acceso a banco para acoplar dicha CPU con uno de dicha pluralidad de bancos; una memoria de datos acoplada con la CPU; y una memoria de programa acoplada con la CPU, en el que dichos registros de direccion indirecta pueden accionarse para acceder a dicha memoria de datos o memoria de programa y en el que un bit en cada uno de dichos registros de direccion de memoria indirecta indica un acceso a dicha
30 memoria de datos o a dicha memoria de programa.
De acuerdo con una realizacion adicional, n = 8. De acuerdo con una realizacion adicional, el microprocesador de n bits puede comprender ademas por lo menos un registro virtual, en el que la escritura de datos en dicho registro virtual da lugar a un acceso indirecto usando uno de dichos registros de direccion de memoria indirecta a dicha memoria de datos o a dicha memoria de programa. De acuerdo con una realizacion adicional, se establece una 35 correlacion del por lo menos un registro virtual con cada banco de memoria. De acuerdo con una realizacion adicional, el microprocesador de n bits puede comprender ademas un registro virtual, en el que la lectura de datos a partir de dicho registro virtual da lugar a un acceso indirecto usando uno de dichos registros de direccion de memoria indirecta a dicha memoria de datos o a dicha memoria de programa. De acuerdo con una realizacion adicional, puede establecerse una correlacion en memoria del por lo menos un registro virtual con cada banco de memoria. De 40 acuerdo con una realizacion adicional, el registro virtual no puede implementarse fisicamente en dicho dispositivo de microprocesador. De acuerdo con una realizacion adicional, la memoria de datos puede tener una anchura de 8 bits y dicha memoria de programa puede tener una anchura de 14 bits. De acuerdo con una realizacion adicional, un bit adicional de una direccion de memoria de datos puede definir un intervalo de direcciones de memoria ampliado que se usa en un modo de depuracion. De acuerdo con una realizacion adicional, el bit en dicho registro de direccion
45 indirecta puede ser el bit mas significativo.
De acuerdo con otra realizacion, un procedimiento para accionar un dispositivo de microprocesador de n bits puede comprender las etapas de: proporcionar una unidad central de procesamiento de n bits (CPU); proporcionar una pluralidad de registros de funciones especiales y de registros de proposito general con los que se establece una correlacion en memoria con una pluralidad de bancos; proporcionar por lo menos dos registros de direccion de 50 memoria indirecta de 16 bits a los que puede acceder dicha CPU a traves de todos los bancos; proporcionar una unidad de acceso a banco para acoplar dicha CPU con uno de dicha pluralidad de bancos; proporcionar una memoria de datos acoplada con la CPU; proporcionar una memoria de programa acoplada con la CPU; y realizar un direccionamiento indirecto usando un registro de direccion indirecta para acceder a dicha memoria de datos o memoria de programa, en el que un bit en cada uno de dichos registros de direccion de memoria indirecta indica un
55 acceso a dicha memoria de datos o a dicha memoria de programa, respectivamente.
De acuerdo con una realizacion adicional, n = 8. De acuerdo con una realizacion adicional, el procedimiento puede comprender ademas la etapa de generar un acceso de escritura a memoria indirecta mediante la escritura de datos en por lo menos un registro virtual, en el que el acceso a memoria indirecto usa uno de dichos registros de direccion
de memoria indirecta. De acuerdo con una realizacion adicional, puede establecerse una correlacion en memoria del registro virtual con todos los bancos de memoria. De acuerdo con una realizacion adicional, el procedimiento puede comprender ademas la etapa de generar un acceso de lectura a memoria indirecta mediante la lectura de datos a partir de por lo menos un registro virtual, en el que el acceso de lectura a memoria indirecta usa uno de dichos registros de direccion de memoria indirecta. De acuerdo con una realizacion adicional, puede establecerse una correlacion en memoria del registro virtual con todos los bancos de memoria. De acuerdo con una realizacion adicional, el registro virtual no puede implementarse fisicamente en dicho dispositivo de microprocesador.
De acuerdo con una realizacion adicional, la memoria de datos puede tener una anchura de 8 bits y dicha memoria de programa puede tener una anchura de 14 bits. De acuerdo con una realizacion adicional, un bit adicional de una direccion de memoria de datos puede definir un intervalo de direcciones de memoria ampliado que se usa en un modo de depuracion. De acuerdo con una realizacion adicional, el bit en dicho registro de direccion indirecta puede ser el bit mas significativo.
Otras ventajas tecnicas de la presente divulgacion seran facilmente evidentes para un experto en la tecnica a partir de las siguientes figuras, descripciones y reivindicaciones. Varias realizaciones de la presente solicitud pueden obtener solo un subconjunto de las ventajas que se exponen. Ninguna ventaja es critica para las realizaciones.
Una comprension mas complete de la presente divulgacion y de las ventajas de la misma puede adquirirse consultando la siguiente descripcion tomada junto con los dibujos adjuntos, en los que numeros de referencia similares indican caracteristicas similares, y en los que:
La figura 1 muestra un diagrama de bloques de una arquitectura de microcontrolador de acuerdo con una realizacion. La figura 2 muestra una realizacion de un contador de programa y su acoplamiento a un bus interno. Las figuras 3-6 muestran diferentes operaciones sobre el contador de programa dependiendo de la instruccion que se esta ejecutando. La figura 7 muestra una realizacion de una logica de control y pila. La figura 8 muestra una realizacion de una pila y correlacion de memoria de programa. La figura 9 muestra una realizacion de un registro de seleccion de banco. La figura 10 muestra una realizacion de la estructura de un banco de memoria en la memoria de datos. La figura 11 muestra un esquema de acceso para un acceso a memoria indirecto. La figura 12 es una tabla que muestra el resumen de registro de funciones especiales de acuerdo con una realizacion. La figura 13A y B son una tabla que muestra el conjunto de instrucciones de un microprocesador o microcontrolador de acuerdo con una realizacion.
A pesar de que las realizaciones de la presente divulgacion se han mostrado, descrito, y se definen por referencia a las realizaciones a modo de ejemplo de la divulgacion, tales referencias no implican una limitacion para la divulgacion, y no ha de inferirse limitacion alguna de este tipo. La materia objeto que se da a conocer es capaz de considerables modificacion, alteracion, y equivalentes en forma y funcion, como se les ocurrira a los expertos en la tecnica pertinente y que tienen el beneficio de la presente divulgacion. Las realizaciones que se muestran y se describen de la presente divulgacion son solo ejemplos, y no son exhaustivas del alcance de la divulgacion.
La figura 1 muestra, entre otros, diferentes unidades funcionales de una unidad central de procesamiento de un microprocesador o microcontrolador relevante para acceder a la memoria de datos y de programa en una arquitectura de tipo Harvard de acuerdo con una realizacion. Un registro de instrucciones 110 puede almacenar una instruccion extraida que puede decodificarse mediante una logica de control 130. Una pluralidad de registros de direccionamiento indirecto 150 puede proporcionarse, almacenando cada uno una direccion. Incluso a pesar de que se muestran por separado en la figura 1, estos y otros registros de funciones especiales son parte de un bloque de registro de funciones especiales 185. Para realizar un acceso de direccionamiento indirecto, se realiza una lectura de, o una escritura en, un registro de funciones especiales dedicado en el bloque de registro de funciones especiales
185. En el caso de que se ejecute un acceso de direccionamiento indirecto de este tipo, la logica de control 130 controla un multiplexor 140 que recibe en el lado de entrada una direccion a partir del registro de direccion indirecta
150. De acuerdo con una realizacion, los registros de direccion indirecta tienen un bit predefinido, tal como el bit mas significativo, el cual se decodifica mediante la logica de control 130 para determinar si se realizara un acceso indirecto a la memoria de programa 120 o a la memoria de datos 160.
En una arquitectura de 8 bits, la memoria de datos tiene una anchura de 8 bits. De acuerdo con la arquitectura Harvard, la memoria de programa esta separada de la memoria de datos y puede tener un tamafo diferente. Por ejemplo, en una realizacion, la memoria de programa puede tener una anchura de 14, 15 o 16 bits. Por lo tanto, pueden decodificarse unas instrucciones que incluyan, por ejemplo, una direccion directa de 8 bits. Alguna instruccion puede contener incluso mas bits de direccion, que pueden combinarse con otro registro para realizar, por ejemplo, un direccionamiento relativo.
La memoria de datos 160 puede estar dividida en una pluralidad de bancos que pueden decodificarse mediante 7 u 8 bits. Cada banco puede considerarse como un archivo de registro. De acuerdo con una realizacion, la memoria de
datos contiene un total de 16 bancos, teniendo cada uno 256 ubicaciones de memoria direccionables lo que da como resultado una memoria total de 4.096 bytes. De acuerdo con otra realizacion, pueden proporcionarse 16 bancos con 128 ubicaciones de memoria direccionables. Son posibles otras configuraciones, de acuerdo con varias realizaciones. La unidad central de procesamiento puede incluir ademas una unidad logica aritmetica 170 (ALU) acoplada con un registro de trabajo 180. El registro de trabajo 180 es uno de una pluralidad de registros de funciones especiales del bloque 185. Tal como se ha indicado anteriormente, la memoria de datos 160 puede estar dividida en una pluralidad de bancos 1...n. Con la excepcion de ciertos modos de direccionamiento, las instrucciones solo tienen acceso, en general, al banco de memoria seleccionado. Por lo tanto, se establece una correlacion en memoria de ciertos registros de funciones especiales importantes a partir del bloque de registro de funciones especiales 185 con todos los bancos de memoria 1...n tal como se indica mediante la flecha entre la memoria de datos 160 y el bloque de registro de funciones especiales 185. De acuerdo con varias realizaciones, puede establecerse una correlacion en memoria de los registros de funciones especiales que no se encuentran en correlacion con todos los bancos de memoria con un unico banco de memoria en las diferentes ubicaciones de memoria respectivas. De acuerdo con varias realizaciones, no puede establecerse una correlacion en memoria de algunos registros de funciones especiales con la memoria en absoluto.
Incluso a pesar de que la correlacion de ciertos registros de funciones especiales con todos los bancos de memoria limita la RAM libre accesible en cada banco de memoria, muchas secuencias de conmutacion de banco por lo demas necesarias pueden evitarse para acceder al registro de funciones especiales importantes. Por ejemplo, un microcontrolador puede tener 12 registros de funciones especiales, tal como el registro de trabajo 180 en correlacion con todos los bancos de memoria. Por lo tanto, de acuerdo con una realizacion, cada banco de memoria puede tener 244 o 116 ubicaciones de memoria libres dependiendo del tamafo de cada banco de memoria. Son posibles otras configuraciones, de acuerdo con varias realizaciones.
De acuerdo con una realizacion, el microcontrolador potenciado puede contener un registro de trabajo 180 (WREG) y una ALU 170 de 8 bits. La ALU 170 puede ser una unidad aritmetica de proposito general. La misma realiza funciones aritmeticas y Booleanas entre los datos en el registro de trabajo 180 y cualquier archivo de registro. La ALU 170 puede tener una anchura de 8 bits y puede ser capaz de operaciones de adicion, sustraccion, desplazamiento y logicas. A menos que se mencione de otro modo, las operaciones aritmeticas pueden ser de complemento a dos en cuantoa su naturaleza. El WREG 180 puede ser un registro de trabajo de8bits que se usa para las operaciones de ALU.El registroWREG 180 es direccionable ypuede ser leerseoescribirse directamente en el mismo. De acuerdo con una realizacion, el WREG 180 es uno de los 12 SFR comunes con los que se establece una correlacion con todos los 16 bancos -su direccion puede ser, por ejemplo, 09h. La Unidad Aritmetica y Logica 170 puede ser capaz de llevar a cabo operaciones aritmeticas o logicas sobre dos operandos o sobre un unico operando. Todas las instrucciones de unico operando funcionan o bien sobre el registro WREG 180 o bien sobre el archivo de registro dado. Para las instrucciones de dos operandos, uno de los operandos es el registro WREG 180 y el otro es o bien un archivo de registro o bien una constante inmediata de 8 bits. Dependiendo de la instruccion ejecutada, la ALU 170 puede afectar a los valores de los bits de Acarreo (C), de Acarreo de Digito (DC) o Cero (Z) en el registro de STATUS 190. Los bits C y DC funcionan como un bit de acarreo negativo y de acarreo negativo de digito de orden superior, respectivamente, en una sustraccion. Los ejemplos que afectan a estos bits de estatus son instrucciones tales como SUBLW y SUBWF tal como se explicara con mas detalle a continuacion.
El registro de STATUS 190, tal como se muestra en la figura 1 puede contener: estatus Aritmetico de la ALU tal como indicador de acarreo negativo/ acarreo, de acarreo negativo/ acarreo de digito y de cero; RP<1:0>, que representa las dos selecciones de banco mas bajas; bits para el direccionamiento directo; IRP, que representa el bit de registro de seleccion de banco para el direccionamiento indirecto; bit de tiempo de espera y bit de apagado.
De acuerdo con una realizacion, el microcontrolador potenciado comprende un Registro de Seleccion de Banco (BSR), con el fin de mantener la compatibilidad con versiones anteriores, tambien los bits RP<1:0> pueden mantenerse. Puede existir una creacion dereflejo bidireccional completa entre RP<1:0> yBSR<1:0>: el cambio de un registro, por lo tanto, cambia de forma automatica el otro. Por lo tanto, RP<1: 0> yBSR<1:0> apuntanhacia la misma memoria fisica.
Incluso a pesar de que el microcontrolador potenciado contiene multiples registros de direccion indirecta completos 150 (registros de seleccion de archivo (FSR)), el bit IRP puede mantenerse tambien para la compatibilidad con versiones anteriores -este esun reflejo bidireccional directode FSROH<0>. El cambio deFSROH<0>, por lo tanto, cambia de forma automatica el IRP, y viceversa. IRP y FSRH0h<0> apuntan hacia la misma memoria fisica.
De acuerdo con una realizacion, el registro de STATUS 190 es comun a traves de todos los bancos, y puede encontrarse en 03h. Un guardado de contexto rapido en caso de interrupcion, tal como se explicara con mas detalle a continuacion, se implementa para la totalidad de los bits de STATUS, excepto TO y PD. El registro de STATUS puede ser el destino para cualquier instruccion, como cualquier otro registro. Si el registro de STATUS es el destino para una instruccion que afecte a los bits Z, DC o C, entonces estos bits se establecen o se borran de acuerdo con la logica de dispositivo. Ademas, los bits TO y PD no permiten la escritura. Por lo tanto, el resultado de una instruccion con el registro de Estatus 190 como destino puede ser diferente del previsto. Por ejemplo, la instruccion CLRF STATUS borrara la totalidad de los bits excepto TO y PD, y entonces el bit Z se establecera de forma automatica mediante la logica de dispositivo. Esto deja el registro de STATUS 190 como '000u u100' (en el que u =
sin cambios). Los bits C y DC funcionan como un bit de Acarreo Negativo y de Acarreo Negativo de Digito de orden superior, respectivamente, en una sustraccion.
El registro de Estatus 190 puede contener, por lo tanto, los siguientes bits:
IRP: bit de Seleccion de Banco de Registro Indirecto (Para la compatibilidad con versiones anteriores. Refleja FSR0H<0>) 1 = Banco 2, 3 (100h-1FFh); 0 = Banco 0, 1 (00h-FFh)
RP<1:0>: bits de Seleccion de Banco de Registro (Para la compatibilidad con versiones anteriores. Refleja BSR<1:0>) 00 = Banco 0 (00h-7Fh); 01 = Banco 1 (80h-FFh); 10 = Banco 2 (100h-17Fh); 11 = Banco 3 (180h1FFh)
TO: Bit de tiempo de espera (No se guarda de forma automatica en caso de interrupcion) 1 = Despues del encendido, instruccion de CLRWDT o instruccion de SLEEP; 0 = se produjo un tiempo de espera de temporizador guardian;
PD: Bit de apagado (No se guarda de forma automatica en caso de interrupcion) 1 = Despues del encendido o mediante la instruccion de CLRWDT; 0 = Mediante la ejecucion de la instruccion de SLEEP
Z: bit Cero: 1 = El resultado de una operacion aritmetica o logica es cero; 0 = El resultado de una operacion aritmetica o logica no es cero.
DC: bit de Acarreo Negativo/ Acarreo de Digito (instrucciones ADDWF, ADDLW, SUBLW, SUBWF): 1 = Un acarreo de orden superior a partir del 4° bit de orden bajo del resultado producido; 0 = Sin acarreo de orden superior a partir del 4° bit de orden bajo del resultado.
C: bit de Acarreo Negativo/ Acarreo (instrucciones ADDWF, ADDLW, SUBLW, SUBWF): 1 = Un acarreo de orden superior a partir del bit Mas Significativo del resultado producido; 0 = Sin acarreo de orden superior a partir del bit Mas Significativo del resultado producido.
Para el Acarreo Negativo, la polaridad puede invertirse. Una sustraccion se ejecuta afadiendo el complemento a dos del segundo operando. Para las instrucciones de giro (RRF, RLF), este bit se carga con el bit de orden o bien bajo o bien alto del registro fuente.
El nucleo de microcontrolador potenciado puede direccionar directa o indirectamente sus archivos (bancos) de registro o la memoria de datos. De acuerdo con una realizacion, se establece una correlacion de todos los registros de funciones especiales, incluyendo el Contador de Programa (PC) y el Registro de Trabajo (WREG), en la memoria de datos. El nucleo de microcontrolador potenciado tiene un conjunto de instrucciones ortogonal (simetrico) que hace posible llevar a cabo cualquier operacion sobre cualquier registro usando cualquier modo de direccionamiento. Esta naturaleza simetrica y carencia de 'situaciones optimas especiales' hacen la programacion con el nucleo de microcontrolador potenciado simple si bien eficiente. Ademas, la curva de aprendizaje para un usuario se reduce de forma significativa.
De acuerdo con una realizacion, los siguientes bloques pueden realizarse en el nucleo: contador de Programa; decodificacion de Instruccion; ALU; Bloqueo/ Bloqueo de IR de memoria de solo lectura (ROM); logica de generacion de direcciones y FSR; Registro de Trabajo; WREG; bits de Estatus en STATUS; control de vectorizacion de Interrupciones; con guardado de contexto rapido; el registro de seleccion de banco BSR.
Los siguientes bloques no pueden considerarse parte de la CPU: La pila; Circuiteria de generacion de restablecimiento (temporizador guardian (WDT), Restablecimiento de encendido (POR), Restablecimiento de apagamiento parcial (BOR), etc.); Memoria de Programa; Perifericos; RAM; Control de Direcciones de RAM; control y generador del reloj Q; Marcado y Habilitacion de Interrupcion; registros de control de interrupcion; bits de Configuracion; la palabra ID de Dispositivo; ubicaciones de ID; controladores de reloj.
Tal como se ha indicado anteriormente, de acuerdo con una realizacion, los siguientes registros pueden ser comunes a traves de todos los 16 bancos: INDF0 (que se usa para el direccionamiento indirecto y no puede ser un registro fisico); INDF1 (que se usa para el direccionamiento indirecto y no puede ser un registro fisico); PCL (LSB de PC); STATUS; FSR0L (Direccion de memoria indirecta 0, LSB); FSR0H (Direccion de memoria indirecta 0, MSB); FSR1L (Direccion de memoria indirecta 1, LSB); FSR1H (Direccion de memoria indirecta 1, MSB); WREG, el registro de trabajo; BSR (Registro de seleccion de banco); PCLATH (memoria intermedia de escritura para el contador de programa PC<14:8>); registro de control de interrupcion INTCON.
De acuerdo con una realizacion, el microprocesador o microcontrolador puede comprender ademas una unidad de control de interrupcion 105 que puede estar acoplada con ciertos registros de funciones especiales 115. Tras la aparicion de una interrupcion o de cualquier otra conmutacion de contexto inducida, tal como intercepciones de software, los contenidos de los siguientes registros seleccionados a partir de los registros de funciones especiales en correlacion con todos los bancos de memoria se guardan de forma automatica. STATUS (excepto para TO y PD); BSR, PCLATH, WREG, FSR0 (Tanto FSR0H como FSROL), y FSR1 (Tanto FSR1H como FSR1L). Los registros se
devuelven de forma automatica a sus valores previos a la interrupcion tras un retorno con respecto a una interrupcion.
Con el presente fin, tal como se muestra en la figura 1, el nucleo de microprocesador o microcontrolador puede tener por lo menos un conjunto adicional de registros 115 que almacenaran el contenido de los registros que se han mencionado anteriormente. No obstante, de acuerdo con otras realizaciones, una pila, memoria de datos adicional, etc. puede proporcionarse para almacenar el contenido de estos registros tras una conmutacion de contexto.
Tal como se muestra en la figura 2, el contador de programa PC consiste en dos registros de 8 bits concatenados PCL 230 y PCH 240. Este direcciona las palabras en la memoria de programa, y de acuerdo con una realizacion, tiene, por ejemplo, una anchura de 15 bits. Por lo tanto, el mismo puede usarse para direccionar hasta 32 kW. Se establece una correlacion de PCL 230, el byte bajo del PC, en la memoria de datos 160. Por lo tanto, este es comun a traves de todos los bancos y se encuentra, por ejemplo, en la direccion 02h. El PCL 230 es legible y permite la escritura al igual que cualquier otro registro. En cualquier instante en el que PCL 230 se modifique mediante una instruccion, ya sea una escritura en el PCL 230 o una lectura-modificacion-escritura, la CPU puede necesitar ejecutar un NOP forzado con el fin de recuperar la instruccion en la nueva direccion. El PCH 240 es el byte alto del PC y no es directamente direccionable. Debido a que no puede establecerse una correlacion de PCH en la memoria de programa o de datos, el registro PCLATH 220 (bloqueo alto de PC) se usa como unos bloqueos de retencion para los bits altos del PC (PCH<6:0>). De acuerdo con una realizacion, se establece una correlacion de PCLATH 220 en la memoria de datos. Por lo tanto, este es comun a traves de todos los bancos, y puede encontrarse en la direccion OAh. El PCLATH 220 se actualiza solo mediante una carga explicita del registro. Por lo tanto, de acuerdo con una realizacion, ninguna otra instruccion actualiza el mismo. El microcontrolador potenciado puede estar disefado de tal modo que la actualizacion del PCLATH 220 no actualiza de forma automatica el PCH 240. El PCH 240 se actualiza solo con el contenido de PCLATH 220 en las instrucciones GOTO, CALL y CALLW. El PC se incrementa en 1 despues de cada extraccion de instruccion en el borde de subida de Q1 a menos que: Se modifique por una instruccion de GOTO, CALL, RETURN, RETLW, RETFIE, o de Ramificacion; Se modifique por una respuesta de interrupcion; Debido al destino escribir en el PCL mediante una instruccion.
Los "saltos" son equivalentes a un ciclo de NOP forzado en la direccion saltada. Tal como se muestra en la figura 2, las operaciones del PC 230, 240 y el PCLATH 220 para diferentes instrucciones son tal como sigue:
Instrucciones de lectura en el PCL 230: PCL 230 - bus de datos 200 - ALU 170 o destino. Instrucciones de escritura en el PCL 230: datos de 8 bits - bus de datos 200 -PCL 230. Instrucciones de Lectura-Modificacion-Escritura en el PCL 230: Cualquier instruccion que realice una operacion de lectura-escritura-modificacion en el PCL 230. Lectura: PCL 230- bus de datos 200 - ALU 170; Escritura: resultado de 8 bits -bus de datos - PCL 230. Instruccion RETURN: TOS - PC <14:0> 230, 240.
La figura 3 muestra ademas una instruccion extraida 210 y su efecto sobre el contador de programa 230, 240. La figura 3 se aplica a las siguientes instrucciones:
Instruccion GOTO: Se proporciona una direccion de destino en la instruccion de 2 palabras (codigo de operacion (opcode)) 210. Opcode<7:0> - PCL<7: 0> 230; Opcode<10:8> - PCH<2:0> 240; PCLATH<6:3> 220 - PCH<6:3> 240. Instruccion CALL: Una direccion de destino de 11 bits se proporciona en la instruccion 210. Insertar la direccion actual (PC + 1) en la pila. Opcode <7:0> - PCL <7:0> 230; Opcode <10:8> - PCH <2:0> 240; PCLATH <6:3> 220 - PCH <6: 3> 240.
La figura 4 muestra la configuracion para las siguientes instrucciones:
Instruccion BRA: Un desplazamiento con signo de 9 bits se proporciona en la instruccion 210. Opcode <8:0> + PC (+ 1) - PC.
La figura 5 muestra la configuracion para las siguientes instrucciones:
Instruccion BRW: Un desplazamiento sin signo de 8 bits que se proporciona en el WREG 180. PC (+ 1) + WREG - PC.
La figura 6 muestra la configuracion para las siguientes instrucciones:
Instruccion CALLW: Una direccion de destino de 8 bits se proporciona en el WREG 180. Insertar la direccion actual (PC + 1) en la pila. WREG <7:0> - PCL <7:0>; PCLATH <6:0> - PCH <6:0>.
Para habilitar un area de memoria de prueba, el contador de programa 230, 240 puede tener un 16° bit oculto, PC<15>. Cuando el PC<15> se establece, las instrucciones se extraeran de un area prueba. En el modo de usuario, PC<15> es siempre 0, y no puede modificarse en software. En el modo de prueba, PC<15> tiene un valor por defecto de 0, pero puede establecerse mediante una instruccion de "cargar configuracion". El mismo puede borrarse mediante una instruccion de "Restablecer PC". El acceso a memoria de prueba puede comportarse con un
depurador en circuito (ICD) tal como sigue:
-
ICD v1: PC<15> se fuerza a valor alto para extraer el vector ICD, pero vuelve a 0 despues de que se ejecute la primera instruccion (GOTO ICD ROUTINE). Desde entonces hasta salir de la ejecucion de depuracion, PC<14:11> se fuerza a '1111b', pero PCLATH no se ve afectado. ICD v2: Si la ejecucion de depuracion de ICD es en la memoria de usuario, entonces esta sigue a ICD V1. Si la ejecucion de depuracion es en la memoria de prueba, entonces PC<15> se fuerza a valor alto para extraer el vector ICD, y vuelve a cero con icd return.
Los dispositivos de microcontrolador potenciado de acuerdo con varias realizaciones pueden soportar una memoria de pila de una anchura de 15 bits y una profundidad de 16 bits tal como se muestra en la figura 7. Durante el funcionamiento normal, se supone que la pila 310 tiene una profundidad de 16 palabras. En el modo normal, no se proporciona acceso de usuario directo alguno a la pila 310. La pila no es parte del espacio de memoria ni de programa o ni de datos. El PC (Contador de Programa) completo se inserta en la parte superior de la pila cuando se ejecuta una instruccion CALL o CALLW, o se confirma una solicitud de interrupcion. El valor de PC se extrae de la pila con una instruccion RETURN, RETLW, o RETFIE. El PCLATH no se ve afectado por ninguna de las instrucciones de tipo CALL o RETURN.
La pila 310 funciona como una RAM de 16 palabras por 15 bits y un puntero a la pila de 4 bits. Incrementar/ decrementar el puntero mas alla de 1111b/0000b dara lugar a que el mismo experimente un reinicio ciclico a 0000b/1111b. Durante una instruccion de tipo CALL, el puntero a la pila se incrementa y los contenidos del PC se cargan en la pila 310. Durante una instruccion de tipo RETURN los contenidos a los que se apunta se transfieren al PC y entonces el puntero a la pila se decrementa. El puntero a la pila se inicializa a '1111b' despues de todos los Restablecimientos. La primera llamada dara lugar a que el puntero experimente un reinicio a 0000b.
Un suceso de desbordamiento/ subdesbordamiento de pila tiene lugar cuando el puntero a la pila se incrementa/ decrementa mas alla de 1111b/0000b Y se realiza una transferencia de datos a/ desde la pila en la nueva direccion. Un suceso de desbordamiento no debe tener lugar en la primera CALL. En la 16a llamada consecutiva, el puntero a la pila tendra un valor de 1111b. La 17a CALL consecutiva dara lugar a que el puntero a la pila experimente un reinicio ciclico a 0000b, y a que el PC se cargue en esta posicion. Lo anterior constituye un suceso de desbordamiento. Cuando se han extraido elementos de la pila bastantes veces para alcanzar 0000b, las extracciones adicionales daran lugar a que los contenidos en 0000b se transfieran al PC, y a que el puntero a la pila se decremente. El puntero a la pila experimentara un reinicio a 1111b, lo anterior NO constituye un suceso de subdesbordamiento. Solo con la siguiente extraccion consecutiva, cuando se intente una transferencia de datos a partir de 1111b, tendra lugar un suceso de subdesbordamiento. En el modo de usuario, un desbordamiento o subdesbordamiento de la pila establecera el bit apropiado (STOF o STUF) en el registro de PC, y dara lugar a un restablecimiento de software. - -
Cuando se esta en el modo de ICD, la pila puede tener dos segmentos. La pila de modo de usuario normal tiene aun una profundidad de 16 palabras, pero puede proporcionarse tambien una pila de ICD separada. En el modo de ICD sera posible acceder a la parte de arriba de la pila y al puntero a la pila. En el modo de ICD, la parte de arriba de la pila (TOS) es legible y permite la escritura. Dos ubicaciones de registro, TOSH y TOSL, direccionaran la ubicacion de RAM de la pila a la que apunta el puntero a la pila (STKPTR). Despues de una instruccion de tipo CALL, el software puede leer el valor insertado mediante la lectura de los registros TOSH y TOSL. Estos valores pueden colocarse sobre una pila de software definida por el usuario. La escritura en los registros TOS dara lugar a que el PC se actualice con el nuevo valor con la siguiente instruccion de tipo RETURN.
El registro STKPTR contiene el valor del puntero a la pila. Tal como se ha ha indicado anteriormente, STKPTR es accesible solo en el modo de ICD. En el modo de ICD, puede accederse al puntero a la pila a traves del registro STKPTR. El usuario puede leer y escribir los valores del puntero a la pila. El puntero a la pila se inicializa a '1111b' despues de todos los Restablecimientos. En el modo de ICD, un restablecimiento de software automatico no se aplicara tras un suceso de desbordamiento/ subdesbordamiento. No obstante, aun se establecera el bit de desbordamiento (STOF) o de subdesbordamiento (STUF) de la pila en el registro de PC, lo que permite la verificacion por software de un estado de pila. Debido a que un restablecimiento no se ejecutara tras un subdesbordamiento/ desbordamiento, el puntero a la pila (STKPTR) no se restablecera. Tras un desbordamiento/ subdesbordamiento, el puntero a la pila experimentara un reinicio ciclico y entonces reanudara el funcionamiento normal. El usuario tiene que borrar los bits de desbordamiento (STOF) o de subdesbordamiento (STUF) de forma explicita - y estos se estableceran de nuevo de forma automatica tras desbordamientos/ subdesbordamientos posteriores. Los sucesos de Desbordamiento/ Subdesbordamiento de pila solo pueden estar producidos por una instruccion que modifique el puntero a la pila usando el hardware del puntero a la pila.
Esto incluye: CALL, TRAP; RETURN, RETFIE, RETLW; Cualquier intercepcion de ICD y interrupcion. Las instrucciones que modifiquen el puntero a la pila a traves de la ALU (solo en modo de ICD) no daran lugar al estado de desbordamiento/ subdesbordamiento de pila, y por lo tanto no estableceran los bits de (STOF) o de (STUF). Son ejemplos (solo en modo de ICD): INCF STKPTR; STKPTR DECF; ADDWF STKPTR.
Cuando un dispositivo se restablece, el PC se carga con el vector de Restablecimiento (Oh). El puntero a la pila se inicializa a '1111b', y la Parte de Arriba del registro de la Pila (TOS) es '0000h'. Una segunda insercion incrementa el puntero a la pila y entonces carga el PC actual en el nivel de la pila. En la 16a llamada consecutiva, el puntero a la
pila tendra un valor de 1111b. La 17a CALL consecutiva dara lugar a que el puntero a la pila experimente un reinicio ciclico a 0000b, y a que el PC se cargue en esta posicion. Lo anterior constituye un suceso de desbordamiento. Una extraccion RETURN copiara los contenidos de la pila a los que se apunta en el PC y entonces decrementara el puntero a la pila. Cuando se han extraido elementos de la pila bastantes veces para alcanzar 0000b, las extracciones adicionales daran lugar a que los contenidos en 0000b se transfieran al PC, y a que el puntero a la pila se decremente. El puntero a la pila experimentara un reinicio a 1111t, lo anterior NO constituye un suceso de subdesbordamiento. Solo con la siguiente extraccion consecutiva, cuando se intente una transferencia de datos a partir de 1111b, tendra lugar un suceso de subdesbordamiento. En el modo de depuracion (ICD), una instruccion especial dara lugar a que el STKPTR se incremente. El PC no se carga en TOS. Corresponde al usuario garantizar que el TOS se carga con los datos apropiados antes de que se ejecute la instruccion de INCF STKPTR (esta instruccion es, por lo tanto, equivalente a una instruccion PUSH. La instruccion de STKPTR DECF decrementara el puntero a la pila, el PC no se carga con el valor de TOS.
Tal como se muestra en la figura 8, el contador de programa de 15 bits 400 es capaz de direccionar un espacio de memoria de programa de 32k x 14 bits. El espacio de memoria de programa 430 contiene principalmente instrucciones para su ejecucion; no obstante, pueden almacenarse y accederse a tablas de datos asimismo (usando una infraestructura de lectura/ escritura de memoria de programa heredada, asi como la nueva funcionalidad asociada con el direccionamiento indirecto, vease la seccion de FSR para mas detalle). Existe tambien un 16° bit de PC oculto durante el funcionamiento normal, y cuando se establece, es posible direccionar otros 32k x 14 de memoria reservada para los bits de configuracion, la ID de Dispositivo y la memoria de prueba 440. Este bit solo se establece en el modo de prueba o en el modo de programacion. Tal como se muestra en la figura 8, el vector de Restablecimiento se encuentra en '0000h' y el vector de interrupcion se encuentra en '0004h'.
De acuerdo con una realizacion, el microcontrolador potenciado puede direccionar una memoria de datos 160 y una RAM de proposito general de hasta 2.048 bytes. El bus de direccion de memoria de datos tiene una anchura de 11 bits. La memoria de datos esta dividida en 16 bancos de 128 bytes cada uno, que contiene los Registros de Proposito General (GPR) y Registros de funciones especiales (SFR). El banco se selecciona mediante el registro de seleccion de banco (BSR<3:0>) tal como se muestra en la figura 9. El registro BSR puede acceder a mas de 16 bancos; no obstante, lo anterior puede permitirse solo en el modo de ICD para permitir un espacio de datos mas grande para los registros de ICD. (En el modo de ICD, puede accederse a 32 bancos). Se establece tambien una correlacion de los bits BSR0 y BSR1 en el registro de STATUS como RP0 y RP1, respectivamente. Lo anterior es para permitir la compatibilidad con versiones anteriores de los dispositivos existentes. Una lectura de, o una escritura en, BSR0/1 afectara a RP0/1 y viceversa. La figura 10 muestra una correlacion en memoria de datos a modo de ejemplo.
Cuando el nucleo esta funcionando con un modulo de ICD o en otra realizacion, el numero total de bancos puede ampliarse a 32 para 4.096 direcciones totales. Lo anterior es para permitir que se establezca una correlacion de los registros de ICD en el espacio de datos y que no se use correlacion en memoria del usuario alguna. Lo anterior solo se habilitara cuando el modulo de ICD este habilitado. El usuario no tendra acceso a banco alguno mas grande que el Banco 15. Son posibles otras configuraciones, de acuerdo con varias realizaciones.
La figura 11 muestra una realizacion de un esquema de direccionamiento indirecto que es un modo de direccionamiento de la memoria de datos en el que la direccion de memoria de datos en la instruccion se determina mediante otro registro. Lo anterior puede ser util para pilas o tablas de datos en la memoria de datos/ de programa. El valor del registro 960 del registro de seleccion de archivo (FSR) se usa como la direccion de memoria de datos. El microcontrolador potenciado tiene dos pares de registros de 16 bits 960 para el direccionamiento indirecto. Estos asi denominados pares de registro de seleccion de archivo son: FSR0H y FSR0L; y FSR1H y FSR1L. Los FSR 960 son registros de 16 bits y por lo tanto permiten el direccionamiento de hasta 65.536 ubicaciones. Un unico bit 965 en estos registros de seleccion de archivo 960 puede usarse para determinar si se realizara un acceso a la memoria de datos 160 o a la memoria de programa 120. Con el presente fin, la unidad logica 930 retransmite el contenido del registro de seleccion de archivo 960 o bien a la direccion de memoria de programa 910 o bien a la direccion de RAM 920 para acceder a las memorias respectivas.
El direccionamiento no indirecto usa el contenido respectivo "Archivo" de una instruccion extraida 950 a traves del multiplexor 940. Los accesos a banco se realizan entonces a traves de la direccion de RAM 920 en la que la direccion de banco se proporciona mediante el registro de acceso a banco respectivo para formar una direccion completa 920. Tal como se muestra en la figura 11, los registros de seleccion de archivo 960 se proporcionan para el direccionamiento indirecto. Para el direccionamiento indirecto, la salida del multiplexor 940 proporciona la direccion del "Archivo" a traves del contenido del registro de seleccion de archivo respectivo 960. Si se selecciona el direccionamiento indirecto, el bit 15 que se indica mediante el numero 965 de cada registro de seleccion de archivo 960 se usa para determinar si se realizara un acceso a la memoria de programa 120 a traves de la direccion de memoria de programa 910 o a la memoria de datos 160 a traves de la direccion de datos 920. El direccionamiento indirecto se inicia a traves de una sefal de seleccion respectiva (que no se muestra) que controla el multiplexor 940.
Cuando FSRn<15> es igual a 0, se direcciona la memoria de datos 160. Cuando FSRn<15> es 1, se direcciona la memoria de programa 120. Se establece una correlacion de la memoria de datos 160 en la primera mitad de este espacio de direcciones (0000h a 7FFFh). Si FSRn<15> es 0, FSRn<10:0> apunta hacia las ubicaciones de memoria
de datos 000h a 7FFh. En el presente caso, se ignora FSRn<11:14>. Se establece una correlacion de la memoria de programa 120 en la mitad superior de este espacio de direcciones (8000h a FFFFh). Si FSRn<15> es 1, entonces FSRn<14: 0> apunta hacia las direcciones de memoria de programa 0000h a 7FFFh. En resumen: Las direcciones 8000h y mas altas apuntan a la memoria de programa. Las direcciones por debajo de 8000h apuntan a la memoria de datos, usandose solo los 11 bits mas bajos para direccionar la decodificacion.
Ademas, existen unos registros virtuales INDF0 y INDF1 (Vease la figura 10), que no estan implementados fisicamente. La lectura de, o la escritura en, estos registros activa el direccionamiento indirecto, siendo el valor en el registro FSR correspondiente la direccion de los datos. Si el propio INDF0 (o INDF1) del archivo se lee indirectamente a traves de un FSR, todos los '0' se leen (el bit Cero esta establecido). De forma similar, si se escribe indirectamente en INDF0 (o INDF1), la operacion sera equivalente a un NOP, y los bits de STATUS no se ven afectados. Las escrituras indirectas en el espacio de memoria de programa (FSRn<15> = 1) no tendran efecto, y conduciran a que se ejecute el equivalente de un NOP. Las lecturas indirectas a partir del espacio de memoria de programa (FSRn<15> = 1) daran lugar a que los primeros 8 bits de la ubicacion de memoria de programa se transfieran al registro de destino, el EEDATH/PMDATH se actualizara con los 6 bits superiores. De acuerdo con varias realizaciones, puede implementarse otro mecanismo para inducir el direccionamiento indirecto.
La figura 12 muestra un resumen de todos los registros de funciones especiales de acuerdo con una realizacion, tal como se usa en cualquier banco n de la memoria de datos.
Las figuras 13A y B muestran el conjunto de instrucciones en el que se explican con detalle a continuacion las instrucciones potenciadas usando la arquitectura tal como se ha explicado anteriormente.
DDFSR Afadir Literal a FSRn: Sintaxis: ADDFSR n, k Operandos: -32 � k � 31
n E[0,1] Operacion: FSR(n) + k - FSR(n) Estatus Afectados: Ninguno Codificacion: 11 0001 0nkk kkkk Descripcion: El literal de 6 bits con signo 'k' se afade a los contenidos del FSR especificado por 'n'. FSRn esta limitado al intervalo 0000h -FFFFh. Incrementar/ decrementar el mismo mas alla de estos limites dara lugar a que el mismo experimente un reinicio ciclico. Observese que las direcciones 8000h y mas grandes apuntan a la memoria de programa. Las direcciones por debajo de 8000h apuntan a la memoria de datos, usandose solo los 11 bits mas bajos para direccionar la decodificacion.
Palabras: 1
Ciclos: 1
Actividad de Ciclo Q:
Q1
Q2 Q3 Q4
Decodificar
Leer FSRn' Procesar los Datos Escribir en el FSLN
Ejemplo:
ADDFSR 1, 23h
Antes de la Instruccion FSR1 = 0FFh
Despues de la Instruccion FSR1 = 0122h DDWFC Afadir WREG y bit de CARRY (acarreo) a f: Sintaxis: ADDWFC f {,d} Operandos: 0 � f � 127
d E[0,1] Operacion: (WREG) + (f) + (C) - dest Estatus Afectados: C, DC, Z Codificacion: 11 1101 dfff ffff Descripcion: Afadir WREG, el indicador de CARRY y la ubicacion de memoria de datos 'f'. Si 'd' es '0', el resultado se coloca en el WREG. Si 'd' es '1', el resultado se coloca en la ubicacion de memoria de datos 'f'. Ciclos: 1 Actividad de Ciclo Q: Q1 Q2 Q3 Q4 Decodificar Leer reg 'f' Procesar los Datos Escribir en el destino Ejemplo: ADDWFC REG, 0
Antes de la Instruccion bit de CARRY = 1 REG = 02h WREG = 4Dh
Despues de la Instruccion bit de CARRY = 0 REG = 02h WREG = 50h
Desplazamiento Aritmetico a la Derecha de SRF: Sintaxis: ASRF f {,d} Operandos: 0 � f � 127
(continuacion)
Desplazamiento Aritmetico a la Derecha de SRF: Sintaxis: ASRF f {,d} 5 d E[0,1]
Operacion: (f<7>) - dest<7> (f<7:1>) - dest<6:0>, (f<0>) - C,
Estatus Afectados: C, Z
10 Codificacion: 11 0111 dfff ffff Descripcion: Los contenidos del registro 'f' se desplazan un bit a la derecha a traves del indicador de CARRY. El MSb permanece sin cambios. Si 'd' es '0', el resultado se coloca en el WREG. Si 'd' es '1', el resultado se vuelve a almacenar en el registro 'f'. Palabras: 1
15 Ciclos: 1 Actividad de Ciclo Q: Q1 Q2 Q3 Q4 Decodificar Leer reg 'f' Procesar los Datos Escribir en el destino Ejemplo: ASRF REG, 0
20 Antes de la Instruccion REG = 1110 0110 C = 1
Despues de la Instruccion REG = 1110 0110 WREG = 1111 0011 C = 0
25 Una Ramificacion Relativa: Sintaxis: BRA k Operandos: -256 k � 255 Operacion: (PC) + k - PC Estatus Afectados: Ninguno Codificacion: 11 001k kkkk kkkk
30 Descripcion: Afadir el numero del complemento a 2 'k' al PC. Debido a que el PC se habra incrementado para extraer la siguiente instruccion, la nueva direccion sera PC + 1 + k. Esta instruccion es una instruccion en dos ciclos. Palabras: 12 Actividad de Ciclo Q:
35 Q1 Q2 Q3 Q4 Decodificar Leer literal 'k' Procesar los Datos Escribir en PC Sin operacion Sin operacion Sin operacion Sin operacion Ejemplo: 0023h BRA 005h Antes de la Instruccion PC = direccion 0023h)
40 Despues de la Instruccion PC = direccion 0029h) Ramificacion Relativa a RW con WREG: Sintaxis: BRW Operandos: Ninguno Operacion: (PC) + (WREG) -PC Estatus Afectados: Ninguno
45 Codificacion: 00 0000 0000 1011 Descripcion: Afadir los contenidos de WREG (sin signo) al PC. Debido a que el PC se habra incrementado para extraer la siguiente instruccion, la nueva direccion sera PC + 1 + (WREG). Esta instruccion es una instruccion en dos ciclos. Los contenidos de WREG se tratan como un numero sin signo. Palabras: 1
50 Ciclos: 2 Actividad de Ciclo Q: Q1 Q2 Q3 Q4 Decodificar Leer reg WREG Procesar los Datos Escribir en PC Sin operacion Sin operacion Sin operacion Sin operacion
55 Ejemplo: 0024h BRW Antes de la Instruccion PC = direccion 0024h) WREG = 85h Despues de la Instruccion PC = direccion 00AAh) ALLW Llamada de Subrutina Con WREG: Sintaxis: CALLW 60 Operandos: Ninguno
Operacion: (PC) + 1 - TOS, (WREG) - PC<7:0>, (PCLATH<6:0>) - PC<14:8>
Estatus Afectados: Ninguno 65 Codificacion: 00 0000 0000 1010
(continuacion)
ALLW Llamada de Subrutina Con WREG: Sintaxis: CALLW Descripcion: llamada de Subrutina con WREG. En primer lugar, la direccion de retorno (PC + 1) se inserta
5 en la parte superior de la pila de retorno. Entonces, los contenidos de WREG se cargan en PC<7:0>, y los contenidos de PCLATH en PC<14:8>. CALLW es una instruccion en dos ciclos. Palabras: 1 Ciclos: 2 Actividad de Ciclo Q:
10 Q1 Q2 Q3 Q4 Decodificar Leer el registro WREG Procesar los Datos Escribir en PC Sin operacion Sin operacion Sin operacion Sin operacion Ejemplo: 0025h CALLW
Antes de la Instruccion PC = direccion (0025h) 15 WREG = 1Ah PCLATH = 10h
Despues de la Instruccion TOS = direccion (0026h) PC = 101Ah WREG = 1Ah
20 PCLATH = 10h Desplazamiento Logico a la Izquierda de SLF: Sintaxis: LSLF f {,d} Operandos: 0 �f � 127 d Operacion: (f<7>) - C
(f<6:0>) - dest<7:1
25 0 - dest<0> Estatus Afectados: C, Z Codificacion: 11 0101 dfff ffff Descripcion: Los contenidos del registro 'f' se desplazan un bit a la izquierda a traves del indicador de CARRY. Un '0' se desplaza al LSb. Si 'd' es '0', el resultado se coloca en el WREG. Si 'd' es '1', el resultado
30 se vuelve a almacenar en el registro 'f'. Palabras: 1 Ciclos: 1 Actividad de Ciclo Q: Q1 Q2 Q3 Q4
35 Decodificar Leer reg 'f' Procesar los Datos Escribir en el destino Ejemplo: LSLF REG, 0 Antes de la Instruccion REG = 1110 0110 C = 0 Despues de la Instruccion REG = 1110 0110 40 WREG = 1100 1100
C = 1 Desplazamiento Logico a la Derecha de SRF: Sintaxis: LSRF f {,d} Operandos: 0 �f � 127
d E [0,1]
45 Operacion: 0 - dest<7> (f<7:1) - dest<6:0>, (f<0>) - C,
Estatus Afectados: C, Z Codificacion: 11 0110 dfff ffff
50 Descripcion: Los contenidos del registro 'f' se desplazan un bit a la derecha a traves del indicador de CARRY. Un '0' se desplaza al MSb. Si 'd' es '0', el resultado se coloca en el WREG. Si 'd' es '1', el resultado se vuelve a almacenar en el registro 'f'. Palabras: 1 Ciclos: 1
55 Actividad de Ciclo Q: Q1 Q2 Q3 Q4 Decodificar Leer el registro 'f' Procesar los Datos Escribir en el destino Ejemplo: LSRF REG, 0
Antes de la Instruccion REG = 1110 0110 60 C = 1
Despues de la Instruccion REG = 1110 0110 WREG = 0111 0011 C = 0
OVIW Mover INDFn a WREG, con pre-/ post-incremento/ decremento 65 Sintaxis: MOVIW ++/--FSRn++/--
n E [0,1] (continuacion)
OVIW Mover INDFn a WREG, con pre-/ post-incremento/ decremento
5 Operandos: Operacion: INDFn - WREG Aplicar una operacion de pre-/ post-incremento/ decremento a FSRn. Estatus Afectados: Z (Solo si el destino es WREG) Codificacion: 00 0000 0001 0nmm
10 MM Operacion 00 ++FSLN 01 --FSRn 10 FSRn++ 11 FSRn-
15 Descripcion: Esta instruccion se usa para mover datos entre uno de los registros indirectos (INDFn) y WREG. Antes/ despues de este movimiento, el puntero (FSRn) se actualiza pre-/ post-incrementando/ decrementando el mismo. FSRn esta limitado al intervalo 0000h -FFFFh. Incrementar/ decrementar el mismo mas alla de estos limites dara lugar a que el mismo experimente un reinicio ciclico. Observese que las direcciones mas grandes que 7FFFh apuntan a la memoria de programa. Las direcciones por debajo de
20 8000h apuntan a la memoria de datos, usandose solo los 11 bits mas bajos para direccionar la decodificacion. La operacion de incremento/ decremento sobre FSRn NO afectara a bit alguno de STATUS. Esta instruccion solo puede afectar al indicador Z si se mueve un valor de 00h a WREG. Palabras: 1 Ciclos: 1
25 Actividad de Ciclo Q: Q1 Q2 Q3 Q4 Decodificar Actualizar el puntero si Procesar los Datos Escribir en el registro de
se Lee el registro Destino. Actualizar el Fuente. puntero si fuera necesario. Ejemplo: MOVIW FSR0++ Antes de la Instruccion FSR0 = 22h WREG = FFh 30 (22h) = 12h (23h) = 33h
Despues de la Instruccion FSR0 = 23h WREG = 12h (22h) = 12h
35 (23h) = 33h Ejemplo: MOVIW ++FSRO
Antes de la Instruccion FSR0 = 22h WREG = FFh (22h) = 12h
40 (23h) = 33h
Despues de la Instruccion FSR0 = 23h WREG = 33h (22h) = 12h (23h) = 33h
45 OVIW Mover INDFn a WREG. Direccionamiento Indirecto Indizado Sintaxis: MOVIW [k]FSRn Operandos: -32 �k �31
n E [0,1] Operacion: (FSRn + k) -WREG
50 Mover datos entre la ubicacion a la que apunta FSRn + k y WREG. Estatus Afectados: Z (Solo si el destino es WREG) Codificacion: 11 1111 0nkk kkkk Descripcion: Esta instruccion se usa para mover datos entre una ubicacion a la que apunta FSRn + k y WREG. FSRn no se actualiza con k. El intervalo direccionable esta limitado a 0000h -FFFFh. Indizar mas
55 alla de estos limites dara lugar a un reinicio ciclico de la direccion. Observese que las direcciones 8000h y mas altas apuntan a la memoria de programa. Las direcciones por debajo de 8000h apuntan a la memoria de datos, usandose solo los 11 bits mas bajos para direccionar la decodificacion. Direccionar el calculo (la adicion de k a FSRn) NO afectara a bit alguno de STATUS. Esta instruccion solo puede afectar al indicador Z si se mueve un valor de 00h a WREG.
60 Palabras: 1 Ciclos: 1
(continuacion)
OVIW Mover INDFn a WREG. Direccionamiento Indirecto Indizado Actividad de Ciclo Q: 5 Q1 Q2 Q3 Q4 Decodificar Direccionar el calculo. Procesar los Datos Escribir en el registro de Leer el registro Fuente. Destino. Ejemplo: MOVIW [5]FSRO
Antes de la Instruccion FSR0 = 22h WREG = FFh (22h) = 12h
10 (27h) = 39h
Despues de la Instruccion FSR0 = 22h WREG = 39h (22h) = 12h (27h) = 39h
15 Ejemplo: MOVIW [-5]FSRO
Antes de la Instruccion FSR0 = 22h WREG = FFh (1Dh) = 17h (22h) = 12h
20 Despues de la Instruccion FSR0 = 22h WREG = 17h (1Dh) = 17h (22h) = 12h
OVLB Mover literal a BSR: Sintaxis: MOVLB k
25 Operandos: 0 k �15 Operacion: k - BSR Estatus Afectados: Ninguno Codificacion: 00 0000 0010 kkkk Descripcion: El literal de cuatro bits 'k' se carga en el Registro de Seleccion de Banco (BSR).
30 Palabras: 1 Ciclos: 1 Actividad de Ciclo Q: Q1 Q2 Q3 Q4 Decodificar Leer literal 'k' Procesar los Datos Escribir literal 'k' en BSR OVLP Mover literal a PCLATH: Sintaxis: MOVLP k
35 Operandos: 0 k �127 Operacion: k - PCLATH Estatus Afectados: Ninguno Codificacion: 11 0001 1kkk kkkk Descripcion: El literal de siete bits 'k' se carga en el registro de PCLATH.
40 Palabras: 1 Ciclos: 1 Actividad de Ciclo Q: Q1 Q2 Q3 Q4 Decodificar Leer literal 'k' Procesar los Datos Escribir literal 'k' en
PCLATH OVWI Movimiento Indirecto Indizado: Sintaxis: MOVWI [k]FSRn 45 Operandos: -32 �k �31
n E [0,1] Operacion: WREG - (FSRn+k) Mover datos entre el WREG y la ubicacion a la que apunta FSRn + k. Estatus Afectados: Z (Solo si el destino es WREG)
50 Codificacion: 11 1111 1nkk kkkk Descripcion: Esta instruccion se usa para mover datos entre el WREG y la ubicacion a la que apunta FSRn
+ k. FSRn no se actualiza con k. El intervalo direccionable esta limitado a 0000h -FFFFh. Indizar mas alla de estos limites dara lugar a un reinicio ciclico de la direccion. Observese que las direcciones 8000h y mas altas apuntan a la memoria de programa. Las direcciones por debajo de 8000h apuntan a la memoria de
55 datos, usandose solo los 11 bits mas bajos para direccionar la decodificacion. Direccionar el calculo (la adicion de k a FSRn) NO afectara a bit alguno de STATUS. Palabras: 1 Ciclos: 1
(continuacion) OVWI Movimiento Indirecto Indizado: Sintaxis: MOVWI [k]FSRn
Actividad de Ciclo Q:
5
Q1 Q2 Q3
Decodificar Direccionar el calculo.
Procesar los Datos
Leer el registro Fuente. Ejemplo: MOVWI [3]FSRO Antes de la Instruccion
FSR0 = 22h
WREG = FFh
10
(22h) = 12h (25h) = 56h
Despues de la Instruccion FSR0 = 22h WREG = FFh (22h) = 12h (25h) = FFh
15 Ejemplo: MOVWI [-1]FSR0 Antes de la Instruccion FSR0 = 22h WREG = FFh (21h) = 56h (22h) = 12h
20 Despues de la Instruccion FSR0 = 22h WREG = FFh (21h) = FFh (22h) = 12h Actividad de Ciclo Q:
25 Q1 Q2 Q3Decodificar Leer el registro 'f' Procesar los Datos OVWI Mover WREG a INDFn, con pre-/ post-incremento/ decremento Sintaxis: MOVWI ++/--FSRn++/-- Operandos: n E [0,1]
30 Operacion: WREG - INDFn Aplicar una operacion de pre-/ post-incremento/ decremento a FSR usado. Estatus Afectados: Z (Solo si el destino es WREG) Codificacion: 00 0000 0001 1nmm MM Operaciones
35 00 ++FSLN 01 --FSRn 10 FSRn++ 11 FSRn-
Q4 Escribir en el registro de Destino.
Q4 Escribir en el Destino
Descripcion: Esta instruccion se usa para mover datos entre el WREG y uno de los registros indirectos
40 (INDFn). Antes/ despues de este movimiento, el puntero (FSRn) se actualiza pre-/ post-incrementando/ decrementando el mismo. FSRn esta limitado al intervalo 0000h -FFFFh. Incrementar/ decrementar el mismo mas alla de estos limites dara lugar a que el mismo experimente un reinicio ciclico. Observese que las direcciones 8000h y mas altas apuntan a la memoria de programa. Las direcciones por debajo de 8000h apuntan a la memoria de datos, usandose solo los 11 bits mas bajos para direccionar la decodificacion. La
45 operacion de incremento/ decremento sobre FSRn NO afectara a bit alguno de STATUS.
Palabras: 1 Ciclos: 1 Actividad de Ciclo Q: Q1Decodificar
Ejemplo: MOVWI FSRO-
Q2 Q3 Q4
Actualizar el puntero si Procesar los Datos Escribir en INDFn.
fuera necesario. Actualizar el puntero si fuera necesario.
Antes de la Instruccion FSR0 = 22h WREG = FFh (21h) = 56h (22h) = 12h
Despues de la Instruccion FSR0 = 21 h WREG = FFh (21h) = 56h (22h) = FFh
(continuacion)
OVWI Mover WREG a INDFn, con pre-/ post-incremento/ decremento Ejemplo: MOVWI --FSR0
5 Antes de la Instruccion FSR0 = 22h WREG = FFh (21h) = 56h (22h) = 12h
Despues de la Instruccion FSR0 = 21 h
10 WREG = FFh (21h) = FFh (22h) = 12h
ESET Restablecimiento de Software: Sintaxis: RESET Operandos: Ninguno
15 Operacion: Ejecutar nMCLR. Restablecimiento de todos los registros y indicadores que se ven afectados por un Restablecimiento de MCLR. Establecer el indicador PCON.nSWRST. Estatus Afectados: Todos Codificacion: 00 0000 0000 0001 Descripcion: Esta instruccion proporciona una forma de ejecutar un Restablecimiento de MCLR por
20 software. Palabras: 1 Ciclos: 1 Actividad de Ciclo Q: Q1 Q2 Q3 Q4
25 Decodificar Iniciar Restablecimiento Sin operacion Sin operacion Ejemplo: RESET Despues de la Instruccion Registros = Valor de Restablecimiento Indicadores� = Valor de Restablecimiento UBWFB Sustraer WREG de f con Acarreo Negativo: Sintaxis: SUBWFB f {,d}
30 Operandos: 0 f � 127 d E [0,1] Operacion: (f) - (WREG) - (B) - dest Estatus Afectados: C, DC, Z Codificacion: 11 1011 dfff ffff
35 Descripcion: Restar WREG y el indicador de BORROW (acarreo negativo) (CARRY) del registro 'f' (procedimiento del complemento a 2). Si 'd' es '0', el resultado se almacena en el WREG. Si 'd' es '1', el resultado se vuelve a almacenar en el registro 'f'. Palabras: 1 Ciclos: 1
40 Ejemplo 1: SUBWFB REG, 1
Antes de la Instruccion REG = 19h (0001 1001) WREG = 0Dh (0000 1101) C = 1 (por lo que B = 0)
Despues de la Instruccion REG = OCh (0000 1100)
45 WREG = 0Dh (0000 1101) C = 1 (Sin Acarreo Negativo) DC = 0 (Indica un acarreo negativo de digito)
Ejemplo 2: SUBWFB REG, 0 Antes de la Instruccion REG = 1Bh (0001 1011) 50 WREG = 1Ah (0001 1010) C = 0 (por lo que B = 1)
Despues de la Instruccion REG = 1Bh (0001 1011) WREG = 00h C = 1 (Sin Acarreo Negativo)
55 DC = 1 (Sin acarreo negativo de digito) Z = 1 El resultado es cero

Claims (15)

  1. REIVINDICACIONES
    1.
    Un dispositivo de microprocesador de n bits que comprende:
    una unidad central de procesamiento de n bits (CPU); una pluralidad de registros (185) de funciones especiales y de registros de proposito general con los que se establece una correlacion en memoria con una pluralidad de bancos, en el que los registros (185) de funciones especiales comprenden por lo menos dos registros (150; 960) de direccion de memoria indirecta de 16 bits a los que puede acceder dicha CPU a traves de todos los bancos; una unidad de acceso a banco para acoplar dicha CPU con uno de dicha pluralidad de bancos; una memoria (160) de datos acoplada con la CPU; y una memoria (120) de programa acoplada con la CPU, en el que dichos registros (150; 960) de direccion de memoria indirecta pueden accionarse para acceder a dicha memoria (160) de datos o memoria (120) de programa y en el que un bit (965) en cada uno de dichos registros (150; 960) de direccion de memoria indirecta determina un acceso a dicha memoria (160) de datos o a dicha memoria (120) de programa.
  2. 2.
    El microprocesador de n bits de acuerdo con la reivindicacion 1, en el que n = 8.
  3. 3.
    El microprocesador de n bits de acuerdo con la reivindicacion 1 o 2, que ademas comprende por lo menos un registro (INDF0; INDF1) de funciones especiales que no esta implementado fisicamente, en el que la escritura de datos en dicho registro (INDF0; INDF1) de funciones especiales da lugar a un acceso indirecto usando uno de dichos registros (150; 960) de direccion de memoria indirecta a dicha memoria (160) de datos o a dicha memoria
    (120) de programa.
  4. 4. El microprocesador de n bits de acuerdo con una de las reivindicaciones anteriores, que ademas comprende un registro (INDF0; INDF1) de funciones especiales que no esta implementado fisicamente, en el que la lectura de datos a partir de dicho registro (INDF0; INDF1) de funciones especiales da lugar a un acceso indirecto usando uno de dichos registros (150; 960) de direccion de memoria indirecta a dicha memoria (160) de datos o a dicha memoria
    (120) de programa.
  5. 5.
    El microprocesador de n bits de acuerdo con la reivindicacion 3 o 4, en el que se establece una correlacion del por lo menos un registro (INDF0; INDF1) de funciones especiales con cada banco de memoria.
  6. 6.
    El microprocesador de n bits de acuerdo con una de las reivindicaciones anteriores 3-5, en el que un acceso a memoria indirecto a dicha memoria de programa usando uno de dichos registros (150; 960) de direccion de memoria indirecta lee los n bits mas bajos de una ubicacion de memoria de programa.
  7. 7.
    El microprocesador de n bits de acuerdo con una de las reivindicaciones anteriores, en el que dicha memoria
    (160) de datos tiene una anchura de 8 bits y dicha memoria (120) de programa tiene una anchura de 14 bits.
  8. 8.
    El microprocesador de n bits o el procedimiento de acuerdo con la reivindicacion 7, en el que un bit adicional de una direccion de memoria de datos define un intervalo de direcciones de memoria ampliado que se usa en un modo de depuracion.
  9. 9.
    El microprocesador de n bits o el procedimiento de acuerdo con la reivindicacion 8, en el que dicho bit adicional en dicho registro (150; 960) de direccion indirecta es el bit mas significativo.
  10. 10.
    Un procedimiento para accionar un dispositivo de microprocesador de n bits que comprende
    una unidad central de procesamiento de n bits (CPU); una pluralidad de registros (185) de funciones especiales y de registros de proposito general con los que se establece una correlacion en memoria con una pluralidad de bancos, en el que los registros de funciones especiales comprenden por lo menos dos registros (150; 960) de direccion de memoria indirecta de 16 bits a los que puede acceder dicha CPU a traves de todos los bancos; una unidad de acceso a banco para acoplar dicha CPU con uno de dicha pluralidad de bancos; una memoria (160) de datos acoplada con la CPU; una memoria (120) de programa acoplada con la CPU; en el que el procedimiento comprende:
    realizar un direccionamiento indirecto usando un registro (150; 960) de direccion indirecta para acceder a dicha memoria (160) de datos o memoria (120) de programa, en el que un bit (965) en cada uno de dichos registros (150; 960) de direccion de memoria indirecta indica un acceso a dicha memoria (160) de datos o a dicha memoria (120) de programa, respectivamente.
  11. 11.
    El procedimiento de acuerdo con la reivindicacion 10, en el que n = 8.
  12. 12.
    El procedimiento de acuerdo con la reivindicacion 10 u 11, que ademas comprende la etapa de generar un acceso de escritura a memoria indirecta mediante la escritura de datos en por lo menos un registro (INDF0; INDF1) de funciones especiales que no esta implementado fisicamente, en el que el acceso a memoria indirecto usa uno de
    dichos registros (150; 960) de direccion de memoria indirecta.
  13. 13.
    El procedimiento de acuerdo con una de las reivindicaciones anteriores 10-12, que ademas comprende la etapa de generar un acceso de lectura a memoria indirecta mediante la lectura de datos a partir de por lo menos un registro (INDF0; INDF1) de funciones especiales que no esta implementado fisicamente, en el que el acceso de
    5 lectura a memoria indirecta usa uno de dichos registros (150; 960) de direccion de memoria indirecta.
  14. 14.
    El procedimiento de acuerdo con la reivindicacion 12 o 13, en el que se establece una correlacion en memoria de dicho registro (INDF0; INDF1) de funciones especiales con todos los bancos de memoria.
  15. 15.
    El procedimiento de acuerdo con una de las reivindicaciones anteriores 12-14, que ademas comprende la lectura de los n bits mas bajos de una ubicacion de memoria de programa cuando se realiza un acceso a memoria
    10 indirecto a dicha memoria de programa usando uno de dichos registros (150; 960) de direccion de memoria indirecta.
ES08857235T 2007-11-30 2008-11-26 Microprocesador o microcontrolador potenciado Active ES2396800T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US99157007P 2007-11-30 2007-11-30
US991570P 2007-11-30
US12/147,647 US7996651B2 (en) 2007-11-30 2008-06-27 Enhanced microprocessor or microcontroller
US147647 2008-06-27
PCT/US2008/084921 WO2009073532A1 (en) 2007-11-30 2008-11-26 Enhanced microprocessor or microcontroller

Publications (1)

Publication Number Publication Date
ES2396800T3 true ES2396800T3 (es) 2013-02-27

Family

ID=40676959

Family Applications (1)

Application Number Title Priority Date Filing Date
ES08857235T Active ES2396800T3 (es) 2007-11-30 2008-11-26 Microprocesador o microcontrolador potenciado

Country Status (8)

Country Link
US (1) US7996651B2 (es)
EP (1) EP2215544B1 (es)
KR (1) KR101564693B1 (es)
CN (1) CN101868780B (es)
ES (1) ES2396800T3 (es)
PL (1) PL2215544T3 (es)
TW (1) TWI446258B (es)
WO (1) WO2009073532A1 (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262595B (zh) * 2011-07-29 2014-04-02 航天恒星科技有限公司 一种微处理器扩展寻址方法
US9195497B2 (en) * 2012-03-21 2015-11-24 Microchip Technology Incorporated Microcontroller with context switch
WO2014159123A1 (en) * 2013-03-12 2014-10-02 Microchip Technology Incorporated Programmable cpu register hardware context swap mechanism
US20160170466A1 (en) * 2014-12-15 2016-06-16 Jefferson H. HOPKINS Power saving multi-width processor core
US9946482B2 (en) 2015-07-14 2018-04-17 Microchip Technology Incorporated Method for enlarging data memory in an existing microprocessor architecture with limited memory addressing
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
US11630757B1 (en) * 2022-02-02 2023-04-18 Snabb IP LLC System and method for developing, testing and debugging software for microcontrollers

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58112152A (ja) 1981-12-24 1983-07-04 Nec Corp 半導体集積回路
JPS6414648A (en) 1987-07-08 1989-01-18 Mitsubishi Electric Corp Arithmetic processor
JP3141146B2 (ja) * 1993-07-27 2001-03-05 三菱電機株式会社 ワンチップマイクロコンピュータ
US5653735A (en) * 1995-06-28 1997-08-05 Pacesetter, Inc. Implantable cardiac stimulation device having an improved backup mode of operation and method thereof
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
US6192463B1 (en) * 1997-10-07 2001-02-20 Microchip Technology, Inc. Processor architecture scheme which uses virtual address registers to implement different addressing modes and method therefor
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
US6708268B1 (en) 1999-03-26 2004-03-16 Microchip Technology Incorporated Microcontroller instruction set
US20020032829A1 (en) * 2000-06-28 2002-03-14 Z-World, Inc. Microprocessor memory device controller
US6735664B1 (en) * 2000-10-18 2004-05-11 Advanced Micro Devices, Inc. Indirect addressing method and device incorporating the same
US6728856B2 (en) 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
US6704601B1 (en) * 2001-08-09 2004-03-09 Pacesetter, Inc. Implantable medical stimulation device having reconfigurable memory
US20030056071A1 (en) * 2001-09-18 2003-03-20 Triece Joseph W. Adaptable boot loader
KR100960095B1 (ko) * 2003-10-23 2010-05-31 마이크로칩 테크놀로지 인코포레이티드 마이크로컨트롤러 명령어 셋트

Also Published As

Publication number Publication date
US20090144511A1 (en) 2009-06-04
TWI446258B (zh) 2014-07-21
KR20100087309A (ko) 2010-08-04
PL2215544T3 (pl) 2013-05-31
CN101868780B (zh) 2014-08-13
TW200935301A (en) 2009-08-16
CN101868780A (zh) 2010-10-20
WO2009073532A1 (en) 2009-06-11
US7996651B2 (en) 2011-08-09
KR101564693B1 (ko) 2015-10-30
EP2215544B1 (en) 2012-10-10
EP2215544A1 (en) 2010-08-11

Similar Documents

Publication Publication Date Title
ES2396800T3 (es) Microprocesador o microcontrolador potenciado
KR101531372B1 (ko) 개선된 마이크로프로세서 또는 마이크로컨트롤러
US10514922B1 (en) Transfer triggered microcontroller with orthogonal instruction set
Sweetman See MIPS run
ES2221282T3 (es) Sistema de procesamiento de datos con ejecucion condicional de instrucciones compuestas extendidas.
Guide Intel® 64 and ia-32 architectures software developer’s manual
ES2327058T3 (es) Invalidacion de almacenamiento, borrado de elementos de la memoria intermedia.
ES2680147T3 (es) Instrucción para cargar datos hasta una frontera de memoria especificada indicada por la instrucción
US7962725B2 (en) Pre-decoding variable length instructions
ES2820126T3 (es) Método y equipo para realizar una reorganización de bits de un vector
JP2004506263A (ja) 拡張レジスタモードで拡張レジスタセットにアクセスするcpu
ES2934513T3 (es) Sistemas y métodos para omitir operaciones matriciales intrascendentes
KR20010043826A (ko) 마이크로 컨트롤러 명령어 집합
TW434472B (en) Instruction encoding techniques for microcontroller architecture
BR102020019667A2 (pt) método e aparelho para criptografia de memória total multichave baseada em derivação de chave dinâmica
BRPI1005543A2 (pt) instruÇÕes de rotaÇço que completam a execuÇço sem a leitura do flag de transporte (carry flag)
KR101668314B1 (ko) 특수 뱅킹 명령어들을 갖는 마이크로컨트롤러
ES2725800T3 (es) Sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla
JP6143841B2 (ja) コンテキストスイッチを伴うマイクロコントローラ
TWI339354B (en) Microcontroller instruction set
EP3323039B1 (en) A method for enlarging data memory in an existing microprocessor architecture with limited memory addressing