Bounty Ended with 50 reputation awarded by Gurupad Mamadapur
6 added 3 characters in body
source | link

UnnamedLatching Clock

Notes

Notes

Unnamed

Notes

Latching Clock

Notes

    Bounty Ended with 500 reputation awarded by Sparr
5 deleted 1 character in body
source | link
  1. Due to its one electron per minute, 6-micron design, run the simulation at six generations per minutesminute (one generation every 10 seconds) for a real-time clock.
  2. The AM/PM line is high (1) for AM, low (0) for PM. This might seem a slightly unusual way round to choose, but there is justification. During a cold start of the clock, the AM/PM line is naturally low (0) initially. As soon as the AM/PM line is pulled high (1), this indicates that the count has begun at 12:00AM. All output before this point should be disregarded, all output after this point is considered meaningful.
  1. Due to its one electron per minute, 6-micron design, run the simulation at six generations per minutes (one generation every 10 seconds) for a real-time clock.
  2. The AM/PM line is high (1) for AM, low (0) for PM. This might seem a slightly unusual way round to choose, but there is justification. During a cold start of the clock, the AM/PM line is naturally low (0) initially. As soon as the AM/PM line is pulled high (1), this indicates that the count has begun at 12:00AM. All output before this point should be disregarded, all output after this point is considered meaningful.
  1. Due to its one electron per minute, 6-micron design, run the simulation at six generations per minute (one generation every 10 seconds) for a real-time clock.
  2. The AM/PM line is high (1) for AM, low (0) for PM. This might seem a slightly unusual way round to choose, but there is justification. During a cold start of the clock, the AM/PM line is naturally low (0) initially. As soon as the AM/PM line is pulled high (1), this indicates that the count has begun at 12:00AM. All output before this point should be disregarded, all output after this point is considered meaningful.
4 added 3356 characters in body
source | link

Unnamed

  • Since this was my very first time using a cellular automaton I avoided stringing together large premade components. One valid approach I did not take would have been a binary adder starting at zero and continuously adding one to the last output, followed by a binary to BCD converter, display demultiplexer, 7-segment decoder and 7-segment display.
  • It should be possible to cold start the clock. I imposed on myself the additional restriction that a single electron head placed onat a specific conductor cell should correctly start the clock. I did not want to require careful manual synchronisation of many disparate flip-flops and individual timing elements before beginning the simulation.

Minute Counter

Part I: The Minute Counter

The Mathematics -

Mathematics

Counting from 0 to 9 in binary (thefor the least significant minutes digit) in binary goes as follows -

0 - 00000000
1 - 00010001
2 - 00100010
3 - 00110011
4 - 01000100
5 - 01010101
6 - 01100110
7 - 01110111
8 - 10001000
9 - 10011001

Reading that as columns, the least significant (2^0 units bit stream) goes 01010101, the 2^1 units stream goes 0011001100, the 2^2 units stream goes 0000111100 and the 2^3 units stream goes 0000000011.

The units of minutessecond is a bit harder as it's got a nasty asymmetry. However, I notice that (where . is concat operator):

The Design -

Design

The output streams from top to bottom go Units of Minutes (2^0, 2^1, 2^2, 2^3), then Tens of Minutes (2^0, 2^2, 2^1). Note that the bottom two wires are crossed.

Minute Counter Clock AnnotatedMinute Counter Annotated

Part II: The Hour Counter

Explanation

Hour Counter The input to the hour counter is a single electron pulse, once an hour. The first step is to reduce this to a single electron pulse, once every twelve hours. This is achieved using several "latch & catch" primitives.

Hour Component A "latch" is a 6-micron flip-flop connected to an AND-NOT and an AND gate to give a 6-micron on/off latch. A "catch" takes a continuous stream of electrons as input, allows the first through, then annihilates every other electron behind, until the stream ends at which point the catch resets.

