Está en la página 1de 73

Resumen Técnicas Digitales 2

Clasificación de los sistemas digitales:


- Combinacionales: Dependen solo de la entrada.

-Secuenciales: Dependen de la entrada y el estado anterior.

En los sistemas secuenciales complejos no se representa por una tabla de estados, sino que se
utiliza un enfoque modular debido a la cantidad de estados que poseen.

Enfoque modular

Los módulos (ALU, registro de corrimiento, etc) están constituidos por sistemas digitales como
registros, multiplexores, codificadores, etc. Luego estos módulos se comunican entre si a
través de una trayectoria de datos y de control. Independientemente de los dispositivos que
los forman podemos los módulos se definen por: Los registros que contiene y la operación que
realiza.

Registros
Conjunto de multivibradores biestables o flip-flip que almacenan información binaria y tienen
la posibilidad de realizar una o más operaciones elementales (incrementación, decrementación
o corrimientos).

- Registros de dirección de memoria AR.

- Registros de contador de programa PC o IP.

- Registros genéricos R1, R2, R3.

El flujo de información y tareas de procesamiento entre datos almacenados en los registros


reciben el nombre de transferencias de registros, la operación de transferencia se especifica
mediante 3 componentes:

- Conjunto de registros utilizados.


- Operaciones que se realiza con la información almacenada en los registros.
- Control que supervisa la operación.

Microoperaciones
Son las operaciones que se realizan con la información almacenada en los registros, estas
operaciones se realizan en un ciclo de reloj. En los sistemas digitales se utiliza un conjunto de
registros de almacenamiento junto a una unidad operacional denominada Unidad Aritmética
lógica (ALU), estos dos juntos forman la Unidad Procesadora.
Operaciones elementales realizadas con los datos almacenados en los registros son:

- Transferencia de registros.

- Operaciones aritméticas (Suma, resta, incremento y disminución).

- Operaciones lógicas (Manipular bits almacenados en registros AND, OR, XOR, NOT, etc.).

- Operaciones de corrimiento (corrimiento, rotación y corrimiento aritmético).

MULTIPLICACIÓN Y DIVISIÓN NO SON CONSIDERADA MICROOPERACIONES PORQUE


UTILIZAN MAS DE UN CICLO DE RELOJ.

Transferencia de registro

Transferencia múltiple de acuerdo con lo seleccionado en el control:


Bus
- Bus multiplexor

Con Decodificador elijo el destino donde quiero que se almacene el registro, con el Mux elijo
desde que registro quiero que se almacene (Deco destino y Mux salida).
- Bus 3 estados:

- Bus bidireccional (Transferir datos binarios en dos direcciones):

Sin Sout Estado


0 0 Alta impedancia
0 1 Salida de datos
1 0 Entradas de datos
Microoperaciones Aritméticas

El acarreo sirve para determinar si una suma de números sin signo necesita un bit más para ser
expresada, mientras que en el desborde se analiza el acarreo y el número anterior si estos son
distintos quiere decir que hubo un desbordamiento y el resultado tendrá un signo diferente.
Microoperaciones Lógicas
Microoperaciones de Corrimiento
Unidad Procesadora
El procesador se conoce a veces como la trayectoria de datos porque forma la trayectoria de
operaciones entre los registros, esta trayectoria de datos se realiza por medio de buses. El
procesamiento de información es realizado por la ALU (Unidad de Aritmética y Lógica).

CPU (Unidad de Procesamiento Central)

Un conjunto de registros con la unidad aritmética lógica (ALU), forma la unidad procesadora.
La unidad procesadora junto con la unidad de control forma la unidad central de
procesamiento (CPU).
Transferencia de la memoria
-Lectura (transferencia desde la unidad de memoria):

DR<-M[AR]

-Escritura (transferencia a la memoria):

M[AR]<-DR
Palabra de control

Ejemplos:
Arquitectura
Define el funcionamiento del microprocesador, está compuesto por:

- Set de instrucciones.

- Registros.

- Modelo de excepciones.

- Ubicación de los operandos con respecto a CPU y la manera que trabaja


internamente.

Ejemplos de arquitecturas ARM, X86, MIPS, etc.

Arquitectura CISC (Complex Instruction Set Computer)

- Set de instrucciones más amplio.

- Permite operaciones entre memoria o memoria/registro.

Arquitectura RISC (Reduced Instruction Set Computer)

- Posee el set de instrucciones pequeño y de tamaño fijo, esto resulta en hardware


para decodificar más pequeño, simple y rápido.

- Solo existe instrucciones de carga y almacenamiento para acceder a la memoria.

- Suele tener mayor cantidad de registros.

Ejemplo ARM.

Set de instrucciones

- Conjunto de instrucciones que realiza el microprocesador.

- Cada instrucción indica operación y operandos a usar.

- Los operandos pueden ser registros, memorias o un valor inserto en la misma


operación.

- ARM representa a cada instrucción como un número de 32 bits.

-Para facilitar el lenguaje se utiliza lenguaje assembler (este representa el conjunto de


instrucciones básicas mediante nemónicos).
Arquitectura ARM
La arquitectura es lo que el programador ve de la computadora, está definida por el set de
instrucciones y la ubicación de los operandos con respecto a la CPU. La arquitectura ARM
representa cada instrucción en una palabra de 32 bits.

Registros en arquitectura ARM

ARM posee 16 registros y cada registro es de 32 bits.

Memoria

- En ARM las operaciones se realizan entre registro o registro/inmediato.

- Para utilizarla en una operación la memoria se debe ser cargada en un registro.

- Las memorias están organizadas como arreglos de palabra, utilizando 32 bits para especificar
la dirección.

- ARM utiliza un modelo de memoria direccionable por bytes, es decir cada byte tiene una
dirección de memoria única.
Formas de organización de memoria
Instrucciones de procesamiento de datos

- Instrucciones de aritmética y lógica.


- Instrucciones de comparación.
- Instrucciones de corrimiento.
- Instrucciones de multiplicación y división.

Todas las instrucciones de procesamiento de datos, a excepción de la multiplicación y división,


pueden recibir en su segundo operando tres posibles opciones. Considerando la estructura de
una instrucción típica ADD.

ADD Destino, Operando1, Operando2

Destino: Siempre registro.

Operando1: Siempre Registro.

Operando2: Registro, Valor inmediato o Registro con desplazamiento.

Algunas veces se puede incluir en el segundo operando un registro desplazado, por ejemplo:

ADD R2, R1, R3, LSL #2 Traduciendo: R2=R1+4R3

En la ALU existen un conjunto de banderas que pueden ser modificadas cuando una operación
se realiza. El control de si se modifican o no dichas banderas se realiza mediante el sufijo S.
Cuando se escribe una instrucción y, finalizando su nemónico se coloca la S. De esta forma se
modificarán las banderas.

Instrucciones lógicas y de corrimiento son:

La instrucción EOR es una XOR entre R1 y R2 moviendo el resultado a R3, BIC lo que hace es
negar el R2 y realiza una operación AND con R1. En MVN mueve el registro y lo niega.

Las instrucciones AND y BIC sirven para enmascarar bits, mientras que ORR es utilizada para
combinar campos:
LSL y LSR hacen un desplazamiento lógico a la izquierda y a la derecha respectivamente
completando los bits con ceros, mientras que ASR mueve a la derecha manteniendo el bit MSB
con el que se encontraba (esto se denomina desplazamiento aritmético, conserva signo).
Luego el ROR realiza una rotación de los bits hacia la derecha, si quiero realizar hacia la
izquierda será (32-N) veces. También existe el RRX que realiza la rotación de los bits
arrancando con el acarreo que está en bandera, siendo este actualizado en todos los
corrimientos.

Instrucciones aritméticas:

ADC a diferencia con ADD lo que hace es agregar el Carrier presente en la bandera, lo mismo
sucede con SUB y SUBC. RSB a diferencia de SUB cambia el orden de la resta en los operandos
ya que en el primer operando solo se acepta registros.
Algunas operaciones de comparación

Estas comparaciones lo único que hacen es modificar las banderas:

- CMP R1, R2 Compara R2 con R1 (Resta).

- CMN R1, R2 Compara R1 con el negativo de R2, similar a CMP R1, - R2 (Suma).

- TST R1, R2 Realiza una AND entre R1 y R2, como es una AND no modifica la
bandera C (realiza AND).

- TEQ R1, R2 Realiza una XOR entre R1 y R2, permite verificar si dos valores son
iguales sin modificar V ni C (XOR).

Banderas

Las banderas son flip-flops que almacenan información referida a la última modificación que se
realizó en la ALU (donde se haya habilitado la bandera). Estas banderas son 4 y se encuentran
en el CPSR (Current Program Status Register)

Las banderas se pueden modificar de estas formas:

1. Con instrucciones de comparación.


2. Modificando CPSR.
3. Instrucciones de procesamiento de datos con el agregado de s al nemónico.
4. Instrucciones THUMB de 16 bits.

Bandera N (negativo)

Esta bandera permite determinar si un resultado es negativo y es tomado por el último bit del
resultado de una operación. Debido a que esta bandera es simplemente el último bit del
resultado, puede suceder que, por ejemplo, posterior a la suma de dos números positivos
suceda N = 1 si ocurre overflow. Es decir que puede ocurrir un error si se utilizan números
demasiado grande. Tiene sentido solo si se trabaja con números con signo.

Es decir solo se debe tener en cuenta cuando se trabaja con números con signo y además hay
que tener en cuenta que pudo haber ocurrido overflow (no puedo representarse en 32 bits).
Bandera V (Desborde o overflow)

Esta bandera indica el desbordamiento cuando se realizan operaciones de números con signo,
es calculada como la XOR entre el acarreo del bit 31 y acarreo de bit 30 (es decir el carry del
último bit y el del anteúltimo).

Bandera Z (Cero)

Esta bandera determina si el número es cero.

Bandera C (Acarreo o carry)

Esta bandera indica el valor del acarreo del bit más significativo. Será activada de acuerdo con
las siguientes condiciones:

- La suma es mayor a 232 .

- El resultado de la suma de dos números negativos.

- Un corrimiento.

El significado de modificaciones de las banderas entre dos registros:


Bifurcaciones o Brach

- Genera retraso en la ejecución del programa debido al corte de la ejecución secuencial, ya no


se puede usar Pipeline.

- En ARM el contador de programa (PC) es automáticamente incrementado 4 luego de cada


instrucción, una instrucción de bifurcación cambia el PC con la dirección donde se ubica la
nueva instrucción.

- Tipos de saltos:

• B Salto incondicional.

• BX Se pone alguna condición de las banderas, de acuerdo con esto salta o lo


ignora.

• *BL Branch and Link. Acá el Link Register es usado para almacenar la dirección de
retorno, justo después de la instrucción del Branch. Esto es empleado para el uso
de funciones.

Cuando se ejecuta BL que es una instrucción de bifurcación, hará que se desechen las
instrucciones posteriores procesadas a BL extraídas de memoria y decodificadas. Esto es
debido a que una bifurcación indica a la unidad de procesamiento que comience a buscar
nuevas instrucciones en una dirección de memoria diferente, es decir que realice un salto a la
próxima instrucción a ejecutar.

El contador de programa (R15 o PC) es incrementado automáticamente en 4 posterior a la


extracción de una instrucción determinada para apuntar a la próxima a extraer. BL implica que
la adición al contador de programa sea diferente de 4, será el valor necesario que resulte en la
dirección de memoria de la próxima instrucción.
Pipeline es una técnica para acelerar el CPU, se fundamenta en paralelizar las acciones
necesarias en la ejecución de una instrucción:

Se gana tiempo ya que se realiza varias cosas en paralelo en un mismo tiempo. Pero con la
bifurcación no es posible, lo que provoca una disminución de la velocidad del programa.

Instrucciones de carga y almacenamiento


Se definen 3 configuraciones para las instrucciones de Carga y Almacenamiento:

1. Modo de direccionamiento:

2. Tipo de direccionamiento:

El pre-indexado modifica primero el registro base de acuerdo con el offset y luego


opera en el registro destino.

El post-indexado primero opera sobre el registro destino y luego mueve el registro


base según offset.

El pre-indexado no modifica registro base.

3. Tipo de dato: Puede ser word (no se le agrega nada a nemónico), Halfword (se le
agrega h al nemónico) y byte (se le agrega b al nemónico).

Tipo de dato

El tamaño del tipo de dato y si está almacenada con o sin signo deberá estar presente cada vez
que la variable sea utilizada.

Ejemplo de declaración:

Variable1 = .word 12 (el número 12 es guardado ocupando 4 bytes)

Subrutinas

Las subrutinas son rutinas dedicadas a la resolución de tareas específicas, éstas son análogas a
las funciones en C. La función llamadora almacena la dirección de retorno en el Link Register
R(14) al mismo tiempo que salta a la función llamada utilizando la instrucción BL. Una vez
terminada la función se debe mover al PC (R15) la dirección de retorno almacenada en el Link
Register.
En ARM por convención se debe utilizar los registros del R0 al R3 y si se desea retornar un valor
se debe colocar en R0 al finalizar la función.

Stack

El stack es una pila LIFO, los datos se insertan (PUSH) en la parte superior de la pila y se
extraen (POP) desde la parte superior de la misma, donde el procesador ajusta el puntero de
stack SP (registro R13).

El espacio ocupado por una función dentro del stack se denomina Stack-Frame:

Uno de los usos más importantes del stack es almacenar y restaurar registros que son usados
en subrutinas. Así el valor que contienen los registros antes de ingresar a la subrutina es
guardado, así que se pueden usar en las funciones sin perder los datos anteriores y al finalizar
se restauran los datos que contenían inicialmente antes de acceder a la función. El puntero del
stack va decreciendo a medida que se almacena información.

Cada función puede acceder a su Stack-Frame y no al de otras funciones.


Existen instrucciones para carga y almacenamiento múltiple (LDM y STM):

PUSH y POP son sinónimos de STM y LDM respectivamente configuradas en el modo FD y


utilizando el stack como registro base.

Full descending (FD) queda como modelo estándar utilizado por ARM.

Registros preservados

ARM divide los registros en las siguientes categorías:

- Preservados: R4 al R11, SP y LR, una función debe guardar estos registros antes de
modificarlos y restaurar su valor antes de salir de la función. El SP es automáticamente
preservado cuando una función es llamada, si esta emplea en su interior el stack asignando
registros al mismo, antes de finalizar la subrutina debe desasignar las direcciones del stack
regresando así el SP a su valor inicial. En el caso que la función no emplee el stack, SP no
cambiará.

-No preservados: R0 al R3 y R12 pueden ser cambiados libremente, no se puede asumir que no
cambiaran luego de llamar a la función. El registro de estados contiene las banderas de la ALU
por lo que será modificado en la función.
Funciones leaf (hoja) y noleaf (no hoja)

Leaf es una función que dentro de ella no llama a ninguna función, por lo contrario, noleaf es
una función que dentro de ella llama a otra función.

Uso del stack:

La última función al ser leaf no debe guardar el LR y toda función noleaf debe guardar LR.

En funciones recursivas se deben guardar tanto los registros preservados como no


preservados.

Lenguaje máquina
ARM posee tres formatos principales de instrucciones:

• Procesamiento de datos: Compuesta por la instrucción, operando del tipo registro, un


segundo operando (inmediato o registro de desplazamiento) y un registro destino.
Op = 00.

• Memoria: Compuesta por la instrucción, registro base, corrimiento (inmediato o


registro de desplazamiento) y registro destino o fuente. Op = 01.

• Bifurcaciones o datos: Compuesta por bits de configuración y desplazamiento en un


número de 24 bits con signo. Op = 10.

Procesamiento de datos
La Op se selecciona en 00, la Cond son las condiciones de las banderas y la Func se describe la
función a realizar. En el campo de Func se divide en tres partes, I indica con 1 si op2 es un
operando y 0 en caso de registro. S en 1 indica que se actualizará la bandera. cmd indica la
instrucción de procesamiento de datos a realizar.

Instrucciones para acceso a memoria

Como elementos principales tenemos un campo de funciones de 6 bits, un registro destino


(LDR) o fuente (STR) y un conjunto de dos elementos que formarán la dirección (registro base y
un offset que puede ser un inmediato o registro con desplazamiento).

La op se establece en 01, Rn es el registro base y Rd registro destino o fuente. src2 establece


un corrimiento u offset.

Instrucciones de salto

Se establece op en 10, L en 1 para BL y en 0 para B quedando un imm de 24 bits. En la


instrucción de salto, el valor inmediato se sumará al PC+8 para saltar a la posición denominada
BTA (Branch Target Adress) que es la dirección de la próxima instrucción a ejecutar si el Branch
se realiza.

Para calcular el salto se debe sumar a la dirección de memoria donde se encuentra la


instrucción de salto (PC+8), luego al BTA restarle el valor calculado. El valor a guardar es la
cantidad word o palabras a saltar, el resultado de la resta entonces se divide por 4.
Compilado, Ensamblado y Enlazado
Para convertir un código maquina en ensamblador y posteriormente a código maquina se
requiere de una secuencia de pasos. En primero lugar, el compilador traduce de un lenguaje de
alto nivel a código ensamblador, el ensamblador traduce el código de ensamblador a código
maquina y lo coloca en un archivo objeto. Luego el linker o enlazador combina los binarios
generados a partir de nuestro programa en alto nivel con el código máquina de las librerías y
otros archivos, determinando la dirección apropiada de los Branch y variables locales para
producir el programa ejecutable.

La arquitectura ARM divide el mapa de memoria en las siguientes:

- Texto: ARM denomina a este bloque como segmento de solo lectura, guarda código máquina
del programa y puede incluir constantes.

- Datos globales: Acá se almacenan las variables globales accesibles desde todos los puntos del
programa. ARM denomina al bloque como de lectura y escritura. Las variables globales son
típicamente accedidas usando un registro base estático.

- Datos dinámicos: En ese bloque se encuentra el stack y el heap, se asignan y designan


dinámicamente en tiempo de ejecución del programa. La pila incluye almacenamiento
temporal y variables locales. El heap almacena datos asignados por el programa mediante
asignación dinámica de memoria (como malloc en C y new en C++).

- Administración de excepciones: Reservada para el vector de excepciones y manejadores de


excepciones.

- Sistema operativo y puertos: Parte reservada para sistema operativo y puertos.


Compilador (pasar de alto nivel a assembler): Se divide en dos partes Front-ends (parsea el
código fuente y traducirla a código intermedio) y luego Back-end (traduce el código intermedio
a ensamblador). Compilador Gcc posee nivel intermedio o Middle-ends.

El ensamblador convierte el código ensamblador en un archivo objeto que contiene el código


en lenguaje máquina.

El enlazador junta todos los archivos objetos que componen un proyecto en un archivo en
código máquina llamado ejecutable.

El SO carga un programa, leyendo el segmento text del ejecutable y lo copia al segmento


correspondiente en memoria.

Excepciones
Una excepción es una función inesperada o no prevista. Estas pueden ser causadas por
software o hardware. Las excepciones de hardware provocadas por dispositivos de entrada o
salida son llamadas interrupciones y las excepciones de software son llamadas traps. Otros
casos de excepciones son el reset y la lectura de memoria no existente.

Como cualquier otra función, una excepción debe guardar la dirección de retorno, saltar a la
dirección donde se encuentra el código que detiene la interrupción, hacer su trabajo de
restaurar los valores modificados y regresar al punto del programa desde donde fue llamada.

Modos de ejecución y privilegios

En ARM, los procesadores pueden operar en uno de varios modos de ejecución, los cuales
tienen diferentes niveles de privilegios. Estos modos, permiten que se produzcan diferentes
excepciones sin corromper el estado del microprocesador. Los modos de operación son
indicados en los últimos 5 bits del registro de estado CPSR. El modo usuario opera en el nivel
PL0, el cual no es capaz de acceder a las regiones protegidas de memoria, mientras que el
modo PL1 permite acceder a todos los recursos del sistema.

ARM guarda el contenido de los registros críticos (R13, R14, R15, CPSR) en SPSR (Saved
Program Status Register).
Datapath
Comunicación y periféricos
Los sistemas de entradas y salida son usados para conectar una computadora con dispositivos
externos llamados periféricos. El procesador accede a los dispositivos de entrada y salida
usando buses de direcciones y datos de la misma forma que accede a las memorias.

IO (Entradas y salidas)

Existen dos modelos diferentes:

- E/S mapeada en memoria: utiliza el mismo bus de direcciones para E/S, ejemplo
ARM.

- E/S independiente: utiliza un conjunto independiente de instrucciones para acceder


al mapa E/S, ejemplo X86.

El Software que se comunica con E/S se llama controlador de dispositivo (device driver).

En los sistemas embebidos utilizan un procesador para interactuar con el entorno físico.

GPIO (General Purpose Input/Output)

