13 KiB
TEMA 1: Introducción
1. Introducción
Características de los SSEE
Depende de su funcionalidad compleja (algoritmos, interfaz de usuario), la operación en tiempo real (tiempo real duro, tiempo real blando) y de los requerimientos (costes, consumos, etc).
Conclusiones
Tienen múltiples aplicaciones y se adaptan a varios requerimientos de funcionalidad, tamaño, coste, prestaciones, etc. Existen herramientas que automatizan el diseño de estos.
2. Evolución de la tecnología de microelectrónica
Ley de Moore
El número de transistores por mm² se duplica cada dos años.
!
Las compañías que fabrican los circuitos integrados, se llaman foundries. El ranking lo lidera TSMC.
!
Samsung a diferencia de las demás compañías fabless que dependen de foundries, es foundry y diseñador de ICs.
Transistores
!
Los transistores tradicionales se quedaron obsoletos en 2017 debido a la aparición de efectos cuánticos por la reducción de la anchura del canal entre la zona n+ y n- del transistor. Por tanto se cambió a la estructura FinFET.
De nuevo, volvieron a aparecer efectos cuánticos en FinFET al bajar a 3nm, por tanto se cambió a la estructura Gate-All-Around.
!
El proceso de litografía se basa en superponer máscaras para dejar pasar la luz y grabar en el silicio las diferentes capas. Al bajar el tamaño del canal, la litografía a evolucionado desde la luz visible, pasando por la luz ultravioleta hasta la actual UVE (UltraVioleta Extrema) con una \lambda=13,5nm, rozando casi la frontera con los rayos X.
Hoy en día se intentan fabricar ICs en 3D. Pero no se consiguen todavía porque el calor generado fundiría el circuito. Lo que si existe son Memorias en 3D.
!
3. Conceptos sobre FPGA
Una FPGA (Field Programmable Gate Array) es una estructura formada por matrices de puertas lógicas interconectadas.
!
Las FPGA pueden implementar CLBs como:
- Puertas lógicas
- MUX
- LUTs
Posibles arquitecturas
Técnicas de programación
!
La RAM estática se implementa con biestables y registros pero lo malo es que es volátil.
!
Los antifusibles lo bueno que tienen que no son volátiles pero no es reprogramable.
!
Lo bueno de las EPROM/EEPROM es que no son volátiles y SI son reprogramables.
!
En definitiva, las FPGA básicamente se constituyen de: bloques lógicos interconectados y accesibles mediante puertos I/O.
4. FPGA de AMD/Xilinx
Los CLB de Xilinx se organizan en slices. Cada slice tiene 4 LUT de 6 entradas, 8 flip-flops y lógica de carry. Los bloques que interconectan los cables entre CLB se llaman en Xilinx SB (Switch Box) que son, al fin y al cabo, MUX.
Red de interconexión
!
Hay Single Lines y Long Lines. Las single lines van entre los CLB. Las long lines se saltan 1 de cada 4 SB para reducir latencia.
También existen líneas dedicadas al CLK para evitar el clock skew. Se suele hacer distribuyendo las líneas en H. De esta forma se consigue que el reloj dentro del circuito, aunque desfasado respecto al CLK fuente, sea el mismo en todas las partes del circuito.
Input/Output Blocks
Reloj
!
El reloj se puede programar mediante el Digital Clock Manager (DCM).
Encapsulado
Estos FPGA usan el encapsulado BGA (Ball Grid Array).
5. Plataformas de desarrollo PSoC
Familia Zynq
Integran Processing Systems (PS) y Programmable Logic (PL). El PS integra un APU (Application Processing Unit) ARM Cortex-A9, caches, memoria, interfaces, un driver DMA, periféricos y puertos I/O. El PL integra lo clásico de una FPGA (CLB, DSP, I/O).
!
Processing System
El procesador de la APU es arquitectura Harvard. También dentro de la APU hay una MMU. El Snoop Control Unit (SCU) permite a los núcleos del Cortex comunicarse con la caché L2 y la RAM compartidas y con la PL.
Esta familia también dispone de una unidad NEON MPE (Media Processing Engine). Proporciona operaciones SIMD de alto rendimiento (suma, resta, multiplicación, máx, mín, aproximación de la raíz inversa, etc).
Por último incluye una MIO (Multiplexed I/O).
Programmable Logic
Contiene CLB, matrices de conmutación, IOBs, DSP y RAM de bloques. Cada CLB contiene dos slices (según Xilinx/AMD).
!
Comunicación entre PL y PS
Se pueden comunicar mediante buses AXI, interfaces MIO u otras señales como reset, IRQ, etc.
!
Familia Versal
Es una evolución de la familia Zynq. La PL no es ya derivada de la familia Artix. En el PS hay dos procesadores ARM: APU para propósito general y RPU para tiempo real (cada uno dual core). Esta familia incluye también un motor de IA.
AI Engine
Cada AI Engine contiene:
- Unidad escalar: procesador RISC 32b con RF, puntero y multiplicador 32x32, funciones no lineales (sin, cos, etc).
- Unidad vectorial: unidad de vector de 512b punto fijo. Punto flotante single precision.
- Unidad de carga de datos
- Interfaz con memoria Esta familia también dispone de GPU, ISP (Image Signal Processing), VCU (Video Coder Unit), VDU (Video Decoding Unit).
Placa de desarrollo ZedBoard
TEMA 2: Vivado
1. Flujo de diseño
Primero se describe el sistema en un HDL, luego se hace una behavioural simulation, luego la síntesis (puertas lógicas y biestables), la implementación (LUTs y biestables) y por último la programación. Diseñaremos sistemas con un lenguaje de alto nivel (C/C++) y con el IP Integrator. El IP Integrator usa una librería de componentes para generar una descripción RTL del sistema. !Pasted image 20260129132034.png
Módulos IP
Los módulos IP tienen varios formatos estándares en IEEE. Uno de los formatos es el IP-XACT. Al fin y al cabo es un archivo XML para documentar módulos IP usando metadatos. Las herramientas compatibles con este estándar pueden interpretar, configurar, implementar y cambiar módulos IP. Vivado soporta varios estándares como TCL, AXI, IP-XACT, Verilog, C, etc.
TEMA 3: Desarrollo de SSEE
1. Procesadores empotrados
SoC
Se conoce como SoC (System on Chip) un sistema completo integrado en un sólo chip. Si además el sistema es una FPGA, tenemos un PSoC (Programmable SoC).
Flujo de diseño
Requieren un flujo de diseño muy ligado entre el HW y SW.
Soft y Hard Cores
Distinguimos entre Soft Cores y Hard Cores. Los soft cores son componentes sintetizados y configurados en la FPGA (Ej: MicroBlaze) mientras que los hard cores ya están fabricados en silicio en la placa (Ej: ARM Cortex).
Procesadores empotrados para ASICs y FPGA
2. Arquitectura de MicroBlaze
- RISC
- 32b
- Harvard
- Instrucciones de 32b
- 32 regs de 32b
- Multiplicador HW
- MMU
Mecanismos de comunicación
Bus AMBA
Es un bus de ARM que se ha convertido en un estándar de facto en los SSEE. En realidad es una familia de buses que contiene a:
- AHB: es un bus de alta velocidad y rendimiento.
- APB: AHB simplificado
- AXI4: contiene las características de AHB y APB. Conexión PP.
- AXI4-Lite: versión simplificada de AXI4
- AXI4-Stream: conexión PP (Ej: MicroBlaze-Periférico) usando una FIFO. Se usan para periféricos de alta velocidad, sobre todo para intercambiar flujos de datos.
- ACE:
- ACE-Lite:
- CHI:
- ATB: Los buses AXI se usan tanto para instrucciones como para datos.
Bus LMB
Es un bus propio originalmente de IBM que permite acceder a memoria en un sólo ciclo de reloj, a diferencia del AXI que necesita varios. Sirve para acceder a los bloques de memoria en un ciclo y aprovechar así la arquitectura pipeline.
Arquitectura de memoria
Es arquitectura Harvard. Cada espacio se direcciona con 32b (4GB). Se pueden direccionar palabras enteras, medias palabras y bytes. Los datos están alineados. La E/S es mapeada. !Pasted image 20260210125017.png
Tipos de datos en memoria
Antes de la V8.00, se guardaban los datos en formato Big-Endian y Bit-Reversed (el MSB es el 0 y el LSB el 31). Hoy puede usar tanto Big-Endian como Little-Endian con el parámetro C_ENDIANNESS.
Registros de propósito general
Se pueden usar como uno quiera, sin embargo, algunos tienen funciones predeterminadas: R0: siempre almacena el valor cero R1-R13: registros de propósito general R14: direcciones de retorno de “interrupciones” R15: registro de propósito general R16: direcciones de retorno de “breaks” R17: direcciones de retorno de “excepciones” R18-R31: registros de propósito general
Registros de propósito especial
PC: contador de programa MSR: registro de estado EAR,ESR: debug HW
Interrupciones
- Reset
- Hardware Exception
- NMI
- Break
- Interrupt
- User Vector (exception) Con un controlador de interrupciones se pueden tener 32+ interrupciones enmascarables. IE en MSR habilita/deshabilita las interrupciones.
FPU
ADD, SUB, MUL, DIV, Comp, Conv, SQRT, soporte NaN, etc.
Pipeline
Tiene tres fases: fetch, decode, execute.
ISA
87 instrucciones RISC en dos formatos:
3. Librería de módulos IP
GPIO
Este periférico tiene dos canales (buses) [31:0] y una entrada al bus dAXI [31:0]. Con esto se puede configurar cada canal como I o como O y cada canal tiene dos registros: DATA y TRI. Al estar mapeados en memoria (0x0, 0x4, 0x8, 0xC) se puede leer y escribir de ellos como si se leyera o escribiera en memoria.
UART
Es un periférico conectado al dAXI con dos entradas Rx y Tx. Es full-duplex. Usa FIFOs Rx Tx de 16 caracteres.
Timer
Tiene dos módulos timer idénticos. Cada timer tiene varios modos de operación: generación, captura, PWM y cascada. Tienen 3 registros:
- contador 32b asc/desc
- registro de carga
- registro de control/estado
Controlador de interrupciones
Hasta 32 señales de interrupción. Prioridad por el LSB (0 prioridad más alta). Tiene registros de control (máscara, habilitación, control de nivel/flanco, etc).
MDM
Soporte para JTAG. Hasta 8 procesadores MicroBlaze. Interfaces AXI4-Lite o PLBv46. Breakpoints, watchpoints. Run/Stop/Step.
4. Flujo de diseño
!Pasted image 20260210134109.png Al desaarrollar software en un computador, el IDE y la aplicación se ejecutan en la misma máquina (código nativo). Sin embargo en un SE, se ejecutan cada uno en un sitio (compilación cruzada).







