Before I asked the question, I've googled advantages of the one-hot state encoding compared to others such as binary and gray state encoding.
I could understand one-hot's advantages and disadvantages over others encoding scheme, such as constant hamming distance (two), fast but requiring an N flops, etc.
Many articles mentioned that the one-hot is fast and it suits high-speed design and they also mentioned the reason is that it has very small decoding time compared to gray coding and binary coding.
However, I couldn't understand why one-hot decoding is faster compared to others. For example, when we decode the one-hot encoded state machine, it could be implemented by the case statement like below
parameter STATE_ONE = 3'b001, STATE_TWO = 3'b010; STATE_THREE = 3'b100; parameter STATE_ONE_ID = 'd0, STATE_TWO_ID = 'd1; STATE_THR_ID = 'd2; reg [2:0] states; switch(1'b1) states[STATE_ONE_ID]: begin end states[STATE_TWO_ID]: begin end ...
Also for the binary encoded states we could use below code for decoding
parameter STATE_ONE = 2'b00, STATE_TWO = 2'b01, STATE_THREE = 2'b10; case (current_state) STATE_ONE : begin end STATE_TWO : begin end STATE_THREE : begin end ....
When we look at the RTL implementing the decoder for one-hot and binary, it looks not really different.
I would like to know why one-hot decoding is much faster than the binary case?
Is the difference induced when they are synthesized?