Groups



Login

SI-MOD32xx Software Guide



SI-MOD32xx Register Mapping

Below is a complete summary of registers:

SI-MOD32xx Register Mapping
SectionRegistersBase Address: 32bit Boundary (Hex)Depth x Width (Bits)DirectionInitial Value
ADC SectionADC_FIFOBase+0x0000~0x01FF64 x 64R0x0
ADC[0:3]_CSR0Base+0x0010~0x001C1 x 16R/W
ADC[0:3]_CFGBase+0x0020~0x002CW
ADC[0:3]_SAMPLE_CNTBase+0x0030~0x003CW
DAC SectionDAC0_DATABase+0x8000R/W
DAC0_CMD_ADDRBase+0x8004
DAC0_CSR[0:1]Base+0x8008~0x800C
DAC0_PLAY_MEMSIZEBase+0x8010
DAC0_TOGGLE_CNTBase+0x8014
DAC0_MEMBase+0xC000~0xCFFF1k x 16
DAC1_DATABase+0xA0001 x 16
DAC1_CMD_ADDRBase+0xA004
DAC1_CSR[0:1]Base+0xA008~0xA00C
DAC1_PLAY_MEMSIZEBase+0xA010
DAC1_TOGGLE_CNTBase+0xA014
DAC1_MEMBase+0x1_0000~0x1_0FFF1k x 16
DIO SectionDIO_DATA_LWBase+0x02001 x 16R/W
DIO_DATA_HWBase+0x0204R/W
DIO_CSR0Base+0x0208R/W


NOTES:

  1. Carrier Processor Mapping:
    1. Keystone I DSP EMIF Base Address = 0x7000_0000.
    2. Keystone I DSP SRIO Base Address = TBD.
    3. Sitara PRU Base Address = TBD.

ADC Section

The FPGA controls up to four (4) ADAS3022, 16 bit, 8 channel 1Mhz additive sampling ADC devices, for up to a maximum of 32 input channels.

ADC Register Mapping

ADC_FIFO
The ADC_FIFO is configured as a 64x64 FIFO memory and serves as an access point to all four (4) ADCs. Each FIFO location is 1x64 bits, and concatenates the simultaneously available single input channel from each of the four corresponding ADCs. The FIFO pointer is automatically incremented after each successive FIFO access in a round-robin process.

For example:
1st read -> ADC3_1st Channel + ADC2_1st Channel + ADC1_1st Channel + ADC0_1st Channel
2nd read -> ADC3_2nd Channel + ADC2_2nd Channel + ADC1_2nd Channel + ADC0_2nd Channel
3rd read -> ADC3_3rd Channel + ADC2_3rd Channel + ADC1_3rd Channel + ADC0_3rd Channel
4th read -> ADC3_4th Channel + ADC2_4th Channel + ADC1_4th Channel + ADC0_4th Channel
...
...
nth read -> ADC3_nth Channel + ADC2_nth Channel + ADC1_nth Channel + ADC0_nth Channel
...
...
and so forth.

Register NameDescriptionAddress (HEX)
ADC_FIFO64 x 64 ADC FIFO MemoryBase+0x0000
Bit PositionNameDescriptionDirectionInitial Value
63:48ADC3_CHANNELn[15:0], n=0~764 x 64 ADC FIFO Memory BlockR0
47:32ADC2_CHANNELn[15:0], n=0~7
31:16ADC1_CHANNELn[15:0], n=0~7
15:0ADC0_CHANNELn[15:0], n=0~7


ADC_CSR0
ADC_CSR0 is a control and status register for configuring and controlling the FPGA's interface to the ADCs along with the internal FPGA FIFO.

Register NameDescriptionAddress (HEX)
ADC_CSR0ADC Control & Status RegisterBase+0x0010
Bit PositionNameDescriptionDirectionInitial Value
15:10---0
9ADC_FIFO_FULL_STATADC FIFO Full StatusR0
0 = ADC FIFO NOT Full
1 = ADC FIFO Full
8ADC_FIFO_EMPTY_STATADC FIFO Empty StatusR0
0 = ADC FIFO NOT Empty
1 = ADC FIFO Empty
7:5---0
4ADC_CFG_WRWrite Configuration to ADCsW0
3:2---0
1ADC_ENADC Enable Data AcquisitionW0
0 = ADC DISabled
1 = ADC ENabled
0ADC_FIFO_RSTADC & FIFO ResetW0


NOTE: ADC_CSR0 may be expanded such that each ADC circuit is assigned its own register, for example ADC0_CSR0 assigned to ADC0, ADC1_CSR0 assigned to ADC1, etc.

ADC_CFG
ADC_CFG is a 16 bit control register that mirrors a value to be passed on to the ADAS3022's internal 16 bit control register by the same name, and is used to configure its many operating modes including input termination along with its internal PGA.

Register NameDescriptionAddress (HEX)
ADC_CFGADAS3022 Configuration RegisterBase+0x0020
Bit PositionNameDescriptionDirectionInitial Value
15:0ADC_CFG[15:0]ADAS3022 device configuration value.W0


NOTE: ADC_CFG may be expanded such that each ADC circuit is assigned its own register, for example ADC0_CFG assigned to ADC0, ADC1_CFG assigned to ADC1, etc.

ADC_SAMPLECK_CNT
In order to set the ADC sample clock rate, the ADC_SAMPLECK_CNT register a 16 bit hex value used as a denominator to divide a high speed reference clock numerator; in this case the FPGA Main Clock of 200Mhz.

The ADC sample rate clock uses the following formula:
ADC Sample Rate = FPGA Clock Frequency/(ADC_SAMPLECK_CNT + 1)

For example, to set the ADC Sample Rate = 1MHz, we would use the following numbers:
FPGA Clock Frequency = 200Mhz,
ADC_SAMPLECK_CNT = 199 (0xC7)

=>ADC Sample Rate = 200Mhz/(199+1) = 1Mhz

Register NameDescriptionAddress (HEX)
ADC_SAMPLECK_CNTADC Sample Clock DenominatorBase+0x0030
Bit PositionNameDescriptionDirectionInitial Value
15:0ADC_SAMPLECK_CNT[15:0]Denominator value to set ADC sample rate that divides 200Mhz FPGA reference numerator.W0


NOTE: ADC_SAMPLECK_CNT may be expanded such that each ADC circuit is assigned its own register, for example ADC0_SAMPLECK_CNT assigned to ADC0, ADC1_SAMPLECK_CNT assigned to ADC1, etc.

NOTES:

  1. Carrier Processor Mapping:
    1. Keystone I DSP EMIF Base Address = 0x7000_0000.
    2. Keystone I DSP SRIO Base Address = TBD.
    3. Sitara PRU Base Address = TBD.
  2. For ADC hardware details, please refer to the ADAS3022 data sheet.

DAC Section

The FPGA controls up to two (2) LTC2666, 16 bit, 8 channel 250khz additive updating DAC devices, for up to a maximum of 16 output channels.

DAC Register Mapping

The LTC2666 has an SPI 24bit serial interface to the FPGA. The most significant nibble is the command, the next nibble is the address for the specific internal DAC0 output (select 0..7), and the remaining lower 16-bits are the data for the DAC output value.

DAC_DATA
The DAC_DATA register is a 16 bit value that is to be directly transferred to a DAC output channel, after the 8 bit command and address fields are written into the DAC_CMD_ADDR register. Both register contents are concatenated to form a 24 bit value that is then directly transferred to the DAC. The 16 bit data field is represented as an unsigned U16 value, with outputs defaulted to operate in the maximum bipolar range of +/-10V (20Vpp). Please consult the factory if the DAC output range may need to be configured in a different default mode as there are many combinations of unipolar and bipolar modes available.

Register NameDescriptionAddress (HEX)
DACn_DATADACn Data RegisterDAC0 = Base+0x8000
DAC1 = Base+0xA000
Bit PositionNameDescriptionDirectionInitial Value
15:0DACn_DATA[15:0]U16 value transferred to DACn outputR/W0


DAC_CMD_ADDR
The DAC_CMD_ADDR register fields are composed of the 4 bit command and a 4 bit address. A write to the DAC_CMD_ADDR register will initiate a transfer to the DAC using a 24 bit stream that is formed by concatenating its contents with the value already inside the DAC_DATA register.

