Electronic – Initial states in a digital system with more than one stable state

digital-logicstability

Let's say I have a digital system of basic combinational logic with feedback (I do). That is, the value of the gates' inputs depend in some way on the value of their outputs.

Depending on the system, particular combinations of gate inputs would be unstable, meaning that the outputs of the gates, when they have that particular combination of inputs, would propagate through the feedback path to the inputs and change the set of inputs to a different state. This is what makes a state unstable: the fact that the system cannot remain in this state any longer than the time it takes for the signals to propagate through the feedback path and back to the inputs.

Now, let's say my system has only two stable states, with the only difference being in the state of a single input (let's call it input A). If A is 0 (and all of the other inputs are in their "proper" configuration to be stable), the system is in stable state 0. If A is 1 (and all other inputs are properly configured), the system is in stable state 1.

When I power up the system, is it equally likely to settle in stable state 0 or 1, or is it more likely (or perhaps certain) to be in one or the other due the way the initial power supply curve upward to +5V (and downward to 0V?) affects the logic ICs?

Is there a way to predict which state will be the initial state by just considering the construction of the system?

Is there a way for me to influence the initial state without changing the fundamental structure of the system? For example, could I possibly use a type of pullup or pulldown resistor on input A, so I could set an initial state of +5V or 0V at A, but then allow the feedback from the other gates to control the state of A at all points after time zero? (I'm imagining the resistor setting the voltage would happen slightly before the CMOS ICs are powered up and working to set the voltage).

I imagine that dealing with initial states is a pretty common issue, and that there's probably a pretty standard way to do this.

Best Answer

Instead of an RC reset circuit, you might want to consider a microprocessor supervisory circuit such as the Micrel MIC1810. It generates a 100 ms reset pulse on startup, and whenever VCC falls below a set threshold (so it functions as a BOD also). Although designed for microprocessors, it may work in your application also.