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 (s) {
|
||||||
if (r) {
|
if (r) {
|
||||||
q = true;
|
q = false;
|
||||||
qn = true;
|
qn = false;
|
||||||
} else {
|
} else {
|
||||||
q = true;
|
q = true;
|
||||||
qn = false;
|
qn = false;
|
||||||
@ -72,11 +72,11 @@ public class FlipflopRSAsync extends FlipflopBit {
|
|||||||
q = false;
|
q = false;
|
||||||
qn = true;
|
qn = true;
|
||||||
} else {
|
} else {
|
||||||
if (q && qn) {
|
if (!q && !qn) {
|
||||||
if (Math.random() < 0.5) {
|
if (Math.random() < 0.5) {
|
||||||
q = false;
|
q = true;
|
||||||
} else {
|
} else {
|
||||||
qn = false;
|
qn = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,9 +29,9 @@ public class FlipflopRSAsyncTest extends TestCase {
|
|||||||
sc.check(0, 0, 1, 0);
|
sc.check(0, 0, 1, 0);
|
||||||
sc.check(0, 1, 0, 1);
|
sc.check(0, 1, 0, 1);
|
||||||
sc.check(0, 0, 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, 0, 1, 0);
|
||||||
sc.check(1, 1, 1, 1);
|
sc.check(1, 1, 0, 0);
|
||||||
sc.check(0, 1, 0, 1);
|
sc.check(0, 1, 0, 1);
|
||||||
|
|
||||||
ObservableValue q = out.getOutputs().get(0);
|
ObservableValue q = out.getOutputs().get(0);
|
||||||
@ -41,8 +41,8 @@ public class FlipflopRSAsyncTest extends TestCase {
|
|||||||
s.setValue(1);
|
s.setValue(1);
|
||||||
r.setValue(1);
|
r.setValue(1);
|
||||||
model.doStep();
|
model.doStep();
|
||||||
assertTrue(q.getBool());
|
assertFalse(q.getBool());
|
||||||
assertTrue(qn.getBool());
|
assertFalse(qn.getBool());
|
||||||
s.setValue(0);
|
s.setValue(0);
|
||||||
r.setValue(0);
|
r.setValue(0);
|
||||||
model.doStep();
|
model.doStep();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user