2. son circuitos integrados, que
proporcionan una solución al diseño de
forma análoga.
La estructura básica de una PLD permite
realizar cualquier tipo de circuito
combinacional basándose en una matriz
formada por puertas AND, seguida de una
matriz de puertas OR. Tres son los tipos
más extendidos de PLD’s, la PROM,
PLA, y la GAL.
Fuente
•Los microprocesadores Intel 286, 386 y
486. 2002.
•P. Karen and M. Nick “Introduction to
Programmable Logic” Abril 2004.
3. Los PLD´s están desplazando, cada vez más, a
la lógica discreta y a otros tipos de circuitos
ASIC debido a las múltiples ventajas que
ofrecen. Algunas de estas son:
•Reducción de espacio.
•Reducción del número de conexiones.
•Reducción de la potencia de consumo.
•Disminución del coste.
•Aumento de la fiabilidad.
•La mayor parte de ellos ofrecen una gran
flexibilidad al permitir reprogramar el circuito
lógico a la medida, pudiendo obtener diferentes
configuraciones para un mismo dispositivo.
•Esta posibilidad que brindan algunos PLD´s de
ser reprogramados, permite que se elimine el
riesgo de errores a la hora de la grabación.
•Gran facilidad de diseño porque las herramientas
disponibles para este fin simplifican
considerablemente el proceso de diseño, haciendo que
la implementación al más bajo nivel sea transparente
para el usuario
Algunos aspectos negativos a señalar en
estos circuitos vienen dado en que las
técnicas de los circuitos impresos cambian
considerablemente, la selección del
encapsulado no es trivial, las conexiones
entre terminales son muy pequeñas y surge
la necesidad de utilizar una circuitería
adicional para el control de la calida.
El sistema de desarrollo consiste en un
software de diseño y un programador, donde el
software, es en esencia, un ensamblador que
transforma el diseño de alto nivel que hace el
usuario a bajo nivel o nivel de programación
del dispositivo
4. El I²C bus, no tan sólo son dos cables, usados
para realizar una transmisión bidireccional de
datos entre distintos sistemas gobernados por
microcontroladores de forma eficaz. Veremos,
cómo podemos controlar un importante número
de dispositivos con nuestro Arduino, aunque, no
es fácil de dominar. Se trata de, un bus
bidireccional que utiliza dos líneas, una de datos
serie (SDA) y otra de reloj serie (SCL), que
requiere resistencias de polarización a positivo
(RPA). SCL es la línea de reloj, se utiliza para
sincronizar todos los datos SDA de las
transferencias durante I²C bus. SDA es la línea
de datos.
Las líneas SCL y SDA están conectadas a todos
los dispositivos en el I²C bus. Ambas líneas
SCL y SDA son del tipo drenador abierto
asociados a un transistor de efecto de campo (o
FET), es decir, un estado similar al de colector
abierto. Esto significa que el chip puede manejar
su salida a BAJO, pero no puede manejar a
ALTO.
Para que la línea pueda ir a ALTO, se deben
proporcionar resistencias de polarización a 5V.
Necesita de una resistencia de la línea SCL a la
línea de 5V y otra de la línea SDA a la línea de
5V.. Sólo necesita un conjunto de resistencias
de RPA (pull-up) para todo el I²C bus, no son
necesarias para cada dispositivo. La
alimentación del sistema, debe tener una masa
común, también puede haber una alimentación
compartida que, se distribuye entre los distintos
dispositivos
5. Cuando se envía la dirección de 7 bits, siempre seguimos enviando 8 bits. El bit extra (bit 8º) se usa
para informar al esclavo si el maestro está escribiendo o leyendo de él. Si el bit 8º es 0, el maestro
está escribiendo al esclavo. Si el bit 8º es 1, el maestro esta en la lectura del esclavo. Existen
disposiciones en la norma de I²C para entornos multi-master, así como de 10 bits frente a la más
simple y la más comúnmente usada, es la configuración de un solo maestro, de 7 bits de
direccionamiento.Yo se que, la localización de la dirección de 7 bits en la parte superior del byte, es
una fuente de confusión para los recién llegados, pero intentaré hacer un esfuerzo para dejar lo más
claro posible este punto. No debería haber ningún problema en que, los tres bits A0, A1 y A2
correspondientes a los pines 1, 2 y 3 seleccionan la dirección del dispositivo, del P0 al P7 son los
puertos de E/S e INT, es una salida de interrupción que no lo usaremos. De modo que, para poner en
servicio un PDF8574, son necesarias dos cosas, la dirección del dispositivo (b0100000) y un byte de
datos para el pin de salida que se necesita.
De modo que, si ponemos los pines A0 ~ A2 a masa o GND, la dirección de nuestro
dispositivo en el sistema binario será 0100000, o 0x20 en formato hexadecimal. Y con los bytes
de datos, haremos lo mismo, configurando así los pines de salida, por ejemplo: si queremos
poner todos a Alto (H), enviamos 0 en binario que, en hexadecimal es 0, o bien para poner los
cuatro primeros a H y los segundos cuatro a L. Se utiliza 00001111 en binario que, en
hexadecimal es 0x0F.
6. los cuatro pasos que sigue el inicio de una transmisión, son
los 4 bytes de inicio, vea la figura anterior
•En el primer paso, el byte que se envía es START, después
de la condición de Bit inicio (START) se envía un byte que,
contiene siete bits que componen la dirección del
dispositivo que se quiere seleccionar y un octavo bit R/W
•El segundo paso, este byte, contiene la dirección del
registro que se desea leer/escribir. Puede realizarse un
reinicio como se muestra en la figura.
•El tercer paso, aquí se escribe la dirección con el bit menos
significativo LSB a nivel 1, para indicar que se lee.
•El cuarto paso y siguientes continúan la misma función de
lectura, no tiene por qué ser sólo uno.
•A cada byte transferido al bus, le sigue un noveno pulso de
reloj durante el cual, el dispositivo receptor, debe generar un
pulso de reconocimiento
Para pasar a la función de escritura en el mismo
dispositivo, puede realizarse, enviando un bit
de STOP o de reinicio, considerado como parada e
inicio
. El paso que sigue es, escribir el byte que
contiene siete bits que componen la dirección
del dispositivo que se quiere seleccionar y un
octavo bit a 0 que corresponde a la operación
que se quiere realizar con él, ahora escritura. Y
los pasos siguientes pueden ser como en el
caso anterior.
Dicho esto, se debe resaltar que en el I²C-bus
se definen tres tipos básicos de mensajes, cada
uno de los cuales comienza con un START y se
termina con una STOP
En un mensaje combinado, cada uno, sea de
lectura o escritura comienza con un START
y la dirección de esclavo. Después del primer
START, también se pueden hacer llamados
repetidos bits de START, esto confirma que
repetidos bits START no vienen precedidos
por bits de STOP, que es como los esclavos
conocen la próxima transferencia que, es
parte del mismo mensaje. Todo esclavo
puede sólo responder a mensajes particulares,
tal como se define por su documentación de
producto.
Cuando el maestro ha terminado de escribir
todos los datos en el esclavo, se envía una
secuencia de parada que completa la
transacción. Así que para escribir en un
dispositivo esclavo:
7. Para lograr este propósito, se parte de una palabra de
dirección, un byte, en los que debemos distinguir: el bit
START, con dirección del esclavo al que interrogará. Esta
dirección está formada por 4 bits de código de control más
tres bits (A0..A2) de selección de dispositivo y el bit de
escritura /lectura (R/W), por último se envía el bit ACK
(reconocer) por que es el maestro el que está transmitiendo
8. es un sistema basado en un procesador
o microprocesador que posee un conjunto de
instrucciones, un hardware y
un software optimizados para aplicaciones que
requieran operaciones numéricas a muy alta
velocidad. Debido a esto es especialmente útil para el
procesado y representación de señales analógicas en
tiempo real: en un sistema que trabaje de esta forma
(tiempo real) se reciben muestras (samples en inglés),
normalmente provenientes de un conversor
analógico/digital (ADC).
Las aplicaciones más habituales en las que se
emplean DSP son el procesado de audio y vídeo; y
cualquier otra aplicación que requiera el procesado
en tiempo real. Con estas aplicaciones se puede
eliminar el eco en las líneas de comunicaciones,
lograr hacer más claras imágenes de órganos internos
en los equipos de diagnóstico médico, cifrar
conversaciones en teléfonos celulares para mantener
privacidad, analizar datos sísmicos para encontrar
nuevas reservas de petróleo, hace posible las
comunicaciones wirelessLAN, el reconocimiento de
voz, los reproductores digitales de audio, los módems
inalámbricos, las cámaras digitales, y una larga lista
de elementos que pueden ser relacionados con el
proceso de señales.
Un DSP está diseñado teniendo en cuenta las tareas más
habituales del procesado digital: sumas, multiplicaciones y
retrasos (almacenar en memoria).
Los DSP abandonan la arquitectura clásica de Von
Neumann, en la que datos y programas están en la misma
zona de memoria, y apuestan por la
denominada Arquitectura Harvard. En una arquitectura
Harvard existen bloques de memoria físicamente separados
para datos y programas. Cada uno de estos bloques de
memoria se direcciona mediante buses separados (tanto de
direcciones como de datos), e incluso es posible que la
memoria de datos tenga distinta anchura de palabra que la
memoria de programa (como ocurre en ciertos
microcontroladores).
Los elementos básicos que componen un DSP son:
•Conversores en las entradas y salidas
•Memoria de datos, memoria de programa y DMA.
•MACs: multiplicadores y acumuladores.
•ALU: Unidad aritmético-lógica.
•Registros.
•PLL: Bucles enganchados en fase.
•PWM: Módulos de control de ancho de pulso.
9. Se ha dicho que puede trabajar con señales analógicas,
pero el DSP es un sistema digital, por lo tanto
necesitará un conversor analógico/digital a su entrada y
digital/analógico en la salida. Como todo sistema
basado en procesador programable necesita
una memoria donde almacenar los datos con los que
trabajará y el programa que ejecuta.
Si se tiene en cuenta que un DSP puede trabajar con
varios datos en paralelo y un diseño e instrucciones
específicas para el procesado digital, se puede dar una
idea de su enorme potencia para este tipo de
aplicaciones. Estas características constituyen la
principal diferencia de un DSP y otros tipos de
procesadores.
Para adentrar en su funcionamiento se pondrá el
ejemplo de un filtro
: el DSP recibirá valores digitales o samples
procedentes de la señal de entrada, calcula qué
salida se obtendrá para esos valores con el filtro
que se le ha programado y saca esa salida. Un
posible sistema basado en un DSP puede ser el
siguiente:
La señal entrante entra directamente en un filtro
antialiasing para evitar frecuencias superiores a la
muestreada del conversor analógico-digital. Después
se lleva a cabo el procesado digital en el módulo DSP,
para después volverse a convertir en analógico y dar
paso a la salida.
10. Un DSP se puede programar tanto
en ensamblador como en C. Cada familia
de DSP tiene su propio lenguaje ensamblador y sus
propias herramientas suministradas por el
fabricante. Gracias a la colaboración entre
fabricantes, existen lenguajes de más alto nivel (y
por lo tanto, más sencillos y rápidos de usar) que
incorporan la capacidad de programar los DSP, en
general pasando por un precompilado automático
en C. Son los casos de LabVIEW y Matlab
ejemplo se presenta la programación de un filtro digital
en script m. El parámetro "entrada" es un valor que hay
que darle al programa. Cabe destacar que los coeficientes
del filtro están en los arrays den y num. Nótese que
todas las operaciones son sumas (o restas),
multiplicaciones y almacenamiento en memoria
(variable w).
w=[0 0 0 0 0]; y=zeros(1,length(entrada)); for
i=1:length(entrada) w(5)=entrada(i)-den(2)*w(4)-
den(3)*w(3)-den(4)*w(2)-den(5)*w(1); y(i)=
num(1)*w(5)+num(2)*w(4)+num(3)*w(3)+num(4)*w(2)
; w(1)=w(2); w(2)=w(3); w(3)=w(4); w(4)=w(5); end;
11. Circuito Integrado para Aplicaciones Específicas es un circuito integrado hecho a la medida para un uso en
particular, en vez de ser concebido para propósitos de uso general. Se usan para una función específica. Por ejemplo,
un chip diseñado únicamente para ser usado en un teléfono móvil es un ASIC. Por otro lado, los circuitos integrados
de la serie 7400 son circuitos lógicos (combinacionales o secuenciales) que se pueden utilizar para una multiplicidad
de aplicaciones. En un lugar intermedio entre los ASIC y los productos de propósito general están los Productos
Estándar para Aplicaciones Específicas, o ASSP por sus siglas en inglés.
Con los avances en la miniaturización y en las herramientas de diseño, la complejidad máxima, y por ende la
funcionalidad, un ASIC ha crecido desde 5.000 puertas lógicas a más de 100 millones. Los ASIC modernos a
menudo incluyen procesadores de 32-bit, bloques de memoria RAM, ROM, EEPROM y Flash, así como otros tipos
de módulos. Este tipo de ASIC frecuentemente es llamado Sistema en un Chip, o SoC, por sus siglas en inglés. Los
diseñadores de ASIC digitales usan lenguajes descriptores de hardware (HDL), tales como Verilog o VHDL, para
describir la funcionalidad de estos dispositivos.
Las FPGA (Field Programmable Gate Arrays, matriz de puertas programables) son la versión moderna de los
prototipos con puertas lógicas de la serie 7400. Contienen bloques de lógica programable e interconexiones
programables que permiten a un modelo de FPGA ser usada en muchas aplicaciones distintas. Para los diseños más
pequeños o con volúmenes de producción más bajos, las FPGAs pueden tener un costo menor que un diseño
equivalente basado en ASIC, debido a que el costo fijo (el costo para preparar una línea de producción para que
fabrique un ASIC en particular), es muy alto, especialmente en las tecnologías más densas, más de un millón de
dólares para una tecnología de 90nm o menor.
Las FPGA se asemejan a las matrices de puertas pero son programables por el usuario en lugar de fabricadas a medida
para cada aplicación. Aunque su densidad siempre será menor consiguen integrar un gran número de puertas, en el 2008
son asumibles diseños en 65nm con más de 10 millones de puertas, decenas de megabits de RAM e incluso varios
procesadores, esto las hace suficientes para la mayoría de aplicaciones. La ley de Moore y el creciente coste de inversión
de las tecnologías juega a su favor y hace que su cuota de mercado crezca consistentemente cada año. Ver el artículo
dedicado a las FPGAs