In the last log Think Tetris, I managed to build the logic of the chain that lets the nodes communicate. Things started to get a bit weird when I added a more accurate addressing scheme so I had to take a few steps back and reconsider the node's structure. The result is below:
Some help for interpretation:
- alpha: address (a constant per node)
- delta: data (flowing from left to right)
- tau: type (2 bits of metadata)
- sigma: status (3 or 4 bits per node for sequencing purpose)
Now the big challenge is the logic part, most of it is working in JS though the previous versions were getting a bit messy... Fortunately, this is now solved with 1dcasim_9.html.txt! (rename and open in a browser). I have modified a few things, for example the match signal doesn't have to return back to the previous node. Apparently, the ACK signal can directly override the value of the node's type. A AND gate can then be added at the input of the register. This new diagram should be more accurate:
To save power, only the data signals that really need to change are updated. The chain can contain past values, like a snail trail, but most of the decoding is done with the "type" signal (2 bits) and its value is correct everywhere.
The new version 1dcasim_a.html.txt adds a broadcast address, which will be useful for example to reset all the circuits or simply make any command global.