Los dispositivos de entrada y salida de propósito general son usados para leer o escribir
señales digitales. Como mínimo, todo GPIO requiere registros para leer un valor de entrada,
escribir un valor de salida y definir la dirección del pin o dispositivo.

El BCM2835 (System of Chips) tiene 54 GPIO, estos son controlados y configurados por el
siguiente conjunto de registro:

- GPFSEL: Hay 6 registros GPFSEL (de cero a cinco), determina si los pines son de propósito
general o especial y si van a ser usados como entrada o salida. Cada GPIO tiene 3 bits
asociados de un registro de este tipo (un registro GPFSEL controla 10 GPIO). 000 es de entrada,
001 salida y las demás configuraciones es de propósito especial.
Usa los bits 11, 10 y 9 del registro GPFSEL1 para modificar el GPO13.

- GPLEV: Este registro contiene los valores de cada pin, es empleado para lectura de estos.
Cada bit de este registro implica el estado de un GPIO, por lo tanto, se requieren dos registros
para contemplar 54 pines. El mapeo se hace ordenadamente partiendo del GPLEV0[0]
asociado al GPIO0 hasta el GPLEV1[21] que indica el estado del GPIO53. Este registro no puede
ser escrito.

- GPSET y GPCLR: El GPSET permite forzar a que un determinado pin se ponga en 1, esto se
logra escribiendo un 1 en la ubicación correspondiente, ejemplo si se desea escribir un 1 en el
GPIO 14, se debe buscar la posición GPSET0[14] = 1. De igual manera con el GPCLR para
escribir un cero en determinado pin se debe escribir un 1 en la posición correspondiente del
registro determinado.
I2C (Inter-Integrated Circuit)
Protocolo de comunicación serie síncrono, utilizado para la comunicación de dispositivos
dentro de la placa, con protocolo maestro esclavo con la posibilidad de múltiples maestros. El
bus solo requiere de dos líneas más la masa. Cada dispositivo es direccionable por software.
Protocolo SPI (Serial Peripheral Interfaz)
Protocolo de comunicación serie síncrono.

Maestro/esclavo de simple maestro.

Permite múltiples esclavos mediante la selección individual con una línea (Slave select).

El bus es de full-duplex de cuatro líneas de señales y una masa.

4 líneas que permiten la comunicación:

- SCLK o SCK (Serial Clock) reloj de sincronismo entregado por el máster.

- MOSI o SDO (Master Output Slave Input) salida de datos del máster.

- MISO o SDI (Master Input Slave Output) salida de datos del esclavo.

- SS (Slave select) habilitador de esclavo.

El máster produce el clock e inicia la comunicación enviando una serie de pulsos por SCK. Si
quiere enviar datos al esclavo, los coloca en MOSI comenzando con el bit más significativo. El
esclavo puede responder simultáneamente enviando los datos por MISO.

La interfaz puede enviar una señal de habilitación para alertar al esclavo que se le está
enviando datos, de este modo puede implementarse una comunicación de un master a
diversos esclavos.
Configuración de esclavo:

• Esclavo independiente

-Cada esclavo tiene su selector


-Requiere que lo esclavos no carguen la línea cuando están deshabilitados

• Cadena (Daisy chain)

La primera salida esclava se conecta a la entrada del segundo esclavo y así


sucesivamente hasta el último esclavo, el MOSI se conecta solamente al primer esclavo
y el MISO solo al último. El puerto SPI de cada esclavo está diseñado para enviar
durante el segundo grupo de pulsos del clock una copia exacta de los datos que recibió
durante el primer grupo de pulsos. Cada esclavo copia la entrada a la salida hasta que
la línea SS indique.
Existen 4 modos de enviar la información, según su polaridad y fase:

CPOL=1 cambia dato en flanco de bajada por el contrario, en CPOL=0 cambia cuando sube.

Ventajas:

- FULL DUPLEX.

- Alta velocidad.

- No está limitado en cantidades fijas de bits.

- Pocas líneas comparado con el paralelo.

Desventajas:

- Mayor requerimiento de pines que otros protocolos seriales.

- Sin control de flujo por parte del esclavo.

BCM2835 (Microcontrolador de Raspberry) posee 3 SPI máster y 1 SPI esclavo.


Periférico UART

UART (Universal Asynchronous Receiver/Transmitter).

Permite comunicar dos dispositivos sin el uso de un reloj:

- Estos dispositivos deben “acordar” de antemano su velocidad de trasmisión.

- Cada dispositivo deberá tener su propio reloj.

- Los relojes no están sincronizados (comunicación asíncrona).

Utilizados en protocolo RS-232 y RS-485.

Protocolo RS-232

En su modo mínimo requiere 3 líneas RX, TX, GND.

Originalmente la norma preveía la conexión entre dos equipos determinados.

- Equipo terminal de dato o data terminal equipament (DTE), este equipo era la
computadora.

- Equipo de comunicación de datos o data comunication equipament (DCE).

Los datos son divididos en palabras de una longitud fija.

Al comenzar se agrega un bit en cero (bit de start).

Al finalizar se puede agregar 1 o más espacios para identificar un nuevo código de sincronismo
(bit de stop).

Entre el bit de start y el bit de stop se envían los datos.

La trama puede tener 7 bits (código ASCII) u 8 bits. O también se puede configurar la cantidad
que se desea.

Adicionalmente y al final de cada trama puede haber un bit de paridad par o impar.
Velocidad de transmisión:

- Se miden en baudios (cantidad de bits por segundo).

- Se requieren 10 bits para mandar 8 bits (ya que uno es de start y stop).

- La velocidad más alta es 115200 baudios.

Baudios mide la cantidad de símbolos enviados por segundo.

Bit rate o tasa de datos es la cantidad de datos enviado por segundo.

Si se requieren 10 símbolos para enviar 1 byte, la tasa de datos será:

9600 𝐵𝑎𝑢𝑑𝑖𝑜𝑠 × 8 𝑏𝑖𝑡𝑠 𝑏𝑖𝑡 𝑏𝑦𝑡𝑒𝑠


= 7680 = 960
10 𝑆í𝑚𝑏𝑜𝑙𝑜𝑠 𝑠𝑒𝑔 𝑠𝑒𝑔

Forma abreviada de escribir su configuración:

Tipo de paridad:

- N (None: Sin paridad).

- E (Even: Paridad par).

- O (Odd: Paridad impar).

- M (Mark: Siempre 1).

- S (Space: siempre 0).


Ejemplo de transmisión

Conectores

En principio se utilizó el DB-25, actualmente el más común es DE-9.

Niveles Eléctricos

Los valores lógicos en RS-232 se representan con señales bipolares de 0 para 3v y 15v, 1 para
-3v y -15v. Se requiere un interfaz que convierta las señales lógicas de la UART a niveles de RS-
232, para esto se utiliza el integrado MAX3232E.

Cable

No más de 15m, las conexiones se pueden encontrar en diferentes formas.


Conexión NULL-Modem permite conectar dos DTE o PC entre sí.

