PicoBlaze es la designación de una serie de tres núcleos de procesadores de software gratuitos de Xilinx para su uso en sus productos FPGA y CPLD . Se basan en una arquitectura RISC de 8 bits y pueden alcanzar velocidades de hasta 100 MIPS en la familia de FPGA Virtex 4. Los procesadores tienen un puerto de dirección y datos de 8 bits para acceder a una amplia gama de periféricos. La licencia de los núcleos permite su uso gratuito, aunque solo en dispositivos Xilinx, e incluyen herramientas de desarrollo . También hay herramientas de terceros disponibles de Mediatronix y otros. Además, existe PacoBlaze , una implementación de los núcleos independiente del dispositivo y del comportamiento, que se publica bajo la licencia BSD . PauloBlaze es una implementación VHDL de código abierto bajo la licencia Apache .
El diseño de PicoBlaze se denominó originalmente KCPSM, que significa "Máquina de estados programable con codificación constante (K)" (anteriormente "PSM de Ken Chapman"). Ken Chapman fue el diseñador de sistemas de Xilinx que ideó e implementó el microcontrolador. [ 1 ]
Instanciación
Al instanciar un microprocesador PicoBlaze en VHDL , se debe usar el nombre del componente KCPSM correspondiente. [ 2 ] Por ejemplo, para un procesador PicoBlaze3:
El componente kcpsm3 es puerto ( dirección : salida std_logic_vector ( 9 downto 0 ); instrucción : entrada std_logic_vector ( 17 downto 0 ); port_id : salida std_logic_vector ( 7 downto 0 ); write_strobe : salida std_logic ; out_port : salida std_logic_vector ( 7 downto 0 ); read_strobe : salida std_logic ; in_port : entrada std_logic_vector ( 7 downto 0 ); interrupt : entrada std_logic ; interrupt_ack : salida std_logic ; reset : entrada std_logic ; clk : entrada std_logic ); fin del componente ;Actuación
Todas las instrucciones se ejecutan en dos ciclos de reloj, lo que garantiza un rendimiento determinista del conjunto de instrucciones principal. El tiempo de respuesta a las interrupciones no supera los cinco ciclos de reloj. Como optimización de recursos, es posible que dos núcleos PicoBlaze compartan la misma PROM de instrucciones de 1k x 18, aprovechando la implementación de doble puerto de este bloque en las FPGA de Xilinx.
Notas arquitectónicas
Xilinx documenta que PicoBlaze requiere solo 96 slices de FPGA. El pequeño tamaño de implementación se logra en parte mediante una separación bastante rígida del lado de secuenciación de instrucciones (contador de programa, pila de llamada-retorno, puntero de pila implícito y bit de habilitación de interrupción) del lado de ejecución (ALU, archivo de registros, RAM de scratchpad, bits de estado Z/C). La única información que fluye del lado de cómputo al lado de secuenciación son los bits de estado de ALU cero y acarreo, cuando se prueban mediante las instrucciones condicionales JUMP y CALL. No es posible implementar saltos calculados ni punteros de función . La única información que fluye del lado de secuenciación al lado de ejecución son los campos de operando: registro de destino (4 bits), código de operación de ALU (seis bits), registro fuente opcional (4 bits), valor inmediato/dirección de puerto opcional de 8 bits, dirección de scratchpad opcional de 6 bits. No hay ningún mecanismo para inspeccionar el valor del puntero de pila, el contenido de la pila de 31 entradas, el bit de habilitación de interrupción o el contenido de la memoria de programa.
El lado de secuenciación de instrucciones no contiene un sumador, por lo que no son posibles las bifurcaciones relativas ni el código independiente de la posición. Todas las direcciones de salto y llamada son absolutas .
El PicoBlaze no es adecuado para programar en lenguajes compilados como C. [ 3 ] Además de la falta de soporte para punteros a funciones , no hay instrucciones ni modos de direccionamiento para agilizar una convención de llamada basada en pila. Para PicoBlaze se necesitan dos instrucciones para implementar PUSH o POP y dos instrucciones para implementar el direccionamiento relativo a partir de un puntero de pila designado por software. El PicoBlaze es más adecuado para una convención de llamada basada en registros optimizada manualmente. Esto no excluye el uso de una pila de datos tipo Forth , y de hecho el PicoBlaze es muy adecuado para este enfoque, si la memoria de trabajo de 64 bytes ofrece suficiente espacio.
Véase también
Enlaces externos
Procesador y derivados:
- PicoBlaze en el sitio web de Xilinx
- Manual de usuario de PicoBlaze
- Recursos para usuarios de PicoBlaze
- Implementación de picoblaze en LabVIEW FPGA en la placa de desarrollo Xilinx Spartan 3E.
- PacoBlaze: un clon Verilog sintetizable y de comportamiento de código abierto de PicoBlaze.
- Descripción de la implementación de PacoBlaze
- NanoBlaze: un modelo VHDL con genéricos para definir varios tamaños. Archivado el 31/10/2016 en Wayback Machine.
- PauloBlaze: un modelo VHDL de código abierto totalmente compatible con el ISA del kcpsm6.
Herramientas:
- Ensamblador de código abierto Picoblaze
- Depurador PicoBlaze, desarrollo de software y hardware RTL con ModelSim
- MDS, IDE profesional para Linux y Windows.
- FIDEx, un entorno de desarrollo integrado (IDE) para ensamblador en Linux, MAC y Windows.
- pBlazASM, un ensamblador y simulador de código abierto para Windows.
- pBlazIDE, un entorno de desarrollo integrado (IDE) para ensambladores en Windows.
- kpicosim, un entorno de desarrollo integrado (IDE) de código abierto para ensamblador en Linux.
- Opbasm, ensamblador de macros Open Picoblaze multiplataforma para kcpsm3 y kcpsm6
- Simulador de PicoBlaze en JavaScript
Referencias
- Notas
- ↑ "Microcontrolador PicoBlaze de 8 bits" (PDF) . Xilinx, Inc. Consultado el 25 de junio de 2007 .
- ↑ "Guía del usuario del microcontrolador integrado PicoBlaze de 8 bits" (PDF) . Xilinx, Inc. Archivado del original (PDF) el 27 de septiembre de 2007. Consultado el 25 de junio de 2007 .
- ↑ Pong P. Chu (2008). Prototipado de FPGA mediante ejemplos VHDL: Versión Xilinx Spartan-3 . Wiley & Sons. ISBN 978-0-470-18531-5.
- Bibliografía
- Ivanov Vl. Uso de un procesador PicoBlaze para el control de semáforos. Archivado el 6 de agosto de 2020 en Wayback Machine. Cibernética y Tecnologías de la Información, 15, 5, Marin Drinov, 2015, ISSN en línea 1314-4081 , doi : 10.1515/cait-2015-0023 , pp. 131-139. SJR:0.212
- microprocesadores blandos