Sunteți pe pagina 1din 7

Página 2

Página 3
Manual KCPSM3 3
Garantía limitada y exención de responsabilidad . Estos diseños se proporcionan "tal cual". Xilinx y sus licenciantes hacen y
usted no recibe garantías o condiciones, expresas, implícitas, estatutarias o de otro tipo, y Xilinx niega específicamente cualquier
garantía implícita de comerciabilidad, no infracción o idoneidad para un propósito particular. Xilinx no garantiza que las
funciones contenidas en estos diseños cumplirán con sus requisitos, o que la operación de estos diseños será ininterrumpida o libre
de errores, o que los defectos en los diseños serán corregidos. Además, Xilinx no garantiza ni hace ninguna representación con
respecto al uso o los resultados del uso de los diseños en términos de exactitud, precisión, confiabilidad u otros.
Limitación de responsabilidad . En ningún caso Xilinx ni sus licenciantes serán responsables de ninguna pérdida de datos, lucro
cesante, costo o adquisición de bienes o servicios sustitutos, o por daños especiales, incidentales, consecuentes o indirectos que
surjan del uso u operación de los diseños o la documentación que lo acompaña, sin importar su causa y sobre cualquier teoría de
responsabilidad. Esta limitación se aplicará incluso si
Xilinx ha sido advertido de la posibilidad de tal daño. Esta limitación se aplicará no obstante el fracaso de lo esencial propósito de
cualquier remedio limitado aquí.
Este módulo no es compatible con el soporte técnico general de Xilinx como producto oficial de Xilinx.
Remita cualquier problema inicialmente al proveedor del módulo.
Cualquier problema o elemento que se sienta de valor en la mejora continua de KCPSM3 será recibido con gratitud por el autor.
Ken Chapman
Ingeniero Senior Staff - Especialista en Aplicaciones
Correo electrónico: chapman@xilinx.com
Limitaciones
El autor también estaría complacido de saber de cualquier persona que use KCPSM o KCPSM2 con información sobre su
aplicación y
cómo estas macros han sido útiles.

Página 4
KCPSM3 Manual 4
¿Qué es KCPSM3?
KCPSM3 es un microcontrolador de 8 bits muy simple, principalmente para los dispositivos Spartan-3, pero también es adecuado
para su uso en Virtex-II y Virtex.
Dispositivos IIPRO. Aunque podría utilizarse para el procesamiento de datos, es más probable que se emplee en aplicaciones que
requieren
Máquina de estado compleja, pero no crítica en el tiempo. Por lo tanto, tiene el nombre de '(K) máquina de estado programable
codificada constante'.
Esta versión revisada de la popular macro KCPSM aún se ha desarrollado con un factor dominante que se mantiene por encima de
todos los demás:
¡Tamaño! El resultado es un microcontrolador que ocupa solo 96 Spartan-3 Slices, que es solo el 5% del dispositivo XC3S200 y
menos más del 0.3% del dispositivo XC3S5000. Junto con esta pequeña cantidad de lógica, se usa una RAM de bloque único para
formar una tienda ROM. para un programa de hasta 1024 instrucciones. Incluso con tales restricciones de tamaño, el rendimiento
es respetable en aproximadamente 43 a 66 MIPS según el tipo de dispositivo y el grado de velocidad.

Una de las características más interesantes del KCPSM3 es que está totalmente integrado en el dispositivo y no requiere soporte
externo.
El hecho de que CUALQUIER lógica se pueda conectar al módulo dentro del dispositivo Spartan-3 o Virtex-II significa que
cualquier se pueden agregar características para proporcionar la máxima flexibilidad. No es tanto lo que hay dentro del módulo
KCPSM3 lo que lo hace útil, pero el ambiente en el que vive.

Página 5
Manual KCPSM3 5
¡KCPSM3 es pequeño!
KCPSM3 se suministra como VHDL y como una macro suave precompilada que se maneja mediante las herramientas de lugar y
ruta para fusionarse con la lógica de un diseño. En dispositivos grandes, ¡el KCPSM3 es virtualmente gratis! El potencial de
colocar múltiples KCPSM3 dentro de un solo diseño es obvio. Siempre que se requiera una máquina de estado compleja no
crítica, esta macro es fácil de insertar y simplifica enormemente el diseño.

96 rebanadas
5% de XC3S200
Dispositivo Spartan-3
~ 87MHz en -4
Grado de velocidad
~ 43.5 MIPS
Esta trama del visor del editor FPGA muestra el
macro en aislamiento dentro del XC3S200
Spartan-3 dispositivo.

Página 6
Manual KCPSM3 6
¡KCPSM3 es pequeño!
Página 7
Manual KCPSM3 7

Tamaño y rendimiento

Página 8
KCPSM3 Manual 8
Arquitectura KCPSM3
Página 9
Manual KCPSM3 9
Conjunto de características KCPSM3

Página 10
Manual KCPSM3 10
Conjunto de características KCPSM3
ALU
La unidad de lógica aritmética (ALU) proporciona muchas operaciones simples que se esperan en una unidad de procesamiento
de 8 bits.
Todas las operaciones se realizan usando un operando proporcionado desde cualquier registro (sX). El resultado se devuelve al
mismo registro.
Para las operaciones que requieren un segundo operando, se puede especificar un segundo registro (sY) o un valor constante de 8
bits (kk). suministrado. La capacidad de especificar cualquier valor constante sin penalización adicional para el tamaño o el
rendimiento del programa mejora la conjunto de instrucciones simple, es decir, la capacidad de 'ADD 1' es la misma que una
operación de INCREMENTO dedicado.
Adición (ADD) y Resta (SUB) tienen la opción de incluir el indicador de acarreo como entrada (ADDCY y SUBCY) para el
soporte de operaciones aritméticas que requieren más de 8 bits.
Los operadores de bits LOAD, AND, OR y XOR proporcionan la capacidad de manipular y probar valores.
Completo grupo SHIFT y ROTATE.
Las instrucciones COMPARE y TEST permiten que los contenidos del registro sean probados sin alterar su contenido y
determinar PARITY.
Indicadores y control de flujo del programa
Los resultados de las operaciones de ALU determinan el estado de las banderas ZERO y CARRY. La bandera ZERO se
establece siempre que la ALU el resultado tiene todos los bits reseteados (00 16 ). La bandera de TRANSPORTE se establece
cuando hay un desbordamiento de una operación aritmética. También se usa para captura la broca que se sacó de un registro
durante el cambio y gira las instrucciones. Durante una instrucción de PRUEBA, la bandera de acarreo se usa para indique si el
resultado temporal de 8 bits tiene ODD PARITY.
Este estado de los indicadores se puede utilizar para determinar la secuencia de ejecución del programa utilizando condicional y
no condicional instrucciones de control de flujo del programa. Los comandos JUMP se usan para especificar direcciones
absolutas (aaa) dentro del espacio del programa.
Los comandos CALL y RETURN proporcionan recursos secundarios para las secciones de código comúnmente utilizadas. Una
llamada se realiza a un la dirección absoluta (aaa) y una pila de contador de programa interno conservan la dirección asociada
requerida por la RETORNO instrucción. La pila admite hasta 31 niveles de subrutina anidada.
Reiniciar
La entrada RESET fuerza al procesador a regresar al estado inicial. El programa se ejecutará desde la dirección '000' e
interrumpirá estar deshabilitado Los indicadores de estado y la pila CALL / RETURN también se reiniciarán. Tenga en cuenta
que los contenidos del registro no se ven afectados.