Raspberry (BCM2835) posee 2 UART denominadas UART0 y UART1, la primera con mayores
funcionalidades ambas se comunican por los pines 14 y 15 de la GPIO. Estos pines deben ser
configurados con GPFSEL en el modo alto.

La UART posee un reloj interno de 3 MHz por lo que debe ser dividido por una constante para
poder utilizarlo.

Timer en BCM2835

Posee un system time de 64 bits de corrida libre que incrementa cada 1uS (1Mhz), luego 4
comparadores de 32 bits, permite comparar cada uno de estos valores con la parte baja del
system time. Cuando algún comparador coincide con el valor de timer principal, modifica una
bandera.

Registros del timer:

-System timer posee dos registros de solo lectura:

*SYS_TIMER_CLO con los 32 bits más bajos.

*SYS_TIMER_CHI con los 32 bits más altos.

-Los comparadores están asignados a 4 registros:

*SYS_TIMER_CO.

*SYS_TIMER_C1.

*SYS_TIMER_C2.

*SYS_TIMER_c3.

Un problema cuando se usa algún proceso dependiente del tiempo es la latencia.

Latencia

Tiempo desde que se produce la interrupción hasta que se ejecuta la primera instrucción de la
rutina de tratamiento.

Solución: Anular las interrupciones, de modo que el SO no pueda interrumpir la tarea.


ADC Y DAC
Los ADC convierten señales analógicas a digitales, mientras que los DAC convierten señales
digitales en analógicas.

Proceso de digitalización
En la figura anterior se presenta un sistema típico que presenta datos muestreados, los
procesa y posteriormente genera una nueva señal analógica a partir de ellos. El filtro pasa bajo
o pasa banda se requiere para eliminar las señales no deseadas fuera del ancho de banda de
interés y evitar el aliasing, normalmente este filtro es denominado filtro anti-aliasing.

Considerando como sistema en tiempo real, la señal se muestrea por el ADC a una velocidad
igual a fs, y se presenta una nueva muestra DSP (Procesador digital de señales) a esta misma
velocidad. Para mantener la operación en tiempo real, el DPS debe realizar todos sus cálculos
dentro del intervalo T, y presentar una muestra en la salida del DAC. Después del DAC se
coloca un filtro análogo anti-imagen para eliminar las frecuencias de imagen.

Codificación

Al obtener una muestra de la señal analógica, el siguiente paso es asignarle un valor binario
utilizando algún código por ejemplo el binario natural o binario fraccionario (amplitud máxima
es 1 amplitud mínima es 0 utilizando valores intermedios entre amplitud máxima y mínima
como fracción entre 1 y 0).

Códigos unipolares: Estos códigos implican que la entrada al ADC es siempre positivo. Por
ejemplo, para un convertidor de 4 bits, donde tomamos como máximo 10v de amplitud de la
señal de entrada, la mínima variación entonces será:
𝑉𝑚𝑎𝑥 10
𝐿𝑆𝐵 = = 4 = 0.625
2𝑁 2

Suponiendo ahora un DAC de 3 bits a la salida del ADC.

Códigos bipolares

Este código binario representa cantidades analógicas positivas y negativas, para esto se utilizan
códigos binarios con offset, complemento a dos, complemento a uno o signo y magnitud.
Sample and Hold (Muestreo y retención)

Un circuito de muestra y retención es un dispositivo analógico que muestra el voltaje de una


señal analógica que varía constantemente y mantiene su valor a un nivel constante durante un
período de tiempo. Se utiliza para mantener estable el valor de tensión de entrada del ADC
durante el proceso de conversión.

Un circuito típico de muestra y retención es:

Este almacena la carga eléctrica en un condensador y contiene al menos un dispositivo de


conmutación. Para muestrear la señal el interruptor conecta el condensador a la salida de un
amplificador buffer. El amplificador buffer carga o descarga el condensador de modo que el
voltaje a través del condensador sea prácticamente igual o proporcional a la tensión de
entrada. En modo de retención o HOLD, el interruptor desconecta el condensador del buffer.
La impedancia de entrada del segundo buffer debe ser lo suficientemente alta como para que
el condensador se descargue menos de 1 LSB durante el periodo de retención.

A continuación, se pretende determinar la frecuencia de la señal de entrada que puede


muestrearse sin SH con un error máximo de 1 LSB. Siendo q el intervalo de tensión asociado a
1 LSB y el conversor de N bits, entonces la señal de entrada puede expresarse como:

2𝑁
𝑣(𝑡) = 𝑞 𝑠𝑒𝑛(2𝜋𝑓𝑡), 𝑞 𝑒𝑠 𝐿𝑆𝐵
2
Tomando la derivada:
𝑑𝑣(𝑡)
= 𝜋𝑓𝑞2𝑁 cos (2𝜋𝑓𝑡)
𝑑𝑡
La derivada máxima será:
𝑑𝑣(𝑡)
𝑚𝑎𝑥 = 𝜋𝑓𝑚𝑎𝑥𝑞2𝑁
𝑑𝑡
Despejando la fmax:
1 𝑑𝑣(𝑡)
𝑓𝑚𝑎𝑥 = 𝑚𝑎𝑥
𝜋𝑞2𝑁 𝑑𝑡
Anteriormente dijimos que máximo la variación de la señal de entrada será de 1 LSB que
equivale a dv=q, por lo tanto:
1 1
𝑓𝑚𝑎𝑥 = 𝑁
𝑞
𝜋𝑞2 𝑑𝑡
1 1
𝑓𝑚𝑎𝑥 =
𝜋2𝑁 𝑑𝑡
Donde dt es el tiempo de conversión que tiene el ADC por ejemplo, si se emplea un ADC de 12
bits y el tiempo de conversión es de 8uS, la máxima frecuencia que se podría muestrear sería:
1 1
𝑓𝑚𝑎𝑥 = = 9,7 𝐻𝑧
𝜋212 8𝑢𝑆

Teorema del muestreo


El teorema del muestreo indica que la frecuencia de muestreo fs debe ser al menos dos veces
la frecuencia máxima de la señal de entrada. Si la frecuencia de muestreo es inferior al doble
de la frecuencia de la señal de entrada puede ocurrir un fenómeno denominado aliasing.

En la figura se presentan dos casos sobre la reconstrucción de la señal a partir de sus muestras.
Cuando la frecuencia de muestreo es fs<2fa y la señal de entrada no está acotada en ancho de
banda, la reconstrucción de la señal produce una onda senoidal con alias a una frecuencia más
baja igual a fs-fa. Cuando la señal cumple los dos requisitos la señal se reconstruye
perfectamente.

Resumiendo, para que una señal pueda ser reconstruida a partir de sus muestras debe cumplir
el siguiente criterio de Nyquist:

-Ancho de banda limitado.

-Frecuencia de muestreo debe ser por lo menos dos veces la frecuencia máxima de la señal.
Filtro Antialiasing

Es un filtro pasa bajo presente en los dispositivos de digitalización que limpia la señal antes de
hacer una conversión analógica digital. El propósito del filtro es eliminar toda presencia de
frecuencias superiores a fs/2.

