Project Red - Expansion

Project Red - Expansion

31M Downloads

[Gate Proposal] IMPLY / NIMPLY gates

daniel-pg opened this issue ยท 0 comments

commented

Purpose

You might be thinking, "why would i implement this gate if it can be done with 1 OR gate and 1 NOT gate?". Well, for three reasons:

  1. On certain situations, it allows for MUCH smaller circuits, specially on the IC gate. I'm currently working on a new version of a 7-segment hexadecimal decoder that will be able to fit into a 16x32 area (or even smaller!). However, i am currently facing two major issues:
  • To reduce the circuit area, i have to pack as many digital signals on the same bus (bundled cable), but 4 bits are already used as the input and the other 4 bits are the inverted input signals. Thus, having an IMPLY gate would make it unnecessary to have each input inverted, saving 4 bits on the bus.
  • I can't cross two bundled cables, and this is why i have to use at most 2-3 buses (may be solved in a future update by adding some kind of "Bundled Null Cell", see #1507 )
  1. An IMPLY gate would have a decreased delay time compared to the logic equivalent ((NOT A) OR B) due to Minecraft's redstone sequential nature, although this is not much of an issue for IC gates.

  2. BECAUSE WHY NOT?

How will it work

The gate has two inputs: A (left side) and B (right side), and one output(top/facing away from the player). As i said before, the IMPLY gate is equivalent to ((NOT A) OR B), or alternatively (A NAND (NOT B)). Truth table:

A - B - Output
0 - 0 - 1
0 - 1 - 1
1 - 0 - 0
1 - 1 - 1

Same input/output configuration for the NIMPLY gate, except that its output will be inverted, giving the following truth table:

A - B - Output
0 - 0 - 0
0 - 1 - 0
1 - 0 - 1
1 - 1 - 0

For convenience, both IMPLY and NIMPLY gate inputs could be swapped by right-clicking with a screwdriver i.e. swapping A and B or left and right sides.

I hope to see other people opinions on this subject, especially if this feature could help reduce their circuits size. And forgive me if i wrote something incorrectly, because English is not my mother tongue.