.::VERILOG - MICROPROCESADOR PICOBLAZE::.

MATPIC.COM

VERILOG - MICROPROCESADOR PICOBLAZE

MICROPROCESADOR PICOBLAZE

Resumen

El presente artículo muestra una visión global de las características del microprocesador PicoBlazeTM, así como el conjunto de instrucciones para su programación: sintaxis KCPSM3 y sintaxis pBlazeIDE. Además, presenta las herramientas destinadas a la compilación de los programas, así como un breve ejemplo ejecutado en Xilinx System Generador, herramienta de Matlab/Simulink.

Abstract

This article shows a whole vision of the characteristics of the microprocessor PicoBlazeTM, as well as the set of instructions for its programming: syntax KCPSM3 and syntax pBlazeIDE. It also presents the tools used to the compilation of the programs, as well as a brief example ran in Xilinx System Generator, tool of Matlab/Simulink.

¿Qué es PicoBlaze?

El microcontrolador Picoblaze es un Soft Core de 8 bits, diseñado para ser empotrado en dispositivos FPGAs como Spartan™-3, Virtex™-II, y Virtex-IIPro™.

El núcleo del microcontrolador Picoblaze es completamente empotrado dentro de la una tarjeta FPGA y no requiere recursos externos. Este microprocesador es extremadamente sensible y su funcionalidad básica es fácilmente extendida y reforzada por su comunicación con el exterior a través de sus puertos de entrada y salida.

Este microprocesador ha mantenido una evolución de arquitecturas (KCPSM, KCPSM2 y KCPSM3), cada una perfeccionada para cierta tecnología de FPGAs.

picoblaze
Fig. 1. Módulo PicoBlaze y bloque de memoria.

 

Conjunto de Instrucciones

Para efecto de la programación del microcontrolador, se cuenta con dos conjuntos de instrucciones. Estos son la sintaxis KCPSM3 y la sintaxis pBlazIDE.

El conjunto de instrucciones de PicoBlaze se puede clasificar de la siguiente manera:

Instrucciones de control de programa
JUMP aa
JUMP Z,aa
JUMP NZ,aa
JUMP C,aa
JUMP NC,aa
CALL aa
CALL Z,aa
CALL NZ,aa
CALL C,aa
CALL NC,aa
RETURN
RETURN Z
RETURN NZ
RETURN C
RETURN NC

Instrucciones Lógicas
LOAD sX,kk
AND sX,kk
OR sX,kk
XOR sX,kk
LOAD sX,sY
AND sX,sY
OR sX,sY
XOR sX,sY

Instrucciones aritméticas
ADD sX,kk
ADDCY sX,kk
SUB sX,kk
SUBCY sX,kk
ADD sX,sY
ADDCY sX,sY
SUB sX,sY
SUBCY sX,sY

Instrucciones de desplazamiento
SR0 sX
SR1 sX
SRX sX
SRA sX
RR sX
SL0 sX
SL1 sX
SLX sX
SLA sX
RL sX

Instrucciones de Entrada/Salida
INPUT sX,pp
INPUT sX,(sY)
OUTPUT sX,pp
OUTPUT sX,(sY)

Instrucciones de interrupción
RETURNI ENABLE
RETURNI DISABLE
ENABLE INTERRUPT
DISABLE INTERRUPT

La siguiente tabla presenta las diferencias entre la sintaxis KCPSM3 y pBlazeIDE:

KCPSM3 PBlazeIDE
RETURN RET
RETURN C RET C
RETURN NC RET NC
RETURN Z RET Z
RETURN NZ RET NZ
RETURNI ENABLE RETI ENABLE
RETURNI DISABLE RETI DISABLE
ADDCY ADDC
SUBCY SUBC
INPUT SX,(SY) IN SX,SY
INPUT SX, KK IN SX, KK
OUTPUT SX, (SY) OUT SX,SY
OUTPUT SX, KK OUT SX,KK
ENABLE INTERRUPT EINT
DISABLE INTERRUPT DINT
COMPARE COMP
STORE SX, (SY) STORE SX, SY
FETCH SX, (SY) FETCH SX, SY

1. “X” y “Y” se refieren al número de registro “S” en el rango de 0 a F.
2. “kk” representa un valor constante en el rango de 00 a FF.
3. “aa” representa una dirección en el rango de 00 a FF.
4. “pp” representa la dirección de un puerto en el rango de 00 a FF.

Ensambladores para Picoblaze

Para ensamblar nuestro programa disponemos de cuatro métodos: tres para la sintaxis KCPSM3 y uno para la sintaxis pBlazeIDE.

Kcpsm3

KCPSM3 en un ensamblador en plataforma DOS. Para usar este ensamblador realizamos lo siguiente:

a. Colocamos la carpeta donde se encuentra este ensamblador y el programa .psm en C:\. Para este ejemplo, la carpeta es titulada assembler y el programa diego.psm.
b. Ejecutamos los siguientes comandos:

kcpsm3
Fig. 2. Sentencia de ejecución del compilador.

Y tendremos, si el programa no contiene errores, la siguiente presentación:

kcpsm3
Fig. 3. Mensaje de ejecución del compilador.

Como resultado, se obtienen los siguientes archivos:

resultados
Fig. 4. Archivos resultantes de la compilación.

