I've never came across such a big FSM, I normally reduce the number of states to minimum using counters and nested 'if' on them, depends on the design though.
From 12 to 5 FFs, who cares? I guess in these figures the FFs used to encode your FSM are irrelevant.
The choice depends on how complex it's your logic in the states. I wouldn't like to have an FSM that big, I would rather 3 FSMs, but being careful of negotaition between them.
Thanks Black Jack and Maestor for your suggestions.
Actually due to speed issue, I will use one-hot FSM . So I think 1 large FSM will use the same amount of registers as 3 FSMs. A 30 State FSM is really too big so probably I will adopt the 3 FSMs architecture.
I agree with Black Jack about the illegal state problem. So the next question is how to ensure the proper work flow of the 3 FSMs.
The current negotiation among these 3 FSMs is very simple:
Each FSM will go back to Idle state after each run.
So any recommendations/advices, guys?
Another question to Maestor:
I have done some test on a FSM using a large number of states and a a FSM using the counters(as you mentioned). But I found the latter one will take much more resources(I use Synplify Pro). What do you think?
I agree with you there, using extra counters and 'ifs' to reduce the number of states in your FSM will increase your logic. I guess it just depends of your design. Personally. I am quite reluctant to FSMs with a lot of states...as you said the more the number of states, the easier to get in illegal states.