lunes, 28 de marzo de 2011

Familias CMOS y TTL

Clasificación de los CI de función fija según su complejidad

· Integración a pequeña escala (SSI, Small-Scale Integration), Describe los CI de función fija que contienen hasta diez puertas equivalentes en un mismo chip, e incluyen puertas básicas y flip-flops.

· Integración a media escala (MSI, Medium Scale Integration). Describe los CI que contienen entre y 100 puertas equivalentes en un mismo chip. Incluyen funciones lógicas como codificadores, decodificadores, contadores, registros, multiplexores, circuitos aritméticos, memorias pequeñas y otras.

· Integración a gran escala (LSI, Large-Scale Integration). Es una categoría de los CI que incluyen entre 100 y 10,000 puertas equivalentes por chip incluyendo memorias.

· Integración a muy gran escala (VLSI, Very Large-Scale Integration). Describe los CI con un numero de puertas equivalentes desde 10,000 hasta 100,000 por chip.

· Integración a ultra escala (ULSI, Ultra Large-Scale Integration). Describe memorias de gran capacidad, grandes microprocesadores y computadoras de un solo chip. Esta categoría designa los CI que contienen más de 100,000 puertas equivalentes por chip.


Fuente: Libro Fundamentos de sistemas digitales, 9na edicion. Autor Thomas L. Floyd

miércoles, 9 de febrero de 2011

Símbolos lógicos estándar IEEE/ANSI


En 1984 se desarrolló una nueva norma para los símbolos lógicos llamada Norma IEEE/ANSI 91-1984 para símbolos lógicos. En la norma IEEE/ANSI se emplean símbolos rectangulares para representar todas las compuertas lógicas y circuitos. Una notación de dependencia especial dentro del símbolo rectangular indica como las salidas del dispositivo dependen de sus entradas. En la figura de la derecha se muestran los símbolos IEEE/ANSI junto con los símbolos tradicionales para las compuertas lógicas básicas. Note los siguientes puntos:

1. 1. En los símbolos rectangulares se usa un triángulo recto pequeño en lugar de la pequeña burbuja de los símbolos tradicionales, para indicar la inversión del nivel lógico. La presencia o ausencia del triángulo también significa si una entrada o salida es activa BAJO o activa en ALTO.

2. 2. Una notación especial dentro de cada símbolo rectangular describe la relación lógica entre las entradas y salida. El “I” dentro del símbolo INVERSOR denota un dispositivo con una sola entrada; el triángulo en la salida indica que la salida pasara a su estado activo en BAJO cuando esa entrada este en su estado activo en alto. El “&” dentro del símbolo AND significa que la salida pasara a su estado activo en ALTO cuando todas las entradas estén en su estado activo en ALTO. El “≥” dentro de la compuerta OR significa que la salida pasara a su estado activo (ALTO) cuando una o más entradas estén en su estado activo (ALTO)

3. 3. Los símbolos rectangulares para las compuertas NAND y NOR son los mismos para las AND y OR, respectivamente, con la adición del triángulo pequeño de la inversión de la salida.

Símbolos tradicionales o IEEE/ANSI?

El uso de la norma IEEE/ANSI aun ha sido ampliamente aceptado en el campo digital, aunque es probable que se encuentre en los esquemas de equipo de fabricación reciente. La mayoría de los libros de datos de circuitos integrados incluyen los símbolos tradicionales y los IEEE/ANSI, y es posible que finalmente la nueva norma pueda tener un solo amplio.


Fuente: Ronald J. Tocci (2003) Sistemas Digitales: Principios y aplicaicones

miércoles, 2 de febrero de 2011

Desarrollo y practica de conversiones

Códigos Binarios