Página 11
Manual KCPSM3 11
Conjunto de características KCPSM3
De entrada y salida
KCPSM3 tiene efectivamente 256 puertos de entrada y 256 puertos de salida. El puerto al que se accede se indica con un valor
de dirección de 8 bits provisto en el 'PORT_ID'. La dirección del puerto se puede especificar en el programa como un valor
absoluto (pp), o puede ser indirectamente especificado como el contenido de cualquiera de los 16 registros ( (sY) ).
Durante una operación 'INPUT', el valor proporcionado en el puerto de entrada se transfiere a cualquiera de los 16 registros. Una
operación de entrada es indicada por un pulso emitido en READ_STROBE. No siempre es necesario utilizar esta señal en la
interfaz de entrada lógica, pero puede ser útil indicar que los datos han sido adquiridos por el procesador. Durante una
'SALIDA', el contenido de cualquiera de los 16 registros se transfiere al puerto de salida. Una operación de salida se indica
mediante un pulso emitido en
WRITE_STROBE. Esta señal estroboscópica será utilizada por la lógica de la interfaz para asegurar que solo los datos válidos
pasen a los externos. Sistemas. Normalmente, WRITE_STROBE se utilizará como habilitación de reloj o escritura (ver "LEER
Y ESCRIBIR STROBES").
Interrumpir
El procesador proporciona una sola señal de entrada de INTERRUPCIÓN. La lógica simple se puede usar para combinar señales
múltiples si es necesario.
Las interrupciones están desactivadas (enmascaradas) de forma predeterminada, y luego se habilitan y deshabilitan bajo el
control del programa. Una fuerza de interrupción activa
KCPSM3 para iniciar un 'CALL 3FF' (una llamada de subrutina a la última ubicación de la memoria del programa) desde donde
el usuario puede definir un vector de salto adecuado a una Rutina de Servicio de Interrupción (ISR). En este momento, se genera
un pulso en la salida INTERRUPT_ACK, los indicadores ZERO y CARRY se conservan automáticamente y cualquier
interrupción adicional se desactiva. La instrucción 'RETURNI' asegura que el final de un ISR restaura el estado de los
indicadores y especifica si las interrupciones futuras se habilitarán o deshabilitarán.
Memoria Scratch Pad
Esta es una memoria interna de 64 bytes de propósito general. El contenido de cualquiera de los 16 registros se puede escribir en
cualquiera de los 64 ubicaciones usando una instrucción TIENDA. La instrucción FETCH complementaria permite el contenido
de cualquiera de las 64 memorias ubicaciones para escribir en cualquiera de los 16 registros. Esto permite que se mantenga una
cantidad mucho mayor de variables dentro del límitedel procesador y tiende a reservar todo el espacio de E / S para entradas
reales y señales de salida.
La dirección de 6 bits para especificar una ubicación de memoria de libreta se puede especificar en el programa como un valor
absoluto (ss), o puede ser indirectamente especificado como el contenido de cualquiera de los 16 registros (sY). Solo se utilizan
los 6 bits inferiores del registro, por lo que debe tenerse cuidado tomado para no exceder el rango 00 - 3F 16 de la memoria
disponible.

Pagina 12
Manual KCPSM3 12
Codificado constante (k)
El KCPSM3 es en muchos sentidos una máquina basada en constantes ...
Valores constantes
Los valores constantes pueden especificarse para su uso en la mayoría de los aspectos de un programa ...
• Valor de datos constante para usar en una operación de ALU.
• Dirección de puerto constante para acceder a una pieza específica de información o lógica de control externa a KCPSM3.
• Valores de dirección constantes para controlar la secuencia de ejecución del programa.
• Valores de dirección constantes para acceder a la memoria interna del bloc de notas.
La codificación del conjunto de instrucciones KCPSM3 se ha diseñado para permitir que las constantes se especifiquen en
cualquier palabra de instrucciones. Por lo tanto el uso de una constante no conlleva una sobrecarga adicional al tamaño del
programa o su ejecución. Esto efectivamente extiende el simple conjunto de instrucciones con toda una gama de 'instrucciones
virtuales'.
Ciclos constantes
Todas las instrucciones bajo todas las condiciones ejecutarán más de 2 ciclos de reloj.
Dicha tasa de ejecución constante es de gran valor cuando se determina el tiempo de ejecución de un programa, particularmente
cuando está integrado en una situación de tiempo real.
Longitud constante del programa
La longitud del programa es de 1024 instrucciones y, por lo tanto, se ajusta al formato 1024x18 de un solo Spartan-3, Virtex-II o
Bloque Virtex-IIPRO RAM. Esto significa que todos los valores de dirección se especifican como 10 bits contenidos dentro de
la codificación de la instrucción
(el ensamblador admite etiquetas de línea para simplificar la escritura de programas). El tamaño de la memoria fija promueve un
nivel constante de rendimiento del módulo. Consulte también 'Compartir espacio de programa'.

Página 13
Manual KCPSM3 13
Usando KCPSM3 (VHDL)
El principal método por el cual se usará KCPSM3 es en un flujo de diseño VHDL. La macro KCPSM3 se proporciona como
fuente VHDL
(kcspm3.vhd) que se ha escrito para proporcionar una implementación óptima y predecible en un Spartan-3 o Virtex-II (PRO)
dispositivo. El código es adecuado para la implementación y simulación de la macro. Ha sido desarrollado y probado usando
XST para implementación y ModelSim para simulación. El código no debe ser modificado de ninguna manera.
Página 14
Manual KCPSM3 14
Conexión de la ROM del programa
El principal método por el cual se utilizará la ROM del programa KCPSM3 es en un flujo de diseño VHDL. El ensamblador
KCPSM3 lo hará genere un archivo VHDL en el que se define un bloque RAM y sus contenidos iniciales (consulte las notas
del ensamblador para obtener más detalles). Esta VHDL se puede utilizar para la implementación y simulación del
procesador. Ha sido desarrollado y probado usando XST para implementación y ModelSim para simulación.

Nota: El nombre de la ROM del programa (que se muestra como 'prog_rom' en los ejemplos anteriores) dependerá del nombre
de su programa.
Por ejemplo, si su archivo de programa se llamó 'phone.psm', el ensamblador generará un archivo de definición de ROM de
programa llamado
'phone.vhd'.
Para ayudar con el desarrollo, también se proporciona un archivo VHDL llamado 'embedded_kcpsm3.vhd' en el que se
encuentra la macro KCPSM3. conectado a su ROM del programa de bloque asociado. Este módulo completo puede integrarse
en la aplicación de diseño, o simplemente utilizado para cortar y pegar la declaración de componente y la información de
instanciación en su propio código.
Nota: Se recomienda que 'embedded_kcpsm3.vhd' se use para la generación de un símbolo esquemático de ECS.

Página 15
Manual KCPSM3 15
Verilog y System Generator

S-ar putea să vă placă și