Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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).
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 lógicas (Manipular bits almacenados en registros AND, OR, XOR, NOT, etc.).
Transferencia de registro
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:
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).
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]
M[AR]<-DR
Palabra de control
Ejemplos:
Arquitectura
Define el funcionamiento del microprocesador, está compuesto por:
- Set de instrucciones.
- Registros.
- Modelo de excepciones.
Ejemplo ARM.
Set de instrucciones
Memoria
- 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
Algunas veces se puede incluir en el segundo operando un registro desplazado, por ejemplo:
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.
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
- 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)
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 indica el valor del acarreo del bit más significativo. Será activada de acuerdo con
las siguientes condiciones:
- Un corrimiento.
- Tipos de saltos:
• B Salto incondicional.
• *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.
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.
1. Modo de direccionamiento:
2. Tipo de direccionamiento:
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:
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.
Full descending (FD) queda como modelo estándar utilizado por ARM.
Registros preservados
- 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.
La última función al ser leaf no debe guardar el LR y toda función noleaf debe guardar LR.
Lenguaje máquina
ARM posee tres formatos principales de instrucciones:
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 de salto
- 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.
El enlazador junta todos los archivos objetos que componen un proyecto en un archivo en
código máquina llamado ejecutable.
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.
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)
- E/S mapeada en memoria: utiliza el mismo bus de direcciones para E/S, ejemplo
ARM.
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.
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.
Permite múltiples esclavos mediante la selección individual con una línea (Slave select).
- 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.
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
CPOL=1 cambia dato en flanco de bajada por el contrario, en CPOL=0 cambia cuando sube.
Ventajas:
- FULL DUPLEX.
- Alta velocidad.
Desventajas:
Protocolo RS-232
- Equipo terminal de dato o data terminal equipament (DTE), este equipo era la
computadora.
Al finalizar se puede agregar 1 o más espacios para identificar un nuevo código de sincronismo
(bit de stop).
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 requieren 10 bits para mandar 8 bits (ya que uno es de start y stop).
Tipo de paridad:
Conectores
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
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.
*SYS_TIMER_CO.
*SYS_TIMER_C1.
*SYS_TIMER_C2.
*SYS_TIMER_c3.
Latencia
Tiempo desde que se produce la interrupción hasta que se ejecuta la primera instrucción de la
rutina de tratamiento.
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
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)
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𝑢𝑆
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:
-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.
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
- 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).
DAC R-2R
-Puede ser utilizado de dos maneras distintas, modo tensión o modo corriente.
DAC R-2R Modo tensión
Ventajas:
-La conexión de las llaves entre las dos fuentes de baja impedancia reduce los glitch
por efecto capacitivo.
Desventaja:
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:
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.
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 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
−𝑉𝑅𝐸𝐹
𝑉𝑜 = 𝑡
𝑅𝐶
El tiempo que se requiere para que ambas tensiones sean iguales (V0 = Vin) es:
−𝑉𝑅𝐸𝐹
𝑉𝑖𝑛 = 𝑡
𝑅𝐶
𝑉𝑖𝑛
𝑡=
𝑅𝐶 × 𝑉𝑟𝑒𝑓
ADC de simple rampa
𝑡
−1
𝑉𝑜 = ∫ 𝑉𝐼𝑁 𝑑𝑡
𝑅𝐶
0
−1
𝑉𝑜 = 𝑉𝐼𝑁 𝑡
𝑅𝐶
Tiempo para llegar a VREF:
−1
−𝑉𝑅𝐸𝐹 = 𝑉𝐼𝑁 𝑡
𝑅𝐶
𝑉𝑅𝐸𝐹
𝑡 = 𝑅𝐶
𝑉𝐼𝑁
ADC de Doble Rampa
−𝑉𝑅𝐸𝐹
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
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.
𝒒
𝑵𝒓𝒎𝒔 = √̅̅̅̅̅̅̅
𝒆𝟐 (𝒕) =
√𝟏𝟐
Este ruido es puramente generado por el proceso de digitalización de la señal,
independientemente del ruido de la señal de entrada.
𝑞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.
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
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.
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:
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.
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.
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.
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:
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
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.
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.
- Sistemas realimentados.
- Multiplexado.
- Disparo único.