# Frecuencias máximas de operación de circuitos TTL



## Sr. Domo (Nov 19, 2013)

Hola!

Tengo una duda que el datasheet no me ha resuelto. Estoy en el largo camino del diseño de una unidad de control para un procesador de 8 bits, todo va bien, solo que mi enorme duda es: 

Una puerta lógica.... como el 74LS04, usado además de simple inversor, lo hemos usado como oscilador de alta frecuencia y todo, pero, en la unidad de control, como es microprogramada y donde las instrucciones no tardan más de 2 ciclos de reloj a cualquier frecuencia (limitado por el componente más lento), una puerta NOT 7404 que sea la que maneje las entradas #OE y LE de un registro, por ejemplo el Registro A o el Acumulador como muchos programadores o diseñadores lo conocemos y sabemos que es uno de los registros más usados, si el programa a ejecutar requiere usar este registro en instrucciones casi una de otra, como por ejemplo:

(instrucciones mal ensambladas )
1. Cargar A del dato que se da a continuación
2. Mueva el dato de A al registo D
3. Cargar A del dato que se da a continuación
4. Mueva el dato de A al registro E
5. Cargar el registro B del dato que se da a continuación
6. Cargar el registro A del dato que se da a continuación
7. Sume A y B
8. Mueva el contenido del registro A a la dirección de memoria establecida por D y E
9. Reinicie en la posición 1
.........

Supongamos este mini programa ejecutandose a 25MHz y vemos que el registro A es usado en 7 de 9 instrucciones, por lo que esa puerta NOT es usada muy seguido durante 25.000.000 ciclos de reloj. Pero he visto en varios lados donde dan a entender que las puertas lógicas (NOT, AND, etc) son lentas, pero nunca especifican la frecuencia máxima de operación si se usaran en un oscilador o en circuitos donde su uso sea intensivo, donde deba cambiar de estado casi cada ciclo de reloj. 

En los datasheets no aparece nada respecto a eso, solo en otros circuitos como contadores o ALU\'s. Y en la web pues solo dicen acerca del uso de puertas lógicas como osciladores y otras utilidades pero no dicen nada acerca de su máxima frecuencia de operación...
Entonces, la duda es esa, cual sería la frecuencia de operación máxima de una puerta lógica del tipo 74LSXX...

salu2! ...


----------



## LaElectronicaMeOdia (Nov 19, 2013)

lo saque de la wiki:


> La velocidad de transmisión entre los estados lógicos es su mejor base, si bien esta característica le hace aumentar su consumo siendo su mayor enemigo. Motivo por el cual han aparecido diferentes versiones de TTL como FAST, LS, S, etc y últimamente los CMOS: HC, HCT y HCTLS. En algunos casos puede alcanzar poco más de los 250 MHz.



busca un pdf con las caracteristicas de la tecnologia TTL, ahi se especifican todas las caracteristicas electricas.

http://www.rsp-italy.it/Electronics...nts/Fairchild TTL data book - 9000 series.pdf


----------



## Scooter (Nov 19, 2013)

Ten en cuenta que partir de unos cuantos MHz, no muchos, empieza importar el diseño de las pistas.
Así que diseñar algo hasta 30~50MHz es mas o menos "normal" pero a partir de ahí hay que tener muchas mas cosas en cuenta.

Efectivamente cada familia tiene una velocidad diferente, si no me equivoco la F "fast" es la mas rápida.


----------



## miguelus (Nov 19, 2013)

Buenos días.

Efectivamente, la familia TTL "F" es la más rápida, dependiendo del fabricante, un 74F190 puede llegar a 125Mhz.
Las familias TTL "S" y "AS" también son de alta velocidad y parecidas a la fanilia "F"

Siempre podemos ver el parámetro *TP* (Tiempo de Propagación) que de fine la velocidad del las puertas, contra más bajo sea este parámetro más rápido será. Valores de entre 2 y 4nS (nano Segundos) son normales en las familias mencionadas.

