Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin
PicoBlaze es un micro controlador de 8 bits con arquitectura RISC.
Caractersticas
Registros de datos de 16 bits de ancho. Instrucciones de 1K en el chip programable, con carga automtica durante configuracin de la FPGA. Unidad aritmtico-lgica amplia (ALU) con acarreo e indicador Zero en las banderas. 64 bytes de memoria RAM interna. 256 puertos de entrada y salida para fcil expansin y mejora. 31 ubicaciones CALL/RETURN automtico en pila. Rendimiento predecible, siempre dos ciclos de reloj por instruccin, hasta 200 MHz o 100 MIPS en un Virtex-II Pro FPGA. Respuesta de interrupcin rpida, el peor de los casos 5 ciclos de reloj. Optimizado para arquitectura Xilinx Spartan3 slo 96 rebanadas y 0,5 a 1 bloque de RAM. Soporte en arquitecturas Spartan-6 y Virtex 6 FPGA.
Unidad aritmtico-lgica
La unidad aritmtico-lgica realiza todos los clculos del micro controlador incluyendo: Las operaciones aritmticas bsicas, como sumas y restas Las operaciones lgicas a nivel de bits, tales como AND, OR y XOR Aritmtica compara bit a bit y operaciones de prueba Todas las operaciones se realizan utilizando un operando proporcionada por cualquier registro especificado (SX). El resultado se devuelve al mismo registro especificado (SX). Si una instruccin requiere de un segundo operando, a continuacin, el segundo operando es o bien un segundo registro (SY) de 8 bits inmediata a la constante (kk).
Banderas
Operaciones de ALU afectan a las banderas ZERO y Acarreo. La bandera de cero indica que el resultado de la ltima operacin result en cero. El indicador de acarreo indica varias condiciones, dependiendo de la ltima instruccin ejecutada. La bandera INTERRUPT_ENABLE permite la entrada de interrupcin.
Entradas / Salidas
Los puertos de entrada / salida extienden las capacidades del micro controlador PicoBlaze y le permiten conectarse a un conjunto de perifricos de encargo o a otra lgica FPGA. El micro controlador soporta hasta 256 puertos de entrada y 256 puertos de salida o una combinacin de puertos de entrada / salida. La salida ID_de_Puerto proporciona la direccin del puerto. Durante una ENTRADA operacin, el micro controlador PicoBlaze lee datos desde el puerto IN_PORT a un registro especfico, SX. Durante una operacin de salida, el micro controlador PicoBlaze escribe el contenido de un registro SX, al puerto OUT_PORT.
Contador de Programa
El contador de programa (PC) apunta a la siguiente instruccin a ejecutar. Por defecto, el PC incrementa automticamente a la siguiente posicin de la instruccin al ejecutar una instruccin. Slo las instrucciones JUMP, CALL, RETURN, RETURNI la interrupcin y Reset de eventos modificar el comportamiento predeterminado. El PC de 10 bits compatible con un espacio mximo de 1024 instrucciones (000 a 3FF hex). Si el PC alcanza la parte superior de la memoria en hexadecimal 3FF, se da la vuelta a la ubicacin 000.
Pila CALL/RETURN
La CALL/RETURN almacena hasta 31 direcciones de instruccin, lo que permite secuencias anidadas permitiendo llamar hasta 31 niveles de profundidad. Dado que la pila tambin se utiliza durante para interrumpir la operacin, por lo menos uno de estos niveles debe reservarse cuando las interrupciones son habilitadas. La pila se implementa como un bfer de circulacin separada. Cuando la pila est llena, se sobrescribe el valor ms antiguo. En consecuencia, no hay instrucciones para el control de la pila o la pila puntero. No se requiere ninguna memoria de programa para la pila.
Interrupciones
El micro controlador PicoBlaze tiene una entrada de interrupcin opcional, permitiendo al micro controlador controlar los eventos externos asncronos. En este contexto, "asncrono" se refiere a las interrupciones que ocurren en cualquier momento durante un ciclo de instruccin.
Reset
El micro controlador PicoBlaze se restablece automticamente inmediatamente despus de que el proceso de configuracin de la FPGA se completa. Despus de la configuracin, la entrada RESET hace que el procesador regrese al estado inicial. El PC se reinicia a la direccin 0, las banderas se borran, las interrupciones son desactivadas y la pila de CALL / RETURN se restablece. Los registros de datos y la memoria RAM bloc de notas no se ven afectados por Reset.
Direccin Input
Descripcin Puerto de datos de entrada: Presentar los datos de entrada vlidos en este puerto durante una instruccin INPUT. La informacin se captura en el flanco ascendente de CLK. Interrupcin de entrada: Si la bandera INTERRUPT_ENABLE se establece por el cdigo de la aplicacin, genera un evento de alarma al afirmar esta entrada alta durante al menos dos ciclos de reloj. Si la bandera INTERRUPT_ENABLE se borra, se ignora esta entrada. Restablecer entrada: Para reiniciar el micro controlador PicoBlaze y generar un evento de restauracin, Afirmar esta entrada de alta durante al menos un ciclo de CLK. Entrada Reloj: La frecuencia puede variar de DC a la mxima de funcionamiento de operacin reportada por el software de desarrollo de Xilinx ISE. Todos los elementos sincrnicos son sincronizados desde el borde ascendente del reloj. No hay requisitos del ciclo de reloj en la actividad ms all de los requisitos mnimos de ancho de pulso de la FPGA. Puerto de salida de datos: Los datos de salida aparece en este puerto durante dos ciclos de CLK durante una Instruccin de salida. Captura de datos de produccin dentro de la FPGA en el flanco ascendente CLK cuando WRITE_STROBE es alta. Port Address: La direccin del puerto de E/S aparece en este puerto durante dos ciclos CLK
INTERRUPT
Input
RESET
Input
CLK
Input
OUT_PORT[7:0]
Output
PORT_ID[7:0]
Output
READ_STROBE
Output
WRITE_STROBE
Output
INTERRUPT_ACK
Output
en una entrada o una instruccin de salida. Leer estroboscpica: Cuando afirmacin alta, esta seal indica que los datos de entrada en la IN_PORT [07:00] Puerto fue capturado a los datos especificados se registran durante una ENTRADA de la Instruccin. Esta seal se afirm en el segundo ciclo de CLK de la ENTRADA de dos tiempos de la instruccin. Esta seal se utiliza normalmente para reconocer las operaciones de lectura de FIFO. Escribir Strobe: Cuando afirmado alta, esta seal valida los datos de salida de la OUT_PORT puerto [07:00] durante una instruccin de salida. Esta seal se afirma en el segundo ciclo de CLK de la instruccin OUTPUT de dos tiempos. Captura de datos de salida dentro de la FPGA en el flanco ascendente CLK cuando WRITE_STROBE es alta. Reconocimiento de interrupcin: cuando afirm High, esta seal de reconocimiento de que Ocurri evento de interrupcin. Esta seal es afirmada durante el segundo ciclo de CLK del evento de interrupcin de dos tiempos. Esta seal se utiliza opcionalmente para borrar la fuente de la entrada de interrupcin.
Descripcin
Add register sX with literal kk Add register sX with register sY Add register sX with literal kk with CARRY bit Add register sX with register sY with CARRY bit Bitwise AND register sX with literal kk Bitwise AND register sX with register sY Unconditionally call subroutine at aaa If CARRY flag set, call subroutine at aaa If CARRY flag not set, call subroutine at aaa If ZERO flag not set, call subroutine at aaa If ZERO flag set, call subroutine at aaa Compare register sX with literal kk. Set CARRY and ZERO flags as appropriate. Registers are unaffected. Compare register sX with register sY. Set CARRY and ZERO flags as appropriate. Registers are unaffected. Disable interrupt input Enable interrupt input Asynchronous interrupt input. Preserve flags and PC. Clear INTERRUPT_ENABLE flag. Jump to interrupt vector at address 3FF.
Funcin
sX sX + kk Sx sX + sY sX sX + kk + CARRY sX sX + sY + CARRY sX sX AND kk sX sX AND sY TOS PC PC aaa If CARRY=1, {TOS PC,PC aaa} If CARRY=0, {TOS PC,PC aaa} If ZERO=0, {TOS PC,PC aaa} If ZERO=1, {TOS PC,PC aaa} If sX=kk, ZERO 1 If sX<kk, CARRY 1 If sX=sY, ZERO 1 If sX<sY, CARRY 1 INTERRUPT_ENABLE 0 INTERRUPT_ENABLE 1 Preserved ZERO ZERO Preserved CARRY INTERRUPT_ENABLE 0 TOS PC PC 3FF
ZERO
? ? ? ? ? ? ?
CARRY
? ? ? ? 0 0 ?
sX RAM[(sY)]
sX RAM[ss] PORT_ID sY sX IN_PORT PORT_ID pp sX IN_PORT PC aaa If CARRY=1, PC aaa If CARRY=0, PC aaa If ZERO=0, PC aaa If ZERO=1, PC aaa sX kk sX sY sX sX OR kk sX sX OR sY PORT_ID sY OUT_PORT sX PORT_ID pp OUT_PORT sX PC TOS+1 If CARRY=1, PC TOS+1 If CARRY=0, PC TOS+1 If ZERO=0, PC TOS+1 If ZERO=1, PC TOS+1 PC TOS ZERO Preserved ZERO CARRY Preserved CARRY INTERRUPT_ENABLE 0 PC TOS ZERO Preserved ZERO CARRY Preserved CARRY sX {sX[6:0],sX[7]} CARRY sX[7] sX {sX[0],sX[7:1]} CARRY sX[0]
? ? ?
0 0 ?
RL sX RR sX
? ?
? ?
SL0 sX SL1 sX SLA sX SLX sX SR0 sX SR1 sX SRA sX SRX sX STORE sX, (sY) (STORE sX, sY) STORE sX, ss SUB sX, kk SUB sX, sY SUBCY sX, kk (SUBC) SUBCY sX, sY (SUBC) TEST sX, kk
Shift register sX left, zero fill Shift register sX left, one fill Shift register sX left through all bits, including CARRY Shift register sX left. Bit sX[0] is unaffected. Shift register sX right, zero fill Shift register sX right, one fill Shift register sX right through all bits, including CARRY Arithmetic shift register sX right. Sign extend sX. Bit sX[7] Is unaffected. Write register sX to scratchpad RAM location pointed to by register sY Write register sX to scratchpad RAM location ss Subtract literal kk from register sX Subtract register sY from register sX Subtract literal kk from register sX with CARRY (borrow) Subtract register sY from register sX with CARRY (borrow) Test bits in register sX against literal kk. Update CARRY and ZERO flags. Registers are unaffected. Test bits in register sX against register sX. Update CARRY and ZERO flags. Registers are unaffected. Bitwise XOR register sX with literal kk Bitwise XOR register sX with register sY
sX {sX[6:0],0} CARRY sX[7] sX {sX[6:0],1} CARRY sX[7] sX {sX[6:0],CARRY} CARRY sX[7] sX {sX[6:0],sX[0]} CARRY sX[7] sX {0,sX[7:1]} CARRY sX[0] sX {1,sX[7:1]} CARRY sX[0] sX{CARRY,sX[7:1]} CARRY sX[0] sX {sX[7],sX[7:1]} CARRY sX[0] RAM[(sY)] sX RAM[ss] sX sX sX kk sX sX sY sX sX kk -CARRY sX sX sY -CARRY
? 0 ? ? ? 0 ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ?
If (sX AND kk) = 0, ZERO 1 CARRY odd parity of (sX AND kk) If (sX AND sY) = 0, ZERO 1 CARRY odd parity of (sX AND kk) sX sX XOR kk sX sX XOR sY
TEST sX, sY
? ?
0 0
Procesamiento de Datos
Todas las instrucciones de procesamiento de datos operan en cualquiera de los 16 registros de propsito general. Slo las instrucciones de procesamiento de datos modifican el CERO o CARRY banderas segn corresponda a la instruccin. Las instrucciones de procesamiento de datos se componen de los siguientes tipos: Instrucciones de Lgica Instrucciones aritmticas Pruebe y compare las instrucciones Desplazamiento y rotacin
Complementar/Invertir Registros
El micro controlador PicoBlaze no tiene una instruccin especfica para invertir los bits individuales en el registro sX. Sin embargo, el XOR sX, instruccin FF realiza la operacin equivalente.
Complement:
; XOR sX, FF invierte todos los bits en el registro sX, parecido al complemento LOAD s 0 , A A ; load register s0 = 10101010 XOR s 0 , F F ; invert contents s0 = 01010101
Borrar Registro
El micro controlador PicoBlaze no tiene una instruccin especfica para borrar un registro especfico. Sin embargo, el XOR sX, instruccin sX realiza la operacin equivalente. XORing registro sX con ella misma borra registro sX y establece el indicador ZERO.
XOR sX, SX; limpia registro sX, pone ZERO en la bandera
Set Bit
El micro controlador PicoBlaze no tiene una instruccin especfica para establecer un bit individual o bits dentro de un registro especfico. Sin embargo, la instruccin OR realiza la operacin equivalente.
set_bit:
Clear Bit
El micro controlador PicoBlaze no tiene una instruccin especfica para borrar un bit individual o bits dentro de un registro especfico. Sin embargo, la instruccin AND realiza la operacin equivalente.
clear_bit:
Interrupciones
El procesador PicoBlaze proporciona una nica seal de entrada de interrupcin. Si la aplicacin requiere mltiples seales de interrupcin, se combinan las seales usando la lgica FPGA simples para formar una seal de entrada de alarma individual. Despus del reinicio, la entrada de interrupcin est desactivada y debe ser activada a travs de la instruccin de habilitacin de interrupcin. Para deshabilitar las interrupciones en cualquier punto del programa, basta con emitir una instruccin DISABLE INTERRUPT.
Una vez activada, la seal de entrada de interrupcin se debe aplicar por lo menos dos ciclos de reloj para garantizar que se reconoce, lo que genera un evento de alarma. Una interrupcin activa hace que el procesador PicoBlaze ejecute inmediatamente el 3FF LLAMADA a instruccin inmediatamente despus de completar la instruccin que se est ejecutando actualmente. La llamada a la Instruccin 3FF es una llamada a la subrutina a la ltima posicin de la memoria del programa. La instruccin en la ltima ubicacin define cmo el cdigo de la aplicacin debe manejar la interrupcin. Tpicamente, la instruccin en el lugar 3FF es una posicin de salto a una rutina de servicio de interrupcin (ISR). El comando especial returni asegura que el final de una rutina de servicio de interrupcin restaura el estado de los indicadores y controles al permitir que las futuras interrupciones. Cuando el returni ejecuta la instruccin, los valores de PC guardados en la pila CALL / RETURN se vuelve a cargar automticamente al registro PC. Del mismo modo, las banderas cero y entregamos no han restaurado el flujo del programa vuelve a la instruccin que sigue a la instruccin donde se realiz la interrupcin. La entrada de interrupcin no es reconocido hasta que el
En las funciones de tiempo-crticos o reas en que la previsibilidad absoluta es necesario, deshabilite temporalmente el Interrumpir. Vuelva a activar la alarma de entrada cuando la funcin de tiempo crtico es completa. Siempre regresa de una sub-rutina llame al RETURN. La entrada de deshabilitado. interrupcin es automticamente
El vector de interrupcin es siempre situado en la ubicacin ms significativa de la memoria, donde todos los bits de direccin son queridos. Salta a la interrupcin de la rutina de servicio.
1.-De forma predeterminada, la entrada de interrupcin est desactivada. La instruccin de habilitacin de interrupcin debe ejecutar antes de que se reconoce la interrupcin. 2.-En este ejemplo, las interrupciones estn habilitadas y el micro controlador se est ejecutando la entrada S1, 01 instrucciones. Simultneamente a la ejecucin de esta instruccin, la interrupcin llega a la entrada de interrupcin. El micro controlador no acta en la interrupcin hasta que se termina de ejecutar la entrada S1 de 01 instrucciones. 3.- El micro controlador reconoce la interrupcin y sustituir a la ADD s0, s1 instruccin. El PC actual, que apunta a la instruccin ADD s0 s1, se empuja en el CALL / pila RETURN. Del mismo modo, se conservan las banderas CERO y seguir. Por otra parte, la bandera INTERRUPT_ENABLE se borra desactivando cualquier otra interrumpe. Por ltimo, el PC se carga con todas las (3FF) y la PicoBlaze micro controlador realiza una llamada de rutina de servicio de interrupcin a la ltima posicin en el tienda de instrucciones. Si utiliza una RAM bloque 1Kx18 para el almacn de la instruccin, el ltimo lugar se 3FF. Si el uso del almacenamiento de instruccin ms pequeo, entonces el vector de interrupcin se encuentra todava en la ltima ubicacin de instrucciones. El micro controlador tambin afirma la Salida INTERRUPT_ACK, lo que indica que se est reconociendo la interrupcin.
4.- El vector de interrupcin siempre se encuentra en la ltima ubicacin en el almacn de instrucciones. En este ejemplo, el programa salta a la rutina de servicio de interrupcin (ISR) a travs del SALTO isr instruccin. 5.- Cuando se haya completado, salga de la rutina de servicio de interrupcin (ISR) con el returni especial instruccin. No utilice la instruccin RETURN, que se utiliza con normalidad subrutina llamada. Los returni Habilitar todos los retornos de la rutina y de servicio de interrupcin para volver a habilitar la entrada de interrupcin, que se desactiva automticamente cuando se reconoci la interrupcin. Usando returni DISABLE Tambin regresa a la interrupcin rutina de servicio, pero deja la entrada de interrupcin deshabilitado. 6.- La instruccin returni restaura las banderas CERO y seguir conservados guardan durante el paso (3). Del mismo modo, la instruccin returni aparece la parte superior de la LLAMADA / RETORNO pila en el PC, lo que hace que el micro controlador reanude la ejecucin del programa de instruccin que se adelant por la interrupcin, ADD s0, s1 en este ejemplo.