Want to create interactive content? It’s easy in Genially!
5.2-SistemasEmbebidos
EAD Recursos
Created on May 24, 2023
Start designing with a free template
Discover more than 1500 professional designs like these:
Transcript
5.2 Sistemas Embebidos
¿Qué es un sistema embebido?
Existen una gran cantidad de definiciones de un sistema embebido, entre ellas una de las más completa:
“Sistema cuya función esta basada en operaciones computacionales sobre procesos físicos para implementar una aplicación en particular.”
5.2 Sistemas Embebidos
¿Qué es un sistema embebido?
Ver video:
5.2.1 Arquitectura (Hardware)
Tipos de Señales:
Contínua (analógica): Valor definido para cualquier tiempo y magnitud
Discreta en tiempo: Valor definido para tiempos discretos y cualquier magnitud (señal muestreada en tiempo).
Digital: Valor definido para tiempos y magnitud discretos (señal muestreada en tiempo y magnitud).
5.2.1 Arquitectura (Hardware)
Sistema embebido digital (Digital Embedded System):
Interfaces con el mundo exterior: Convertidor Análogo Digital (ADC) y señales tipo on/off : Puertos de entrada Convertidor Digital a Analógico (DAC) y actuadores tipo on/off: Puertos de salida
5.2.1 Arquitectura (Hardware)
Sistema embebido digital (Digital Embedded System):
ADCs: Gran variedad de métodos: doble rampa, flash, pulse code modulation, sigma delta, aproximaciones sucesivas (SAR). Siendo estos dos últimos de los más utilizado en sistemas embebidos basados en microcontroladores y DSP’s.
SAR: Sigma-Delta:
5.2.1 Arquitectura (Hardware)
Sistema embebido digital (Digital Embedded System):
DACs: Métodos: amplificador sumador, escalera R-2R, PWM, delta-sigma, etc…
CODECs: Conversión ADC y DAC en un mismo circuito integrado. Los hay de audio y video.
5.2.1 Arquitectura (Hardware)
Tipos de sistemas digitales:
Microprocesador de propósito general: Una gran cantidad de recursos computacionales. GBs en memoria datos, TBs memoria de programa, frecuencia de reloj en GHz , Unidades de procesamiento gráfico (GPU).
Microcontroladores Recursos disponibles limitados y se utiliza para una aplicación en particular. MBs en memoria de datos y programa, frecuencia de reloj en MHz. Periféricos ON-CHIP.
Procesadores DSP: Microcontrolador especializado en hardware para procesamiento digital de señales. Unidades de multiplicación y acumulación (MACs) utilizadas en filtros digitales.
5.2.1 Arquitectura (Hardware)
Tipos de sistemas digitales:
Arreglos de compuertas programables en campo (FPGA): Diseño hardware reconfigurable por el diseñador.
Circuitos Integrados de aplicación especifica (ASICs): Funciones limitadas para una aplicación fija determinada. Por ello diseño óptimo en velocidad de computo, consumo de energía y costo.
Sistemas en chip (Systems On Chip SoC) : Circuito integrado que cuenta con los componentes de un microprocesador o microcontrolador conformando un sistema completo. Además se tienen disponibles componentes especializados de acuerdo a la aplicación. Por ejemplo controladores pantallas, interfaces con memoria externa DDR3, DDR4, puertos de comunicación CAN, I2C, SPI, convertidores ADC, DAC, etc.
5.2.1 Arquitectura (Hardware)
Tipos de sistemas digitales:
Características:
Tipos :
- Microprocesadores
- Microcontroladores
- DSPs
- Limitado en recursos hardware.
- Procesamiento secuencial.
- Programables (software)
- Hardware reconfigurable por el diseñador (usuario).
- Grandes velocidades de computo.
- Procesamiento paralelo.
- FPGAs
- Circuitos Integrados de Aplicación Específca (ASIC’s)
- Mayor tiempo de diseño inicial.
- Costosos prototipos iniciales.
- Adecuado producción en grandes volumenes. No reprogramable
5.2.1 Arquitectura (Hardware)
Tipos de sistemas digitales:
5.2.1 Arquitectura (Hardware)
Componentes básicos de un sistema embebido:
Unidad de procesamiento central (CPU): Unidad de computo de las instrucciones del programa implícito en la aplicación.
Unidad lógica aritmética (ALU): Parte esencial del CPU que se encarga de realizar las operaciones lógicas y aritméticas. Es un componente muy importante ya que su capacidad de realizar operaciones, indicado por el número de bits de los operandos, define la capacidad de computo del sistema embebido.
Memoria de programa: Memoria no volátil que almacena las instrucciones del programa. Generalmente es memoria tipo FLASH.
5.2.1 Arquitectura (Hardware)
Componentes básicos de un sistema embebido:
Memoria de datos Memoria de escritura y lectura de datos resultantes del programa o de puertos (variables). La mayoría de esta memoria es volátil tipo RAM estática. Sin embargo, también existe en forma no volátil como EEPROM.
Puertos de entrada: Interface de lectura de datos digitales externos.
Puertos de salida: Interface de escritura de datos digitales al exterior.
Periféricos on-chip: Bloques implementados dentro del circuito integrado (en hardware) con una función en particular.
5.2.1 Arquitectura (Hardware)
Componentes básicos de un sistema embebido:
Bus direcciones: Define la dirección de la memoria o puerto a accesar.
CPU
Bus de datos: Datos transferidos entre CPU y memoria o puertos.
Tipos de Memoria Datos (SRAM, DRAM, EEPROM, SARAM, DARAM) Programa (ROM, EPROM, OTP y FLASH. )
Bus de Control: Sincroniza transferencia de datos entre CPU, memoria y puertos.
Investigar las características de cada tipo de memorias de datos y programa indicadas.
5.2.1 Arquitectura (Hardware)
Componentes básicos de un sistema embebido:
Diagrama a bloques de CPU
CPU
14
5.2.1 Arquitectura (Hardware)
Componentes básicos de un sistema embebido:
Registros comunes en CPU : - Acumulador (A o W)
- Contador de programa (PC)
- Registro de Estado del CPU (o Registro de banderas)
- Registro de Apuntador de Pila
- Registros de propósito general
- Registros de propósito especial
Investigar las funciones de los registros indicados.
5.2.1 Arquitectura (Hardware)
Ejecución de instrucciones en un sistema embebido:
Fases de una instrucción:
Ciclo Fetch: Lectura de dato o instrucción de memoria de datos o programa, respectivamente.
Decodificación: nterpretación de código de operación de la instrucción leída en ciclo fetch, con la finalidad dedefinir la acción que la instrucción ejecutará.
Ejecución: Fase de ejecución de instrucción.
Ver video:
5.2.1 Arquitectura (Hardware)
Estructura pipeline en ejecución de instrucciones:
Estructura PipelineEjecución secuencial de una instrucción:
Ejecución secuencial de una instrucción:
Lo cual permite mayor velocidad de computo deprogramas. (!25 ciclos contra 8!). Sin embargo, hay situaciones en donde existe un precio a pagar por ello.
Leer articulo:
Investigar las situaciones en donde la estructura pipeline no es muy eficiente.
5.2.1 Arquitectura (Hardware)
Estructura pipeline en ejecución de instrucciones:
Estructura Pipeline Otro caso (microcontrolador de 32 bits):
Leer articulo:
5.2.1 Arquitectura (Hardware)
Estructura pipeline en ejecución de instrucciones:
Estructura Pipeline
Leer articulo:
5.2.1 Arquitectura (Hardware)
Arquitecturas Von Neummann/Harvard:
Von Neummann:
CPU
5.2.1 Arquitectura (Hardware)
Arquitecturas Von Neummann/Harvard:
Hardvard:
CPU
5.2.1 Arquitectura (Hardware)
Arquitecturas Von Neummann/Harvard:
Leer articulo:
http://ithare.com/modified-harvard-architecture-clarifying-confusion/
5.2.1 Arquitectura (Hardware)
Arquitecturas Von Neummann/Harvard:
Modified Hardvard:
Ver video:
CPU
Leer sobre función que tiene memoria cache en arquitectura modified Harvard
Memoria Cache
Instructions
Data
L1
Data
L2
Instructions
L3
Instructions and data
5.2.1 Arquitectura (Hardware)
Arquitecturas Von Neummann/Harvard:
Arquitecturas CISC y RISC:
CISC: Complex Instruction Set Computing RISC: Reduced Instruction Set Computing
ventajas/desventajas de CISC y RISC.
Ver video:
Leer articulos:
5.2.1 Arquitectura (Hardware)
Parámetros funcionales de un sistema embebido:
Frecuencia de reloj: Define la velocidad de ejecución de las instrucciones. Es importante resaltar que dicha velocidad no depende directamente solo del valor de la frecuencia de reloj, sino del tiempo de ejecución de las instrucciones definido por la arquitectura implementada en el sistema embebido. Un parámetro que indica directamente la velocidad de ejecución de las instrucciones es la razón de ciclos de reloj por instrucción, el cuál esta definido en las especificaciones técnicas del fabricante. Ejemplo: Si se tienen dos sistema embebidos A y B basados microntroladores con una frecuencia de reloj de 20 MHz y 10 MHz, respectivamente. ¿Cuál de los dos ejecutará más rápido un programa de N instrucciones? La respuesta inmediata es el sistema embebido A ejecutará las instrucciones en la mitad el tiempo que el B. Pero hace falta tomar en consideración el parámetro técnico de número de ciclos por instrucción. Si por ejemplo el sistema embebido A requiere dos ciclos de reloj por instrucción y el B solo uno, entonces el tiempo de ejecución del programa será el mismo para ambos sistemas (Nx0.1 microsegundos).
5.2.1 Arquitectura (Hardware)
Parámetros funcionales de un sistema embebido:
Capacidad de procesamiento: Este parámetro esta definido por el número de bits de los operandos de la ALU. Además del tipo de operaciones que están implementadas en hardware. Ejemplo: existen sistemas embebidos que utilizan microcontroladores con multiplicadores de datos implementados en hardware en la ALU, con lo que el tiempo de ejecución de productos de datos es mucho menor que si se ejecuta con programa en un microcontrolador sin dicho multiplicador. La capacidad de procesamiento en sistemas embebidos más especializados es notablemente mayor. Por ejemplo en sistemas embebidos basados en procesadores digitales de señales (DSP), en donde se cuenta con periféricos hardware para realizar procesamiento de datos requerido por ejemplo en el cálculo de la transformada rápida de Fourier (FFT) o de la convolución en un filtro digital (unidades MAC).
26
5.2.1 Arquitectura (Hardware)
Parámetros funcionales de un sistema embebido:
Capacidad de acceso de memoria: El acceso incluye memoria de datos como de programa. Este parámetro es muy importante ya que define el espacio que el sistema embebido puede tener acceso tanto a memoria de programa como datos.
Consumo de potencia: Parámetro muy importante a tener en cuenta en el diseño de aplicaciones limitadas por el consumo de energía del sistema. Por ejemplo en aplicaciones portátiles. Muchos fabricantes de sistemas embebidos cuentan con opciones de ahorro de energía como lo es modos de operación de hibernación, hardware con bajo consumo de energía como lo es la tecnológia nanoWatts de Microchip.
Conectividad: Incluye todas aquellas interfaces que permitan al sistema embebido transferir información tanto de manera local como remota. Existen hoy en día una gran variedad de estándares de protocolos de comunicación ya disponibles en sistemas embebidos. Como lo puede ser WiFi, UART, Bluetooth, Ethernet, CAN, etc…
27
5.2.1 Arquitectura (Hardware)
Periféricos on-chip en sistemas embebidos
Módulos hardware más comunes: CCP: Comparison, Capture and Pulse Wide Modulation TIMER:Timer/counter registers RTCC: Real Time Clock Counter WDT: Watchdog Timer USB: Universal Serial Bus CAN: Controller Area Network UART: Universal Asynchronous Receiver and Transmitter LIN: Local Interconnect Network I2C: Inter-Integrated Circuit SPI: Serial Peripheral Interface LCD: Liquid Crystal Display DMA: Direct Memory Access. FPU: Floating Point Unit. EEPROM: Electrically Erasable Programmable Read-Only Memory ADC: Analog to Digital Converter DAC: Digital to Analog Converter
Investigar función de cada uno de los periféricos.
Ejemplo de Microcontroladores 32 bits
5.2.1 Arquitectura (Hardware)
Periféricos on-chip disponibles en sistemas embebidos
Ejemplo de Microcontroladores 32 bits
STM32F103
PIC32
5.2.1 Arquitectura (Hardware)
Programación:
Lenguaje máquina: Lenguaje propio del CPU compuesto de instrucciones formadas por un código de operación (opcode) y operandos en binario. El conjunto de opcodes es determinado por la arquitectura y está disponible en la hoja de datos del fabricante.
Lenguaje ensamblador: Lenguaje compuesto por instrucciones definidas con un nombre (mnemónico) el cual indica su operación sobre los datos. Por ello se considera de nivel abstracción intermedio. El conjunto de mnemónicos es definido y proporcionado por el fabricante. El número de mnemónicos define entre otros parámetros una arquitectura CISC y RISC.
Lenguaje alto nivel: Lenguaje que incluye instrucciones cuyos nombres son más cercanas a los comandos utilizados por el ser humano. Por ello se considera que se programa a un nivel de abstracción mayor que los dos anteriores lenguajes. Por un lado es más comprensible y con ello permite realizar programas de manera más rápida pero por el otro no se tiene control directo sobre el hardware como lo tienen los lenguajes máquina y ensamblador. Los lenguajes de alto nivel más utilizados en sistema embebidos son: C, C++, Python, Java, etc..
5.2.1 Arquitectura (Hardware)
Herramientas computacionales de diseño:
Ensambladores: Utilizado para obtener el programa en lenguaje máquina a partir del escrito en lenguaje ensamblador. La herramienta tiene el mismo nombre que el lenguaje! Como entrada se tiene el programa escrito en ensamblador y como salida el programa en lenguaje máquina, que es el que realmente ejecuta el CPU.
Compiladores: Con esta se traduce un programa escrito en lenguaje de alto nivel a lenguaje máquina. Teniendo como opción la versión en lenguaje ensamblador. Ésta opción es muy útil en muchos casos al estar depurando alguno errores funcionales del programa.
Simuladores: Ambiente completamente virtual en donde se modela la arquitectura del CPU y tiene la finalidad de probar o depurar (Debug) la ejecución de un programa. Cuentan con opciones que facilitan dicho objetivo, como por ejemplo ventanas para monitorear memoria de programa, datos, puertos, registros, periféricos, etc…
Interpretes La ejecución del programa se realiza al momento de ser procesado por un intérprete. Generalmente la ejecución se realiza dentro de un sistema operativo (llamado kernel). Ejemplo de ello es MS-DOS, Linux, MATLAB, Python, etc…
5.2.1 Arquitectura (Hardware)
Herramientas computacionales de diseño:
Sistemas de desarrollo: Consisten generalmente en tarjetas que tienen incorporado el sistema embebido además de otros componentes con los que el usuario puede implementar prototipos iniciales de aplicaciones. Existen una gran variedad de sistemas de desarrollo disponibles comercialmente.
Emuladores: Es un algo similar a un simulador con la diferencia de que la prueba o depuración de los programas se realiza físicamente en el hardware. Para ello el emulador cuenta con una conexión entre la computadora y el hardware, de esta manera el ambiente de emulación permite que muchas de las mismas opciones de un simulado se puedan realizar como en la tarjeta misma. Por ejemplo la ejecución de un programa instrucción por instrucción (Step).
5.2.1 Arquitectura (Hardware)
Programación:
Leer articulo y ver video:
5.2.1 Arquitectura (Hardware)
Programación:
Lenguaje alto nivel:
Ventajas: Al ser un lenguaje más cercano al humano, el tiempo de aprendizaje es mucho menor y el tiempo de desarrollar aplicaciones es menor comparado con el uso de lenguaje ensamblador. Los lenguajes de alto nivel utilizados en la mayoría de las aplicaciones de sistemas embebidos son un estándar, con ello los programas desarrollados tienen un alto grado de portabilidad. Esto significa que si un programa escrito por ejemplo en lenguaje C para un sistema embebido de un determinado fabricante, éste será compatible en un alto porcentaje con un sistema embebido de otro fabricante. Esta situación no se presenta si el programa se desarrolla en ensamblador, ya que éste es único para cada fabricante. El extenso uso de los lenguajes de alto nivel hacen que existan una gran cantidades de librerías ya disponibles, muchas de la cuales son de acceso libre. Ello permite hacer uso de funciones ya existentes sin necesidad de empezar desde cero en una aplicación.
5.2.1 Arquitectura (Hardware)
Programación:
Lenguaje alto nivel:
Desventajas:El hecho de que en lenguaje de alto nivel se programa a un nivel de abstracción más alto que el ensamblador, generalmente no se tiene acceso directo al hardware sino a través de las directivas del compilador. Como consecuencia del anterior punto, el programador se hace muy dependiente de las reglas de juego que impone el desarrollador del compilador. Por ello un punto importante es la elección del compilador apropiado, situación que no se presenta al desarrollar programas en ensamblador. El código resultante de un proceso de compilación es mucho más extenso que el obtenido con un ensamblador. Con ello un programa desarrollado en lenguaje de alto nivel requiere mayor número de recursos que uno desarrollado en ensamblador. No es recomendable el uso de lenguaje de alto nivel para el desarrollo de programas en aplicaciones críticas en tiempo de procesamiento o en sistemas embebidos con muy pocos recursos disponibles. Afortunadamente es posible el diseño de sistemas embebidos con una combinación de lenguaje de alto nivel y ensamblador. En donde éste último se emplea en la implementación de funciones que requieren un tiempo de procesamiento pequeño.
5.2.1 Arquitectura (Hardware)
Herramientas computacionales de diseño:
Ejemplos de ensambladores:
Texas Instruments Assembler Tool
Keil 8051 Assembler/Compiler tool
Keil 8051 Assembler/Compiler tool
Microchip MPLAB ASM tool
5.2.1 Arquitectura (Hardware)
Herramientas computacionales de diseño:
Ejemplos de compiladores:
Arm compiler
Microchip MPLAB C compiler Tool
5.2.1 Arquitectura (Hardware)
Herramientas computacionales de diseño:
Ejemplos de simuladores:
MPLAB IDE Simulator Tool
Proteus Simulator Tool
5.2.1 Arquitectura (Hardware)
Herramientas computacionales de diseño:
Ejemplos de sistemas de desarrollo:
Raspberry pi 4
ESP32 WiFi Bluetooth
Arduino Mega 2560
5.2.1 Arquitectura (Hardware)
Herramientas computacionales de diseño:
Ejemplos de sistemas de desarrollo:
Ver video:
Microchip Explorer 16/32 DSP Board Kit
Texas Instrument Launch Pad Development Kit
Easy Pic Development Board
5.2.1 Arquitectura (Hardware)
Herramientas computacionales de diseño:
Herramientas computacionales de diseño:
Ejemplo emulador:
Microchip MPLAB ICE 4
Microchip MPLAB PICKIT 4