|Thread Links||Date Links|
|Thread Prev||Thread Next||Thread Index||Date Prev||Date Next||Date Index|
I wish to bring the following editorial issue to everyone’s attention because the fix may look strange (counter-intuitive) due to how the IEEE state diagrams work.
- In Figure 148-4 the DELAY_PENDING state is supposed to make the state diagram wait for a specified amount of time (pending_timer).
- In the meantime the TXD and TX_ER signals need to be refreshed as soon as the tx_cmd_sync variable is updated, thus the need of the “ELSE” recirculating arc.
- However, the recirculating arc also causes the “start pending_timer” statement to be re-executed, which according to the timers semantic, results in the timer to be reset.
- This is obviously not the intended behavior as resetting the timer forever would result in a deadlock (no way out of DELAY_PENDING state).
The solution is to move the “start pending_timer” statement from the DELAY_PENDING state to the COLLIDE state.
This implies that while in COLLIDE state the pending_timer will be kept under reset, again bercause of the “ELSE” recirculating arc of the COLLIDE state.
When leaving COLLIDE, the timer is finally free to run. In other words, the timer if effectively started on exit from the COLLIDE state instead of being started on entry to DELAY_PENDING, which is functionally the very same thing.
I realize that after this fix, a reader which either does not read the diagram carefully or who’s not used to the state diagram language, may fall into the trap of believeing the timer has to be started when entering the COLLIDE state, but this is not the case. I hope this e-mail helps clarifying this.
To unsubscribe from the STDS-802-3-10SPE list, click the following link: https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-802-3-10SPE&A=1