WinCUPL, WinSim, SR-FlipFlop

#5668858
Lesenswert?

Hallo!
Ich habe in WinCUPL ein SR-FlipFlop für einen GAL16V8 erstellt.
Das möchte ich auch gern simulieren, aber es klappt nicht richtig, da 
(wie ich denke) dem Simulator der Startwert für Q nicht bekannt ist.
Fehlermeldung: [0020sa] unstable output
Gibt es da eine Möglichkeit die ich übersehe?
Vielen Dank!
Angehängte Dateien:
Gast #5668951
Lesenswert?

Versuchs mal mit

Q.d = S # (Q & !R);

Bedingung beim RS-FlipFlop ist immer dass nur einer von
beiden Eingängen aktiv sein darf. Das kann man natürlich
in die Eingangsbedingungen mit hineinverknüpfen.

In diesem Fall ist die Polarität der Eingänge aktiv high.

Klammern helfen dabei die Rangfolge der Operatoren nicht zu
übersehen oder zu fehlinterpretieren.
#5669547
Lesenswert?

Logi Ker schrieb:
> Q.d = S # (Q & !R);

"Q.d" bedeutet Verwendung eines Registers - um ein RS-Flip-Flop 
nachzubilden, benöigt man aber kein Register, sondern zwei Nand oder 
zwei NOR!

So, z.B. wird's ein RS-Flip-Flop:
1
/** Inputs **/
2

3
PIN 2 = S;
4
PIN 3 = R;
5

6
/** Outputs  **/
7

8
PIN 18 = Q;
9
PIN 19 = N;
10

11
/** Program **/
12

13
Q  = !(R # N);
14
N  = !(S # Q);
#5670899
Lesenswert?

Falk S. schrieb:
> Fehlermeldung: [0020sa] unstable output

Die Fehlermeldung wundert übrigens nicht,
der linke Teil ("Q = !Q & S") führt sicherlich zu einem "instabilen" 
Simulationsergebnis, sowie S gleich "1" wird, denn !0 & 1 => 1 und !1 & 
1 => 0.

U.U. würde die Simulation noch funktionieren, wenn auf der rechten Seite 
der Gleichung "Q.io" statt "Q" steht - um ein Verhalten ähnlich einem 
SR-Flip-Flop unter Verwendung von nur einem Ausgang zu erzielen, wird 
man aber besser schreiben (ist dann aber natürlich kein SR-Flip-Flop 
mehr):
1
/** Inputs **/
2

3
PIN 2 = S;
4
PIN 3 = R;
5

6
/** Outputs  **/
7

8
PIN 18 = Q;
9

10
/** Program **/
11

12
Q = S           /* setzen */
13
  # Q.io & !R;  /* halten */
#5701703
Lesenswert?

Die Lösung war, dass man bei der Simulation im ersten Vector die 
Startwerte festlegen und erst im zweiten Vector den Output Enable 
schalten muss.
Dann kommt ein sinnvolles Simulationsergebnis heraus.

Vielen Dank für die hilfreichen Antworten!
1
/** Inputs **/
2

3
PIN 2 = S;
4
PIN 3 = R;
5

6
PIN 11 = ENA;
7

8
/** Outputs  **/
9

10
PIN 18 = Q;
11

12
/** Program **/
13

14
Q = ( !Q & S & !R ) # ( Q & !R ); 
15
Q.OE = ENA;

Simulation:
1
ORDER: S, R, ENA, Q; 
2
VECTORS:
3
0000
4
001L
5
101H
6
001H
7
011L
8
001L
9
101H
10
111L
11
111L
12
101H
13
101H
14
001H
15
001H
16
001H

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren