mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-12 22:36:02 -04:00
fixes the RS flip-flop, closes #440
This commit is contained in:
parent
f09052d0e1
commit
bacad7ede3
@ -61,8 +61,8 @@ public class FlipflopRSAsync extends FlipflopBit {
|
||||
|
||||
if (s) {
|
||||
if (r) {
|
||||
q = true;
|
||||
qn = true;
|
||||
q = false;
|
||||
qn = false;
|
||||
} else {
|
||||
q = true;
|
||||
qn = false;
|
||||
@ -72,11 +72,11 @@ public class FlipflopRSAsync extends FlipflopBit {
|
||||
q = false;
|
||||
qn = true;
|
||||
} else {
|
||||
if (q && qn) {
|
||||
if (!q && !qn) {
|
||||
if (Math.random() < 0.5) {
|
||||
q = false;
|
||||
q = true;
|
||||
} else {
|
||||
qn = false;
|
||||
qn = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,9 +29,9 @@ public class FlipflopRSAsyncTest extends TestCase {
|
||||
sc.check(0, 0, 1, 0);
|
||||
sc.check(0, 1, 0, 1);
|
||||
sc.check(0, 0, 0, 1);
|
||||
sc.check(1, 1, 1, 1);
|
||||
sc.check(1, 1, 0, 0);
|
||||
sc.check(1, 0, 1, 0);
|
||||
sc.check(1, 1, 1, 1);
|
||||
sc.check(1, 1, 0, 0);
|
||||
sc.check(0, 1, 0, 1);
|
||||
|
||||
ObservableValue q = out.getOutputs().get(0);
|
||||
@ -41,8 +41,8 @@ public class FlipflopRSAsyncTest extends TestCase {
|
||||
s.setValue(1);
|
||||
r.setValue(1);
|
||||
model.doStep();
|
||||
assertTrue(q.getBool());
|
||||
assertTrue(qn.getBool());
|
||||
assertFalse(q.getBool());
|
||||
assertFalse(qn.getBool());
|
||||
s.setValue(0);
|
||||
r.setValue(0);
|
||||
model.doStep();
|
||||
|
Loading…
x
Reference in New Issue
Block a user