# Arquitectura de Bus Simple

La Arquitectura de Bus Simple (SBA por las siglas en inglés de Simple Bus Architecture) es un conjunto de herramientas de software y núcleos de propiedad intelectual interconectados por buses definidos mediante reglas claras y simples, con los que se logra la implementación de un sistema embebido en chip (SoC); además de plantillas básicas que permiten un rápido diseño, su estructura le confiere un valor educativo inherente. El código VHDL con el que se implementa esta arquitectura tiene una alta portabilidad. El núcleo maestro implementado como una máquina de estados, posee la habilidad de realizar tareas básicas de procesamiento y flujo de datos de forma similar a un microprocesador pero sin el alto consumo de recursos lógicos de este último.

## Introducción

Con la evolución y el aumento de la capacidad y complejidad de los dispositivos lógicos programables, se abrió la posibilidad de integrar el total de un diseño digital al interior de un único componente, según dichos diseños se han vuelto más elaborados se han ideado diversas estrategias con el fin de brindar un cierto orden a su desarrollo, agrupando tareas en bloques funcionales y definiendo normas de interconexión formando lo que se denomina sistemas embebidos en chip o SoC (por sus siglas en inglés: System on Chip). Los lenguajes de descripción de hardware o HDL (Hardware Description Language), como lo son el VHDL (Very High Speed Integrated Circuit Hardware Description Language), Verilog, SystemC, etc., han permitido extender las capacidades de diseño permitiendo además la generación de un nuevo valor intangible, al poder compilar y agrupar el conocimiento y desarrollo en un bloque funcional denominado núcleo de propiedad intelectual o “Núcleo IP” (Intellectual Property Core), en donde el diseñador brinda para sí mismo o para la comunidad la solución para un problema en particular como puede ser la emulación de un dispositivo, la implementación de un protocolo de comunicación, procesamiento digital de señales entre otras tareas. Al crecer la demanda de estos núcleos IP surge la necesidad de proporcionar a estos de posibilidades de reutilización y portabilidad; la importancia de la integración y la eficiente comunicación entre ellos se incrementa rápidamente con la envergadura del sistema.
Por lo anterior, la definición del estándar de interconexión a usar se convierte en un paso necesario y trascendente en todo diseño SoC y estará determinado por el tipo de aplicación. Los dispositivos FPGA (Field Programable Gate Array), originalmente usados para pequeños prototipos, están reemplazando a los circuitos de aplicación específica (ASIC, application specific integrated circuit) sobre todo donde los tiempos de implementación son críticos y el volumen de producción reducido, debido a sus bajos costos y capacidad de reconfiguración. Sin embargo muchos núcleos IP para FPGA son cerrados y específicos del fabricante limitando su reusabilidad, por lo que muchos diseñadores optan por soluciones abiertas.
En la actualidad son varios los estándares de interconexión de núcleos IP basados en distintas topologías (bus compartido, jerárquico, en anillo), la mayoría de ellos creados teniendo como parte de sus objetivos principales, altas velocidades en la transferencia de información, flexibilidad, soporte para múltiples dispositivos de control o maestros, etc., y debido a que las limitaciones físicas y eléctricas que se presentaban en los circuitos impresos y la interconexión de dispositivos discretos, como son el número de terminales y espacio disponible, han sido superadas al interior del chip de silicio, los estándares suelen tener un gran número de señales de control y buses anchos.
Algunos ejemplos de estas arquitecturas más usadas son: CoreFrame SoC; CoreConnect Bus architecture (CCBA), un enlace de comunicaciones de bus en chip, desarrollado por IBM para interconectar núcleos IP de distintas fuentes; Advanced Microcontroller Bus Architecture (AMBA), una especificación desarrollada por ARM, define un estándar de comunicación en chip para el diseño de procesadores embebidos de alto desempeño; Avalon Bus, una interfaz de bus parametrizado diseñando por Altera para ser usado junto al procesador embebido NIOS, Wishbone, originalmente desarrollado por Silicore Corporation que cedió sus derechos para el dominio público, el proyecto es ahora auspiciado por la organización OpenCores, es una arquitectura de libre copia y distribución.

## Descripción

La Arquitectura de Bus Simple (SBA) es, en cierta forma, una aplicación y derivación simplificada de la especificación Wishbone, por lo mismo, toma de ella muchas de sus reglas de diseño mientras sacrifica la versatilidad con la finalidad de conseguir un conjunto reducido de señales y simplificar las transacciones del bus. Mientras que Wishbone determina las reglas de interfaz tratando de ser general al definir las conexiones y no establece ninguna condición respecto al funcionamiento de los núcleos IP que componen su sistema, la SBA puntualiza no sólo la interfaz de conexión sino también la manera en que se organiza el sistema, se accede a los datos, se consultan estados y registros proveyendo de algunas plantillas que permitan rápidamente establecer un SoC e inclusive la estructura básica y funcional de un núcleo IP maestro que funcionando como una máquina de estado compleja genera y permite administrar el flujo de datos, organizando el funcionamiento del resto del sistema. La SBA también provee de algunas herramientas de software (scripts) que permiten la fácil generación de código para el controlador maestro.
La SBA permite una implementación rápida de un sistema embebido en chip, no es su objetivo proveer del método de interconexión más veloz o el más completo y versátil, su finalidad es el facilitar e introducir los conceptos de SoC, proveer de un método simple, de bajo consumo de recursos y proporcionar un conjunto de reglas básicas, sencillas de seguir y lo suficientemente completas para elaborar un diseño en poco tiempo.
La SBA no pretende entrar en competencia o ser un reemplazo del Wishbone sino que es una aplicación y simplificación del mismo, estableciendo además de las reglas de interconexión, núcleos IP con tareas definidas y diseños predefinidos que permiten una rápida implementación de un sistema partiendo de una plantilla organizada. Muchos de los núcleos IP Wishbone pueden adaptarse a la SBA casi sin modificación siempre que solo hagan uso de transacciones simples de bus. La SBA define tres tipos de núcleos IP, Maestros, Esclavos y Auxiliares.
Los núcleos IP Maestros son capaces de generar e iniciar los ciclos de bus en forma similar al Wishbone. Todo sistema basado en SBA debe de poseer al menos un maestro, siendo el núcleo IP de este tipo provisto por defecto el denominado SBAController.
Esclavos, son los núcleos IP que proveen algún tipo de funcionalidad específica, desde el procesamiento de datos hasta servir de adaptadores entre el SoC y los dispositivos externos al chip, en un sistema con múltiples esclavos, cada uno tiene establecido una porción del mapa de direcciones.
Los núcleos auxiliares ayudan al maestro en las tareas de administración del bus y de las señales de control, forman parte de esta categoría el decodificador de direcciones denominado AddrSpace, en donde se encuentra la posición de cada esclavo dentro del mapa de direcciones y se encarga de generar las señales de habilitación, el SysCon (similar a Wishbone) es un núcleo opcional que tiene por misión producir y controlar el reloj del sistema y sincronizar la señal de inicialización (reset) que podría provenir una fuente externa asíncrona de forma que asegure una duración de al menos un ciclo adicional a la estabilización del reloj y de la fuente de energía, su uso cobra mayor sentido cuando los diseños usan PLL, etc.