Register NameDescriptionAddress (HEX)
DACn_CMD_ADDRDACn Command Address RegisterDAC0_CMD_ADDR = Base+0x8004
DAC1_CMD_ADDR = Base+0xA004
Bit PositionNameDescriptionDirectionInitial Value
15:8--R/W0
7:4DACn_CMD[3:0]4 bit command field per output channel
3:0DACn_ADDR[3:0]4 bit address field where the 3lsbs are used to define the specific DACn output channel [7:0] to be updated.


DAC_CSR0
Bit 0 of the DAC_CSR0 register controls the external CLRn signal line to the DACs. Its default value is a '1'; toggling this bit (first writing a '0' followed by writing a '1') will clear the DACs, and is necessary in order to initialize the DACs before accessing them.

Register NameDescriptionAddress (HEX)
DACn_CSR0DACn Control & Status Register 0DAC0_CSR0 = Base+0x8008
DAC1_CSR0 = Base+0xA008
Bit PositionNameDescriptionDirectionInitial Value
15:1--R/W0
0DACn_CLRClears all DACn outputs.1
0 = DACn Cleared
1 = DACn ENabled (default)


DAC_CSR1
Bit 0 of the DAC_CSR1 register will enable the DAC Memory Playback mode. Enabling the DAC Memory Playback mode will disable all direct accesses to the DAC and instead it will be updated with the values contained inside the DAC0_MEM buffer.

The DAC Memory Playback mode will transfer the contents of the DAC0_MEM buffer to the DACs whose size is defined by the 10 bit DAC0_PLAY_MEMSIZE register. The DAC Memory Playback mode will repeat this loop until disabled by writing a '0' to bit 0 of the DAC0_CSR1 register.

Register NameDescriptionAddress (HEX)
DACn_CSR1DACn Control & Status Register 1DAC0 = Base+0x800C
DAC1 = Base+0xA00C
Bit PositionNameDescriptionDirectionInitial Value
15:1--R/W0
0DACn_PLAYMODE_SELControls the DAC Memory Playback mode.
0 = DISable DACn Memory Playback, DACn Updated directly by accessing the DACn_DATA register (default).
1 = ENable DACn Memory Playback mode where values are updated from the contents inside of DAC_MEM buffer.


DAC_PLAY_MEMSIZE
DAC_PLAY_MEMSIZE is a 10-bit register that is used to define the size of the FPGA's DACn Memory Playback memory buffer. When added to the DACn_MEM base address, note that this value also serves as the last address to be accessed from the DACn Memory Playback buffer.

Register NameDescriptionAddress (HEX)
DACn_PLAY_MEMSIZEDACn Playback Memory Size RegisterDAC0 = Base+0x8010
DAC1 = Base+0xA010
Bit PositionNameDescriptionDirectionInitial Value
15:10--R/W0
9:0DACn_PLAY_MEMSIZE[9:0]DACn Memory buffer size for playback mode, 1k maximum (default = 0x3FF).


DAC_TOGGLE_CNT

Register NameDescriptionAddress (HEX)
DACn_TOGGLE_CNTDACn Toggle Counter RegisterDAC0 = Base+0x8014
DAC1 = Base+0xA014
Bit PositionNameDescriptionDirectionInitial Value
15:0DACn_TOGGLE_CNT[15:0]-R/W0


DAC_MEM
DAC_MEM is the DAC Memory region for the DAC Memory Playback mode. Because the FPGA's internal memory uses a 16 bit address boundary versus the DSP's 32 bit addressing, the 1k buffer inside the FPGA will appear as a 2k sized addressable region to the DSP. Therefore, from the DSP's addressing point of view, the DAC data points will be interleaved with the DAC command/address bits.

Starting from the DSP's first address, every other address from there represents the 16-bit DAC's data values according to the following formula:
(DSP Base + 0xC000) + (n * 8)

Likewise, starting from the DSP's second address, every other address from there represents the DAC's command/address fields as shown below:
(DSP Base + 0xC004) + (n * 8)

where n is the nth data and command/address pair representing the DAC's nth channel to be written to the DAC_MEM buffer, which is to be automatically transferred to DAC's nth channel.