(section work Placing a latch, followed by a catch, in progressseries, results in one electron in -> turns on the latch, one electron out the other end (rest caught by catch). Then second electron in -> turns off latch, catch silently resets. Net effect: first electron passes through, second electron is annihilated, and so on and so forth, irrespective of how long the delay is between those electrons.

Useful Links Now chain two "latch & catch" in series, and you have only one in four electrons passing through.

I learnedNext, take a third "latch and catch", but this time embed an entire fourth latch and catch on the basics of WireWorld from http://www.quinapalus.com/wi-index.htmlflip-flop SET line, between the AND-NOT gate and the flip-flop SET. An excellent resourceI'll leave you to think about how this works, but this time only one in three electrons passes through, irrespective of how long the delay is between those electrons.

To createFinally, take the one in four electrons, and simulate the cellular automaton I used Golly: http://golly.sourceforge.net/one in three, combine them with an AND gate, and only one in twelve electrons pass through. This whole section is the messy squiggle of paths to the top left of the hour counter below.

I tookNext, take the AND gate design fromelectron every twelve hours and split back into one every hour, but output each onto a different conductor wire. This is achieved using the long coiled conductor with thirteen exit points.

Take these electrons http://mathworld.wolfram.com/WireWorld.html- one an hour down different conductors, and hit a flip-flop SET line. The RESET line on that same flip flop is then hit by the next hour's conductor, giving sixty pulses down each wire per hour.

And I've only just found this webpage so didn't use it but it looks greatFinally - take these pulses and pass them into seven and a half bytes of ROM (Read-Only Memory) to output the correct BCD bitstreams. See here for a more detailed explanation of WireWorld ROM: http://karlscherer.com/Wireworld.htmlhttp://www.quinapalus.com/wires6.html

Design

Hour Counter Annotated

  1. One electron per hour input.
  2. First latch.
  3. First catch.
  4. "Latch & catch" embedded on an outer "latch & catch" SET line.
  5. AND gate.
  6. AM/PM latch (turned on/off once every twelve hours).
  7. Each loop of wire is 6x60=360 units long.
  8. Flip/Flop turned on its side to create a smaller profile.
  9. Seven and a half bytes of ROM.

Notes

  1. Due to its one electron per minute, 6-micron design, run the simulation at six generations per minutes (one generation every 10 seconds) for a real-time clock.
  2. The AM/PM line is high (1) for AM, low (0) for PM. This might seem a slightly unusual way round to choose, but there is justification. During a cold start of the clock, the AM/PM line is naturally low (0) initially. As soon as the AM/PM line is pulled high (1), this indicates that the count has begun at 12:00AM. All output before this point should be disregarded, all output after this point is considered meaningful.

Useful Links

  • Since this was my very first time using a cellular automaton I avoided stringing together large premade components. One valid approach I did not take would have been a binary adder starting at zero and continuously adding one to the last output, followed by a binary to BCD converter, display demultiplexer, 7-segment decoder and 7-segment display.
  • It should be possible to cold start the clock. I imposed on myself the additional restriction that a single electron head placed on a specific conductor cell should correctly start the clock. I did not want to require careful manual synchronisation of many disparate flip-flops and individual timing elements.

Minute Counter

The Mathematics -

Counting from 0 to 9 (the least significant minutes digit) in binary goes as follows -

0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001

Reading that as columns, the least significant (2^0 bit stream) goes 01010101, the 2^1 stream goes 0011001100, the 2^2 stream goes 0000111100 and the 2^3 stream goes 0000000011.

The units of minutes is a bit harder as it's got a nasty asymmetry. However, I notice that (where . is concat operator):

The Design -

The output streams from top to bottom go Units of Minutes (2^0, 2^1, 2^2, 2^3), Tens of Minutes (2^0, 2^2, 2^1). Note that the bottom two wires are crossed.

Minute Counter Clock Annotated

Hour Counter

Hour Component

(section work in progress)

Useful Links

I learned the basics of WireWorld from http://www.quinapalus.com/wi-index.html. An excellent resource.

To create and simulate the cellular automaton I used Golly: http://golly.sourceforge.net/

I took the AND gate design from http://mathworld.wolfram.com/WireWorld.html

And I've only just found this webpage so didn't use it but it looks great: http://karlscherer.com/Wireworld.html

Unnamed

  • Since this was my first time using a cellular automaton I avoided stringing together large premade components. One valid approach I did not take would have been a binary adder starting at zero and continuously adding one to the last output, followed by a binary to BCD converter, display demultiplexer, 7-segment decoder and 7-segment display.
  • It should be possible to cold start the clock. I imposed on myself the additional restriction that a single electron head placed at a specific conductor cell should correctly start the clock. I did not want to require careful manual synchronisation of many disparate flip-flops and individual timing elements before beginning the simulation.

Part I: The Minute Counter

Mathematics

Counting from 0 to 9 in binary (for the least significant minutes digit) goes as follows -

0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001

Reading that as columns, the least significant (2^0 units bit stream) goes 01010101, the 2^1 units stream goes 0011001100, the 2^2 units stream goes 0000111100 and the 2^3 units stream goes 0000000011.

The second is a bit harder as it's got a nasty asymmetry. However, I notice that (where . is concat operator):

Design

The output streams from top to bottom go Units of Minutes (2^0, 2^1, 2^2, 2^3) then Tens of Minutes (2^0, 2^2, 2^1). Note that the bottom two wires are crossed.

Minute Counter Annotated

Part II: The Hour Counter

Explanation

The input to the hour counter is a single electron pulse, once an hour. The first step is to reduce this to a single electron pulse, once every twelve hours. This is achieved using several "latch & catch" primitives.

A "latch" is a 6-micron flip-flop connected to an AND-NOT and an AND gate to give a 6-micron on/off latch. A "catch" takes a continuous stream of electrons as input, allows the first through, then annihilates every other electron behind, until the stream ends at which point the catch resets.

Placing a latch, followed by a catch, in series, results in one electron in -> turns on the latch, one electron out the other end (rest caught by catch). Then second electron in -> turns off latch, catch silently resets. Net effect: first electron passes through, second electron is annihilated, and so on and so forth, irrespective of how long the delay is between those electrons.

Now chain two "latch & catch" in series, and you have only one in four electrons passing through.

Next, take a third "latch and catch", but this time embed an entire fourth latch and catch on the flip-flop SET line, between the AND-NOT gate and the flip-flop SET. I'll leave you to think about how this works, but this time only one in three electrons passes through, irrespective of how long the delay is between those electrons.

Finally, take the one in four electrons, and the one in three, combine them with an AND gate, and only one in twelve electrons pass through. This whole section is the messy squiggle of paths to the top left of the hour counter below.

Next, take the electron every twelve hours and split back into one every hour, but output each onto a different conductor wire. This is achieved using the long coiled conductor with thirteen exit points.

Take these electrons - one an hour down different conductors, and hit a flip-flop SET line. The RESET line on that same flip flop is then hit by the next hour's conductor, giving sixty pulses down each wire per hour.

Finally - take these pulses and pass them into seven and a half bytes of ROM (Read-Only Memory) to output the correct BCD bitstreams. See here for a more detailed explanation of WireWorld ROM: http://www.quinapalus.com/wires6.html

Design

Hour Counter Annotated

  1. One electron per hour input.
  2. First latch.
  3. First catch.
  4. "Latch & catch" embedded on an outer "latch & catch" SET line.
  5. AND gate.
  6. AM/PM latch (turned on/off once every twelve hours).
  7. Each loop of wire is 6x60=360 units long.
  8. Flip/Flop turned on its side to create a smaller profile.
  9. Seven and a half bytes of ROM.

Notes

  1. Due to its one electron per minute, 6-micron design, run the simulation at six generations per minutes (one generation every 10 seconds) for a real-time clock.
  2. The AM/PM line is high (1) for AM, low (0) for PM. This might seem a slightly unusual way round to choose, but there is justification. During a cold start of the clock, the AM/PM line is naturally low (0) initially. As soon as the AM/PM line is pulled high (1), this indicates that the count has begun at 12:00AM. All output before this point should be disregarded, all output after this point is considered meaningful.

Useful Links

3 added 125 characters in body
source | link
2 deleted 1505 characters in body
source | link
1
source | link