Si el programa contiene algún error, KCPSM3 presenta el detalle del mismo.

Ensamblador asm.exe

Este ensamblador es semejante a KCPSM3, con la diferencia que la extensión de estos archivos debe ser .asm. Como ejemplo, colocamos el programa asm.exe en nuestra carpeta Assembler y lo ejecutamos desde Símbolo Del Sistema como lo indica la siguiente figura:

kcpsm3
Fig. 5. Sentencia de ejecución del compilador.

Y obtenemos los siguientes archivos:

kcpsm3
Fig. 6. Archivos resultantes de la compilación.

xlpb_as de Matlab

Otra manera de ensamblar un programa es a través de MATLAB. Para esto, ejecutamos en la ventana de comandos >> cd c:\assembler; xlpb_as -p 'diego.psm'

La primera instrucción cd c:\assembler es para ubicarnos en la carpeta donde guardamos el programa y la segunda xlpb_as -p 'diego.psm' es para ensamblar el programa (se puede explorar en detalle el comando xlpb_as ejecutando type xlpb_as en la ventana de comandos de MATLAB). Si el programa no presenta errores, se tiene la siguiente presentación en pantalla:

xlpb_as
Fig. 7. Sentencia de ejecución del compilador.

Los archivos resultantes se crean en la carpeta diego_psm_results. Estos archivos son los siguientes:

xlpb_as
Fig. 8. Archivos resultantes de la compilación en MATLAB.

 

Mediatronix pBlazeIDE

Como se dijo antes, la programación de PicoBlaze posee dos sintaxis: KCPSM3 y pBlazeIDE. La sintaxis PBlazeIDE es semejante a la que se usa para programar el microprocesador 8051.

El software Mediatronix pBlazeIDE trabaja en plataforma Windows. Las características de este software son las siguientes:

• Resaltado en color de la sintaxis (configurable por el usuario).
• Simulación paso a paso del conjunto de instrucciones del programa.
• Breakpoints (puntos en los que se detiene la ejecución de programa).
• Visualización de los registros.
• Visualización de la memoria.
• Función de conversión de sintaxis KCPSM3 a sintaxis pBlazeIDE.
• Posibilidad de exportar los programas a formato HTML.

Para descargar este software se lo hace desde la siguiente dirección, en la cual está disponible la versión 3.7.4 ß y 3.6 ß.

El entorno del programa se muestra en la siguiente figura:

pBlazeIDE
Fig. 9. Entrono del programa pBlazeIDE.

Se puede notar la semejanza de este programa con el Pinnacle 52.

Una de las opciones más interesantes de este programa es la posibilidad de importar programas con la sintaxis KCPSM3 a la sintaxis pBlazeIDE. La opción Import del menú File permite conseguirlo:

pBlazeIDE
Fig. 10. Opción Import.

Xilinx System Generator

Esta herramienta trabaja con la sintaxis KCPSM3. Semejante al programa Proteus, permite el uso de breakpoints, ver el estado de los registros, banderas y memoria. En la figura 11 se muestra el entorno de simulación:

xilinx system generator
Fig. 11. Xilinx System Generator.

El programa de ejemplo para el mostrar el uso de esta herramienta es un sencillo contador:

CONSTANT puerto, 02
CONSTANT ini, 00

start: LOAD s2, ini

cont: OUTPUT s2, puerto
ADD s2, 01
JUMP cont

Añadimos cada uno de los componentes que muestra siguiente figura 12:

picoblaze system generator
Fig. 12 .Módulo PB, memoria y dispositivos E/S.


Como resultado de compilar este programa en MATLAB, obtenemos el archivo fill_conta_program_store.m. Este archivo es insertado en nuestro diseño en la memoria ROM. Haciendo doble-click en la memoria ROM, la configuramos como muestra la siguiente figura:

rom
Fig. 13. Configuración del bloque de memoria.

Como resultado se tiene una figura cuyos valores en formato decimal aumenta una unidad:

resultador
Fig. 14. Resultados del programa.

La visualización de los valores de los registros, bandera y memoria se lo hace en el MATLAB. Este programa arrojó los siguientes resultados:

registros en matlab
Fig. 15. Visualización de los registros en MATLAB.
Conclusiones


Como vemos, la programación, compilación y simulación de PicoBlaze posee muchas semejanzas con la del microprocesador 8051. No obstante, el conjunto de instrucciones se ve reducido casi a la mitad.

Como la programación en lenguaje ensamblador exige muchas veces ensayar el código, el programa que recomiendo para ejecutar los diseños es Xilinx System Generator, por el entorno gráfico de simulación y entrenamiento en el uso de componentes de Xilinx Blockset. Sin embargo, pBlazeIDE es ideal cuando se dispone de computador lento o saturado en la memoria.

Referencias

K. Chapman, “PicoBlaze 8-Bit Microcontroller for Virtex-E and Spartan-II/IIE Devices.” http://www.xilinx.com/bvdocs/appnotes/xapp213.pdf, February 2003.

K. Chapman, “PicoBlaze 8-Bit Embedded Microcontroller User Guide for Spartan-3, Virtex-II and Virtex-II PRO FPGAs.” http://www.xilinx.com/bvdocs/userguides/ug129.pdf, November 2005.

©2017 MATPIC

Prohibida cualquier copia parcial o total del contenido de esta web