Publicado el 2 de Marzo del 2019
792 visualizaciones desde el 2 de Marzo del 2019
58,5 KB
11 paginas
Creado hace 19a (18/10/2004)
Tutorial: CTU-005
Título: Introducción a Holtek
Autor: Sergio R. Caprile, Senior Engineer
Revisiones
Fecha
Comentarios
0
18/10/04
CTU-005, Introducción a Holtek
El presente tutorial se orienta a introducir a Holtek a los ingenieros y developers familiarizados con otras tecnologías,
de una forma práctica y concisa. Primero analizaremos la arquitectura de estos micros interesantes y luego haremos
algunas comparaciones con micros conocidos. Finalmente, haremos una breve descripción, con ejemplos, del uso de
los periféricos más comunes.
Arquitectura................................................................................................................................................................ 1
Comparación con un CISC conocido........................................................................................................................... 3
Motorola HC08 series JL3 y QY4........................................................................................................................... 3
Holtek series “Cost Effective”, “I/O” y “A/D”........................................................................................................ 3
Paralelo de hardware.............................................................................................................................................. 3
Paralelo de software............................................................................................................................................... 4
Interrupt desde un timer.................................................................................................................................... 4
Bifurcación (branch) según flag........................................................................................................................ 4
Salteo (skip) según flag..................................................................................................................................... 5
Modificar flag................................................................................................................................................... 5
Típico loop....................................................................................................................................................... 5
Sumar valor a variable 8 bits............................................................................................................................. 6
Sumar una variable a otra, 8 bits....................................................................................................................... 6
Memory move, inmediato 8 bits........................................................................................................................ 6
Memory move, directo 8 bits............................................................................................................................. 6
Memory move, inmediato 16 bits...................................................................................................................... 6
Memory move, directo 16 bits........................................................................................................................... 6
Cálculo en 16 bits: K = next_T - advance – COMP_K...................................................................................... 7
Máquina de estados.......................................................................................................................................... 7
Table read, tabla en RAM................................................................................................................................. 7
Table read, tabla en ROM................................................................................................................................. 8
Direccionamiento indirecto en RAM................................................................................................................. 8
Conversión binario a BCD................................................................................................................................ 8
Periféricos................................................................................................................................................................... 8
I/O ports................................................................................................................................................................ 8
Ej.: Uso del port A: bits 2 y 3 entradas, resto salidas......................................................................................... 9
8-bit Timer............................................................................................................................................................ 9
Ej.: config del timer para beep a ~1 KHz con clock de 4 MHz........................................................................... 9
Ej.: config del timer para interrupciones cada ~50 ms con clock de 4 MHz..................................................... 10
Ej.: config del timer para medición de ancho de pulso con clock de 4 MHz..................................................... 10
Ej.: config del timer para demora de ~10 ms con clock de 4 MHz................................................................... 10
16-bit Timer......................................................................................................................................................... 10
Conversor A/D..................................................................................................................................................... 10
Ej.: conversión de señal en AN0 (PB0) con cristal de 4 MHz, poleado.............................................................11
Ej.: conversión de señal en AN0 con cristal de 4 MHz, por interrupciones...................................................... 11
CTU-005
1
CTU-005, Introducción a Holtek
Presentamos a continuación la arquitectura de los micros de las series “Cost Effective”, “I/O” y “A/D”, de Holtek.
La arquitectura de Holtek es muy similar a la de PIC, sin embargo, en aquellos lugares en los que los usuarios de otros
micros se sienten incómodos con PIC, Holtek resulta agradable. La siguiente es una descripción enumerando aquellos
factores arquitectónicos standard que facilitan la comprensión:
Se basa en la arquitectura Harvard, dado que dispone de una memoria de instrucciones, y una de datos, con buses
separados y sin comunicación entre sí. Consecuencia de esta arquitectura es que en un llamado a subrutina o
interrupción, el procesador no puede guardar la dirección de retorno en la memoria de datos, para lo cual requiere
de un stack independiente, lo cual limita la cantidad de llamadas anidadas a la cantidad de niveles presentes en el
hardware stack (2, 4, etc), como muchos DSP. Por esta misma razón, estos procesadores no poseen intrucciones de
manejo de stack (PUSH, POP, etc).
Emplea pipelining, todas las instrucciones demoran un ciclo de máquina (cuatro ciclos de clock) en ejecutarse,
Utiliza técnicas de VLIW al incorporar los datos en la instrucción, es decir, la memoria de instrucciones es de un
excepto aquellas que obligan a purgar el pipeline, como instrucciones de salto.
ancho mayor, de modo de poder incluír constantes (valores inmediatos, direcciones de datos) en las instrucciones.
Por ejemplo, muchos micros de esta serie tienen un ancho de palabra de instrucciones de 14-bits. En este espacio se
distribuyen las más de 60 instrucciones disponibles, algunas de las cuales incluyen los 8 bits del dato
correspondiente (direccionamiento inmediato) o su dirección en memoria de datos (direccionamiento directo). Esto
limita la cantidad contigua de memoria de datos disponible a 256 bytes
.
28
La ALU puede realizar operaciones lógicas y aritméticas sobre cualquier variable en memoria de datos y el
acumulador (registro A). El resultado de la operación se especifica en el acumulador o la memoria de datos, según
la operación; esto atenúa el inconveniente de disponer de sólo un registro en la CPU (respecto de otros RISC y
algunos CISC), dado que puede hacerse que una determinada operación no altere el acumulador, guardando el
resultado en la memoria de datos.
Sólo es posible escribir en memoria de datos desde la ALU (el resultado de una operación) o el acumulador, no es
posible cargar un dato inmediato en memoria sino que es necesario cargarlo primero en el registro A y luego
cargar éste en memoria.
Dispone de registros para funciones especiales (SFR, Special Function Registers) mapeados en la memoria de
datos, el registro de estado (STATUS) de la CPU, el acumulador (ACC) y la parte baja del Program Counter (PCL)
se ven como un SFR más. El estado de la última operación se obtiene accediendo a la posición de STATUS en
memoria de datos, como una variable más.
La memoria de datos se direcciona solamente de forma directa, dado que carece de punteros; sin embargo,
mediante el uso de un par de SFRs, permite el acceso indirecto a la memoria de datos de una forma no demasiado
complicada: un SFR contiene la dirección a acceder y otro "representa" la operación en sí, es decir, el valor del
registro MP (Memory Pointer) es la dirección del dato, y al operar sobre el registro IAR (Indirect Access Register)
se opera sobre el dato en la dirección que indica FSR.
La memoria de instrucciones es de 14-bits, 15-bits, o 16-bits de ancho, y hacen falta algunos de ellos para indicar
que la instrucción es de control de flujo de programa (call, jump, etc) , empleándose el resto para especificar la
dirección. El ancho de palabra de programa es coincidente con la capacidad de memoria de programa, por lo que
la totalidad de la misma es direccionable
Comentarios de: Introducción a Holtek (0)
No hay comentarios