- data seems stable (mila capture) except when receive the ALIGN primtive from the device, we should maybe disable alignment on the HOST when link is ready...
# (SATA3) sata_rx recovered clk @ 300MHz from GTX RXOUTCLK
# (SATA2) sata_rx recovered clk @ 150MHz from GTX RXOUTCLK
# (SATA1) sata_rx recovered clk @ 150MHz from GTX RXOUTCLK
- #self.specials += [
- # Instance("BUFG", i_I=gtx.rxoutclk, o_O=self.cd_sata_rx.clk),
- #]
- self.comb += self.cd_sata_tx.clk.eq(self.cd_sata_tx.clk)
+ self.specials += [
+ Instance("BUFG", i_I=gtx.rxoutclk, o_O=self.cd_sata_rx.clk),
+ ]
self.comb += [
gtx.rxusrclk.eq(self.cd_sata_rx.clk),
gtx.rxusrclk2.eq(self.cd_sata_rx.clk)
except ConstraintError:
pass
self.add_platform_command("""
-create_clock -name sys_clk -period 6 [get_nets sys_clk]
+create_clock -name sys_clk -period 5 [get_nets sys_clk]
create_clock -name sata_rx_clk -period 3.33 [get_nets sata_rx_clk]
create_clock -name sata_tx_clk -period 3.33 [get_nets sata_tx_clk]
+
+set_false_path -from [get_clocks sys_clk] -to [get_clocks sata_rx_clk]
+set_false_path -from [get_clocks sys_clk] -to [get_clocks sata_tx_clk]
+set_false_path -from [get_clocks sata_rx_clk] -to [get_clocks sys_clk]
+set_false_path -from [get_clocks sata_tx_clk] -to [get_clocks sys_clk]
+
+set_property CFGBVS VCCO [current_design]
+set_property CONFIG_VOLTAGE 2.5 [current_design]
""")
return RealPlatform(*args, **kwargs)
i_CLKIN1=clk200_se, i_CLKFBIN=pll_fb, o_CLKFBOUT=pll_fb,
# 100MHz
- p_CLKOUT0_DIVIDE=10, p_CLKOUT0_PHASE=0.0, o_CLKOUT0=pll_sys,
+ p_CLKOUT0_DIVIDE=5, p_CLKOUT0_PHASE=0.0, o_CLKOUT0=pll_sys,
p_CLKOUT1_DIVIDE=2, p_CLKOUT1_PHASE=0.0, #o_CLKOUT1=,
default_platform = "kc705"
def __init__(self, platform, export_mila=False):
- clk_freq = 100*1000000
+ clk_freq = 200*1000000
UART2WB.__init__(self, platform, clk_freq)
self.submodules.crg = _CRG(platform)
If(self.cont_remover.source.stb & (self.cont_remover.source.charisk == 0b0001),
self._rx_primitive.status.eq(self.cont_remover.source.data)
)
+ ).Else(
+ self.cont_inserter.sink.data.eq(primitives["SYNC"]),
)
]
csr_map.update(UART2WB.csr_map)
def __init__(self, platform, mila=True, export_mila=False):
- clk_freq = 100*1000000
+ clk_freq = 200*1000000
UART2WB.__init__(self, platform, clk_freq)
self.submodules.crg = _CRG(platform)
rx = regs.stim_rx_primitive.read()
print("rx: %08x %s" %(rx, decode_primitive(rx)))
time.sleep(0.1)
-regs.stim_tx_primitive.write(primitives["R_RDY"])
+#regs.stim_tx_primitive.write(primitives["R_RDY"])
for i in range(16):
rx = regs.stim_rx_primitive.read()
print("rx: %08x %s" %(rx, decode_primitive(rx)))