El código binario es el sistema de representación de textos, o procesadores de instrucciones de ordenador utilizando el sistema binario (sistema numérico de dos dígitos, o bit: el "0" y el "1". En informática y telecomunicaciones, el código binario se utiliza con variados métodos de codificación de datos, tales como cadenas de caracteres, o cadenas de bits. Estos métodos pueden ser de ancho fijo o ancho variable.

En un código binario de ancho fijo, cada letra, dígito, u otros símbolos, están representados por una cadena de bits de la misma longitud, como un número binario que, por lo general, aparece en las tablas en notación octal, decimal o hexadecimal.

Generalmente los dígitos binarios se representan en grupos de 4, 8, 16, 32, 64; etc bits; según el dispositivo, y se completa con ceros el valor, por ejemplo el número 3 que vimos en el texto anterior, sería en 8 bits sería 0000 0011; cuantos mas bits tenemos mas se podrán representa, por ejemplo 1 bit puede representar 2 valores; 2 bits 4; 3 bits pueden representar 8; 4 bits 16 valores.

0000

0

0001

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

8

1001

9

1010

A

1011

B

1100

C

1101

D

1110

E

1111

F

Código Binario Codificado Decimal (BCD)

El BCD (el binario decimal codificado) es una forma directa asignada a un equivalente binario. Es posible asignar cargas a los bits binarios de acuerdo a sus posiciones. Las cargas en el código BCD son 8, 4, 2, 1.

Ejemplo:

Para representar el digito decimal 6 en código BCD sería:.

0110

Ya que 0 x 8 + 1 x 4 + 1 x 2 ÷ 0+1 = 6.

Es posible asignar cargas negativas a un código decimal, tal como se muestra en el código 8, 4, -2, -1. En esta caso la combinación de bits 0110 se interpreta como el digito decimal 2, l obtenerse de 0 x 8 + 1 x 4 + 1 x (-2) + 0 x (-1)=2.

Un código decimal que se ha usado en algunos computadores viejos en el código de exceso a 3. Este último es un código sin carga, cuya asignación se obtiene del correspondiente valor en BCD una vez se haya sumado 3.

Los números se representan en computadores digitales en binario o decimal a través de un código binario. Cuando se estén especificando los datos, el usuario gusta dar los datos en forma decimal. Las maneras decimales recibidos se almacenan internamente en el computador por medio del código decimal. Cada digito decimal requiere por lo menos cuatro elementos de almacenamiento binario. Los números decimales es convierten a binarios cuando las operaciones aritméticas se hacen internamente con números representados en binario. Es posible también realizar operaciones aritméticas directamente en decimal con todos los números ya dejados en forma codificada. Por ejemplo, el número decimal 395, cuando se convierte a binario es igual a 112221211 y consiste en nueve dígitos binarios. El mismo número representado alternamente en BCD, ocupa cuatro bits para cada digito decimal para un total de 12 bits: 001110010101.

Código Gray

El código binario reflejado o código Gray, nombrado así en honor del investigador Alessandre Frank Gray, originario de Tepic Nayarit Mexico., es un sistema de numeración binario en el que dos valores sucesivos difieren solamente en uno de sus dígitos.

El código Gray fue diseñado originalmente para prevenir señales espurias de los switches electromecánicos. Actualmente es usado para facilitar la corrección de errores en los sistemas de comunicaciones, tales como algunos sistemas de televisión por cable y la televisión digital terrestre.

El código Gray se sigue utilizando en la creación de mapas de Karnaugh, los cuales son, a su vez, utilizados en la implementación de circuitos combinacionales y circuitos secuenciales. Esto es debido a que el principio de diseño de buscar transiciones más simples y rápidas entre estados sigue vigente, a pesar de que los problemas de ruido y potencia se hayan reducido.

Código Gray de dos bits

00

01

11

10

Código Gray de tres bits

000

001

011

010

110

111

101

100

Código Gray de cuatro bits

0000

0001

0011

0010

0110

0111

0101

0100

1100

1101

1111

1110

1010

1011

1001

1000



































El problema con el código binario en base 2 es que con interruptores mecánicos, es realmente difícil que todos los interruptores cambien al mismo tiempo. En la transición de los dos estados mostrados arriba, tres interruptores cambian de sitio. En el lapso en el que los interruptores están cambiando, se pueden presentar salidas de información espurias. Si las salidas mencionadas alimentan un circuito secuencial, probablemente el sistema presentará un error en entrada de datos.

El código gray resuelve este problema cambiando solamente un dígito a la vez, así que no existe este problema:

Decimal Gray Binario

0 000 000

1 001 001

2 011 010

3 010 011

4 110 100

5 111 101

6 101 110

7 100 111

Código Alfanumérico

Con un código de un bit podemos representar 21=2 combinaciones. Para representar los diez dígitos (0-9) y las 26 letras minúsculas necesitamos como mínimo 6 bits (25=32, 26=64 combinaciones). Si además se quieren representar las letras mayúsculas y otros símbolos de utilidad necesitaremos un mayor número de bits. En general con el término de carácter o código alfanumérico se incluyen:

§ Las letras: a-z y A-Z.

§ Los números: del 0 al 9

§ Los símbolos: @ ! # $ + - * / = % ( ) [ ] etc.

§ Los caracteres de control: , , etc.

La información que la computadora debe procesar está formada por letras, números y símbolos especiales.

Los ordenadores trabajan con voltajes fijos que se representan con los números 0 y 1 que forman la base de un sistema binario. Con la presencia o ausencia de tensión eléctrica no sólo se pueden representar números sino los estados de una variable lógica Con un conjunto de variables lógicas se pueden definir cualquier sistema lógico.

Código de detectores de error

La comunicación entre varias computadoras produce continuamente un movimiento de datos, generalmente por canales no diseñados para este propósito (línea telefónica), y que introducen un ruido externo que produce errores en la transmisión.

Por lo tanto, debemos asegurarnos que si dicho movimiento causa errores, éstos puedan ser detectados. El método para detectar y corregir errores es incluir en los bloques de datos transmitidos bits adicionales denominados redundancia.

Se han desarrollado dos estrategias básicas para manejar los errores:

§ Incluir suficiente información redundante en cada bloque de datos para que se puedan detectar y corregir los bits erróneos. Se utilizan códigos de corrección de errores.

§ Incluir sólo la información redundante necesaria en cada bloque de datos para detectar los errores. En este caso el número de bits de redundancia es menor. Se utilizan códigos de detección de errores.

Si consideramos un bloque de datos formado por m bits de datos y r de redundancia, la longitud final del bloque serán, donde n = m + r.

Tipos de códigos detectores

Paridad simple (paridad horizontal)

Consiste en añadir un bit de más a la cadena que queremos enviar, y que nos indicará si el número de unos (bits puestos a 1) es par o es impar. Si es par incluiremos este bit con el valor = 0, y si no es así, lo incluiremos con valor = 1.

Ejemplo de generación de un bit de paridad simple:

Queremos enviar la cadena “1110100”:

1º Contamos la cantidad de unos que hay: 4 unos

2º El número de unos es par por tanto añadimos un bit con valor = 0

3º La cadena enviada es 11101000

El receptor ahora, repite la operación de contar la cantidad de “unos” que hay (menos el último bit) y si coincide, es que no ha habido error.

Problemas de este método:

Hay una alta probabilidad de que se cuelen casos en los que ha habido error, y que el error no sea detectado, como ocurre si se cambian dos números en la transmisión en vez de uno.

Paridad cruzada (paridad horizontal-vertical)

Para mejorar un poco el método anterior, se realiza una paridad que afecte tanto a los bits de cada cadena o palabra como a un conjunto de todos ellos. Siempre se utilizan cadenas relativamente cortas para evitar que se suelan muchos errores.

Para ver más claro este método, se suelen agrupar los bits en una matriz de N filas por K columnas, luego se realizan todas las paridades horizontales por el método anterior, y por último, se hace las misma operación de calcular el número de unos, pero ahora de cada columna.

La probabilidad de encontrar un solo error es la misma, pero en cambio, la probabilidad de encontrar un número par errores ya no es cero, como en el caso anterior. Aun así, existen todavía una gran cantidad de errores no detectables

Un ejemplo de paridad cruzada (o de código geométrico)

1º Tenemos este código para transmitir: 1100101111010110010111010110

2º Agrupamos el código en cada una de las palabras, formando una matriz de N x K:

1100101

1110101

1001011

1010110

3º Añadimos los bits de paridad horizontal:

1100101 0

1110101 1

1001011 0

1010110 0

4º Añadimos los bits de paridad vertical:

1100101 0

1110101 1

1001011 0

1010110 0

0001101 1