Como aplicar un delay a un solo bit, de un paquete de 8

Hola. Quisiera hacer una consulta.

Tengo un paquete de 8 bits, de los cuales 7 utilizaré para datos, y uno (el octavo) para colocarlos donde corresponde.
Basicamente, pongo 7 bits en la entrada de un latch, y con el octavo, activo el latch (el STROBE) para que estos 7 bits pasen a la salida.
El problema es que solo puedo mandar los 8 bits de una vez, y si hago eso, los siete bits de datos no son coherentes, porque al momento de la llegada, ninguno esta estable, por lo que a veces funciona, pero a veces no, entonces, necesito encontrar algun elemento que demore un par de ciclos la llegada del 8 a la pata de Strobe del latch.

Alguno sabe como hacer que de los 8 bits, lleguen 7, y luego de un momento el octavo ?
Muchas Gracias
Saludos
 
Qué dispositivo es el que manda los bits?, PC?, microcontrolador?....
Lo podés hacer por soft con una rutina de retardo, o por hard metiendo compuertas lógicas (un par o dos de inversores), depende de cuanto sea la magnitud del retardo que precisás. O podés poner un RC en la salida que usas como strobe, o alguna compuerta and u or que uses como elemento de paso con otra señal aparte que maneje la habilitación.
En fin, esas son las formas más sencillas que se me ocurren ahora. Lo recomendable desde mi punto de vista sería hacerlo por soft.
 
Muchas gracias por la información.
Estoy enviando los datos por el puerto paralelo de una pc.

Te comento que con soft, no puedo aplicar un retardo a un solo bit...
basicamente, debo mandar el paquete de una sola vez...(es decir, a los 8 hilos)
Lo que creo que podria, es utilizar una o dos compuertas de las mas lentas como mencionabas...

El tiempo que debe demorar en llegar el bit 8 es el tiempo en que demoren los otros 7 en estabilizarse en un "1" o "0"

Sabemos que la señal no es exactamente cuadrada, y demora algunos microSeg en llegar a su voltaje estabilizado (entre 3.7 y 5.2 V). Una vez estabilizados cada uno de los 7 bits en cero o uno, recien alli debe llegar el octavo para dejar pasar los 7 restantes al otro lado.

El tema de la utilizacion de compuertas que mencionas, es seguro ?

Saludos
 
En cuanto a seguridad, no veo por que habría de ser menos seguro, es más, creo que hace al sistema más fiable, porque usar compuertas lógicas inmediatamente a la entrada del dispositivo que se conecta al puerto paralelo de la pc también te permite que el ruido que viene de la pc no se propague al otro dispositivo (dicen que el puerto paralelo es particularmente ruidoso). Creo que lo recomendable es pasar todas las líneas del puerto paralelo por compuertas por ese motivo.

Ahora... el tema es que me hablas de microsegundos... eso es un tiempo relativamente grande para hacerlo solo con compuertas (tiempo de propagación de compuertos andan en 10 nanosegundos o menos si son de familias lógicas rápidas). En tal caso podría ser una combinación de RC con compuerta (strobe ----- resistencia ----- capacitor a masa, el otro dispositivo toma señal de los terminales del capacitor)
Teniendo en cuenta que la salida máxima de corriente es 2.6 mA (o eso dice acá por lo menos), elegimos R = 5V / corriente máxima = 5V / 1.5 mA (dejamos un margen de seguridad) = 3333 ohms -> 3.3 Kohm.
Ese sería un valor mínimo para que el puerto no entregue más corriente de la que puede durante las transiciones. De ahí para arriba no habría problema, solo que valores más altos de resistencia meten más ruido..., mejor lo mínimo indispensable.

Ahora elegimos una capacidad para que genere el retardo deseado a partir de

V(t) = Vpico(1-e^-(t/RC) )