Cualquier señal o ruido fuera del ancho de Nyquist que logre pasar el filtro se redireccionara a
la primera zona de Nyquist generando Aliasing o solapamiento.

DAC
La salida analógica es fuertemente dependiente de la referencia, y la precisión de esta es un
factor limitante de la precisión del DAC. La referencia puede ser interno o externa con salida o
interna y sin salida. En caso de poseer referencia interna, siempre dará mejor resultado que
una muy precisa externa debido a que esta ajusta el DAC.

Si hay una entrada de referencia, la primera especificación será el voltaje de entrada de


referencia. De esto derivan dos valores, la tensión máxima absoluta y el rango de voltajes
sobre los cuales el DAC funciona.

La mayoría de los DAC requieren que su voltaje de referencia este dentro de un rango, donde
el valor máximo es menor o igual a la tensión de alimentación, pero algunos DAC
multiplicadores (MDAC) pueden funcionar con una tensión muy por encima que la de la
alimentación.

Algunos DAC poseen una impedancia de entrada variable, en estos casos se provee el rango de
entrada, caso contrario su valor nominal. Teniendo generalmente una impedancia de entrada
alta y corriente de polarización generalmente baja.

DAC-Divisor de Kelvin

- Requiere gran cantidad de llaves y resistencias (2𝑁 ).

- Se requiere gran precisión en todas las R.

- La impedancia de salida depende del código.

- Participan pocas llaves al mismo tiempo (bajo glitch).


- Puede ser lineal o no lineal de acuerdo con los valores de la resistencia usado.

- Es por diseño monotónico (es decir que, si una señal se cortocircuita, la salida n no puede
acceder la salida n+1).

- Alta resolución y se utiliza como potenciómetros digitales.

DAC R-2R

-Requiere menos resistencias.

-Puede funcionar como un potenciómetro digital.

-Puede ser utilizado de dos maneras distintas, modo tensión o modo corriente.
DAC R-2R Modo tensión

Ventajas:

-La impedancia de salida es independiente del código.

-La conexión de las llaves entre las dos fuentes de baja impedancia reduce los glitch
por efecto capacitivo.

Desventaja:

-Variación de la impedancia de entrada de la fuente varia con el código, por lo que la


fuente de referencia debe aguantar dicha variación sin modificar su tensión de salida.

-La ganancia no es ajustable.


Suponiendo entrada 0001:

Suponiendo entrada 0010:

Función de transferencia:
𝐷3 𝐷2 𝐷1 𝐷0
𝑉𝑜𝑢𝑡 = 𝑉𝑟𝑒𝑓( 1 + 2 + 3 + 4 )
2 2 2 2
DAC R2R Modo corriente

Ventajas:

- La ganancia puede ser ajustada con un simple resistor en serie con la entrada, esto es
por tener impedancia de entrada independiente del código.

- La conmutación de las llaves se realiza entre dos fuentes de tensión cercana a cero.

- Esta ventaja en las llaves permite admitir Vref mayor a la alimentación o AC.

Desventaja:

- La impedancia de salida es variable.

- Las llaves conectadas a la salida generan un fuerte glitch.


ADC
La señal digital es fuertemente dependiente de la referencia, y la precisión de esta es un factor
limitante de la precisión del ADC. La referencia puede ser interna o externa con salida o la más
simple interna y sin salida.

Al igual que el DAC, en caso de poseer referencia interna siempre dará mejor resultado que
una muy precisa externa, ya que esta ajusta al ADC.

La mayoría de los ADC admiten una Vref cercana a Vdd, y a diferencia de los DAC, no hay ADC
multiplicadores.

Debido al proceso de conversión se utilizan redes de desacoplamiento en la referencia.

ADC de Rampa Ascendente o Ramp Run-Up

Una señal de entrada analógica se coloca en la entrada del comparador, este nivel de tensión
debe ser mantenido por un circuito SH durante el período de conversión. Cuando se hace el
Sample el generador de rampa (circuito integrador de continua RC) se compara continuamente
con la tensión de entrada analógica de entrada. Mientras la señal de entrada sea mayor que la
señal de rampa ascendente, el contador se incrementara de clock en clock. Este mide el
tiempo requerido para que la tensión de la rampa se iguale al de la entrada analógica. La salida
del contador es entonces proporcional al valor de la tensión analógica de entrada. De modo
que cuando la señal del integrador se iguales y supere el contador se detendrá.

La principal desventaja de la rampa ascendente es su des calibración por variación en el


circuito RC en la formación de la rampa.

La solución es una versión alternativa de este ADC reemplazando el generador de rampa por
un DAC que es impulsado por la salida del contador.
Generador de rampa:

𝑡
−1
𝑉𝑜 = ∫ 𝑉𝑅𝐸𝐹 𝑑𝑡
𝑅𝐶
0

Para VREF constante:

−𝑉𝑅𝐸𝐹
𝑉𝑜 = 𝑡
𝑅𝐶

El tiempo que se requiere para que ambas tensiones sean iguales (V0 = Vin) es:
−𝑉𝑅𝐸𝐹
𝑉𝑖𝑛 = 𝑡
𝑅𝐶

𝑉𝑖𝑛
𝑡=
𝑅𝐶 × 𝑉𝑟𝑒𝑓
ADC de simple rampa

La señal de entrada es integrada mejorando la inmunidad del ruido, pero mantiene la


problemática de su dependencia RC:

𝑡
−1
𝑉𝑜 = ∫ 𝑉𝐼𝑁 𝑑𝑡
𝑅𝐶
0

−1
𝑉𝑜 = 𝑉𝐼𝑁 𝑡
𝑅𝐶
Tiempo para llegar a VREF:
−1
−𝑉𝑅𝐸𝐹 = 𝑉𝐼𝑁 𝑡
𝑅𝐶

𝑉𝑅𝐸𝐹
𝑡 = 𝑅𝐶
𝑉𝐼𝑁
ADC de Doble Rampa

-ADC para alta resolución.

-La precisión es independiente del circuito RC y de la frecuencia.

La señal de entrada se aplica a un integrador, simultáneamente se inicia un contador que


cuenta pulsos del reloj. Después de una cantidad de tiempo predeterminada T, se aplica un
voltaje de referencia con polaridad opuesta al integrador. En ese instante la carga acumulada
en el capacitor del integrador es proporcional al valor promedio de la entrada durante el
intervalo T. La integral de la referencia es una rampa de sentido opuesto que tiene una
pendiente de VREF/RC. Al mismo tiempo, el contador vuelve a contar desde cero. Cuando la
salida del integrador llega a cero la cuenta se detiene, siendo el valor de este proporcional al
de la señal de entrada.

V01 al final de la primera rampa:


−𝑉𝑖𝑛
𝑉01 = 𝑇
𝑅𝐶
Ahora partiendo de la Vo final de la primera rampa, la segunda rampa llega a 0 en:

