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!
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.
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); |
ein SR-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 = !(!S & N) |
14 | N = !(!R & Q) |
:
Bearbeitet durch User
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 */ |
U.G. L. schrieb: > (ist dann aber natürlich kein SR-Flip-Flop > mehr): eigentlich müsste man sagen - ist dann kein "klassisches" (kreuzweise Nand oer NOR und so...) SR-Flip-Flop mehr, also eines, wie Du es vermutlich im Sinn hattest - denn es ist SR-Flip-Flop!
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 |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.