DW EditSeite anzeigenÄltere VersionenLinks hierherAlles aus-/einklappenNach oben Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt. CKG Editor ====== 5. Storage Elements ====== In the previous chapter we have had a look onto memory devices, which store data even when no voltage is applied. This is great for longterm storage, like measurement data, pictures or music. The clock frequency of the storage element are often much lower than the internal frequency of the processor / controller. By this, the processor has to wait for the stored information due to high access time. Therefore an controller-internal memory is advantageous. These are often called cache. Distinct storage elements have special properties, e.g. the written data changes the logic level of a pin ('foot') of the IC directly. We will now focus onto these controller-internal, fast memory, which consist of logic gates. The name flip-flop stems from the fact, that the smallest logic circuit for storing data has to store binary values. Therefore, it has to show one of two stable states, and can flip into the other one by an external interaction. ===== 5.1 Evolution of a Flip-Flop ===== A nice, short introduction can be found in the following video: {{youtube>Hi7rK0hZnfc}} ==== 5.1.1 Flip-Flop as a Blackbox ==== In order to understand the wanted storage element, we will first look onto these element based on the IPO model (input–process–output). The process of the storage element is to store two different states. This property can be implemented via two inverting gates which are interconnected in a feedback loop. The simple setup would be with NOT gates as shown in <imgref pic01>. <WRAP><well> <imgcaption pic01|Storing two different states></imgcaption>\\ {{url>https://www.falstad.com/circuit/circuitjs.html?hideSidebar=true&ctz=CQAgjCAMB0mQrFWAmeyAcBmAnPX7IAWAdkIDZF5IRFDMaBTAWjDACgBJcMZcM6sMTJ9qo6JU7ghIZIQE8ZcqEkRhIbAO5ThYftsWjN3XrPm9dhrcmIml183vVbMmHXpfDTUSR4MybfmISXPYiIL4WyjCq6lysvJho+om8QTSS8SCEuvrZwmlqRpkpxuFk6N5agsJ5uXCVdWZlFU7JSdXNDR2uFZlylqX9gzmtoUNjI0a+Pf68Q63TSdPlDb7jATMLrlk5a-WjG0mhm5ITwmsjKukhhwnbJQXqAEYg6NjgyO-IalnwEM8yHDgTAQVzUQjwejqAAe3EQmCI4HQhHCkGIWUUIAANgB7ADmAEsAMYAHQAzjCZGR0Qi7ucEBjZNj8cTyewgA noborder}} </well></WRAP> Of course this simple elements misses inputs and outputs! Therefore we have to look into these now. The input of this element needs at least two inputs. Often the following two are used: * Set input: once this input is high, a $1$ is stored. This input is marked as $S$. * Reset input: once this input is low, a $0$ is stored. This input is marked as $R$. For the output also often two pins are shown. The pin $Q$ outputs the stored data directly. The pin $/Q$ outputs the inverted value. Based on this simple requirements we can create the truth table. * When $S=0$ and $R=0$, nothing changes and the outputs stay the same: $Q(n+1)=Q(n)$, $/Q(n+1)=/Q(n)$ * When $S=1$ and $R=0$, the stored information will be set: $Q(n+1)=1$, $/Q(n+1)=0$ * When $S=0$ and $R=1$, the stored information will be reset: $Q(n+1)=0$, $/Q(n+1)=1$ * When $S=1$ and $R=1$, it is unclear what to do. <WRAP> <imgcaption pic02| truth table for the RS Flip-Flop> </imgcaption> {{drawio>TTflipflop}} </WRAP> In <imgref pic02> the last input ($S=1$, $R=1$) reaches a not defined state. This state have to be investigated more later. ==== 5.1.2 RS Flip-Flop - Open the Blackbox ==== First, the storage device have get some inputs in order to change the stored stage. For This, a "switchable" NOT-gate is needed. Looking back to the chapter [[:introduction_to_digital_systems:boolean_algebra#convertibility_of_gates|Boolean Algebra - Convertibility of Gates]], this can be achieved by NAND gates or NOR gates. \\ In <imgref pic03> a first approach is shown. <WRAP><well> <imgcaption pic03|storage device based on NAND or NOR></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0mQrFWBGZBOALGATGgbABzZ54Ds6eE8kIiWtApgLSoBQA7iNqdiMqXi48+aXpA7gwg7BgKTpMqBLBSui7r3Rjlq5IXkjtnFYK1De2ReM4a1Gc1ww1rDjOuEYnS46rCjXVjqCUnIm4P4uYW72tn5GBp6hqtHeDmACaRGsyPDIDnpJpvp5vIjw2fAQsfphIXxcULQVJcIyhY5yJY3lOVUesgkDXWWsADL5eDTYcHyTDXkAZgCGADYAzgy0SuO22PDSM3vS9cvrm4jiAEaONMie4JRcJEoAsgYFIE6d+hbQ5W9hNqfSByIG-coADz46T4pFuz34EBi9gAGuIoZZOmB7OlNDDkSAAHIAQUJABEADprAAmDAAbgBLADGDFYGJwkkQUjyKjkBMJAHkAEpU2mMlmsa4yGjYnGPDDPdHQmJ4TSPYh0RwgFHINmfMCIDWfPAqvlagCauqhWE6pCRZFhggJ5qVyGxxrV9s1ih1erdpHAcNmwTtny1aLGrn2XBmGGjYhApw2W3EO2EUimMwzDRoSfOSmtYFCoYVAfSTotSqwdDwNfsCrNiktrAByQGX0+A3BLYMdQ7dW7QA noborder}} </well></WRAP> But how are the inputs $X_0$ and $X_1$ related to $S$ and $R$, as well as the outputs $Q$ and $/Q$ to $Y_0$ and $Y_1$? \\ In this introduction, only flip-flops based on NOR gates are discussed - but flip-flops are can also be build up with NAND gates. In <imgref pic04> such a NOR flip-flop is shown. Compared to <imgref pic03> the outputs had to be rearranged in order to have the pins sorted as shown in the logic symbol (see <imgref pic05>) So let's analyze how this setup works! Therefore, the circuit in <imgref pic04> has to be analyzed: - Initially, $Q=0$ and the both inputs are $0$. This is due to the facts, that: - The upper NOR gate has also two $0$s as an input a outputs consequently $/Q=1$. - This $1$ is also an input to the lower NOR gate. - This respectively generates $Q=0$. This situation is stable. - When setting $S=1$ multiple things will happen successively: - At first, the upper NOR gate has a $1$ on the input, which results into a $0$ at the output, and on $/Q$. - With $/Q=0$ also both inputs of the lower NOR gate are $0$. - Therefore, the lower gate generates $Q=1$. - The stored data is also stable: - This means $Q=1$, even when going back to the initial state $S=0$ and $R=0$. - The upper NOR gate still has one input set to $1$ and consequently still generates a $0$. - The only way to clear $Q$ (i.e. to set $Q=0$) is by setting $R=1$ - This this input the lower NOR gate has a $1$ as an input and outputs $Q=0$. - By $Q=0$ the inputs of the upper NOR gate also both get $0$. - This results in $/Q=1$ The only problem (or better inconsistency) appears, when setting both inputs to $1$: * By this, both NOR gates generates $0$s * This on the one hand creates $Q=1$ and $/Q=1$, which is not consistent. This will get even more problematic: * Both gates show typically not the exact same behaviour in respect to setting their outputs on a sub-microsecond scale to the voltage comparable with the logic $1$ or $0$. * Therefore, once one will set the flip-flop back to the initial state $S=0$ and $R=0$ both NOR gates compete to set their output to $1$. The faster one will win. * This results in an arbitrary behavior. <WRAP><well> <imgcaption pic04|The RS Flip-Flop (based on NOR gates)></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0kKxVgRgCxMgTjGAHJA7JEmGnEiHJBSChHAKYC0SSAUAO4ioogBM+vLih68cOKBz6RxvFFW58BEzr2l8kANiky5y7YsELZVSJNUyMW8wb1HZQkbtNI4EI5v28P5QQjisXN2E+S09QnygKVgAPLjB5fBENLSR8fBo+HgA5AHkAJQAdAGcAMwAbAEsAB2LygHsq1gAjOJSMQV44DHBUCVj7eK00cEwM+zyYxXUeWnV0xxAAZVYAGQcRniV4kUiSgEMyovpqUzWjNSVrQSp9w+OEU1jsES9wOA77BYBFSbBOkYgYEoIyGmRAAHofgBZTIWLTbEJWPjQfww2QyDwIrxI3goswoOF8ezYvRXDy8YkeUwqAnqKzE0LUokiUJXRmsIA noborder}} </well></WRAP> <WRAP> <imgcaption pic05| The RS Flip-Flop> </imgcaption> {{drawio>RSflipflop}} </WRAP> ==== 5.1.3 D-Latch - Solving the Inconsistencies ==== In order to solve this undefined behavior one simple solution is to have the reset input $R$ be always the negation of $S$ ((Another easy way would be to have a **dominant** input, which overrules the other one, when both inputs are $1$)). The input name is now changed to $D$, which refers to the stored data. This single input solution is shown in <imgref pic06>. The upper ciruit in <imgref pic06> shows a common problem: when the ciruict is not prepared correctly, the output could show an intermediate inconsistent situation. This can be seen for the switch from $D=0$ to $D=1$. For a short time the outputs are $Q=/Q=0$. A solution is to use a **buffer** (symbol "▷"). A buffer delays the signal for a similar timespan like a NOT-gate, but without negating the signal (shown in <imgref pic06> below). <WRAP><well> <imgcaption pic06|The RS Flip-Flop (based on NOR gates)></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0kKxVgRgCxMgTjGAHJA7JEmGnEiHJBSChHAKYC0SSAUAO4ioogBMKOLih68AbD0gc+kQbySihIgVCm8ZXDL2mz5KzmtnLufXZP3re+LQb7Kzi6VWNyFkpHAjGkm7Rq3ktKjhWd09hPitfS38+amCAIxonUVk4DD4MKkkADxBGOQ0qRh5vCCUQABFWABkQcS4cEoUkRtjyADMAQwAbAGd6ahzwEg18cDhrSCpygEVWXLBeBEt0sEo+HC1ygHo5gFlbWUiwSBFI62hgg-5Bby0Tkp8L4P1laL5+Pz1fO4-HwNURien3e9l4IPOFki9mceDqIjhkgAkvC-qjeIjEAgXujPvUWhIpEg1A0ePjWjCSQSHNTKVQ1v5wgzvjhBMz6szJChwSBWeN-CTOVA+JcKFIOT4ORMVCiJVp6sJBFlRTjjIrUeqwZ9hFQbDrvjdwKJddqUFlVOowMa0Vbza9BPrwTxbSprsoXQ8jbqRVdDjQzeBTv7vbxLvNwEt-WM1tN1js5gsRlaEMyrQ7bCA5rUpf4FMzAiAun0BgghvlyGtBMUjeRylVEgHsAolukUHAlSEPA5Hep9QFhcFQg4XTYXf3sUSmSlhxSLQ6A3rTHOaLpjLhCeY2dbR7PN+BWmql5xD81wrQAUA noborder}} </well></WRAP> However, this circuit rises a "small problem": now the state can be changed, but set and reset is based on one single input. Therefore, it is not a storage device, but more a kind of a delay: when the input data changes, the output changes after a constant short timespan, too. \\ In order to solve this next problem, another input $E$ for enable is introduced (see <imgref pic07>). Only for $E=1$ changes in the stored states are possible: For $E=1$ the circuit gets **transparent**. Once $E=0$, no changes in the state can be done. \\ The given circuitry is also called **D-Latch** with the symbol shown in <imgref pic08>. Generally, the term latch is used, when there is a transparent time span. Otherwise the circuit is called flip-flop. <WRAP><well> <imgcaption pic07|The D Latch></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0lwjFa8Cs8BsAOAnOg7LmJpgEzxgogqRUgAsEKApgLTzwBQA7iPHXSBJ4SvfoOJRugyJkF0afAUJGQpJGYIzTZJeZJ7qdw0Ur2qDGkrm2Dj5k4N0PdNVagiLN6G2W+IRlCgc7s7WhoLW-lBUHABGILLw2DQkQuDqkgAeICwoEGQCLGDeZHj0ciAAIhzZYGBKZOAoIqkCpiAAijXplGCQEBQ0fd7tAPRdALJyOtZ9SmGC0EFTujpac16Ci0EGdDMlTr76Plqtm-arm2dW3heHYZbWqgCS6dNvGwoxPGAte2-hNzUBJrPwkUG8LY0IKoGgSG68cERPxQ77ODTwJGAqSYnQYrFaeyeDa48CQAREpEkrFPKS-MkCCSfKTwiTwswsnR6eFOVTZXL5OjeIplXTYcpOACiLJSGnhGlUdFSALlstkrm2MQASirZGwShiti5NSQltEYEEdeyaPq5F8WpRTY6za4lhwAPYA6J0eCQAJIOCQRApD5VD3gfLe33+mCByDYPDoFDoEiUEN1cAgaWe8ion1+2gwYOQro5lpRgtp5DRRDjDhAA noborder}} </well></WRAP> <WRAP> <imgcaption pic08| Symbol and truth table of the D-Latch> </imgcaption> {{drawio>DLatch}} </WRAP> ==== 5.1.4 Edge-Triggered D Flip-Flop - One at a time ==== In digital systems the data processing is done clocked (i.e. once in a cycle). In the sub-chapter before, the input $C$ was introduced. Once this input changes to $C=0$, the data could be used in the next logic stage. \\ Digital systems often need to be power efficient, in order to save energy and avoid overheating. A disadvantage of the D-latch is, that in the transparent phase, the signal can change often until it gets stored at the end of the phase. For every transistion, a small additional current flow is needed. Therefore, the D-latch is not as power efficient, and would also pass on the transistions to the next logic stages. In order to change the full transparency into a single change per cycle, a circuit based on two D-latches in series can be used. In <imgref pic09> the two latches can be seen in the upper part. The first latch is enabled with the negated **clock input** $C$. Therefore, the first latch is only transparent for $C=0$. The second latch gets the double negated clock input, which means, it is only transparent for $C=1$. The output is changed (and $D$ is stored only for the switch from $C=0$ to $C=1$. By this, the state of $D$ is only stored, when switching $C$. When the switch from $C=0$ to $C=1$ is used, then this point in time is called **positive edge**. The lower part in <imgref pic09> and <imgref pic10> shows the symbol of the D flip-flop. <WRAP><well> <imgcaption pic09|The Edge-Triggered D Flip-Flop></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0lwjFa8Ds8Ac6BsBOATAKzp7o5glYgGRUgAsEBApgLTzwBQA7iPHXSDyR0vfoLwDI3QcN4pKfAUJFSey3gTwyRqSqu0HFcvdPV5yB9fqPwsNG-Kgd4BCDc2GPiLTQLPXokoWZhbetH4ARiA6eJR4eCiCBCYAHiAsAS40LGAKAUoCACIcALJUJIIWREFatdB+ZZo6HtUatYL1pnTNtRKVPqZ95rWyw04AkuBaGALBdDQLsHBwOKtr6xs4VNKh6LPTYlJZ0T28FS7TglDbx5j9ZyJjYb7SNmLw54evnwIfp9ZiCT2CpApw8P6CeYPe76OY0O6g-QIvp3XRgk7GDG2BYcNIZNzEdK5XjoAj0SEgADC0nQ9jEqK+ACUpoF0rZWWEPjQ8PUOmSYB88KgwJA6PIwDg7CLEjA-MyoWi2ApHGFCHz1Ys-DxcnTZlgdF9tfrMbkdHZ0abxHqdI5YR9ITRLYjpPNHlDXTCXUN3aMofoPUYAx5-X1A7IjEdqOBjWMPU8ri9jpaLvRw14rmS-JMwPaZuB7YikMsVptS6ttjxqDV6AiLPomm0qKLPTxuqcq436yCqs2U1I0nZahKQFgEpCtAUQAB6ACKuJH7A0iVHW2x5L6c6iJBilGoiUIJhcEDoQwsbfuYUz-mPoY855Tzwr9FD5pPv1tLtrE4Rsn9P5Eb6Yn+pz3h+raoo4gFWF6SiyFBfT6BIpw5tMwY7LmHgoaydqoVoWF5kijwoo8KADDwCKkfcCRkdGNqUGAXhgeAjH0R41EWmxlHboIlFSJMYzsdx7GajcBBkuxHpgMSHovGkdAEIgdDwMeuD0Oyk5znJJ70CgWx0FgiTdBOFKzqUtGpgBfRxnyZmWmKE5WVxNnMhJULxAI-D2Fcao8uJvKahwLmUXGVnhlcXLqr5SCCsKoripKkDSkgfhpBghn6TIHl0HpFLUql6CGXwmVqYZFLFJMCqOBBejJU+oT0rqFrmkY+FfAA9jxCZqZAWj8kskCINynUQMUHUgtcSk9bQMDFjg8jJGqQ0VBA1IdYuPjdb10XXIgc5rUNNCTVtAo7dOc5AA noborder}} </well></WRAP> <WRAP> <imgcaption pic10| The D Flip-Flop> </imgcaption> {{drawio>DFF}} </WRAP> There are some important timing issues of all the flip-flops and latches, which will discussed here. For this, the timing diagram of a positive edge triggered D flip-flop is shown in <imgref pic11>. The upper line depicts the clock $C$, the middle line dhe data $D$ and the lower one the output $Q$. - The first positive edge, shows a delay between the triggering edge on $C$ and a resulting change in $Q$. This is called the **propagation delay time** $t_{PD}$. This delay reflects the time for the flip-flop to "process" the data. - At the second positive edge the data line $D$ is long enough low in order to switch the state of the flip-flop to $0$ - At the third edge, the **setup time** $t_{su}$ and the **hold time** $t_h$ is shown. When the change of the data input $D$ is not long enough the state of the flip-flop is likely not to be changed. The data on the third edge starts too late to be high. Therefore, the output $Q$ stays 0$ - On rhe last edge the data input is not long enough at high to change the internal state of the flip-flop. <WRAP> <imgcaption pic11| timing of input, clock and output on a Flip-Flop> </imgcaption> {{drawio>FFtiming}} </WRAP> ==== 5.1.5 JK Flip-Flop - The Alternative to the undefined Behavior ==== The D flip-flop was generated based on a circuit with a series connection of two latches. Another idea could be to try a similar logic cicruit based on two RS flip-flops. This can be seen in <imgref pic12>. It looks like a valid storage device: with $R=1$ and $S=0$ a rising edge clears the stored bit $Q=0$. Respectively, with $R=0$ and $S=1$ the stored bit is set and the output is $Q=1$. However, $S=1$ and $R=1$ still creates an undefined behavior. <WRAP><well> <imgcaption pic12|First trial of a different edge triggered Flip-Flop ></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0lwjFa8Ds8Ac6BsBOATAKzp7o5glYgGRUgAsEBApgLTzwBQA7iPHXSDyR0vfoLwDI3QcN4pKfAUJFSey3gTwyRqSqu0HFcvdPV5yB9fqPwsNG-Kgd4BCDc2GPiLTQLPXokoWZhbetH4ARiA6eJR4eCiCBCYAHiAsAS40LGCJLhBKAgDKHACyVCSCFkRBWnXQfuWaOh41GnWCDaZ0OmLxtU5qElV1suY+-jSY7byVLlphvpPRIuOzq6GCUFTSNmLwc2LWhwIHLRM8RhL2ldeD64J0NxsX4HVPK480+tP9n-D4e7TAFaYF2JxpDIKHCJHI4GQ0QogADC0nQ9jEwKOHAASvR7IC2NCFlt4HBOgQKdsYH4eGBwUZ6b1JNImcZwFgdOD9Gy-mzdPcJKsPryPvonsLEWMLOLhncJV97gqjMqPLLTmJldishyXvi9Ysdjr+R5VSStJTaVRIAMenr9M0ZtQBuLga0bTMHbdqh75hCQHY6mB4VgEo8tEiAPQARQ4aSw7A0iVD8NsiMeIFjURIMUo1EShBM+XocosdpGvC2lv8BWGfvLfsNVrodfBLdOjldevLVmkPdk7fZXZmDc7feBjkHvZ4U4HcuGP1Ww1+KFeK6DdVX935jjAXjHdP3lD3m9eJ8EW5zF4mAEkKwk6uvqQ0dnePiD-oDvi+raFMRiWTpBk+h6QJBVkP0-j9fQoI8IVFSkSEAgkSgcjiOh4SRHEOAAGTeMCWGZLYaAAMwAQwAGwAZyYWgpDw4IPkIxUfBAcjqNoykpAAeySYj6DJC0kDgOAYSwZJCG2OpKQgVFeMTVi6EEujkG2RBY3kmhFOUmARMgeQ8DIHA6FcA4uNU+wQBjDggA noborder}} </well></WRAP> A nice tweak is to feedback the outputs $Q$ and $/Q$ to the input AND-gate (see <imgref pic13>). This prohibits the undefined behaviour. At the beginning the output $Q$ and $/Q$ is set correctly on the rightside RS flip-flop. Therefore, the feedback of $Q$ and $/Q$ only enables one AND-gate. With this start the undefined states cannot be reached anymore. The input $R=1$ and $S=1$ creates instead a toggling output for each edge on the clock $C$. This can also be seen in the truth table in <imgref pic14>. <WRAP><well> <imgcaption pic13|edge triggered JK Flip-Flop ></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0lwjFa8Ds8Ac6BsBOATAKzp7o5glYgGRUgAsEBApgLTzwBQA7iPHXSDyR0vfoLwDI3QcN4pKfAUJFSey3gTwyRqSqu0HFcvdPV5yB9fqPwsNG-Kgd4BCDc2GPiLTQLPXokoWZhbetH4ARiA6eFqxKIJ2TgAeICwBLjQsdIguEEoCAFIcALJUJIIWREFxgtB+ZZo6HtUatXj1pnQ6YrE1TmoSlXGy5j7+NJhtvBUuWogQvhPRImMzq6HgUFTSNmLws2LWhwIHzeM8RhL2FdcD64J0NxsX4HEWU2v6KHFDP7z4e7-eCA4FJKSpdIKHAJFhgHAyGgFEAAYQ4ACVHgCtGxofNBLw4HUCMTtjA-DwwEkjFSepJpLTjOAsDpwQyWeIBIzdPcJKsnsz+TR9E8hfRRhYRUM7qLHsLpLKjIqPFLTmJFUdloy1rK1mElplBdNlfifDseNR+t0XvcmtNLcN7tb7ZBTirpHa1g65ikQHZ3gisHgEhItMiAPQARQ4qSw7A0CSDCNsSKx0aiJBilGoIYIJjy9GlFmdeoJJL8BboQx9zp9+vNhdOSSrp0cIs+xc+snbq1kLaZPeNUx5g55-asCulfelQ2+vwE-2Dr0Xi+C-303McYC8bYZO8o27i673R7in2PAElHUvBOezeSdlfq6D5oDhfUG6EPMP3ZTqb1ukCXlZB9Pppn0MDQMAu4ITSAIJEoOEQzoBFkQAaQ4AAZN5phYc4CRoAAzABDAAbABnJhaCkbDggsPDr22EiKKokl9E+P553uYckjBeUeGHMRhwObidBE70RP0CStG9X8VjleS8BwEwBNWZSqFdQR1KkzSlOzXTJX8Sg+XFGg9NM+gnExEyGBGERbN4Al4CJDoSVcslOlSKsEieEl+D8vs0xjegMHoNB6AYMKBAjaMyjAdUiSeJEXOJUpwHVLBosSzKCVcjghASL84lOKlLOKAqcJ1MzAIEDCKpsnKQTDHLavyyBkPsokmosooOAAeyxM0ckgGSkDgOAYSwPNCG2YqtjRAb4yG5zRpgRB7BAaNFrM7Zhp8WBxvkJT4ToVwDjY5BtkQKMOCAA noborder}} </well></WRAP> <WRAP> <imgcaption pic14| Symbol and Truth Table of the edge triggered JK Flip-Flop> </imgcaption> {{drawio>JKFFtiming}} </WRAP> ==== 5.1.6 T Flip-Flop - changeable, when wanted ==== For the JK flip-flop one input value toggles the output. This can also be used to creat a nuew type of flipflop. For this the $J$ and $K$ inputs are combined to a $T$ (=toggle) input. This can also be seen in the truth table in <imgref pic16>. <WRAP><well> <imgcaption pic15|edge triggered T flip flop ></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0lwjFa8Ds8Ac6BsBOATAKzp7o5glYgGRUgAsEBApgLTzwBQA7iPHXSDyR0vfoLwDI3QcN4pKfAUJFSey3gTwyRqSqu0HFcvdPV5yB9fqPwsNG-Kgd4BCDc2GPiLTQLPXokoWZhbetH4ARiA6eFqxKIJ2TgAeICwBLjQsYDgaEEoCACocALJUJIIWREFxgtB+ZZo6HtUatXj1pnQ6YrE1TmoSlXGy5j7+NJhtvBUuWoiMVBPRImMzq6HgUEs8NmLws2LWhwIHzeO7vXT2FRI0x6vX68MDvJRrU2v6KHFDP7z4V7-eCA4FJKSpdIKHAJbK5IQ0AogADCHAASoJToC2ND5oJeHA6gQidsYH4eGAkkZKT1JNIacZwFgdOD6czxAIGbpXhJHjQGXdXtc+fRRhZ9HQhoLhZj7tIZUYFR4JUNFbIjFJMkyNloZWswr5llyPEq8T4dlRIP1ujrXk1ptR+hKpnNLadldJ7WtHdMISA7HEcv68AkJLrMSAAPQARQ4qSw7A0CSweFytkREdjURIMUo1FDBBMLnyUosNpeBqWxfoqpNLq8+OJ5JrpySktOjmdtvLVnln1k7cZXem5e5w+5g97PEnA6lQ2+vwE-xDFxAy+XwX++i5jjAXk79P3lD3cS3h9PcU+Z4Aki8V4Ir+ayUtb6rQfNAfd6hbbNN66vKXsK5aR5dUPD6X1TFrOJullJwABk3mmFhznxRAADMAEMABsAGcmFofRPj+RdXhdJIwTlHgXTEF0DjInR6J9dhV2YpirUg6iRU+HATC4wReLdAS+KE1M8w4r50UxEQGBGGTNnmQkOmJZTSU6VJJQSa5iX4HSB0zON6Aweg0HoBgTIEJEY1KcAxGuRFCXs-FlJssA7KwSzHI85zOiEBJf1dHRKXoEBij86TRXsQEnKKaQAq8d5xWcMgIqc8gHPuJYAHsI3NOh4EgLRiRgOA4BhLBC0IbYYK2VEcsTPKCqKpBEHsEBY3qmhGsKwjkG2RBrKAA noborder}} </well></WRAP> <WRAP> <imgcaption pic16| Symbol and Truth Table of the edge triggered T flip flop> </imgcaption> {{drawio>TFFtiming}} </WRAP> ===== 5.2 Convertibility of Flip-Flops ===== The precious chapter showed different flip-flops - but which are important to understand and remember? Mainly, this are: * the asynchronous RS flip-flop as a base of all the other flip--flops and its use in ICs like the timer 555 * the edge triggered D flip-flop as a simple storage device of one bit. * the edge triggered T flip-flop as one building block for counter and other sequential logic Interestinnlgy, the flip-flops can be converted into each other with the tools of the previous chapters. For this the following "recipe" will be used: - Look onto the problem - Reduce it down to the relevant part - Build up a detailed truth table - Look onto the relevant outputs - Fill in and use a Karnaugh map - Create the logic circuit This strategy shall now be used in order to set up a JK flip-flop based on a D flip-flop. ==== 5.2.1 Look onto the problem + Reduce it down to the relevant part ==== The first step is to take a deeper look onto the problem: The idea is to emulate (or mimic) a JF flip-flop by the use of a D flip-flop and some logic circuit (see <imgref pic18>). So the main thing to find is the logic circuit. <WRAP> <imgcaption pic18| understanding the problem: JK flip-flop based on a D flip-flop> </imgcaption> {{drawio>JKFFbasedonDFFanalysis2}} </WRAP> The truttables of the two flip-flops are shown in <imgref pic17>. The relevant (and different) part here is for the rising edge. The other part is similar and does not need further investigation. Since the output $/Q$ always have to be the negation of $Q$, it is only necessary to get the output $Q$ right. <WRAP> <imgcaption pic17| understanding the problem: JK flip-flop based on a D flip-flop> </imgcaption> {{drawio>JKFFbasedonDFFanalysis}} </WRAP> ==== 5.2.2 Build up a detailed truth table + look onto the relevant outputs ==== Now, a full truthtable of the problem has to be filled. In the chapters before, only the external inputs were related to the output. In this case here, the output is also related on the former internal state. For example, the output of JK flip-flop for $J=K=0$ only depends on what the internal state was before. So now we have to consider the inputs AND the internal states in order to get the output values. In the <imgref pic19> the truthtable for the JK flip-flop is shown on the left site. The each second line is marked darker for better understanding. On the right site a truthtable is shown, which includes the relation to the internal state. * For $J=0$ and $K=1$ the output have to be $Q(n+1)=Q=0$ independent from the internal state * For $J=1$ and $K=0$ the output have to be $Q(n+1)=Q=1$ independent from the internal state * For $J=0$ and $K=0$ the output will stay the same. Therefore $Q(n+1)=Q(n)$ * For $J=1$ and $K=1$ the output will get inverted. Therefore $Q(n+1)=/Q(n)$ <WRAP> <imgcaption pic19| Creating the truthtable for the JK flip-flop with Q(n+1) as an input> </imgcaption> {{drawio>JKFFbasedonDFFtruthtable}} </WRAP> When looking onto this table, one has now to recap, what the main goal is: What does the combinatorical logic in front of the D flip-flop look like? \\ In <imgref pic20> the circuity of <imgref pic18> is redrawn but now with the input and output variables of the wanted combinatorical logic. Based on the truthtable of the flip-flop (<imgref pic17>) it is clear, that the D flip flop simply delays the output for one cycle. Therefore, the input $D$ for the D flip-flop is equal to $Q(n+1)$ in <imgref pic19> <WRAP> <imgcaption pic20| understanding the problem: JK flip-flop based on a D flip-flop> </imgcaption> {{drawio>JKFFbasedonDFFlogiccircuit}} </WRAP> ==== 5.2.3 Fill in and use a Karnaugh map + Create the logic circuit ==== Based on the truthtable in <imgref pic19> a Karnaugh map can be generated. This is shown in <imgref pic21>. <WRAP> <imgcaption pic21| Karnaugh Map for output D based on inputs J, K and Q(n)> </imgcaption> {{drawio>JKFFbasedonDFFKmap}} </WRAP> The boolean formula for $D$ is therefore: $D=J\cdot\overline{Q(n)} + Q(n)\cdot \overline{K}$. \\ With this, the logic circuit can be generated (see <imgref pic022>). <WRAP><well> <imgcaption pic022|Simulation of a JK Flip-Flop based on a D Flip-Flop></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0l3BGeyXwExVmArGgHAGwGR4IAs2eeZeAnCNpAyGRNgKYC0CCAUAtmwMA7ARACMBMkwlQo-bGJp4QnRQzRM1S+QCUQaKarRkDRztPEGWyA9CFp7cmNl4B3FlVXqyl7fI9lEBVfJhVIXk1hFj8fP0tTAClIyGjQ4JimExYQAGlefU0tbKLVSwRrJHg7BycwaDJaSAJKRjBaKhb6FxTo0s4SuDkk3oMwDAHTNHHhvIKxiZKZixlrIqHHWqEyezBhPEVIQQQDtGxonukIBFEQYQwwSFMETTk8AH0Ed8h3siQ0d7Yb6weC0USKM7fd4Aj5gd7JK7iW4vFSPZ63Ji0T5Qv6QAFAmDIMEtAiQn4ArFw-KIm5iE6mNELOQAr4-XH44Gs6HcuEAYQAMvlZIxnrgGL5xGKKhghK4BEwyEYUQwnuJ8FYZQwFAqlbcRUi6dYmK4AJIsBB0gghdQW8KYWXuFg2q0sJUuiIefW0lXPYgBH3iCVe9URKLgP228Myag5fJhsARhNRyUYEaBC3iF0JmTux2K55J7PiJMe8WimXIsWl850mM1gxDUv5tUKmgt-2+FQvVtd1VNttIUwEe7iPuO4cYNAZiej0ylmeyK1dqvjryye7LjDztdipcGNvblQmEJt48d09tzviGP9rsx5v0-0zqdiDcGDOlsAx0r10rVmP+AQGb+P+pgqEBYjhKMEHeGIMErDkACKfBhm+67qpGpiIWgvCIsIYqcHgYREaoMwKl8XJ-EggKclCAJ-O8cLIbhkAQPhGBeFQMgliwLI4jwPwEtAXL0QCTE4WGQSTCwyzZKYApxqk4DfkMRalPJgqjIYpjSdpswKbwABGNiYmIghdrQQgRMZX6mCOwjkAYwhMBEAAeJkgLQMrZJZOQnCAADO7AAI4AK7sAAdgALgAlgAhgANgAOgFCUAPYAOYxQAxrwQA noborder}} </well></WRAP> ===== 5.3 Application of Flip-Flops ===== ==== 5.3.1 4-Bit Register based on D Flip-Flops ==== <WRAP><well> <imgcaption pic050|4-Bit Register based on D Flip-Flops></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCCsCmC0YAYQIHQIEwDYDMkCcA7GNgBxhiQFYEFRKQgAs2Uc5AUBQyUnpuGHQg+yZJ0gN0jXv3RVh-euwCy4Av2xCwmJJpBD0KSOwBK4WVJDwLjcPvAJHTpIclHRqY1yg6FUPEIiSt7SMkx6QWKMYHggmkiYJCRxkEKJyegIjMmM7Jm0YOpxBgjJerYAmgjsAO5qGlpFQbVx2A2t-M35HcVxib2VYCo9evG9BkYtjCLlIl0ItNPtqWVClejDSwM84-qTdZiQ7YedinkLICe96QMgFdjDV3qY0ruu57RjN+hJl7+V1W6YwIJFsP2SINslQeQMyIAIqX0vwRazuG1hSCoLmRcMG7GkLGyPQIWTioNE2AA+mBKQhKdFEJTILS0E5CCd0My6ehKVSqQBhAAyAGkWtp9JYduhLNU6lLJUhBMlZSB5WDXtLbCqpIqfvoNTKpo5wHrQhKtS0deamMbNWI6kddclHdaVWa7S67SqdiIic06n7+ETOWdusGjqqXBHbAANbWvESZZL+m1hNrJs4O3wiFZ+aqCpgZCN6EP2JAAMwAhgAbADO0CgYgLSf0EZiBgjWhAVbrDYYgIuLdLVtLsaGdRbidKrbOBfTM5SHdkoh79cbA8+-VHtujIBjGzq85mW4j+agetLkEEC67q77Ym6ucvvlHe4eDr1OYvp-xCEJOWNEkoSJXQqRpOlogwJkWWcdkjk5Wl6V5PlKQIRC0KpOMABoAB1ayqX9-yYIkgKga9dDwalEMgnkuRQcCkOwSiwLpOlGUwsBcPwoYCULMihFIyhFCYHkGJo6DUDE+keTAqk2JQ-cuIqDZeKJIT4VJF4kCQRhmTExBaJZKTdN5alMEQ7RTJjbAlIeUhLjiOxEGNHCAAs8IAe3LPCACEAEsABda3YIA noborder}} </well></WRAP> ==== 5.3.2 Shift Register based on D Flip-Flops ==== <WRAP><well> <imgcaption pic051|4Shift Register based on D Flip-Flops></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCCsCmC0YAYQIHQIEwDYDMkCcA7GNgBxhiQFYEFRKQgAs2Uc5AUBQyUnpuGHQg+yZJ0gN0jXv3RVh-euwCy4Av2xCwmJJpBD0KSOwBK4WVJDwLjcPvAJHTpIclHRqY1yg6FUPEIiSt7SMkx6QWKMYHggmkiYJCRxkEKJyegIjMmM7Jm0YOpxBgjJerYAmgjsAO5qGlpFQbVx2A2t-M35HcVxib2VYCo9evG9BkYtjCLlIl0ItNPtqWVClejDSwM84-qTdZiQ7YedinkLICe96QMgFdjDV3qY0ruu57RjN+hJl7+V1W6YwIJFsP2SINslQeQMyIAIqX0vwRazuG1hSCoLmRcMG7GkLGyPQIWTioNE2AA+mBKQhKdFEJTILS0E5CCd0My6ehKVSqQBhAAyAGkWtp9JYduhLNU6lLJUhBMlZSB5WDXtLbCqpIqfvoNTKpo5wHrQhKtS0deamMbNWI6kddclHdaVWa7S67SqdiIic06n7+ETOWdusGjqqXBHbAANbWvESZZL+m1hNrJs4O3wiFZ+aqCpgZCN6EP2JAAMwAhgAbADO0CgYgLSf0EZiBgjWhAVbrDYYgIuLdLVtLsaGdRbidKrbOBfTM5SHdkoh79cbA8+-VHtujIBjGzq85mW4j+agetLkEEC67q77Ym6ucvvlHe4eDr1OYvp-xCEJOWNEkoSJXQqRpOlogwJkWWcdkjk5Wl6V5PlKQIRC0KpOMABoAB1ayqX9-yYIkgKga9dDwalEMgnkuRQcCkOwSiwLpOlGUwsBcPwoYCULMihFIyhFCYHkGJo6DUDE+keTAqk2JQ-cuIqDZeKJIT4VJF4kCQRhmTExBaJZKTdN5alMEQ7RTJjbAlIeUhLjiOxEGNHCAAs8IAe3LPCACEAEsABda3YIA noborder}} </well></WRAP> ==== 5.3.3 Frequency Divider based on T Flip-Flops ==== <WRAP><well> <imgcaption pic052|Asynchronous Shift Register based on T Flip-Flops></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCCsCmC0YAYQIHQIOwBZ0LOyCCAzIpkQEyRRJVlRxhgBQA7uOgGzgCc5I5CABw8+CVvyEiJw8uUzJxAmXP6Yks+WLZEOy+WvUqtIHcLC8Tu-kfFEdU01LEBZaeHJmLYD-34pITABKIIKG+nrgvoiEMYR+VOT+yMj+4hyQXOZ8up6i4pA+GlAcYQpsBblQhTZsmNyZFhVOTJjmJgIg6VxEBZ0ZEpjCmEwC6G7eMmruQyAAmsZK0+MWxo4TlpVioxtLBrtzzK5rPj1863yJAeU+601ZCtt3PhlI6-Kz5EyuT8KQ3ksXVJsHJLEH3LYYTqCMw+dAdN5zIhfKEw4QcOEA+IjSEUJBdfjQvpcd4Qsa4kD4C6Eykgd5I7bkuHqakdd6fBkdEEeNGE97MNREWnCIgIeQ4eSnZLoAD6YGlCGlrUQ0sg8rQMW4nAylHl0vI0plRGlAGEADIAaRaxCFO3FtIoyTARrlCqVCtVqFimq6OoV+qd0qN8ytgsG9r4drqXFeHFlurdKrVXq1HF9etlsaD-OtYajFNFxSQr24cddjHdapd6fMgelHxDNpe+fkqc01lLivLic9GpTaf1slrsyR5kFoSkeAaogUppCxey8nuZxAADMAIYAGwAztAoApR6p5yZ7OCoExZ3Ij0Ul5F19vd1QxLO9vciIJFxZl3ed3uxAeXxYeank+hZSJAmAfhct6bj+j5MAeTb3Pip4BG+7gmJE0RIAAOgAFthW4APYrgRABCACWAAuW5MEAA noborder}} </well></WRAP> <WRAP><well> <imgcaption pic052|Asynchronous Shift Register based on D Flip-Flops></imgcaption> \\ {{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCCsCmC0YAYQIHQIOwBZ0LOyCCAzIpkQEyRRJVlRxhgBQYkVAHEmAJznhh8efJAiYB3cOgBsISjKGzIM0RIVzwvcFJHiNg7SE5adEo2ANnNKyfM3lymPcl33Hah7I-XXnxw6Q+1kTsfh6YhL7OEsFumjGRQUS2fPEK3uHGshlpukSQ+gHZBkH5ijJ5BVEgREll1aXqoqxU-k7k6IJWzgCykQLssggD-bKyKJBMAEqGAWEDPhCChMvLYy3jyMjjLGxQBgqQmmlQulJKdVIdddaXfOq3mTdX5jT7xbpKXAafTjfnCjhYsIPphQo4foEQUCoKCErpMNxkjDodZwl8kGjfh8BJlMS8qpAcepCZVUYi6iTrjtaBEFGROsJnJgeNVyEgzuVShzBpgBpgmGz0H1yPN-iKQI4AJreDwjBZWXIhcDi1IKwXVJUjZnycVS5i9VIqqTDcV3bYSSCwkaWlECjDI5UDSDSR0SkCS8hMXo2135E3zNa6QGu4M5dWh8XoWpa91EL0gCMDY3+0bkbbqijs84ipPnKWiDNshMNdgDfB8KVxwtIDoBUsJotSz3VkDJ2T1tt6pjhIgSgZEBCOYMVTZ4AD6YDHCDHzMQY8gU7Qy240iUlCnY-IE-QY6IY4AwgAZADS3eIfeqxoTg4lFE2NQnG9n04XqBWK456+nW4fe+lZ97Xlbz4YMEWUS9H2nZ950Xd9VykL9N13KRdzHSVmB7C8wOvcFimqbhIJnRgX0XSdv13Ai-09TCgJ+YMEMcDEtzIoi51fJdCA-NdXyQzAfzQuNglZapwHAVYAB0AAtxIAZwAewAM1kgAhABLAAXGSmCAA noborder}} </well></WRAP> ====== Examples ====== <WRAP><well> <imgcaption pic100|Shift Register with synchronous Load ></imgcaption> \\ {{url>http://www.falstad.com/circuit/circuitjs.html?hideSidebar=true&ctz=CQAgzCCMCmC0AcIAMA6ArAJgJwBYdaSTSRwHZCJiQ0QdK5JIAoAGVqUQx0Rw5A3hJ+UEADMAhgBsAztGrJWtXv25KhA9cjFTZ8pIuI4ViQ-0HChEmXJr62ZDMdqlHG4ZG3W9igGyEnfurmjh5Wura+YK6qPlFmmpY6NgpsaD6cqmmcwSJhyXbUYD5OaEXx7p7hCgCy7CbFvIiQxa7oTLV4QmlqUC38bbWm3abNwhgDzo7dDr1jE4HUxQujrWjtILFTS3Er-WuD6YuLTX3j+4XFw2W7Z0wASuCkxZAYQmB4UK8iIYS-6uh7LSoNZsMBPKCYcCQyCQxyJLwRUHgyDwIxgaGoiyVfJMFAgeAAIQAlgAXADKAAsiaISXdoABzInSEnQABOAHVSRSWAB7cQAEy0JigWBAAGEWABpWjfEC8gX4sYgMlEgB2G3AwgAGl1HKQRFqPGh9c8QFrHGBhR4tRA6DLrUYBJrrTQMBAQmbnjQPNb9aKhB4AJpCHDFfVCQMeMgaiMWqZaQMQMC2hNot4J72iuEgQPPH0J-XZoQAEQAYpIiQAHcs8ysAUUkAFsADrSSCtjCtsCtnDN1kAQVV-IA4uIWQ2W9I0K2fK3SH3ByOx9AJ634K2sK3IEg+wB5Vmj8dNrc76Tztt9gCSqoAbmyWazV9J11O9wfl0-IN2272252B0Oh4rsez5btObbdgBS5HpOzQdluvasmWFbVpItafp2bbtm256IchVY1vWIEolum7SK8PYLoBH4gRg2GMB2-6LkBT4vm6HaIfuLG0b+GCYSRrJcTRk4YLO5Hnhg05Qdxk5sWxs7ScJHZkZAZEYPOSHlgRaFESJ4FgKeYDYXhWmoehIHvF2mHopRikwV2YnJl2GnMUpoHSJaXaboJ772R5ZFgl2nG+cBk44MZmG8FR0GhWuPbfuF0UyT2v4GT2-74WZuk9oZCXgSZKGEU+3A9mJ+C2a5fnED255oO2dmxe5mCtqUb7JVO351T264+e1aDgWkLWIZVjUvsaLVSSNT5oC+UQtQpmVFSBaC-mQLVkYhvKMgAxruACuJKVgdT7eVtRK7QdR0kp+UlnRdh3HbRPV3ftD3XbRkEvZdj2TuNrJfW903-gDV1Pp5-08jtr2gyBdB9iDP1dp9kPndDiMecDKP3TDYUKQj71hRp+OfqdWNowTXY7hDUPfRTWHw2TtNPv+153qyD6sVuCms-ebKc+R9U8+zfMgS+eBXrevOPqLykS2zHMy1OPVCwrskOXLUv81Q7atqeOvkc2uuG6+F7wUbLVbsbnbmybO66+gxvgfr1vSHbJvO8bbtO1bnuO5bRum67-sGzb3tm0HFuBy7XvB9HftR77kce6Hwd677CcpxnEfuz7mfJ9nYchwXseJznAf62n4cx1n1f57XufFzX8d1836cu2c4cd0XXftw73d9734GD53A9W6PHbj+Rk892PQ+zyPc8T+BbvAvHK8O5H6-Tpvnsb7bu-b-v9uH8vB+O0w4VvOC8CIJaRiMB6hKkpS1K0gyTIPpyJLcnygrYQG8Eg5TigIA083pQEtWQMfSB2FMJgJAQbIB4DEHwP-gggBKCYEQOAbAgOyC4FYMwTg7ByCMEYIIcQoh+C8EIIodQpBtCaFoOYSQxhDDcHsNYRw1BXDdb8CXvwqeroBGYTOIIsRoiASSOEUI8RUiREKNkdIuRMiJECNPKvYBGi+62GgVovRujXY6KgUYgaJjNFrCAA noborder}} </well></WRAP> <WRAP><well> <imgcaption pic101|Shift Register with synchronous Load, Direction Bit and Sout></imgcaption> \\ {{url>http://www.falstad.com/circuit/circuitjs.html?hideSidebar=true&ctz=CQAgzCCMCmC0AcIAMA6SAmMkBsnsBZN8B2JfATmJAFYkaR8Jq5JIAoAGQaUXXjvw9wGEOiggAZgEMANgGdo9JJwaDR-VXSxixdafMXVkK2vnV1TwnckmyFSlSR0anV0eP32jyrtiR0+Oj8tETFIWwMHXzBnIJi3XQivYy5qbF4NNMRtd3DPQxSaMGxzIpKcsKSC5QBZbkQ0+qgSnRRqNjr8NUauuhx3dDaOmjIaEst+1vbO4jEe2eaBobrgsZBVydFl9fjG7HjNwemxhvH0xanh6mK165LDoYAlcGJ79C0uqHfxMP8--y2RiONlQ7S4YFeUGoYjA0Kh1jydmqbBQIHgACEAJYAFwAygALTESbGPaAAc0xcmx0AATgB1DgAeykABMACKYmk2RAtcIAYQ4AGkGD8QGyAJLPcjgdwcADyAEE2fRrLjxQA5EBUMxiXFygCqABUXiKIAAND5a8Rm8JgILWnTja0QdBiMzhM3u7LWoybD33PrWqglQMATRCVroofC6GDNlDOiY8YgkGlZij7qoECjvpj8ZKiHCUaoiTobIAYjJMQAHSuM6sAURkAFsADpySDt9DtsDt-CtmlMikAYzlAFdsdWJ0223JsAOh5jRxOp9iZ12BzUxzJsTWZNAAB609dyYjt+dyeDn9vUdvkdudmlbnd7w-HlsbjtIB+dr83u8Pt2g6MiO46TtOH6XguIFLmBq4npA340hWVa1jI9YId2UEdr2cj9shlY1nWjaQZA-Ydr+kC3nh0GgSuEGzjgtGwfRa6kY+z67tW+5HjSJ5Xh2F6QGegn-nI94dvhnGvrxCGUQJqYPgJ1ESe8zHLuBbGMWewF0ZpCFXgRqHESeakdiJ6C-lJ25cTx77aV2WGYI5Ymqfhi4afBpH3rpLH6ZBroDihRHoSRs7oORilyOg1HWS+3Fvnx3ldhesYpa5XaGR5cEMV2va+Z5uXRfORkhRhAUCc50USXFtmJaZuF2j2v5NXIKk9kB2WsaZOldf5s5NaVaHlQNTkiWAuG1TJ9lduN5FzRlciwupOVac1K3dZBYD4cFw1hT21FYD2F5TQlslbS15FYRe7VLb1MGFWtS3uq27bftFr3RW0G5dt9HafVhnaft2v3USDX3UUDcjvVD73g0cP0Qw+API8DAN-fDf2w6jH0faDiMI-9b04056Ng2TOMwyjeNIzThPY0TuOY+T+OM1TaOg2w+CIS8BaIF0hY3OEGI4gSRIkuSlLUvSTKshyXK-kCoOiMrv5hF2KsQ5rwK-n0N7a20Bu+hratG2butQBrTmG9bxttZb0Vm7bDt2zoyvO4rDtu1rHtvV7RsqBC9zwGYsJhCH7h6EiDgrAQoj9OkvAPGCvPx+UcKWS0Nj5A4QA noborder}} </well></WRAP> ====== further Links ====== * [[https://www.electronics-tutorials.ws/sequential/seq_1.html|https://www.electronics-tutorials.ws/sequential/seq_1.html]] * [[https://www.electronics-tutorials.ws/counter/count_1.html|https://www.electronics-tutorials.ws/counter/count_1.html]]