- Joined
- Oct 14, 2014
- Messages
- 3
- Reaction score
- 0
Currently logic blocks only propagate signals on state change. It would be better to propagate signals regardless of whether or not the next block in the series changes state. Here's why:
Example 1:
Use: activates light for 1 second.
Format: Source(What you press C on) -> Target(What you press V on)
Activation block -> Light && Delay block(Non-repeating)
Delay block(Non-repeating) -> NOT-Gate
NOT-Gate -> Activation block
Activating the block turns on a light then turns it off after 1 second. But this only happens the first time!
The second time, the Delay block is already active so when the activation block is activated again there is no state change in the Delay block and no signal is propagated.
This effect reduces the flexibility of the entire system because logic circuits have no way of resetting themselves without using a Non repeating logic gate which creates an infinite loop. Which is often times not the desired effect.
Example 2:
Now consider the same system, except we use a repeating Delay block and try to halt the infinite loop.
Activation block -> Light && Delay block(Repeating)
Delay block(Repeating) -> AND-Gate
Activation block(Always inactive) -> AND-Gate
AND-Gate -> Activation block
Here we use an AND gate that will always take the signal from the Delay block and make it false, effectively allowing it to loop infinitely, but have the light remain off after the signal has propagated through the Delay block. However, if you try this you will find that the signal stops at the and block because the state does not change. So this system can't work. This effect if it worked wouldn't be ideal since the signal would propagate around the loop infinitely without any indicator that it is. However this can certainly be detected and halted by simply counting the number of propagation and state changes of a signal in code.
This is assuming that a signal is an entity, which i doubt it is in the current system. The current system resembles a state machine with circuit logic which is creating odd results. Allow signals to propagate without a state change of the block please. =D
Example 1:
Use: activates light for 1 second.
Format: Source(What you press C on) -> Target(What you press V on)
Activation block -> Light && Delay block(Non-repeating)
Delay block(Non-repeating) -> NOT-Gate
NOT-Gate -> Activation block
Activating the block turns on a light then turns it off after 1 second. But this only happens the first time!
The second time, the Delay block is already active so when the activation block is activated again there is no state change in the Delay block and no signal is propagated.
This effect reduces the flexibility of the entire system because logic circuits have no way of resetting themselves without using a Non repeating logic gate which creates an infinite loop. Which is often times not the desired effect.
Example 2:
Now consider the same system, except we use a repeating Delay block and try to halt the infinite loop.
Activation block -> Light && Delay block(Repeating)
Delay block(Repeating) -> AND-Gate
Activation block(Always inactive) -> AND-Gate
AND-Gate -> Activation block
Here we use an AND gate that will always take the signal from the Delay block and make it false, effectively allowing it to loop infinitely, but have the light remain off after the signal has propagated through the Delay block. However, if you try this you will find that the signal stops at the and block because the state does not change. So this system can't work. This effect if it worked wouldn't be ideal since the signal would propagate around the loop infinitely without any indicator that it is. However this can certainly be detected and halted by simply counting the number of propagation and state changes of a signal in code.
This is assuming that a signal is an entity, which i doubt it is in the current system. The current system resembles a state machine with circuit logic which is creating odd results. Allow signals to propagate without a state change of the block please. =D
Last edited: