+__all__ = ["SDRAM", "SDRAMConfig"]
+
+
+class SDRAMConfig(Record):
+ def __init__(self, refresh_timer_sz, refresh_row_count, name=None):
+ super().__init__(name=name, layout=[
+ # configuration parameters, these need to match the SDRAM IC datasheet
+ ('req_depth', 2), # max request accepted
+ ('sdr_en', 1), # Enable SDRAM controller
+ ('sdr_mode_reg', 13),
+ ('sdr_tras_d', 4), # Active to precharge delay
+ ('sdr_trp_d', 4), # Precharge to active delay
+ ('sdr_trcd_d', 4), # Active to R/W delay
+ ('sdr_cas', 3), # SDRAM CAS Latency
+ ('sdr_trcar_d', 4), # Auto-refresh period
+ ('sdr_twr_d', 4), # Write recovery delay
+ ('sdr_rfsh', refresh_timer_sz),
+ ('sdr_rfmax', refresh_row_count)
+ ])