Description
There are differences in the behavior of CDR automatic lock mode and manual lock mode.
- The expected behavior of CDR in automatic mode (default = rx_set_locktodata = 1’b0, rx_set_locktoref = 1’b0):
- CDR will goes into "locked to data" Phase Detector (PD) mode after it achieved "locked to reference clock" Phase Frequency Detector (PFD) mode
- Once rx_is_lockedtodata is asserted, rx_is_lockedtoref is omitted.
- rx_is_lockedtoref will be de-asserted when there is no reference clock present.
- rx_is_lockedtodata will be de-asserted when there is no incoming data to rx channel.
- rx_is_lockedtodata is always toggling when there is no incoming signal to rx channel. This is because CDR will try lock to data every 32k cycles from "lock to reference" based on PPM measurement which will make rx_is_lockedtodata toggling when no signal applied to rx.
- rx_is_lockedtodata will be de-asserted when the ppm difference is out of user determined range.
- The purpose of rx_is_lockedtoref and rx_is_lockedtodata is to indicate the CDR is in PFD and PD mode respectively.
- The expected behavior of CDR in manual LTR mode (rx_set_locktoref = 1’b1) when no reference clock present:
- CDR is forced to lock to reference clock all the time (PFD mode) when rx_set_locktoref = 1’b1.
- If the reference clock is absent since power up, the rx_is_lockedtoref will be 1’b0 all the time. (CDR block will stop functioning without reference clock).
- If the reference clock is absent half way during user mode, the rx_is_lockedtoref will be 1’b1 all the time.
- The purpose of rx_is_lockedtoref is to indicate the CDR is in PFD mode.
- The expected behavior of CDR in manual LTD mode (rx_set_locktodata = 1’b1) when there is no incoming data:
- CDR is forced lock to data at all time (PD mode) when rx_set_locktodata = 1’b1.
- rx_is_lockedtodata will be asserted forever even if there is no incoming data to rx channel.
- The purpose of rx_is_lockedtodata is to indicate the CDR is in PD mode.