Hay que tener en cuenta que los Contadores, en su interior, tienen Puertas Lógicas por lo que podemos pensar que las Puertas Lógicas tienen que tener una velocidad parecida a los Contadores de su misma familia.

Sal U2


----------



## Sr. Domo (Nov 19, 2013)

Buenas respuestas que me han dado 
Entonces si quiero velocidad usando puertas 74LSXXX debo considerar más aspectos, según yo y respecto a lo del diseño de las pistas, entre más juntas estén se generan más capacitancias parásitas, no? me corrigen si estoy mal, o sea que si hay más capacitancias parásitas el tiempo de propagación se hace mas grande y eso afectaría.... supongo que sí 

Entonces, sí puedo ponerle un cristal de 20MHz sin problemas, aunque iría buscando quien me consigue integrados 74FXXX por si las moscas, ya que, no he hecho diseños de circuitos impresos, pero con solo ver los esquemas  ya me imagino los impresos, por lo que lo mejor es buscar los 74FXXX.
CMOS no quiero usar, además creo son mas lentos, por lo que  además todo es TTL, excepto la memoria ROM y la memoria RAM.

Bueno, entonces podré seguir tranquilo haciendo el resto del circuito.

salu2!!



LaElectronicaMeOdia te luciste con el databook


----------



## chclau (Nov 19, 2013)

Ademas del tiempo de retardo o propagacion de las compuertas logicas, tenes que tener en cuenta los parametros de los registros y otros elementos secuenciales, setup, hold y propagacion de flanco de clock a salida.

De todos modos 20MHz es una frecuencia bastante baja y no creo que tengas problemas. Otra pregunta, no pueden hacer el diseño en una FPGA, para concentrarse en el diseño lógico, en vez de romperse la cabeza con componentes discretos como se hacía hace 20 años? Si la idea es hacer lógica microprogramada, todo el tema de usar compuertas discretas, hoy por hoy... es casi una locura.


----------



## Sr. Domo (Nov 19, 2013)

chclau dijo:


> Ademas del tiempo de retardo o propagacion de las compuertas logicas, tenes que tener en cuenta los parametros de los registros y otros elementos secuenciales, setup, hold y propagacion de flanco de clock a salida.
> 
> De todos modos 20MHz es una frecuencia bastante baja y no creo que tengas problemas. Otra pregunta, no pueden hacer el diseño en una FPGA, para concentrarse en el diseño lógico, en vez de romperse la cabeza con componentes discretos como se hacía hace 20 años? Si la idea es hacer lógica microprogramada, todo el tema de usar compuertas discretas, hoy por hoy... es casi una locura.



Los registros usados son los 74LS373 y según el setup es de unos 5ns y el hold es de 20ns, está bien, pues por mucho quiero que el procesador funcione a 20MHz, aunque a la vez me conformaría con 10MHz, pues es la frecuencia ideal, mas que nada por los periféricos que tendrá en su bus de datos y direcciones. 
El dispositivo más rapido del circuito será la unidad de contador del programa (PC) pues funciona hasta a 35MHz, la unidad PC está formada por 6 contadores prefijables 74LS193 en serie para contar de 0 a 16.777.216 (en binario) y el más lento del sistema es la memoria RAM, pero el set de instrucciones está configurado para que al ejecutar instrucciones de escritura principalmente, la instrucción dure por lo menos 2 ciclos de reloj lo que en teoría puede dar 2uS para que los circuitos que se encarguen en la escritura tengan el tiempo suficiente, además de la memoria, para evitar pérdidas de datos.

El diseño de la unidad de control consta de una memoria ROM de 112 páginas o direcciones de unos 45 bits, usar un FPGA... pues yo creo que ya no, pues los circuitos encargados del manejo de la ALU, el circuito de interrupciones, carga, E/S y el de control de saltos a direcciones ya están diseñados, listos con sus tablas de verdad para ser implementadas en la ROM. Antes tenía pensado la unidad de control hecha en un 100% con puertas lógicas, decodificadores y otras cosas, pero el circuito es espantosamente enorme y muy dificil de diseñar, pues es en su mayoría logica combinatoria y es terrible, mejor opté por la unidad microprogramada. Una matriz de diodos de 5.040 bits, un arreglo de varios decodificadores de 3 a 8 para hacer el decodificador de 8 a 112 líneas, un circuito contador prefijable que cuente de 0 a 255, unas puertas lógicas y unos cuantos buffers para el control de interrupciones, reseteos y otras cosas y el resto: el banco de registros, la unidad aritmetico logica, el PC, los buses de datos y direcciones, algunos MUX y DEMUX para seleccionar dato/instruccion y un arreglo de 6 74LS373 para la pila de 2 niveles de 24 bits cada uno y listo! 
Pasé de más de 100 integrados a por lo menos 45 según cifras pre-calculadas  Además, el diseño de un procesador es largo, pero es muy interesante, pues de esta forma me estoy diseñando una máquina que ejecutará 70 instrucciones a mi modo y adaptandose al 100% a mis necesidades y lo mejor, está quedando como quiero 
El Intel 8085 me estaba tentando antes, pero no quize por muchas razones:
1. Requiere un chip de soporte y no me gustan 
2. Sólo maneja 65.536 bytes y tengo memorias más grandes que no serán usadas para lindos programas
3. Le faltan algunas líneas de control que quiero
4. El primer uso que le quiero dar es como un programador de memorias EEPROM, Flash y memorias I2C (inicialmente esa era mi idea: un programador 'universal' pero los protocolos son muy grandes como para usar pura logica secuencial simple), por lo que requiere muchos puertos, además de un teclado ASCII y un LCD. Siendo mi diseño perfecto por su velocidad.
5. Según algunos programas que quiero que ejecute, requiere usar los 2 niveles de la pila, cualquiera en cualquier momento, cosa que el 8085 no permite, por ejemplo: Salte al nivel 1 o al nivel 2

En resumen: Quería el 8085 por su 'simplicidad', pero no lo encuentro por acá, muchos puntos negativos para mí por su funcionamiento, quiero mi procesador hecho por mí, aunque tenga decenas de integrados pero al menos las instrucciones las defino yo y otras cosas más. Además de que los integrados que se usarán son más faciles de conseguir que el 8085 y sus chips de soporte.

Solo esperen unos meses más y ya verán aquí este gran proyecto funcionando y ejecutando programas simples y complejos 

salu2!


----------



## chclau (Nov 19, 2013)

hola,

no se hace asi el analisis, no es cuestion de agarrar cada parametro por separado. Si bien como ya te dije para 20MHz no creo que tengas problemas, el analisis correcto si lo queres hacer se deben tomar todos los retardos de flip fllop a flip flop mas la logica que esta en el medio.

lo otro es que vi que usas distintas frecuencias de reloj y no entiendo por que, te rcomiendo que uses una sola frecuencia, porque si no vas a tener problemas entre los registros que funcionan con relojes diferentes, es toda una complicacion que me parece injustificada.

Fuera de eso, exito con tu proyecto.

De todos modos... no se, una FPGA es ni 100 ni 45 integrados, es uno. pero bueno, exitos.


----------



## Sr. Domo (Nov 20, 2013)

chclau dijo:


> hola,
> 
> no se hace asi el analisis, no es cuestion de agarrar cada parametro por separado. Si bien como ya te dije para 20MHz no creo que tengas problemas, el analisis correcto si lo queres hacer se deben tomar todos los retardos de flip fllop a flip flop mas la logica que esta en el medio.
> 
> ...




Ok.
No uso varias frecuencias de reloj, solo una, pero pienso probar con varias, para ver hasta donde comienza a ponerse inestable. Aunque mejor me quedo en 10MHz como mucho.

Un FPGA... no suena tan mal, pero para empezar por acá no hay, solo los PLD's y GAL's, no se si sea lo mismo, pero si veo que simplemente no puedo, pues optaría como ultima opción el FPGA 

salu2!!


----------