−𝑉𝑅𝐸𝐹
0 = 𝑉01 + (− )𝑡𝑥
𝑅𝐶
𝑉𝑖𝑛 𝑉𝑅𝐸𝐹
0=− 𝑇+ 𝑡𝑥
𝑅𝐶 𝑅𝐶
𝑉𝑖𝑛 𝑉𝑅𝐸𝐹
𝑇= 𝑡𝑥
𝑅𝐶 𝑅𝐶
𝑉𝑖𝑛
𝑡𝑥 = 𝑇
𝑉𝑅𝐸𝐹
Rechazo del modo serie o normal

Los ADC que integran la señal de entrada, poseen la propiedad de rechazar aquellas señales de
ruido que son submúltiplos del tiempo de integración T, esto permite que con la adecuada
selección de T rechazar la frecuencia de línea.

Este rechazo se cuantifica como Rechazo del Modo Serie o Normal (SMRR, NMRR) y viene dado
por el cociente entre la respuesta a la señal de interés y la respuesta a la señal dada. El rechazo
suele expresarse en dB.

Consideremos por ejemplo una señal de interferencia de entrada senoidal Vs(t)= Vs sen(wt), el
valor medio al integrarla durante un periodo T es:

𝑉𝑠 𝑡0+𝑇 𝑉𝑠
𝑉𝑜 = ∫ 𝑠𝑒𝑛(𝑤𝑡) 𝑑𝑡 = − (cos(wt0 + wT) − cos (wt0))
𝑇 𝑡0 𝑤𝑇

Considerando la identidad:
𝑎+𝑏 𝑎−𝑏
cos(𝑎) − cos(𝑏) = −2𝑠𝑒𝑛( )𝑠𝑒𝑛( )
2 2
Reemplazando en la identidad nos queda:
2𝑉𝑠 𝑤𝑡0 + 𝑤𝑇 + 𝑤𝑡0 𝑤𝑡0 + 𝑤𝑇 − 𝑤𝑡0
𝑉𝑜 = 𝑠𝑒𝑛( )𝑠𝑒𝑛( )
𝑤𝑇 2 2
2𝑉𝑠 2𝑤𝑡0 + 𝑤𝑇 𝑤𝑇
𝑉𝑜 = 𝑠𝑒𝑛( )𝑠𝑒𝑛( )
𝑤𝑇 2 2
El caso más desfavorable es cuando Vo es máxima, cuyo valor se da cuando:
2𝑤𝑡0 + 𝑤𝑇
𝑠𝑒𝑛 ( )=1
2
2𝑤𝑡0 + 𝑤𝑇 𝜋
=
2 2
𝜋 𝑤𝑇
𝑤𝑡0 = +
2 2
Con estas condiciones el valor de Vo (valor medio de la integral) es:
2𝑉𝑠 𝑤𝑇
𝑉𝑜 = 𝑠𝑒𝑛( )
𝑤𝑇 2
𝑉𝑠
𝑉𝑜 = 𝑠𝑒𝑛(𝜋𝑓𝑇)
𝜋𝑓𝑇
Para una frecuencia = 0, recordando que será un límite notable la solución será:
𝑠𝑒𝑛(𝑥)
lim 𝑥
=1
𝑥→0

Con esto podemos concluir que:

-Señal de interés 𝑉𝑜 = 𝑉𝑠.


𝑉𝑠
-Señal de interferencia 𝑣𝑜 = 𝜋𝑓𝑇 𝑠𝑒𝑛(𝜋𝑓𝑇).

La relación de rechazo de modo normal expresado en dB será:


𝑉𝑠
𝑆𝑀𝑅𝑅 = 20 log ( )
𝑠𝑒𝑛(𝜋𝑓𝑇)
𝑉𝑆
𝜋𝑓𝑇
𝜋𝑓𝑇
𝑆𝑀𝑅𝑅 = 20 log ( )
𝑠𝑒𝑛(𝜋𝑓𝑇)
En resumen, si se desea eliminar los 50 Hz o 60 Hz basta con elegir un período de integración
de 20ms o 16.66ms respectivamente. La atenuación mínima crece a razón de 20dB/década. EL
BENEFICIO DEL RECHAZO SE PAGA CON LA LENTITUD, por su característica de alto SMRR, estos
ADC son muy utilizados en multímetros digitales.
Ruido de cuantización

Los errores asociados con un convertidor de datos ideal de N bits son los relacionados con el
proceso de muestreo y cuantificación. El error máximo que hace un convertidor ideal al
1
digitalizar la señal es ± 2 𝐿𝑆𝐵. El error de cuantificación puede expresarse mediante una forma
de onda de diente de sierra no correlacionada que tiene una amplitud de pico a pico de q, el
peso de 1 LSB.

La ecuación de diente de sierra viene dada por:


𝑞 𝑞
𝑒(𝑡) = 𝑠𝑡 para − 2𝑠 < 𝑡 < + 2𝑠

El valor de la media cuadrática del error es:


𝑞
+
2𝑠
̅̅̅̅̅̅̅ 𝑠 𝑞2
𝑒 2 (𝑡) = ∫ (𝑠𝑡)2 𝑑𝑡 =
𝑞 12
𝑞

2𝑠

El error de cuantificación cuadrático medio o rms es:

𝒒
𝑵𝒓𝒎𝒔 = √̅̅̅̅̅̅̅
𝒆𝟐 (𝒕) =
√𝟏𝟐
Este ruido es puramente generado por el proceso de digitalización de la señal,
independientemente del ruido de la señal de entrada.

Suponiendo una onda senoidal está dada por:

𝑞2𝑁
𝑣(𝑡) = 𝑠𝑒𝑛(2𝜋𝑓𝑡)
2
El valor eficaz de la señal será:

𝒒𝟐𝑵
𝑽𝒓𝒎𝒔 =
𝟐√𝟐
La relación señal/ruido para un conversor ideal de N bits será:

𝑞2𝑁
𝑣𝑟𝑚𝑠 2√2
𝑆𝑁𝑅 = 20 log ( ) = 20 log ( 𝑞 )
𝑁𝑟𝑚𝑠
√12
𝑺𝑵𝑹 = 𝟔. 𝟎𝟐 𝑵 + 𝟏. 𝟕𝟓
Esta ecuación es lo suficientemente precisa para la mayoría de los propósitos, sin embargo, es
importante enfatizar que la cuantificación eficaz del ruido (Nrms) se mide en todo el ancho de
banda de Nyquist, es decir que puede interpretarse como una distribución homogénea en todo
el ancho de banda de Nyquist como un valor piso. En muchas ocasiones no utilizaremos todo el
ancho de banda de Nyquist, para esta medida más exacta se utiliza un valor de corrección
llamado ganancia de proceso (Process Gain) en la ecuación de SNR que será:
𝑣𝑟𝑚𝑠 𝑓𝑠
𝑆𝑁𝑅 = 20 log ( ) + 10 log ( )
𝑁𝑟𝑚𝑠 2𝐵𝑊

𝑓𝑠
𝑆𝑁𝑅 = 6.02 𝑁 + 1.75 + 10 log ( )
2𝐵𝑊
BW es el ancho de frecuencia usado (no el muestreado).

Sobre-muestreo

