cores/icap: Add Configuration Registers and Commands definition.
This commit is contained in:
parent
6b3b243bb3
commit
1f2b143c66
|
@ -4,6 +4,8 @@
|
||||||
# Copyright (c) 2019-2020 Florent Kermarrec <florent@enjoy-digital.fr>
|
# Copyright (c) 2019-2020 Florent Kermarrec <florent@enjoy-digital.fr>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
|
||||||
|
from enum import IntEnum
|
||||||
|
|
||||||
from migen import *
|
from migen import *
|
||||||
|
|
||||||
from migen.genlib.misc import timeline
|
from migen.genlib.misc import timeline
|
||||||
|
@ -12,6 +14,53 @@ from migen.genlib.cdc import PulseSynchronizer
|
||||||
from litex.soc.interconnect.csr import *
|
from litex.soc.interconnect.csr import *
|
||||||
from litex.soc.interconnect import stream
|
from litex.soc.interconnect import stream
|
||||||
|
|
||||||
|
# Constants ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Configuration Registers (from UG470).
|
||||||
|
|
||||||
|
class ICAPRegisters(IntEnum):
|
||||||
|
CRC = 0b00000 # CRC Register.
|
||||||
|
FAR = 0b00001 # Frame Address Register.
|
||||||
|
FDRI = 0b00010 # Frame Data Register, Input Register.
|
||||||
|
FDRO = 0b00011 # Frame Data Register, Output Register.
|
||||||
|
CMD = 0b00100 # Command Register.
|
||||||
|
CTL0 = 0b00101 # Control Register 0.
|
||||||
|
MASK = 0b00110 # Masking Register for CTL0 and CTL1.
|
||||||
|
STAT = 0b00111 # Status Register.
|
||||||
|
LOUT = 0b01000 # Legacy Output Register for daisy chain.
|
||||||
|
COR0 = 0b01001 # Configuration Option Register 0.
|
||||||
|
MFWR = 0b01010 # Multiple Frame Write Register.
|
||||||
|
CBC = 0b01011 # Initial CBC Value Register.
|
||||||
|
IDCODE = 0b01100 # Device ID Register.
|
||||||
|
AXSS = 0b01101 # User Access Register.
|
||||||
|
COR1 = 0b01110 # Configuration Option Register 1.
|
||||||
|
WBSTAR = 0b10000 # Warm Boot Start Address Register.
|
||||||
|
TIMER = 0b10001 # Watchdog Timer Register.
|
||||||
|
BOOTSTS = 0b10110 # Boot History Status Register.
|
||||||
|
CTL1 = 0b11000 # Control Register 1.
|
||||||
|
BSPI = 0b11111 # BPI/SPI Configuration Options Register.
|
||||||
|
|
||||||
|
# Commands (from UG470).
|
||||||
|
|
||||||
|
class ICAPCMDs(IntEnum):
|
||||||
|
MFW = 0b00010 # Multiple Frame Write.
|
||||||
|
LFRM = 0b00011 # Last Frame.
|
||||||
|
RCFG = 0b00100 # Reads Configuration Data.
|
||||||
|
START = 0b00101 # Begins the Startup Sequence.
|
||||||
|
RCAP = 0b00110 # Resets the CAPTURE signal.
|
||||||
|
RCRC = 0b00111 # Resets CRC.
|
||||||
|
AGHIGH = 0b01000 # Asserts the GHIGH_B signal.
|
||||||
|
SWITCH = 0b01001 # Switches the CCLK frequency.
|
||||||
|
GRESTORE = 0b01010 # Pulses the GRESTORE signal.
|
||||||
|
SHUTDOWN = 0b01011 # Begin Shutdown Sequence.
|
||||||
|
GCAPTURE = 0b01100 # Pulses GCAPTURE.
|
||||||
|
DESYNC = 0b01101 # Resets the DALIGN signal.
|
||||||
|
IPROG = 0b01111 # Internal PROG for triggering a warm boot.
|
||||||
|
CRCC = 0b10000 # Recalculates the first readback CRC value after reconfiguration
|
||||||
|
LTIMER = 0b10001 # Reload Watchdog timer.
|
||||||
|
BSPI_READ = 0b10010 # BPI/SPI re-initiate bitstream read.
|
||||||
|
FALL_EDGE = 0b10011 # Switch to negative-edge clocking.
|
||||||
|
|
||||||
# Xilinx 7-series ----------------------------------------------------------------------------------
|
# Xilinx 7-series ----------------------------------------------------------------------------------
|
||||||
|
|
||||||
class ICAP(Module, AutoCSR):
|
class ICAP(Module, AutoCSR):
|
||||||
|
|
Loading…
Reference in New Issue