ocp_timecard: Add DDR3 SDRAM support.
This commit is contained in:
parent
3ca298ba42
commit
36a4100c8b
|
@ -48,6 +48,39 @@ _io = [
|
|||
IOStandard("LVCMOS33")
|
||||
),
|
||||
|
||||
# DDR3 SDRAM
|
||||
("ddram", 0,
|
||||
Subsignal("a", Pins(
|
||||
"AA4 AB2 AA5 AB5 AB1 U3 W1 T1",
|
||||
"V2 U2 Y1 W2 Y2 U1 V3"),
|
||||
IOStandard("SSTL15")),
|
||||
Subsignal("ba", Pins("AA3 Y3 Y4"), IOStandard("SSTL15")),
|
||||
Subsignal("ras_n", Pins("V4"), IOStandard("SSTL15")),
|
||||
Subsignal("cas_n", Pins("W4"), IOStandard("SSTL15")),
|
||||
Subsignal("we_n", Pins("AA1"), IOStandard("SSTL15")),
|
||||
Subsignal("cs_n", Pins("AB3"), IOStandard("SSTL15")),
|
||||
Subsignal("dm", Pins("D2 G2 M2 M5"), IOStandard("SSTL15")),
|
||||
Subsignal("dq", Pins(
|
||||
"C2 G1 A1 F3 B2 F1 B1 E2",
|
||||
"H3 G3 H2 H5 J1 J5 K1 H4",
|
||||
"L4 M3 L3 J6 K3 K6 J4 L5",
|
||||
"P1 N4 R1 N2 M6 N5 P6 P2"),
|
||||
IOStandard("SSTL15"),
|
||||
Misc("IN_TERM=UNTUNED_SPLIT_40")),
|
||||
Subsignal("dqs_p", Pins("E1 K2 M1 P5"),
|
||||
IOStandard("DIFF_SSTL15"),
|
||||
Misc("IN_TERM=UNTUNED_SPLIT_40")),
|
||||
Subsignal("dqs_n", Pins("D1 J2 L1 P4"),
|
||||
IOStandard("DIFF_SSTL15"),
|
||||
Misc("IN_TERM=UNTUNED_SPLIT_40")),
|
||||
Subsignal("clk_p", Pins("R3"), IOStandard("DIFF_SSTL15")),
|
||||
Subsignal("clk_n", Pins("R2"), IOStandard("DIFF_SSTL15")),
|
||||
Subsignal("cke", Pins("T5"), IOStandard("SSTL15")),
|
||||
Subsignal("odt", Pins("U5"), IOStandard("SSTL15")),
|
||||
Subsignal("reset_n", Pins("W6"), IOStandard("SSTL15")),
|
||||
Misc("SLEW=FAST"),
|
||||
),
|
||||
|
||||
# PCIe.
|
||||
("pcie_x1", 0,
|
||||
Subsignal("rst_n", Pins("J20"), IOStandard("LVCMOS33"), Misc("PULLUP=TRUE")),
|
||||
|
@ -126,6 +159,8 @@ class Platform(Xilinx7SeriesPlatform):
|
|||
|
||||
def __init__(self,toolchain="vivado"):
|
||||
Xilinx7SeriesPlatform.__init__(self, "xc7a100t-fgg484-2", _io, toolchain=toolchain)
|
||||
self.add_platform_command("set_property INTERNAL_VREF 0.750 [get_iobanks 34]")
|
||||
self.add_platform_command("set_property INTERNAL_VREF 0.750 [get_iobanks 35]")
|
||||
|
||||
self.toolchain.bitstream_commands = [
|
||||
"set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]",
|
||||
|
|
|
@ -41,6 +41,9 @@ from litex.soc.cores.led import LedChaser
|
|||
from litex.soc.cores.xadc import XADC
|
||||
from litex.soc.cores.dna import DNA
|
||||
|
||||
from litedram.modules import MT41K256M16
|
||||
from litedram.phy import s7ddrphy
|
||||
|
||||
from litepcie.phy.s7pciephy import S7PCIEPHY
|
||||
from litepcie.software import generate_litepcie_software
|
||||
|
||||
|
@ -48,8 +51,11 @@ from litepcie.software import generate_litepcie_software
|
|||
|
||||
class CRG(LiteXModule):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.cd_sys = ClockDomain()
|
||||
self.rst = Signal()
|
||||
self.cd_sys = ClockDomain()
|
||||
self.cd_sys4x = ClockDomain()
|
||||
self.cd_sys4x_dqs = ClockDomain()
|
||||
self.cd_idelay = ClockDomain()
|
||||
|
||||
# Clk/Rst
|
||||
clk200 = platform.request("clk200")
|
||||
|
@ -58,9 +64,14 @@ class CRG(LiteXModule):
|
|||
self.pll = pll = S7PLL()
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk200, 200e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x_dqs, 4*sys_clk_freq, phase=90)
|
||||
pll.create_clkout(self.cd_idelay, 200e6)
|
||||
platform.add_false_path_constraints(self.cd_sys.clk, pll.clkin) # Ignore sys_clk to pll.clkin path created by SoC's rst.
|
||||
|
||||
self.idelayctrl = S7IDELAYCTRL(self.cd_idelay)
|
||||
|
||||
# BaseSoC -----------------------------------------------------------------------------------------
|
||||
|
||||
class BaseSoC(SoCCore):
|
||||
|
|
Loading…
Reference in New Issue