Consiste en tomar muchas muestras y luego pasar la señal por filtro digital, este filtro digital
saca un promedio de todas las muestras calculadas y ese será el valor de la señal en tal punto.

Esta técnica de sobre muestreo permite que el filtro anti-aliasing sea de menor orden y
además permite reducir el ruido de cuantización permitiendo una mayor resolución de la
señal.
Modulador Delta

El objetivo en la modulación delta y PCM era lograr una mayor eficiencia en la transmisión
transmitiendo solo el cambio entre las muestras sucesivas.

En la modulación delta, la señal analógica se cuantifica mediante un ADC de un bit. La salida


del comparador se convierte de nuevo en una señal analógica mediante un DAC de un bit, y se
resta de la entrada después de pasar por un integrador. La forma de la señal se transmite de la
siguiente manera: un 1 indica que se ha producido una excursión positiva desde la última
muestra, por lo contrario, si es un 0 indicara una excursión negativa.
Los sistemas de modulación delta son capaces de digitalizar señales de cualquier amplitud. Sin
embargo, la limitación teórica implica que la señal analógica no varíe demasiado rápido. Otra
desventaja se presenta en la puesta en marcha en marcha ya que necesita un tiempo hasta
que el integrador alcance la señal de entrada.

Para evitar el problema de recorte de pendiente (tiempo en que la señal tarda en alcanzarla)
se soluciona haciendo que la tasa de muestreo sea 20 veces la frecuencia de interés.

ADC Sigma-Delta

Estos conversores basan su funcionamiento en el principio del sobre muestreo y conformación


del ruido para lograr alta resolución. Transmiten la señal sobre muestreada sin reducir su
velocidad, posteriormente se aplican filtros digitales y se obtiene un ADC de Nyquist de alta
resolución.

Este ADC se utiliza para obtener alta resolución en señales de baja frecuencia, consta de un
modulador analógico y de un circuito de filtrado digital. El modulador analógico convierte la
señal de entrada en uno de los dos niveles a alta velocidad, luego el filtro digital elimina el
ruido de alta frecuencia introducido por el modulador y se producen n bits a partir de la
información entregada.
Este ADC no requiere ajustes y la simplicidad de su etapa analógica lo hace susceptible a la
integración.

Asumimos una entrada DC por Vin, el integrador aumentará constantemente en A mientras


que la salida del comparador se retroalimenta a través del DAC hasta la entrada de suma en B.
De esta manera el bucle de realimentación negativa forzara a que la tensión promedio de B
sea igual a VIN.

Luego se utiliza un filtro digital para decodificar la salida, según la cantidad de bits a promediar
será la resolución del ADC.
Ejemplo filtro de 4 bits y resolución de 2 bits:

Ejemplo filtro de 8 bits y 3 bits de resolución:


ADC Flash

Los ADC Flash son el tipo más rápido de ADC y utilizan grandes cantidades de comparadores.
Un ADC flash de N bits consta de 2𝑁 resistencias y 2𝑁 − 1 comparadores. Cada comparador
tiene un voltaje de referencia de la cadena de resistencias que es 1 LSB más alto que el que
está debajo de él. Para un voltaje de entrada dado, todos los comparadores por debajo de
cierto punto tendrán un voltaje de entrada mayor que su voltaje de referencia y una salida
lógica de 1, y todos los comparadores por encima de ese punto tendrán un voltaje de
referencia mayor que el voltaje de entrada y una salida lógica de 0. Como las 2𝑁 − 1 de ese
modo no son realmente prácticas, son procesadas por un decodificador que genera una salida
binaria de N bits.

La señal se aplica simultáneamente a todos los comparadores por lo que el tiempo de


conversión se reduce al tiempo de propagación de la señal.

El conversor de la figura es un conversor flash simple con una etapa de lógica de decodificación
binaria. Las compuertas AND convierten la salida en un código que indica la posición del ultimo
comparador que da como resultado 1 lógico. La lógica de decodificación es simplemente una
matriz donde cada punto es una OR.

La metaestabilidad del comparador en un convertidor flash puede afectar la tasa de error de


bit. Suponga que el comparador X tiene salidas metaestables de estado desconocido X. Si solo
una de las X es 1, el código de salida puede ser 011 o 100 y el error es de 1 LSB. Si
simultáneamente ambas X son 1 o 0, las salidas posibles son 111, o 000 respectivamente. El
error en este caso es de ½ el fondo de escala.

Los errores de estado metaestable se pueden reducir decodificando las salidas del comparador
en código Gray seguido de una conversión de Gray a binario, en este caso el error mínimo
posible es de 1 LSB.

ADC de Aproximaciones Sucesivas

El inicio da a través de la señal START. El proceso de conversión inicia con un SH colocándose


en el modo de retención, y todos los bits del registro de aproximaciones sucesivas (SAR) se
ponen en cero excepto el MSB (bit más significativo) que se establece en 1. La salida SAR
impulsa el DAC interno del conversor. Si la salida del DAC es mayor que la entrada analógica,
este bit SAR se pone en 0, de lo contrario deja en 1. El proceso se repite con todos los bits del
SAR.

Después de realizar el proceso hasta el último bit del SAR, el contenido de esta corresponde al
valor digital de la entrada analógica y la conversión se completa.

Tiempo de conversión:

𝑁𝑏𝑖𝑡𝑠− > 𝑡𝑐 = 𝑡𝑜(𝑁 + 1)

Una señal de fin de conversión EOC o datos listos DRDY sube al iniciar la conversión y baja
cuando este completa.
Ejemplo, suponiendo x=35

ADC Subrango

Estos ADC permiten disminuir la cantidad de comparadores, transformando un ADC flash en


dos ADC flash más sencillos conectados en cascada. Está formado por dos etapas de
conversión separadas la primera etapa realiza una conversión aproximada de N1 bit, mientras
que la segunda etapa realiza la conversión fina de N2 bit.

En primer lugar, se realiza el muestreo, luego se realiza la conversión aproximada de N1 bit con
SADC dando los MSB de la salida final. Este resultado es tomado por un SDAC y su salida es
restada de la señal original, amplificada y convertida con el segundo SADC.

La salida de ambos ADC será almacenada en el registro de salida, el resultado entonces de N


bits = N1+N2.
Si por alinealidades o desviaciones del 1er ADC o su DAC, el residuo supera el rango de entrada
del segundo ADC el resultado no será el correspondiente. Una manera de corrección es
utilizando la técnica de corrección digital. Este método utiliza bits redundantes, agregando dos
comparadores extras al ADC2, el DAC debe ser de mayor precisión que el ADC resultante.

ADC Pipeline

Estos ADC se caracterizan por estar divididos en etapas. Cada etapa procesa los datos de la
anterior durante un ciclo de reloj, cuando termina una fase de conversión la salida de una
etapa pasa a la entrada de la siguiente por medio de un T/H muestreo y retención. Los
resultados de las etapas intermedias se van almacenando en un registro.

Existen dos tipos:


En muchas aplicaciones puede ser problemática esta arquitectura:

- Sistemas realimentados.

- Multiplexado.

- Disparo único.

También podría gustarte