Problema con Latch (diseño de sistemas digitales)

Veréis... tengo un lio bastante gordo con un problema de diseño de sistemas digitales. :?


Estoy usando un SR Latch, que tiene 2 entradas y 1 salida. Las entradas son S (set) y R (reset). La salida es Q.
Según la ayuda me dice lo siguiente:

------------------------------------------------------------
------------------------------------------------------------
Quad /SR Latch

Default Signal Levels: GND--all input pins

AHDL Function Prototype (port name and order also apply to Verilog HDL):

FUNCTION 74279 (s11n, s12n, r1n, s2n, r2n, s31n, s32n, r3n, s4n, r4n)

RETURNS (q[4..1]);

Inputs | Output

SN* RN | Q

H H | Qo
L H | H
H L | L
L L | H**

* For latches with double S inputs:
H = both SN inputs high.
L = one or both SN inputs low.
** This configuration is nonstable; that is, it may not persist when the SN and RN inputs return to their inactive (high) level.
------------------------------------------------------------
------------------------------------------------------------


Inicialmente tengo 5 bits de entrada:
- 4 para codificar un número de 4 bits, que iran a S
- 1 para permitir que todo funcione si se da una condición, que ira a R


Para aclarar un poco:

Imagen

Mirando este Latch en concretro, vemos que tiene 6 bits para el set, y otros 4 bits para el reset. Entonces lo que hago para el set es lo siguiente:
- El bit 1 de entrada lo meto tanto por s11n como por s12n
- El bit 2 de entrada lo meto directa por S2n
- El bit 3 de entrada lo meto tanto por s31n como por 32n
- El bit 4 de entrada lo meto directa por s4n
Mientras que para el reset meto el bit que tengo por r1n, r2n, r3n y r4n por igual.



Bien pues, una parte de lo que yo quiero es que si le meto un número de 4 bits por el set (S), me lo saque por la salida (Q) si se da una condición concreta (reset (R) =0).
Esto lo consigo (me faltaría negar las salidas Q), y me da el siguiente cronograma:

Imagen

Aqui se puede ver q si le meto un 1011, me sale un 1011 (ojo q aun está sin negar y realmente sale un 0100). Si justo después le meto un 1111, me sale un 1111, etc....
Como veis todo esto lo hago en modo funcional (sin tener en cuenta retrasos)



El problema es que quiero que si por la entrada S le meto un 1111, en la salida Q me salga el valor que tenía antes.
En el siguiente cronograma se ve lo q quiero q salga (rectficando en rojo los resultados del cronograma anterior):

Imagen

Como veis, le meto un 1011 y me sale un 1011. Acto seguido le meto un 1111 y quiero q me salga un 1011. Luego le meto un 1101 y me sale un 1101. Por último si le meto un 1111 quiero q me salga un 1101.

¿Como puedo conseguir esto?


Pensando, creo q mi error puede estar en alguno (o varios) de estos puntos:
- En duplicar la entrada 1 y 3 del set (a s11n,s12n y s31n,s32n)
- En meter tan a saco el bit de reset por las 4 entradas de reset del latch.
- Quizás necesitaría alguna puerta o algo para "capar" desde fuera la señal si viene un 1111 por el set.

He hecho mil pruebas distintas y no consigo nada. Creo que algo se me escapa... :(

Por cierto, uso el software Quartus II 5.1 sp1 de Altera :o

Enga, un saludo! [bye]
El Quartus, que recuerdos del año pasado XD

No seras de la UAB? Mas de uno que yo me se esta tambien liado con eso y tiene algun problema (nose si el mismo que tu u otro). Yo lo hice el año pasado pero asi en frio y a estas horas no puedo pensarlo, si mañana cuando me levante y sea persona nadie te ha resuelto la duda me lo miro detenidamente, aunque no prometo nada :P

Suerte ;)
4 horas y media después lo he conseguido!!!

Respondo por si a alguien le pica la curiosidad (q hay de todo en esta vida :P)

El tema era que cada Set SxN tenía q venir de una OR entre el bit de entrada de set y el bit común de reset negado.

Por ejemplo:
S11N=S12N=bitSet1+¬bitReset
S2N = bitset2+¬bitReset
...

Luego los RxN venian todos directos del bit de reset:
R1N=R2N=R3N=R4N=bitReset

Y finalmente, como ya comenté antes las salidas Q las he negado:
salida1=¬Q1
salida2=¬Q2
...


Por cierto, muchas gracias por tu futura ayuda DANNY [beer] Y sí, soy de la UAB (de la etse [chulito] )

Ah! y este RS Latch forma parte del diseño de una maquina de bebidas [cartman]
Lo entregas hoy tb el kuestionario?

Pues ya somos 2 x'D

Saludetes!
Y ya somos 3 xDDDDD

Nada, si tenemos dudas ya sabemos donde preguntar xD

Ya de paso, a ver si te pasa lo mismo q a mí en magatzem. Cuando decrementas del todo una bebida, es decir q kda agotada, cuando la vuelves a pedir se te vuelve a poner la bebida al máximo?? Xq a nosotros y a Kiwoore q tmb le preguntado, se nos agota una bebida, la volvemos a pedir y de repente pasa de 0 al valor máximo, como si hubieramos exo un reset >_<


[bye]
Eso de pasar de 000 a 111 es normal (vamos, creo yo). Pero no te preocupes, q para eso está el bloque IND-ESG, para detectar error si una bebida está agotada. :o

Por cierto!! ¿¿¿Como coño subo las cuestiones del dosier 1 en la wiki??? No veo la opción en ningún lado, ni dentro de mi grupo/subgrupo :-? :-?
5 respuestas