Therefore from the DSP's viewpoint, the FPGA's DACn_MEM mapping appears as follows:
DSP Base + 0xC000 = DACn 1st channel data
DSP Base + 0xC004 = DACn 1st channel command/address field
DSP Base + 0xC008 = DACn 2nd channel data
DSP Base + 0xC00C = DACn 2nd channel command/address field
...
...
and so on.

For example, to write a single 24 bit value of 0x30FFFF to the DAC0_MEM buffer which is to be transferred to DAC0's 1st channel, perform these following steps in sequence:

  1. write the DACn's 1st channel data value 0xFFFF to address (DSP Base + 0xC000)
  2. write the DACn's 1st channel command/address field 0x30 to address (DSP Base + 0xC004)

These pair of values will be automatically concatenated to form the 24 bit stream that is transferred to the DACn.

Register NameDescriptionAddress (HEX)
DACn_MEMDACn Data Memory BlockDAC0 = Base+0xC000
DAC1 = Base+0xA000
Bit PositionNameDescriptionDirectionInitial Value
15:0DACn_MEM[15:0]DACn data, command/address fieldsR/W0


NOTES:

  1. Carrier Processor Mapping:
    1. Keystone I DSP EMIF Base Address = 0x7000_0000.
    2. Keystone I DSP SRIO Base Address = TBD.
    3. Sitara PRU Base Address = TBD.
  2. For DAC hardware details, please refer to the LTC2666 data sheet.

Digital IO Port Section

The FPGA controls four (4) 74FCT2652 8 bit transceivers, with two (2) devices making up each 16 bit bidirectional buffered port, for a maximum thirty two (32) lines, with 3.3V~5V tolerance. When a port is configured as an input, it operates as a non-registered transceiver. Meanwhile as an output, it operates as a registered transceiver.

Digital IO Port Register Mapping

DIO_DATA
A pair of 16 bit DIO_DATA registers form the interface to the external buffered DIO port.

Register NameDescriptionAddress (HEX)
DIO_DATA_LWDigital I/O Port: Low WordBase+0x0200
Bit PositionNameDescriptionDirectionInitial Value
15:0D[15:0]LoWord: Data[15:0] BitsR/W0


Register NameDescriptionAddress (HEX)
DIO_DATA_HWDigital I/O Port: High WordBase+0x0204
Bit PositionNameDescriptionDirectionInitial Value
15:0D[31:16]HiWord: Data[31:16] BitsR/W0


DIO_CSR0
DIO_CSR0 is a control and status register for configuring and controlling the FPGA's interface to the transceivers.

Register NameDescriptionAddress (HEX)
DIO_CSR0Buffered Digital I/O Port Control/Status RegisterBase+0x0208
Bit PositionNameDescriptionDirectionInitial Value
15:4---0
3DIO_RDnDIO Read ControlW0
0 = ENable DIO Read Control, transfer FCT2652 internal register or external DIO lines -> FPGA
1 = DISable DIO Read Control, FCT2652 to FPGA interface in HiZ.
2DIO_WRDIO Write ControlW0
0 = DISable DIO Write Control.
1 = ENable DIO Write Control, transfer data from FPGA -> internal FCT2652 register.
1DIO_DIR_HWSelects the direction of the high order 16 bit word DIO[31:16] on the buffered digital I/O port available on the dedicated digital I/O connector.R/W0
0 = HiWord[31:16] is an input (default), transfer external DIO lines -> FPGA.
1 = HiWord[31:16] is an output, transfer internal FCT2652 register written by FPGA -> external DIO lines.
0DIO_DIR_LWSelects the direction of the low order 16 bit word DIO[15:0] on the buffered digital I/O port available on the dedicated digital I/O connector.R/W0
0 = LoWord[15:0] is an input (default), transfer external DIO lines -> FPGA.
1 = LoWord[15:0] is an output, transfer internal FCT2652 register written by FPGA -> external DIO lines.


NOTES:

  1. Carrier Processor Mapping:
    1. Keystone I DSP EMIF Base Address = 0x7000_0000.
    2. Keystone I DSP SRIO Base Address = TBD.
    3. Sitara PRU Base Address = TBD.
  2. For DIO Buffer details, please refer to the 74FCT2652 data sheet.