fsm.act("AWAIT_NO_COMWAKE",
gtx.txelecidle.eq(1),
If(~gtx.rxcomwakedet,
- NextState("AWAIT_ALIGN")
+ NextState("RESET_CRG")
)
)
+ fsm.act("RESET_CRG",
+ gtx.txelecidle.eq(0),
+ crg.reset.eq(1),
+ NextState("AWAIT_ALIGN")
+ )
fsm.act("AWAIT_ALIGN",
gtx.txelecidle.eq(0),
gtx.rxalign.eq(1),
gtx.txelecidle.eq(0),
self.txdata.eq(ALIGN_VAL),
self.txcharisk.eq(0b0001),
- If(non_align_cnt == 3,
+ If(non_align_cnt == 15,
NextState("READY")
)
)
fsm.act("READY",
gtx.txelecidle.eq(0),
- self.txdata.eq(SYNC_VAL),
- self.txcharisk.eq(0b0001),
If(gtx.rxelecidle,
NextState("RESET")
),
gtx.txelecidle.eq(1),
gtx.txcomwake.eq(1),
If(gtx.txcomfinish,
- NextState("SEND_ALIGN")
+ NextState("RESET_CRG")
)
)
+ fsm.act("RESET_CRG",
+ gtx.txelecidle.eq(0),
+ crg.reset.eq(1),
+ NextState("SEND_ALIGN")
+ )
fsm.act("SEND_ALIGN",
gtx.txelecidle.eq(0),
gtx.rxalign.eq(1),
)
)
fsm.act("READY",
- self.txdata.eq(SYNC_VAL),
- self.txcharisk.eq(0b0001),
gtx.txelecidle.eq(0),
NextState("READY"),
If(gtx.rxelecidle,
"p_RX_DISPERR_SEQ_MATCH":"TRUE",
"p_DEC_MCOMMA_DETECT":"TRUE",
"p_DEC_PCOMMA_DETECT":"TRUE",
- "p_DEC_VALID_COMMA_ONLY":"FALSE",
+ "p_DEC_VALID_COMMA_ONLY":"TRUE",
# RX Clock Correction Attributes
"p_CBCC_DATA_SOURCE_SEL":"DECODED",
self.submodules.crg = _CRG(platform)
self.submodules.sataphy_host = K7SATAPHY(platform.request("sata_host"), clk_freq, host=True)
+ self.comb += [
+ self.sataphy_host.sink.stb.eq(1),
+ self.sataphy_host.sink.d.eq(0x12345678)
+ ]
self.submodules.sataphy_device = K7SATAPHY(platform.request("sata_device"), clk_freq, host=False)
+ self.comb += [
+ self.sataphy_device.sink.stb.eq(1),
+ self.sataphy_device.sink.d.eq(0x12345678)
+ ]
default_subtarget = TestDesign