Despejamos C haciendo V(t) = Vumbral = tensión a la que la compuerta reconoce un 1 = 3.7V
Vpico = 5V
t = Retardo deseado =aprox 3 Tau = 3 RC

Para no complicar con despejes podés hacer retardo = 3 RC y ahí despeja C.
Supongamos que querés 1 microsegundo -> C = 1e-6 / 3 x 3.3e3 = 100 pf
dicho de otra forma C = 100 pf / microsegundo

No es mucho 1 microsegundo?, bueno, si es un cable largo...

Sería bueno que algun colega confirme mi palabrerío, no tengo mucha experiencia, es lo que yo haría nada más.

Saludos

-----------------------------------------------
:D :D ¡¡¡¡¡¡¡¡Feliz día de la patria canejo! :D :D
 
Ardogan, muchas gracias por la información, pero lamentablemente no funciono.
Te cuento lo que hice: estuve leyendo datos técnicos de los cmos que estoy utilizando, y calculando los tiempos necesarios para estabilizar el dato a la entrada.
Segun estuve leyendo, el tiempo de estabilizacion de los 7 bits, es de 150ns
Ahora, al octavo bit lo hice pasar por tres compuertas NOR, y luego por 5 compuertas NOT (es decir, el dato realiza 8 operaciones, antes de llegar al punto en el que activaria el latch.
El problema es que cada una de estas compuertas (como bien ya lo mencionas en tu respuesta) utiliza 10 ns en procesar, lo que en 8 operaciones, suman 80ns, lo cual no es suficiente para esperar a que el dato se encuentre estable.
Claramente el circuito funciona mucho mejor (es decir, falla menos veces) pero la realidad, es que sigue fallando (muy de vez en cuando, pero lo hace)

Estuve viendo que es factible utilizar un NE555 en modo monoestable, para que funcione de esta manera:
llega el dato (supongamos "1"), espera X segundos (de acuerdo a las resistencias que se utilicen y el tiempo que se quiera demorar) y lo deja pasar. La salida se mantendrá en "1" hasta que se modifique.
Luego llega un "0", espera X segundos, y lo deja pasar. Ahora la salida contendrá un cero, hasta que llegue otra señal.

Vos (o alguien) sabes como hacer para cablear el 555 para que efectue esta operacion ?

Bueno, de todos modos no quiero abusar de tu conocimiento. Desde ya te estoy sumamente agradecido por haberme dedicado el tiempo que invertiste en tus explicaciones.
Saludos y nuevamente Gracias
 
Claro, por eso decía lo de usar un RC en la línea strobe.
En cuanto a usar el LM555, tengo los conceptos pero no la práctica, hay gente que te puede aconsejar mucho mejor que yo con el conexionado.
Saludos
 
Amigo, ignoro cual sea el software que usas para el envio de datos pero creo que seria suficiente si envias la señal de strobe via tu programa, dependiendo de que tipo de flanco requiere tu latch, me explico:
Supon que tu latch almacena los datos en el flanco de subida esto es cuando la linea de strobe va de cero a uno y supongamos que es D0 la linea de strobe y que deseas enviar el siguiente dato H"AA" entonces primero envias el dato con la linea D0 = 0 es decir H"AA" despues de 150nS envias el mismo dato pero con D0 = 1 es decir H"AB" y finalizas con H"00".
Espero haber sido claro, pero no veo mucho problema en solucionar tu problema.
Saludos
 
Bárbaro, genial, la solución más simple y adecuada colega aguevara. Me puse ciego al descartar el soft de inmediato, pero como bien decís, si escribe una vez al puerto paralelo seguramente puede escribir dos veces.
Debo tener resabios de la facultad, en la que los datos/especificaciones de partida de un problema son rígidos e inmutables; cuando en realidad a veces son las condiciones del problema las que se adecuan a las soluciones.
Ha sido una buena lección para mí, mi agradecimiento a aguevara en particular y al foro en general.
 
Atrás
Arriba