diff --git a/src/main/java/de/neemann/digital/core/flipflops/FlipflopRSAsync.java b/src/main/java/de/neemann/digital/core/flipflops/FlipflopRSAsync.java index fb6959d59..19d6e697a 100644 --- a/src/main/java/de/neemann/digital/core/flipflops/FlipflopRSAsync.java +++ b/src/main/java/de/neemann/digital/core/flipflops/FlipflopRSAsync.java @@ -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; } } } diff --git a/src/test/java/de/neemann/digital/core/flipflops/FlipflopRSAsyncTest.java b/src/test/java/de/neemann/digital/core/flipflops/FlipflopRSAsyncTest.java index 5fa8003a9..fa86f29f3 100644 --- a/src/test/java/de/neemann/digital/core/flipflops/FlipflopRSAsyncTest.java +++ b/src/test/java/de/neemann/digital/core/flipflops/FlipflopRSAsyncTest.java @@ -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();