Implementation Of Sequential Logic
Let us go to realize a simplified state-transition-table with the real circuit. We can learn how to implement the state-transition-table from many textbook:
- Assign logic-variable to the inputs and the states.
- Compute the application function.
- Create the input function from the excitation-table of the state-devices.
- Simplify the input functions and output functions with DONTCARE.
In our computation boolean algebra, we only have to this:
- Assign logic-variable and state-devices.
All the internal computation are automated.
[table]=StateTransition()
{
transitions
{
1: [1] -> 1/1'b0, [2] -> 2/1'b0;
2: [1] -> 2/1'b1, [2] -> 3/1'b0;
3: [1] -> 3/1'b0, [2] -> 1/1'b1;
}
implementation
{
inputs
{
// the format:
// input-index ':' binary value of the inputs
1: 1'b0;
2: 1'b1;
// in this example, we say 1 bit is assigned for the two inputs.
}
states
{
// the format:
// state-index ':' binary value for the state
1: 2'b01;
2: 2'b10;
3: 2'b11;
// in this example, we say assign 2 bits for the states.
}
statedevices
{
// the format:
// state-index ':' state-device-name '=' definition-of-the-excitation ';'
1: "JK-FF" ; // for first bit
2: "D-FF" ; // for second bit
// known-state-device-name : "SR-FF", "JK-FF", "T-FF", "D-FF" ;
}
}
}
[digital_system] = Sequential.Implementation(table);
Print(digital_system);
/*
The result should be :
digital_system = DigitalSystem()
{
outputs
{
[r1] = AndOr(){ 1,2,3; -1,2,-3; }
}
states
{
state(1)
{
variable = 2;
statedevice = "JK-FF";
inputto.J = AndOr(){ 1; }
inputto.K = AndOr(){ 1,3; }
g1 = AndOr(){ -1; -3; }
g2 = AndOr(){ 1; }
F = AndOr(){ -1,2; 2,-3; 1,-2,3; }
}
state(2)
{
variable = 3;
statedevice = "D-FF";
inputto.D = AndOr(){ 1,2; 1,-3; -1,3; }
g1 = AndOr(){ -1; 2; }
g2 = AndOr(){ 1; }
F = AndOr(){ 1,2; -1,3; }
}
}
statedevices
{
}
}
*/
PermuteLogicFunction IsInverse IsNegativeUnateFunctionTo IsThresholdFunction IsUnateFunction And binary() binaryioset ToOrAnd ToNotFunction ToROBDD ToVariableInvertedFunction DigitalSystem minterm() PositiveDecimalToMantissa PositiveIntegerToMantissa Or Print To2LayerOrAnd To2LayerNand ShortestInputsForDistinguishTwoStates ToStateTransitionTable Compatibility BestVariableOrder StateDeviceName StateTransition RandomGenerate SemanticEval ShrinkLogicFunction Zero