39123811
Newbie level 6
- Joined
- Apr 17, 2013
- Messages
- 14
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1,281
- Activity points
- 1,423
FSM that series-in data with X frequency and series-out data with 2X frequency
There is a topic about clock domain crossing and if two register with two different clock, some data might miss during transition due to set up time violation.
Most of time a FIFO can solve this problem.
But my question is can I design a FSM to solve this.
Circuit description for both VHDL and Verilog is OK, I just wanna figure out how does the logic inside this kind of FSM work. If you need more details to figure this out please let me know.
Thanks
The original information source is :
if the input sequence is "00101111", then the output in the destination domain will be "0011". Here the third data value in the input sequence which is "1" is lost
Solution. In order to prevent data loss, the data should be held constant in the source domain long enough to be properly captured in the destination domain. In other words, after every transition on source data, at least one destination clock edge should arrive where there is no setup or hold violation so that the source data is captured properly in the destination domain. There are several techniques to ensure this.
For example, a finite state machine (FSM) can be used to generate source data at a rate, such that it is stable for at least 1 complete cycle of the destination clock. This can be generally useful for synchronous clocks when their frequencies are known.
There is a topic about clock domain crossing and if two register with two different clock, some data might miss during transition due to set up time violation.
Most of time a FIFO can solve this problem.
But my question is can I design a FSM to solve this.
Circuit description for both VHDL and Verilog is OK, I just wanna figure out how does the logic inside this kind of FSM work. If you need more details to figure this out please let me know.
Thanks
The original information source is :
if the input sequence is "00101111", then the output in the destination domain will be "0011". Here the third data value in the input sequence which is "1" is lost
Solution. In order to prevent data loss, the data should be held constant in the source domain long enough to be properly captured in the destination domain. In other words, after every transition on source data, at least one destination clock edge should arrive where there is no setup or hold violation so that the source data is captured properly in the destination domain. There are several techniques to ensure this.
For example, a finite state machine (FSM) can be used to generate source data at a rate, such that it is stable for at least 1 complete cycle of the destination clock. This can be generally useful for synchronous clocks when their frequencies are known.
Last edited: