Merge pull request #335 from Icenowy/tang9k_psram
sipeed_tang_nano_9k: enable copackaged PSRAM
This commit is contained in:
commit
f9ac599d9b
|
@ -51,7 +51,15 @@ _io = [
|
||||||
IOStandard("LVCMOS33"),
|
IOStandard("LVCMOS33"),
|
||||||
),
|
),
|
||||||
|
|
||||||
# TODO: SPI/RGB LCD, copackaged PSRAM
|
# PSRAM
|
||||||
|
("O_psram_ck", 0, Pins(2)),
|
||||||
|
("O_psram_ck_n", 0, Pins(2)),
|
||||||
|
("O_psram_cs_n", 0, Pins(2)),
|
||||||
|
("O_psram_reset_n", 0, Pins(2)),
|
||||||
|
("IO_psram_dq", 0, Pins(16)),
|
||||||
|
("IO_psram_rwds", 0, Pins(2)),
|
||||||
|
|
||||||
|
# TODO: SPI/RGB LCD
|
||||||
]
|
]
|
||||||
|
|
||||||
# Connectors ---------------------------------------------------------------------------------------
|
# Connectors ---------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -21,6 +21,8 @@ from litex.soc.cores.video import *
|
||||||
|
|
||||||
from litex_boards.platforms import tang_nano_9k
|
from litex_boards.platforms import tang_nano_9k
|
||||||
|
|
||||||
|
from litehyperbus.core.hyperbus import HyperRAM
|
||||||
|
|
||||||
kB = 1024
|
kB = 1024
|
||||||
mB = 1024*kB
|
mB = 1024*kB
|
||||||
|
|
||||||
|
@ -74,6 +76,29 @@ class BaseSoC(SoCCore):
|
||||||
)
|
)
|
||||||
self.cpu.set_reset_address(self.bus.regions["rom"].origin)
|
self.cpu.set_reset_address(self.bus.regions["rom"].origin)
|
||||||
|
|
||||||
|
# HyperRam ---------------------------------------------------------------------------------
|
||||||
|
dq = platform.request("IO_psram_dq")
|
||||||
|
rwds = platform.request("IO_psram_rwds")
|
||||||
|
reset_n = platform.request("O_psram_reset_n")
|
||||||
|
cs_n = platform.request("O_psram_cs_n")
|
||||||
|
ck = platform.request("O_psram_ck")
|
||||||
|
ck_n = platform.request("O_psram_ck_n")
|
||||||
|
class HyperRAMPads:
|
||||||
|
def __init__(self, n):
|
||||||
|
self.clk = Signal()
|
||||||
|
self.rst_n = reset_n[n]
|
||||||
|
self.dq = dq[8*n:8*(n+1)]
|
||||||
|
self.cs_n = cs_n[n]
|
||||||
|
self.rwds = rwds[n]
|
||||||
|
|
||||||
|
hyperram_pads = HyperRAMPads(0)
|
||||||
|
self.comb += ck[0].eq(hyperram_pads.clk)
|
||||||
|
self.comb += ck_n[0].eq(~hyperram0_pads.clk)
|
||||||
|
self.submodules.hyperram0 = HyperRAM(hyperram_pads)
|
||||||
|
self.bus.add_slave("main_ram", slave=self.hyperram.bus,
|
||||||
|
region=SoCRegion(origin=self.mem_map["main_ram"], size=4*mB))
|
||||||
|
# TODO: utilize another 32Mbit PSRAM chip
|
||||||
|
|
||||||
# Leds -------------------------------------------------------------------------------------
|
# Leds -------------------------------------------------------------------------------------
|
||||||
if with_led_chaser:
|
if with_led_chaser:
|
||||||
self.submodules.leds = LedChaser(
|
self.submodules.leds = LedChaser(
|
||||||
|
@ -89,6 +114,7 @@ def main():
|
||||||
parser.add_argument("--flash", action="store_true", help="Flash Bitstream.")
|
parser.add_argument("--flash", action="store_true", help="Flash Bitstream.")
|
||||||
parser.add_argument("--sys-clk-freq",default=27e6, help="System clock frequency.")
|
parser.add_argument("--sys-clk-freq",default=27e6, help="System clock frequency.")
|
||||||
parser.add_argument("--bios-flash-offset", default="0x0", help="BIOS offset in SPI Flash.")
|
parser.add_argument("--bios-flash-offset", default="0x0", help="BIOS offset in SPI Flash.")
|
||||||
|
parser.add_argument("--with-spi-sdcard", action="store_true", help="Enable SPI-mode SDCard support.")
|
||||||
builder_args(parser)
|
builder_args(parser)
|
||||||
soc_core_args(parser)
|
soc_core_args(parser)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
@ -99,6 +125,9 @@ def main():
|
||||||
**soc_core_argdict(args)
|
**soc_core_argdict(args)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if args.with_spi_sdcard:
|
||||||
|
soc.add_spi_sdcard()
|
||||||
|
|
||||||
builder = Builder(soc, **builder_argdict(args))
|
builder = Builder(soc, **builder_argdict(args))
|
||||||
builder.build(run=args.build)
|
builder.build(run=args.build)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue