wiki:OFDM/MIMO/Docs/ModelRegisters

Version 13 (modified by murphpo, 17 years ago) (diff)

--

Register bits [31:16]

Reg Dir Addr 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Rx_ControlBits Read/Write 0x0 RESERVED
Rx_GlobalReset Read/Write 0x4 RESERVED
Rx_OFDM_SymbolCounts Read/Write 0x8 NUM_BASERATE_SYMS
Rx_PktDet_Delay Read/Write 0xC RESERVED
Rx_PktDet_LongCorr_Params Read/Write 0x10 CORR_SET_TIMING
Rx_PktDone_Reset Read/Write 0x14 RESERVED
Rx_symbolTimingOffset Read/Write 0x18 RESERVED
Rx_FreqOffFilt_KI Read/Write 0x1C CFO_FILT_COEF_I (MSB)
Rx_FreqOffFilt_KP Read/Write 0x20 CFO_FILT_COEF_P (MSB)
Rx_Constellation_Scaling Read/Write 0x24 ANT_B_SCALING
Rx_FFT_Scaling Read/Write 0x28 RESERVED
Rx_pktDet_Corr_Thresh Read/Write 0x2C RESERVED
Rx_pktDet_Energy_Thresh Read/Write 0x30 RESERVED
Tx_FFT_Scaling Read/Write 0x34 RESERVED
Tx_PreambleScaling Read/Write 0x38 RESERVED
Tx_NumPayloadBytes Read/Write 0x3C RESERVED
Tx_RandomPayload_ModSel Read/Write 0x40 RESERVED
Tx_Pilots_Index1 Read/Write 0x44 RESERVED PILOT1_INDEX_2
Tx_Pilots_Index2 Read/Write 0x48 RESERVED PILOT2_INDEX_2
Tx_Pilots_Value1 Read/Write 0x4C PILOT1_ANTB_VALUE
Tx_Pilots_Value2 Read/Write 0x50 PILOT2_ANTB_VALUE
Tx_OFDM_SymCounts Read/Write 0x54 NUM_PYLD_SYMS
Tx_Start_Reset_Control Read/Write 0x58 RESERVED
Tx_ControlBits Read/Write 0x5C RESERVED
Rx_BER_Errors RO 0x60 BER_ERRORS (MSB)
Rx_BER_TotalBits RO 0x64 BER_TOTALBITS (MSB)
Rx_packet_done RO 0x68 RESERVED
Tx_PktDone RO 0x6C RESERVED

Register bits [15:0]

Reg Dir Addr 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Rx_ControlBits Read/Write 0x0 RESERVED CFO_USE_LONGCORR CFO_USE_STS CFO_USE_LTS CFO_BYPASS INT_PKTDET_EN EXT_PKTDET_EN REQ_SHORT_CORR REQ_TWO_LONG_CORR SISO_MODE RESERVED DYN_PKT_LENGTHS REQ_LONG_CORR BER_RESET
Rx_GlobalReset Read/Write 0x4 RESERVED RX_RESET
Rx_OFDM_SymbolCounts Read/Write 0x8 NUM_TRAINING_SYMS
Rx_PktDet_Delay Read/Write 0xC RESERVED PKT_DET_DELAY
Rx_PktDet_LongCorr_Params Read/Write 0x10 CORR_TRESHOLD
Rx_PktDone_Reset Read/Write 0x14 RESERVED EN_BADPKT_INT EN_GOODPKT_INT RESERVED RST_BADPKT_INT RST_GOODPKT_INT
Rx_symbolTimingOffset Read/Write 0x18 RESERVED SYMBOM_TIMING_OFFSET
Rx_FreqOffFilt_KI Read/Write 0x1C CFO_FILT_COEF_I (LSB)
Rx_FreqOffFilt_KP Read/Write 0x20 CFO_FILT_COEF_P (LSB)
Rx_Constellation_Scaling Read/Write 0x24 ANT_A_SCALING
Rx_FFT_Scaling Read/Write 0x28 RESERVED RX_FFT_SCALING_0 RX_FFT_SCALING_1 RX_FFT_SCALING_2
Rx_pktDet_Corr_Thresh Read/Write 0x2C RESERVED PKTDET_CORR_THRESH
Rx_pktDet_Energy_Thresh Read/Write 0x30 RESERVED PKTDET_ENERGY_THRESH
Tx_FFT_Scaling Read/Write 0x34 RESERVED TX_FFT_SCALING_0 TX_FFT_SCALING_1 TX_FFT_SCALING_2
Tx_PreambleScaling Read/Write 0x38 PREAMBLE_SCALING
Tx_NumPayloadBytes Read/Write 0x3C RESERVED NUM_BYTES
Tx_RandomPayload_ModSel Read/Write 0x40 RESERVED RAND_PLD_MOD_SEL
Tx_Pilots_Index1 Read/Write 0x44 RESERVED PILOT1_INDEX_1
Tx_Pilots_Index2 Read/Write 0x48 RESERVED PILOT2_INDEX_1
Tx_Pilots_Value1 Read/Write 0x4C PILOT1_ANTA_VALUE
Tx_Pilots_Value2 Read/Write 0x50 PILOT2_ANTA_VALUE
Tx_OFDM_SymCounts Read/Write 0x54 NUM_BASERATE_SYMS NUM_TRAINING_SYMS
Tx_Start_Reset_Control Read/Write 0x58 RESERVED TX_PKTDONE_RESET TX_START TX_RESET
Tx_ControlBits Read/Write 0x5C RESERVED EN_PILOT_SCRAMBLING DISABLE_ANTB_PREAMBLE RANDOM_PYLD SISO_MODE
Rx_BER_Errors RO 0x60 BER_ERRORS (LSB)
Rx_BER_TotalBits RO 0x64 BER_TOTALBITS (LSB)
Rx_packet_done RO 0x68 RESERVED RX_BADPKT_DONE RX_GOODPKT_DONE
Tx_PktDone RO 0x6C RESERVED TX_PKT_DONE

Rx_ControlBits

Address: 0x0

Dir: Read/Write

Fields:

CFO_USE_LONGCORR

(Bit 12) Enables the use of the long correlator to control the timing of the carrier frequency offset estimation based on the long training symbols. This must be set to 1 for normal operation.

CFO_USE_STS

(Bit 11) Enables carrier frequency offset estimation based on the preamble's short training symbols. When using high-quality oscillators, this can be disabled to improve CFO estimation performance.

CFO_USE_LTS

(Bit 10) Enables carrier frequency offset estimation based on the preamble's long training symbols. Must be set to 1 for normal operation.

CFO_BYPASS

(Bit 9) When set to 1, CFO correction is bypassed. This should only be used when driving two nodes from a common reference clock during PHY debugging.

INT_PKTDET_EN

(Bit 8) Enables the internal packet detection block. This should only be used when debugging the PHY over a wire when the external packet detector is not being used.

EXT_PKTDET_EN

(Bit 7) Enables external packet detection via the rx_extpktdet top-level port

REQ_SHORT_CORR

(Bit 6) Requires either internal or external packet detection in order to begin processing a packet. When disabled, the receiver will begin processing packets when trigged only by the long correlator.

REQ_TWO_LONG_CORR

(Bit 5) Requires two threshold crossings from the long correlator, spaced exactly 64 cycles apart. When enaled, this makes packet detection more robust at the cost of more false negative detections.

SISO_MODE

(Bit 4) Enables single-antenna (SISO) mode in the receiver. In this mode, only packets transmitted in SISO mode will be properly received.

DYN_PKT_LENGTHS

(Bit 2) Enables dynamic packet lengths. This should be 1 for normal operation. When disabled, the receiver assumes every packet is a fixed length. This is useful during PHY debugging and BER testing.

REQ_LONG_CORR

(Bit 1) Requires a threshold crossing in the long correlator for packet detection. This must be one for reliable operation.

BER_RESET

(Bit 0) When enabled, the BER calculation engine is held in reset. This should be 0 only during BER testing.


Rx_GlobalReset

Address: 0x4

Dir: Read/Write

Fields:

RX_RESET

(Bit 0) Global reset for the receiver state machines. When set to 1, all state in the packet detection, PHY processing, packet construction and interrupt blocks is cleared. This reset does not clear the values of OPB regsters.


Rx_OFDM_SymbolCounts

Address: 0x8

Dir: Read/Write

Fields:

NUM_BASERATE_SYMS

(Bits 31:16 - UFix16_0) This integer sets the number of base rate symbols the receiver should process with each incoming packet. See the OFDM frame format documentation for more information.

NUM_TRAINING_SYMS

(Bits 15:0 - UFix16_0) This integer sets the number of training symbol periods at the receiver. This value corresponds to the number of OFDM symbol periods dedicated to training. In MIMO mode, the training symbols are divided between antennas, orthogally in time. In SISO mode, every training period is used for estimating the single channel. See the OFDM frame format documentation for more information.


Rx_PktDet_Delay

Address: 0xC

Dir: Read/Write

Fields:

PKT_DET_DELAY

(Bits 6:0 - UFix7_0) This integer sets the delay inserted between the course packet detection signal and the start of receiver processing. This delay should correspond to the time difference between packet detection and the start of the preamble's fourth short training symbol.


Rx_PktDet_LongCorr_Params

Address: 0x10

Dir: Read/Write

Fields:

CORR_SET_TIMING

(Bits 31:16 - UFix16_0) This integer sets sample index used when a long correlation event occurs. The receiver uses a large counter to track packet timing. This counter increments with each sample, starting with course packet detection. When the long correlator crosses its threshold, the counter is set to this value.

CORR_THRESHOLD

(Bits 15:0 - UFix16_0) This integer sets the long correlation threshold used during fine packet detection and symbol timing.


Rx_PktDone_Reset

Address: 0x14

Dir: Read/Write

Fields:

EN_BADPKT_INT

(Bit 5) Enables the bad packet interrupt output. The interrupt is raised via the top-level output rx_int_badpkt. Bad packets are defined as packets which fail the CRC checksum calculation.

EN_GOODPKT_INT

(Bit 4) Enables the good packet interrupt output. The interrupt is raised via the top-level output rx_int_goodpkt. Good packets are defined as packets which pass the CRC checksum calculation.

RST_BADPKT_INT

(Bit 1) Resets the bad packet interrupt. The application must assert & de-assert this bit after processing a bad packet.

RST_GOODPKT_INT

(Bit 0) Resets the good packet interrupt. The application must assert & de-assert this bit after processing a good packet.


Rx_symbolTimingOffset

Address: 0x18

Dir: Read/Write

Fields:

SYMBOL_TIMING_OFFSET

(Bits 5:0 - UFix6_0) This integer sets the nominal symbol timing offset. This value is used as the starting index for the FFT calculation of each received OFDM symbol. This value must be less than the cyclic prefix length.


Rx_FreqOffFilt_KI

Address: 0x1C

Dir: Read/Write

Fields:

CFO_FILT_COEF_I

(Bits 31:0 - UFix32_32) Integral path coefficient for the loop filter in the carrier frequency offset pilot phase tracking system.


Rx_FreqOffFilt_KP

Address: 0x20

Dir: Read/Write

Fields:

CFO_FILT_COEF_P

(Bits 31:0 - UFix32_32) Proportional path coefficient for the loop filter in the carrier frequency offset pilot phase tracking system.


Rx_Constellation_Scaling

Address: 0x24

Dir: Read/Write

Fields:

ANT_B_SCALING

(Bits 31:16 - UFix16_11) This fixed-point value is used to scale the output of the equalizer for antenna B before symbols are detected. This scaling is used to fit the received constellation to the pre-defined hard decision boundaries used during symbol detection.

ANT_A_SCALING

(Bits 15:0 - UFix16_11) This fixed-point value is used to scale the output of the equalizer for antenna A before symbols are detected. This scaling is used to fit the received constellation to the pre-defined hard decision boundaries used during symbol detection.


Rx_FFT_Scaling

Address: 0x28

Dir: Read/Write

Fields:

RX_FFT_SCALING_0

(Bits 5:4 - UFix2_0) This integer sets the scaling after the first stage of the FFT calculation.

RX_FFT_SCALING_1

(Bits 3:2 - UFix2_0) This integer sets the scaling after the middle stage of the FFT calculation.

RX_FFT_SCALING_2

(Bits 1:0 - UFix2_0) This integer sets the scaling after the last stage of the FFT calculation.


Rx_pktDet_Corr_Thresh

Address: 0x2C

Dir: Read/Write

Fields:

PKTDET_CORR_THRESH

(Bits 7:0 - UFix8_7) This fixed-point value is the correlation threshold used for the internal packetion system.


Rx_pktDet_Energy_Thresh

Address: 0x30

Dir: Read/Write

Fields:

PKTDET_ENERGY_THRESH

(Bits 11:0 - UFix12_5) This fixed-point value is the energy threshold used for the internal packetion system.


Tx_FFT_Scaling

Address: 0x34

Dir: Read/Write

Fields:

TX_FFT_SCALING_0

(Bits 5:4 - UFix2_0) This integer sets the scaling after the first stage of the IFFT calculation.

TX_FFT_SCALING_1

(Bits 3:2 - UFix2_0) This integer sets the scaling after the middle stage of the IFFT calculation.

TX_FFT_SCALING_2

(Bits 1:0 - UFix2_0) This integer sets the scaling after the last stage of the IFFT calculation.


Tx_PreambleScaling

Address: 0x38

Dir: Read/Write

Fields:

PREAMBLE_SCALING

(Bits 15:0 - UFix16_16) This fraction sets the scaling of the preamble. The preamble is stored with a full-scale swing on [-1, +1]. The actual transmitted preamble is scaled by this fration.


Tx_NumPayloadBytes

Address: 0x3C

Dir: Read/Write

Fields:

NUM_BYTES

(Bits 11:0 - UFix12_0) This integer is the number of payload bytes present in the packet being prepared for transmission. This value must be updated before the transmitter is started. The application must assure that this value agrees with NUM_PYLD_SYMS and the selected modulation scheme.


Tx_RandomPayload_ModSel

Address: 0x40

Dir: Read/Write

Fields:

RAND_PLD_MOD_SEL

(Bits 1:0 - UFix2_0) This integer selects the modulation scheme used when random payload mode in the transmitter is enabled. The mapping is [0,1,2,3] = [0, QPSK, 16-QAM, 64-QAM].


Tx_Pilots_Index1

Address: 0x44

Dir: Read/Write

Fields:

PILOT1_INDEX_1

(Bits 5:0 - UFix6_0) Subcarrier index for first copy of pilot tone 1. This index should be symmetric about DC with PILOT1_INDEX_2 below.

PILOT1_INDEX_2

(Bits 21:16 - UFix6_0) Subcarrier index for second copy of pilot tone 1. This index should be symmetric about DC with PILOT1_INDEX_1 above.


Tx_Pilots_Index2

Address: 0x48

Dir: Read/Write

Fields:

PILOT2_INDEX_1

(Bits 5:0 - UFix6_0) Subcarrier index for first copy of pilot tone 2. This index should be symmetric about DC with PILOT2_INDEX_2 below.

PILOT2_INDEX_2

(Bits 21:16 - UFix6_0) Subcarrier index for second copy of pilot tone 2. This index should be symmetric about DC with PILOT2_INDEX_1 above.


Tx_Pilots_Value1

Address: 0x4C

Dir: Read/Write

Fields:

PILOT1_ANTA_VALUE

(Bits 15:0 - Fix16_15) Value for pilot tone 1 on antenna A.

PILOT1_ANTB_VALUE

(Bits 31:16 - Fix16_15) Value for pilot tone 1 on antenna B.


Tx_Pilots_Value2

Address: 0x50

Dir: Read/Write

Fields:

PILOT2_ANTA_VALUE

(Bits 15:0 - Fix16_15) Value for pilot tone 2 on antenna A.

PILOT2_ANTB_VALUE

(Bits 31:16 - Fix16_15) Value for pilot tone 2 on antenna B.


Tx_OFDM_SymCounts

Address: 0x54

Dir: Read/Write

Fields:

NUM_TRAINING_SYMS

(Bits 7:0 - UFix8_0) Number of training symbols transmitted before the payload in each packet. This value can be changed per packet, but must remain constant during a transmission.

NUM_BASERATE_SYMS

(Bits 15:8 - UFix8_0) Number of base rate symbols sent per packet. A base rate symbol is modulated at a different rate than the full rate symbols which follow. Also, identical base rate symbols are sent from both antennas; true multiplexing only applies to full rate symbols.

NUM_PYLD_SYMS

(Bits 31:16 - UFix16_0) Number of full rate OFDM symbols in the transmitted packet. Full rate symbols are modulated at a faster rate and are sent multiplexed across both antennas. This number must be even when MIMO mode is enabled. The transmitter will pad the payload to fill unoccupied space in full OFDM symbols.


Tx_Start_Reset_Control

Address: 0x58

Dir: Read/Write

Fields:

TX_RESET

(Bits 1:0 - UFix1_0) Global active-high reset for the transmitter subsystem. When asserted, all internal state in the transmitter will be cleared, except the register bank.

TX_START

(Bits 2:1 - UFix1_0) Trigger for beginning a packet transmission. This register bit acts exactly like the TxStart input port. Only one trigger option (port or register) should be used per packet.

TX_PKTDONE_RESET

(Bits 3:2 - UFix1_0) Clears the state of the Tx_PktDone register. User code should toggle this register high/low after each packet transmission.


Tx_ControlBits

Address: 0x5C

Dir: Read/Write

Fields:

SISO_MODE

(Bits 1:0 - UFix1_0) Enables SISO mode in the transmitter. This option can be enabled per packet and will only function correctly when used with a receiver in SISO mode.

RANDOM_PYLD

(Bits 2:1 - UFix1_0) Enables random payload mode, which transmits random symbols in every subcarrier. The modulation scheme used is configured in the RAND_PLD_MOD_SEL field.

DISABLE_ANTB_PREAMBLE

(Bits 3:2 - UFix1_0) When asserted, disables the transmission of a preamble from antenna B.

EN_PILOT_SCRAMBLING

(Bits 4:3 - UFix1_0) Enables 802.11-style pilot tone scrambling. When used, pseudo-random sign changes will be applied per OFDM symbol.


Rx_BER_Errors

Address: 0x60

Dir: Read-only

Fields:

BER_ERRORS

(Bits 31:0 - UFix32_0) Total number of bit errors detected. BER measurements are only useful when the default packet is repeatedly transmitted.


Rx_BER_TotalBits

Address: 0x64

Dir: Read-only

Fields:

BER_TOTALBITS

(Bits 31:0 - UFix32_0) Total number of bits received. Divide BER_ERRORS by this field to calculate the bit error rate.


Rx_packet_done

Address: 0x68

Dir: Read-only

Fields:

RX_GOODPKT

(Bits 1:0 - UFix1_0) Active high when a good packet is received. This field will only go high when EN_GOODPKT_INT is enabled and must be cleared by asserting RST_GOODPKT_INT.

RX_BADPKT

(Bits 2:1 - UFix1_0) Active high when a bad packet is received. This field will only go high when EN_BADPKT_INT is enabled and must be cleared by asserting RST_BADPKT_INT.


Tx_PktDone

Address: 0x6C

Dir: Read-only

TX_PKT_DONE

(Bits 1:0 - UFix1_0) Active high when a packet transmission is complete. This field can be cleared by toggling TX_PKTDONE_RESET.