def __init__(self, platform): platform.toolchain.bitstream_commands.extend([ "set_property BITSTREAM.GENERAL.COMPRESS True [current_design]", "set_property BITSTREAM.CONFIG.UNUSEDPIN Pullnone [current_design]", ]) self.submodules.j2s0 = j2s0 = JTAG2SPI() self.submodules.j2s1 = j2s1 = JTAG2SPI(platform.request("spiflash")) di = mg.Signal(4) self.comb += mg.Cat(j2s0.mosi.i, j2s0.miso.i).eq(di) self.specials += [ mg.Instance("BSCANE2", p_JTAG_CHAIN=1, o_SHIFT=j2s0.jtag.shift, o_SEL=j2s0.jtag.sel, o_CAPTURE=j2s0.jtag.capture, o_DRCK=j2s0.jtag.tck, o_TDI=j2s0.jtag.tdi, i_TDO=j2s0.jtag.tdo), mg.Instance("BSCANE2", p_JTAG_CHAIN=2, o_SHIFT=j2s1.jtag.shift, o_SEL=j2s1.jtag.sel, o_CAPTURE=j2s1.jtag.capture, o_DRCK=j2s1.jtag.tck, o_TDI=j2s1.jtag.tdi, i_TDO=j2s1.jtag.tdo), mg.Instance("STARTUPE3", i_GSR=0, i_GTS=0, i_KEYCLEARB=0, i_PACK=1, i_USRDONEO=1, i_USRDONETS=1, i_USRCCLKO=mg.Mux(j2s0.clk.oe, j2s0.clk.o, j2s1.clk.o), i_USRCCLKTS=~(j2s0.clk.oe | j2s1.clk.oe), i_FCSBO=j2s0.cs_n.o, i_FCSBTS=~j2s0.cs_n.oe, o_DI=di, i_DO=mg.Cat(j2s0.mosi.o, j2s0.miso.o, 0, 0), i_DTS=mg.Cat(~j2s0.mosi.oe, ~j2s0.miso.oe, 1, 1)) ] platform.add_period_constraint(j2s0.jtag.tck, 6) platform.add_period_constraint(j2s1.jtag.tck, 6)
def __init__(self, platform): platform.toolchain.bitstream_commands.extend([ "set_property BITSTREAM.GENERAL.COMPRESS True [current_design]", "set_property BITSTREAM.CONFIG.UNUSEDPIN Pullnone [current_design]" ]) self.submodules.j2s = j2s = JTAG2SPI(platform.request("spiflash")) # clk = mg.Signal() self.specials += [ mg.Instance( "BSCANE2", p_JTAG_CHAIN=1, o_SHIFT=j2s.jtag.shift, o_SEL=j2s.jtag.sel, o_CAPTURE=j2s.jtag.capture, o_DRCK=j2s.jtag.tck, o_TDI=j2s.jtag.tdi, i_TDO=j2s.jtag.tdo), mg.Instance( "STARTUPE2", i_CLK=0, i_GSR=0, i_GTS=0, i_KEYCLEARB=0, i_PACK=1, i_USRCCLKO=j2s.clk.o, i_USRCCLKTS=~j2s.clk.oe, i_USRDONEO=1, i_USRDONETS=1), # mg.Instance("BUFG", i_I=clk, o_O=j2s.jtag.tck) ] platform.add_period_constraint(j2s.jtag.tck, 6) try: self.comb += [ platform.request("user_sma_gpio_p").eq(j2s.cs_n.i), platform.request("user_sma_gpio_n").eq(j2s.clk.o), platform.request("user_sma_clock_p").eq(j2s.mosi.o), platform.request("user_sma_clock_n").eq(j2s.miso.i), ] except mb.ConstraintError: pass
def __init__(self, platform): platform.toolchain.bitstream_commands.extend([ "set_property BITSTREAM.GENERAL.COMPRESS True [current_design]", "set_property BITSTREAM.CONFIG.UNUSEDPIN Pullnone [current_design]" ]) self.submodules.j2s = j2s = JTAG2SPI(platform.request("spiflash")) self.specials += [ mg.Instance("BSCANE2", p_JTAG_CHAIN=1, o_SHIFT=j2s.jtag.shift, o_SEL=j2s.jtag.sel, o_CAPTURE=j2s.jtag.capture, o_TCK=j2s.jtag.tck, o_TDI=j2s.jtag.tdi, i_TDO=j2s.jtag.tdo), mg.Instance("STARTUPE2", i_CLK=0, i_GSR=0, i_GTS=0, i_KEYCLEARB=0, i_PACK=1, i_USRCCLKO=j2s.clk.o, i_USRCCLKTS=~j2s.clk.oe, i_USRDONEO=1, i_USRDONETS=1) ]
def __init__(self, platform): platform.toolchain.bitgen_opt += " -g compress -g UnusedPin:Pullup" self.submodules.j2s = j2s = JTAG2SPI(platform.request("spiflash")) self.specials += [ mg.Instance( self.macro, o_SHIFT=j2s.jtag.shift, o_SEL1=j2s.jtag.sel, o_CAPTURE=j2s.jtag.capture, o_DRCK1=j2s.jtag.tck, o_TDI=j2s.jtag.tdi, i_TDO1=j2s.jtag.tdo, i_TDO2=0), ] platform.add_period_constraint(j2s.jtag.tck, 6)
def __init__(self, platform): platform.toolchain.bitgen_opt += " -g compress -g UnusedPin:Pullup" self.submodules.j2s = j2s = JTAG2SPI(platform.request("spiflash")) self.specials += [ mg.Instance("BSCAN_SPARTAN6", p_JTAG_CHAIN=1, o_SHIFT=j2s.jtag.shift, o_SEL=j2s.jtag.sel, o_CAPTURE=j2s.jtag.capture, o_TCK=j2s.jtag.tck, o_TDI=j2s.jtag.tdi, i_TDO=j2s.jtag.tdo), ]
def __init__(self, platform): platform.toolchain.bitgen_opt += " -g compress -g UnusedPin:Pullup" self.submodules.j2s = j2s = JTAG2SPI(platform.request("spiflash")) # clk = mg.Signal() self.specials += [ mg.Instance( "BSCAN_SPARTAN6", p_JTAG_CHAIN=1, o_SHIFT=j2s.jtag.shift, o_SEL=j2s.jtag.sel, o_CAPTURE=j2s.jtag.capture, o_DRCK=j2s.jtag.tck, o_TDI=j2s.jtag.tdi, i_TDO=j2s.jtag.tdo), # mg.Instance("BUFG", i_I=clk, o_O=j2s.jtag.tck) ] platform.add_period_constraint(j2s.jtag.tck, 6)