F641x Digital
Design Specification Rev.0.13
All information contained in these materials, including products and product specifications, represents information on the product at the time of publication and is subject to change by Renesas Electronics Corp. without notice. Please review the latest information published by Renesas Electronics Corp. through various means, including the Renesas Electronics Corp. website (http://www.renesas.com). |
Preface
|
Readers |
This specification presents the design specification of the digital part of the F641x device and is intended for users who want to understand the concept, features and its functionality.
|
Organization |
This specification describes the following sections:
|
Numeric notation |
Binary: 2'bxxxx or xxxB
Decimal: xxxx
Hexadecimal xxxxH or 0x xxxx
|
Numeric prefixes or suffixes |
Representing powers of 2 (address space, memory capacity):
K (kilo): 2^10 = 1024
M (mega): 2^20 = 1024^2 = 1,048,576
G (giga): 2^30 = 1024^3 = 1,073,741,824
B (byte): 2^3 bits = 8 bits
b (bit) 2^0 bit = 1 bit
Representing powers of 10 (gate and memory bit count):
k (kilo) 10^3 = 1000
|
Register contents |
X, x = don’t care
|
Diagrams |
Block diagrams do not necessarily show the exact wiring in hardware but the functional structure. Timing diagrams are for functional explanation purposes only, without any relevance to the real hardware implementation.
General Outline
Reset Mechanism
⏵ Requirements: IO_21, IO_39, REG_4
The following reset mechanisms are used in F641X:
· Power-on Reset
A power-on reset (POR) is initiated by a logic low on the porb input port. The POR resets all F641X digital blocks.
· Hardware Reset
A hardware reset is initiated by a logic low on the rstb input port. The functionality is the same as for a power-on reset.
· Software Reset
A software reset is initiated when CTRL_CFG[5] (RESET) is set to 1. After reset, CTRL_CFG[5] is cleared (set to 0) automatically. The functionality is the same as for a power-on or hardware reset event with the following exceptions:
o Scan and IO test mode are not disabled.
o SPI communication is not reset.
o The programmable chip address stored in the 8-bit shift register is not initialized to its default value.
SPI Core & Commands
Introduction
Thought is to remove all intelligence from other blocks and do all the processing in the SPI core (spi_core) to keep it centralized. This should also help to reduce routing and help with synthesis optimization. spi_core sends out the final control signals, rather than sending out SPI states and several low-level controls. Due to this reason, the control configuration, LUT pointer registers and address shift registers were included in this block.
Figure 1 shows the external signals and connections of the SPI interface when SPIB/LVDS is tied low (single-ended) and high (differential signaling).
Figure 1: SPI external signals and connections
⏵ Requirements: SPI_2, SPI_61, SPI_63, SPI_47, SPI_64
The SPI core supports a 4-pin protocol, using spi_clk, spi_csb, spi_miso_out/spi_miso_oe, and spi_mosi_in. After a reset, the SPI data output enable signal (spi_miso_oe) is set to 0 and the data output (SDO) tri-stated accordingly. Data in signals (spi_mosi_in) are sampled on the rising edge of the serial clock (spi_clk) with the chip select (spi_csb) signal asserted. The sampling edge is fixed and cannot be changed. Data sampling is stopped when spi_csb signal is deasserted. Data out signals (spi_miso_out) are driven on opposite (falling) edge than sampling edge. This behavior is also fixed and cannot be changed.
Figure 2: SPI timing diagram
Electrical Data/Timing
This section provides the timing requirements and switching characteristics of the external pins of the SPI Interface.
Figure 3: SPI timing requirements
⏵ Requirements: SPI_7, SPI_56, SPI_57, SPI_58, SPI_76
With reference to Figure 3, Table 1 shows the timing characteristics of the SPI Interface, unless otherwise noted.
No. |
Parameter |
Description |
Condition |
Min. |
Max. |
Unit |
|||||||||
f(SCLK) |
SCLK clock frequency |
Read operation and address progamming. |
50 |
MHz |
|||||||||||
Write operation. |
100 |
MHz |
|||||||||||||
1 |
tp(SCLK) |
SCLK period (cycle time) |
Read operation and address progamming. |
20 |
ns |
||||||||||
Write operation. |
10 |
ns |
|||||||||||||
2 |
tph(SCLK) |
SCLK pulse width high |
Read operation and address progamming. |
9 |
ns |
||||||||||
Write operation. |
4 |
ns |
|||||||||||||
3 |
tpl(SCLK) |
SCLK pulse width low |
Read operation and address progamming. |
9 |
ns |
||||||||||
Write operation. |
4 |
ns |
|||||||||||||
4 |
tsu(CSB) |
CSB falling edge to SCLK rising edge setup time |
Read operation and address progamming. |
10 |
ns |
||||||||||
Write operation. |
5 |
ns |
|||||||||||||
5 |
tsu(SDI) |
SDI (input data) setup time |
Read/Write operation and address programming. |
2 |
ns |
||||||||||
6 |
th(SDI) |
SDI (input data) hold time |
Read/Write operation and address programming. |
4 |
ns |
||||||||||
7 |
th(CSB) |
SCLK rising edge to CSB rising edge hold time |
Read operation and address progamming. |
10 |
ns |
||||||||||
Write operation. |
5 |
ns |
|||||||||||||
8 |
tod(SDO) |
SDO (output data) delay time (*1) |
Read/Write operation and address programming. |
5 |
ns |
||||||||||
9 |
tozd(SDO) |
SDO (output data) tri-state to driven delay time (*1) |
Read/Write operation and address programming. |
5 |
ns |
||||||||||
10 |
tiag(CSB) |
Inter-access gap (minimum CSB high time) |
Read operation and address progamming. |
20 |
ns |
||||||||||
Write operation. |
10 |
ns |
|||||||||||||
Notes:
1. SDO loaded with TBD load capacitance for SDO timing specifications.
Addressing
⏵ Requirements: SPI_25
The serial protocol allows for F641X devices to be selected or addressed using either external pins or an internal, programmable register. The selection of either the external or internal chip address is controlled by CTRL_CFG[11] (SHIFTREG_ADDR_EN). By default, the external chip address is selected. This is shown in the Figure 4.
Figure 4: SPI addressing overview
⏵ Requirements: SPI_26, SPI_23, SPI_69
The chip address is derived from the address input (addr_in[4:0]) pins when CTRL_CFG[11] is set to 0. When spib_lvds is set to 0, F641X Digital supports 5 address input signals (add_in[4:0]) for setting the chip address, whereas the lower 4 bits are derived from the external address pins (ADD[3:0]) and the MSB is considered tied LOW, resulting in add_in[4:0] = { 1'b0, ADD[3:0] }. When spib_lvds is set to 1, addr_in[3:2] input signals are ignored and set to 2'b00 for further processing (address comparison).
⏵ Requirements: SPI_24, SPI_27, SPI_31, SPI_35
Alternatively to using the external pins (ADD[3:0]), an internal, programmable 8-bit chip address stored in a shift register can be used when CTRL_CFG[11] is set to 1. The shift register is placed between address pin add_in[0] (input) and add_in_1_data (output), and is only reset by power-on (porb) or hardware (rstb) signal. When programming is initiated, the ADD1 I/O-buffer is configured to output mode by driving the add_in_1_oe signal high. This way, and as shown and described in section 'Single-Ended SPI and Internal, Programmable Chip Address', multiple devices can be connected to each other and programmed sequentially.
⏵ Requirements: SPI_28, SPI_33, SPI_32, SPI_34, SPI_29
Programming of the internal chip address is enabled by setting CTRL_CFG[10] (SHIFTREG_ADDR_PROG) to 1, and it is started by asserting spi_csb (driven low), followed by clock (spi_clk) and input data (spi_mosi) carrying the address bits, which are to be sent with MSB first. Without releasing spi_csb an 8-bit data stream is sent to add_in[0]. Data currently stored in the MSB of the 8-bit shift register is pushed out on add_in_1_data. Programming is terminated by deasserting spi_csb (driven high) after the last address bit was sent. This is shown in the timing diagram appended below for a single device.
Figure 5: SPI addressing single device programming timing diagram
⏵ Requirements: SPI_30, SPI_36, SPI_103
When programming is terminated, then CTRL_CFG[10] (SHIFTREG_ADDR_PROG) is cleared (set to 0) automatically, and CTRL_CFG[11] (SHIFTREG_ADDR_EN) is set to 1 to indicate that the internal chip address is used. Writing 0 to CTRL_CFG[10] (SHIFTREG_ADDR_PROG) has no effect. CTRL_CFG[11] (SHIFTREG_ADDR_EN) can only be cleared (set to 0) by power-on (porb) or hardware (rstb) reset signal.
Figure 6 shows part of a sequence of ADD0 input and ADD1 output values of a device, whose internal chip address is (re-)programmed from 0xA5 to 0x5A. All devices are connected to each other with the ADD0 input of the current device to the ADD1 output of the previous device.
Figure 6: SPI addressing multiple device programming timing diagram
Commands
Overview
⏵ Requirements: SPI_1
The following SPI commands are supported:
· Local Register Read - LCL_REG_RD
· Local Register Write - LCL_REG_WR
· Global Register Write - GBL_REG_WR
· Local LUT Write - LCL_LUT_WR
· Global LUT Write - GBL_LUT_WR
· Local Fast Beam Steering - LCL_FBS
· Global Fast Beam Steering - GBL_FBS
Local Register Read - LCL_REG_RD
⏵ Requirements: SPI_78, SPI_74, SPI_3
Local Register Read (LCL_REG_RD) is a 32-bit (4 bytes) SPI command bounded by the chip select (spi_csb) signal that reads the registers of the device. When there is a LCL_REG_RD command to a buffered registers, the content of the active register is read.
⏵ Requirements: SPI_80, SPI_4
The Chip Address given in byte1 selects the device to be accessed. If the Chip Address does not match the (pre-configured) chip address, the access will be ignored.
⏵ Requirements: SPI_5
Continuous read access and address roll-back is supported. Sending another 16 clock (spi_clk) cycles with the chip select (spi_csb) signal asserted after the initial command increases the register address, and data are transmitted accordingly. When reaching the register address 0xFF, the next access targets address 0x0.
⏵ Requirements: SPI_4, SPI_78, SPI_79, SPI_80, SPI_81, SPI_5
The following tables show the LCL_REG_RD frame structure.
byte1 |
byte2 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Mode |
Chip Address |
Register Address |
|||||||||||||
0 |
0 |
0 |
ADD4 |
ADD3 |
ADD2 |
ADD1 |
ADD0 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
SPI protocol mode |
Hardware device address to select chip to be accessed by SPI command. |
8-bit (start) address of internal register(s) to access. Continuous read and address roll back is supported. |
|||||||||||||
byte3 |
byte4 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Register Read Data |
|||||||||||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
16-bit data. Data from the consecutive register is read every 16 clock cycles at the end until the CSB is set to high again. |
|||||||||||||||
Byte |
Bit |
Description |
Comment |
||||||||||||
1 |
[7:5] |
Mode |
For Local Register Read, Mode = 3'b000. |
||||||||||||
[4:0] |
Chip Address |
Hardware device address to select chip to be accessed by SPI command. |
|||||||||||||
2 |
[7:0] |
Register Address |
8-bit (start) address of internal register(s) to access. In case of continuous read, the address is automatically incremented. |
||||||||||||
3 |
[7:0] |
Data byte 1 |
Master sends out the spi_clk pulses and read data is received on the SDO (MISO) line. |
||||||||||||
4 |
[7:0] |
Data byte 2 |
|||||||||||||
Notes:
· Chip Address:
Although F641x supports only 4-bit physical address, the digital block supports 5-bit chip address. The top bit is hard coded to 0 on-chip. This design also supports programming the chip-address using shift register blocks, where the chip can be assigned a 5-bit address.
· Auto Burst Mode:
The Local Register Read SPI command provides auto burst mode. Sending another n times (n=1, 2, 3...) 16 clocks with the chip select signal asserted after the initial command fetches the next registers content. After register address 0xFF, data from register address 0x0 is sent. In auto burst mode, the command length becomes 4 + n*2 bytes.
· Register Read Data:
When there is an access to a buffered register, the content of the active register is read.
Use cases:
1. Read register contents from chip address 0x5 and register address 0x2A.
a. SPI command: 0x05_2A_**_**
b. Comment: During the last two bytes, the data will be sent on the SDO (MISO) line by the chip.
2. Reading registers 0x40-0x43 from chip address 0xA.
a. SPI command: 0x0A_40_**_**_**_**_**_**_**_**
b. Comment: Registers 0x40, 0x41, 0x42, and 0x43 are read in sequence.
Local Register Write - LCL_REG_WR
⏵ Requirements: SPI_83
Local Register Write (LCL_REG_WR) is basically a 40-bit (5 bytes) SPI command bounded by the chip select (spi_csb) signal that writes data to registers of the device. When there is a LCL_REG_WR command to a buffered registers, it depends on the RF Load settings in byte3 if the content of the active register is updated, too.
⏵ Requirements: SPI_80, SPI_4
The Chip Address given in byte1 selects the device to be accessed. If the Chip Address does not match the (pre-configured) chip address, the access will be ignored.
⏵ Requirements: SPI_8, SPI_9, SPI_10, SPI_65
When the TX RF Load (TRL) bit in byte3 is set to 1, data of the TXVn and TXHn Set (TXVn/TXHn_SET, n = 1..4) buffer registers are transferred to the TXVn_SET and TXHn_SET active registers respectively. When the RX RF Load (RRL) bit is set to 1, data of the RXVn and RXHn Set (RXVn/RXHn_SET, n = 1..4) buffer registers are transferred to the RXVn_SET and RXHn_SET active registers respectively. A data transfer from the buffer to the active registers is initiated even if the chip address given in byte1 does not match the (pre-configured) chip address. When none of the RF Load bits are set to 1, then no data transfer from buffer to active registers occurs. Note that this behavior is independent of the CTRL_CFG[0] (TRX_CONT_MODE) setting.
⏵ Requirements: SPI_67, REG_95
When the TX DAC Load (TAL) bit in byte3 is set to 1, all DACs configured as 'PA' in the PA_LNA_DAC_CFG1 register are set according to DAC_ONn (n = 1..10) register values if all of the following conditions are met:
· the DACs are enabled in the PA_LNA_DAC_CFG3 register.
· Standby mode is disabled, meaning that neither SW_TRX[10] (STANDBY) is set to 1 nor the external stdby pin is driven high.
· CTRL_CFG[0] (TRX_CONT_MODE) is set to 0 (SPI control).
· the operating mode is set to 'TX'.
· CTRL_CFG[6] (TAL_RAL_EN) is set to 1.
Setting the TAL bit to 0 switches all PA DACs to the PA DAC OFF state, meaning that the outputs are set according to PA_DAC_OFF register value.
⏵ Requirements: SPI_68, REG_95
When the RX DAC Load (RAL) bit in byte3 is set to 1, all DACs configured as 'LNA' in the PA_LNA_DAC_CFG1 register are set according to DAC_ONn (n = 1..10) register values if all of the following conditions are met:
· the DACs are enabled in the PA_LNA_DAC_CFG3 register.
· Standby mode is disabled, meaning that neither SW_TRX[10] (STANDBY) is set to 1 nor the external stdby pin is driven high.
· CTRL_CFG[0] (TRX_CONT_MODE) is set to 0 (SPI control).
· the operating mode is set to 'RX'.
· CTRL_CFG[6] (TAL_RAL_EN) is set to 1.
Setting the RAL bit to 0 switches all LNA DACs to the LNA DAC OFF state, meaning that the outputs are set according to LNA_DAC_OFF register value.
⏵ Requirements: SPI_84, REG_99
Enabling and disabling of DACs is done even if the chip address given in byte1 does not match the (pre-configured) chip address. DAC_STATUS[13:12] ({ TAL, RAL }) bits hold the status of the DAC Load bits set in the last command.
⏵ Requirements: SPI_62
Data shall be committed in halfwords as the sixteen data bit of a data field. If the write access is not an even multiple of 16 clocks, the trailing data bits are not committed. There is an exception when { PSS, GAS } = 2b'10 or { PSS, GAS } = 2b'10 in byte3. In this case data shall be committed in bytes as the eight data bit of a data field. If the write access is not an even multiple of 8 clocks, the trailing data bits are not committed.
⏵ Requirements: SPI_11
When both Phase and Gain Set bits are set to 0 ({ PSS, GAS } = 2b'00) in byte3, then 16-bit data shall be provided in byte4 and byte5 as well as in all subsequent halfwords (if any). With this configuration (setting) it is expected that data are written to registers other than TXVn/TXHn/RXVn/RXHn_SET (n = 1..4). When writing to TXVn_SET/TXHn_SET/RXVn_SET/RXHn_SET registers with this setting, proper device operation is not guaranteed anymore.
⏵ Requirements: SPI_12, SPI_13
When Phase Set bit is set to 1 and Gain Set bit is set to 0 ({ PSS, GAS } = 2b'10), then TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) registers shall be addressed and 8-bit data shall be provided in byte4 and all subsequent bytes (if any) corresponding to TX_PHASE_CTRL and RX_PHASE_CTRL bit fields respectively. When Phase Set bit is set to 0 and Gain Set bit is set to 1 ({ PSS, GAS } = 2b'01), then TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) registers shall be addressed and 8-bit data shall be provided in byte4 and all subsequent bytes (if any) corresponding to TX_GAIN_CTRL and RX_GAIN_CTRL bit fields respectively. When writing to a register other then then TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) with any of these settings, proper device operation is not guaranteed anymore.
⏵ Requirements: SPI_75
When both Phase and Gain Set bits are set to 1 ({ PSS, GAS } = 2b'11), then TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) registers shall be addressed and 16-bit data shall be provided in byte4 and byte5 as well as in all subsequent halfwords (if any).
⏵ Requirements: SPI_104, SPI_105
When the Cyclic Redundancy Check (CRC) error detection feature is enabled - refer to section Cyclic Redundancy Check for more information - { NB1, NB0 } define the number of write data bytes that are transmitted. When CRC is disabled these bits are ignored.
⏵ Requirements: SPI_5
Continuous read access and address roll-back is supported. Sending another 16 clock (spi_clk) cycles with the chip select (spi_csb) signal asserted after the initial command increases the register address, and data are received accordingly. When reaching the register address 0xFF, the next access targets address 0x0.
⏵ Requirements: SPI_83, SPI_82, SPI_80, SPI_81, SPI_4, SPI_8, SPI_9, SPI_10, SPI_65, SPI_67, SPI_68, SPI_62, SPI_11, SPI_14, SPI_12, SPI_13, SPI_75, SPI_104
The following tables show the LCL_REG_WR frame structures.
byte1 |
byte2 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Mode |
Chip Address |
Register Address |
|||||||||||||
0 |
0 |
1 |
ADD4 |
ADD3 |
ADD2 |
ADD1 |
ADD0 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
SPI protocol mode |
Hardware device address to select chip to be accessed by SPI command. |
8-bit (start) address of internal register(s) to access. Continuous read and address roll back is supported. |
|||||||||||||
byte3 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
RF Load |
DAC Load |
Phase/Gain Set |
Data Bytes |
||||
TRL |
RRL |
TAL |
RAL |
PSS |
GAS |
NB1 |
NB0 |
Controls data update to RF channels. |
Controls data update to DACs. |
Controls gain and phase set. |
Defines the number of write data bytes. |
||||
Option 1: When { PSS, GAS } = 2b'00 or { PSS, GAS } = 2b'11.
byte4 |
byte5 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Register Write Data |
|||||||||||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
16-bit data. The user can keep providing additional 16-bit data streams and they would be uploaded to sequential registers. |
|||||||||||||||
Option 2: When { PSS, GAS } = 2b'01 or { PSS, GAS } = 2b'10.
byte4 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Register Write Data |
|||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
8-bit data. The user can keep providing additional 8-bit data streams and they would be uploaded to the sequential registers. |
|||||||
Byte |
Bit |
Description |
Comment |
||||||||||||
1 |
[7:5] |
Mode |
For Local Register Write, Mode = 3'b001. |
||||||||||||
[4:0] |
Chip Address |
Hardware device address to select chip to be accessed by SPI command. |
|||||||||||||
2 |
[7:0] |
Register Address |
8-bit (start) address of internal register(s) to access. In case of continuous read, the address is automatically incremented. |
||||||||||||
3 |
[7:6] |
RF Load |
These bits trigger data update of all the RF channels for all chips on the SPI bus at once regardless of the chip address: |
||||||||||||
[5:4] |
DAC Load |
These bits trigger data update of all DACs for all the chips on the SPI bus at once regardless of the chip address: |
|||||||||||||
[3:2] |
Phase/Gain Set |
These bits ({ PSS, GAS }) enable 8-bit phase and/or gain set for consecutive addresses: |
|||||||||||||
[1:0] |
Data Bytes |
When the Cyclic Redundancy Check (CRC) error detection feature is enabled, these bits ({ NB1, NB0 }) define the number of write data bytes that are transmitted: |
|||||||||||||
Option 1: When { PSS, GAS } = 2b'00 or { PSS, GAS } = 2b'11.
4+2n |
[7:0] |
Data byte 1+2n |
16-bit data sent by the SPI master on the MOSI line, and received on spi_mosi_in, will be stored in the selected register. |
||||||||||||
5+2n |
[7:0] |
Data byte 2+2n |
|||||||||||||
Option 2: When { PSS, GAS } = 2b'01 or { PSS, GAS } = 2b'10.
4+n |
[7:0] |
Data byte 1+n |
8-bit data sent by the SPI master on the MOSI line, and received on spi_mosi_in, will be stored in the selected register. |
||||||||||||
Notes:
· Bytes: n = 0, 1, 2, 3 …
· Chip Address:
Although F641x supports only 4-bit physical address, the digital block supports 5-bit chip address. The top bit is hard coded to 0 on-chip. This design also supports programming the chip-address using shift register blocks, where the chip can be assigned a 5-bit address.
⏵ Requirements: SPI_5
· Auto Burst Mode:
The Local Register Write SPI command provides auto burst mode. Sending another n times (n=1, 2, 3...) 16 (when { PSS, GAS } = 2b'00 or { PSS, GAS } = 2b'11) or 8 (when { PSS, GAS } = 2b'01 or { PSS, GAS } = 2b'10) clocks with the chip select signal asserted after the initial command writes data to the next registers. After register address 0xFF, data from register address 0x0 are written. In auto burst mode, the command length becomes 4 + n*2 bytes.
⏵ Requirements: SPI_74
· Register Write Data:
When there is an access to a buffered register, it depends on the RF Load settings if the data is written to the active register, too.
Use cases:
1. Write 0x1234 to register 0x06 for chip 0x1A.
a. SPI command: 0x3A_06_00_1234
b. Comment: As this register is not buffered, it is updated even without setting any RF Load bit in the SPI command.
Global Register Write - GBL_REG_WR
⏵ Requirements: SPI_83
Global Register Write (GBL_REG_WR) is basically a 40-bit (5 bytes) SPI command bounded by the chip select (spi_csb) signal that writes data to registers of the device. When there is a GBL_REG_WR command to a buffered registers, it depends on the RF Load settings in byte3 if the content of the active register is updated, too.
⏵ Requirements: SPI_6, SPI_86
When the Sub-array Enable (SE) bit in byte1 is set to 1, the command is only executed when the Sub-array Index given in the same byte matches the Sub-array Index (SA_INDEX) of the device in the CHIP_INFO register. When SE is set to 0, the command is executed for all devices.
⏵ Requirements: SPI_8, SPI_9, SPI_10, SPI_65
When the TX RF Load (TRL) bit in byte3 is set to 1, data of the TXVn and TXHn Set (TXVn/TXHn_SET, n = 1..4) buffer registers are transferred to the TXVn_SET and TXHn_SET active registers respectively. When the RX RF Load (RRL) bit is set to 1, data of the RXVn and RXHn Set (RXVn/RXHn_SET, n = 1..4) buffer registers are transferred to the RXVn_SET and RXHn_SET active registers respectively. A data transfer from the buffer to the active registers is initiated even if the Sub-array Index given in byte1 does not match the Sub-array Index (SA_INDEX) of the device in the CHIP_INFO register. When none of the RF Load bits are set to 1, then no data transfer from buffer to active registers occurs. Note that this behavior is independent of the CTRL_CFG[0] (TRX_CONT_MODE) setting.
⏵ Requirements: SPI_67, REG_95
When the TX DAC Load (TAL) bit in byte3 is set to 1, all DACs configured as 'PA' in the PA_LNA_DAC_CFG1 register are set according to DAC_ONn (n = 1..10) register values if all of the following conditions are met:
· the DACs are enabled in the PA_LNA_DAC_CFG3 register.
· Standby mode is disabled, meaning that neither SW_TRX[10] (STANDBY) is set to 1 nor the external stdby pin is driven high.
· CTRL_CFG[0] (TRX_CONT_MODE) is set to 0 (SPI control).
· the operating mode is set to 'TX'.
· CTRL_CFG[6] (TAL_RAL_EN) is set to 1.
Setting the TAL bit to 0 switches all PA DACs to the PA DAC OFF state, meaning that the outputs are set according to PA_DAC_OFF register value.
⏵ Requirements: SPI_68, REG_95
When the RX DAC Load (RAL) bit in byte3 is set to 1, all DACs configured as 'LNA' in the PA_LNA_DAC_CFG1 register are set according to DAC_ONn (n = 1..10) register values if all of the following conditions are met:
· the DACs are enabled in the PA_LNA_DAC_CFG3 register.
· Standby mode is disabled, meaning that neither SW_TRX[10] (STANDBY) is set to 1 nor the external stdby pin is driven high.
· CTRL_CFG[0] (TRX_CONT_MODE) is set to 0 (SPI control).
· the operating mode is set to 'RX'.
· CTRL_CFG[6] (TAL_RAL_EN) is set to 1.
Setting the RAL bit to 0 switches all LNA DACs to the LNA DAC OFF state, meaning that the outputs are set according to LNA_DAC_OFF register value.
⏵ Requirements: SPI_84, REG_99
Enabling and disabling of DACs is done even if the Sub-array Index given in byte1 does not match the Sub-array Index (SA_INDEX) of the device in the CHIP_INFO register. DAC_STATUS[13:12] ({ TAL, RAL }) bits hold the status of the DAC Load bits set in the last command.
⏵ Requirements: SPI_62
Data shall be committed in halfwords as the sixteen data bit of a data field. If the write access is not an even multiple of 16 clocks, the trailing data bits are not committed. There is an exception when { PSS, GAS } = 2b'10 or { PSS, GAS } = 2b'10 in byte3. In this case data shall be committed in bytes as the eight data bit of a data field. If the write access is not an even multiple of 8 clocks, the trailing data bits are not committed.
⏵ Requirements: SPI_11
When both Phase and Gain Set bits are set to 0 ({ PSS, GAS } = 2b'00) in byte3, then 16-bit data shall be provided in byte4 and byte5 as well as in all subsequent halfwords (if any). With this configuration (setting) it is expected that data are written to registers other than TXVn/TXHn/RXVn/RXHn_SET (n = 1..4). When writing to TXVn_SET/TXHn_SET/RXVn_SET/RXHn_SET registers with this setting, proper device operation is not guaranteed anymore.
⏵ Requirements: SPI_12, SPI_13
When Phase Set bit is set to 1 and Gain Set bit is set to 0 ({ PSS, GAS } = 2b'10), then TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) registers shall be addressed and 8-bit data shall be provided in byte4 and all subsequent bytes (if any) corresponding to TX_PHASE_CTRL and RX_PHASE_CTRL bit fields respectively. When Phase Set bit is set to 0 and Gain Set bit is set to 1 ({ PSS, GAS } = 2b'01), then TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) registers shall be addressed and 8-bit data shall be provided in byte4 and all subsequent bytes (if any) corresponding to TX_GAIN_CTRL and RX_GAIN_CTRL bit fields respectively. When writing to a register other then then TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) with any of these settings, proper device operation is not guaranteed anymore.
⏵ Requirements: SPI_75
When both Phase and Gain Set bits are set to 1 ({ PSS, GAS } = 2b'11), then TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) registers shall be addressed and 16-bit data shall be provided in byte4 and byte5 as well as in all subsequent halfwords (if any).
⏵ Requirements: SPI_104, SPI_105
When the Cyclic Redundancy Check (CRC) error detection feature is enabled - refer to section Cyclic Redundancy Check for more information - { NB1, NB0 } define the number of write data bytes that are transmitted. When CRC is disabled these bits are ignored.
⏵ Requirements: SPI_5
Continuous read access and address roll-back is supported. Sending another 16 clock (spi_clk) cycles with the chip select (spi_csb) signal asserted after the initial command increases the register address, and data are received accordingly. When reaching the register address 0xFF, the next access targets address 0x0.
⏵ Requirements: SPI_83, SPI_85, SPI_80, SPI_6, SPI_86, SPI_8, SPI_9, SPI_10, SPI_65, SPI_67, SPI_68, SPI_62, SPI_11, SPI_14,SPI_12, SPI_13, SPI_75, SPI_104
The following tables show the GBL_REG_WR frame structures.
byte1 |
byte2 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Mode |
SA Enable |
Sub-array Index |
Register Address |
||||||||||||
0 |
1 |
0 |
SE |
SA3 |
SA2 |
SA1 |
SA0 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
SPI protocol mode |
Sub-array enable |
Sub-array index info for each chip is stored in CHIP_INFO register. |
8-bit (start) address of internal register(s) to access. Continuous read and address roll back is supported. |
||||||||||||
byte3 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
RF Load |
DAC Load |
Phase/Gain Set |
Data Bytes |
||||
TRL |
RRL |
TAL |
RAL |
PSS |
GAS |
NB1 |
NB0 |
Controls data update to RF channels. |
Controls data update to DACs. |
Controls gain and phase set. |
Defines the number of write data bytes. |
||||
Option 1: When { PSS, GAS } = 2b'00 or { PSS, GAS } = 2b'11.
byte4 |
byte5 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Register Write Data |
|||||||||||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
16-bit data. The user can keep providing additional 16-bit data streams and they would be uploaded to the sequential registers. |
|||||||||||||||
Option 2: When { PSS, GAS } = 2b'01 or { PSS, GAS } = 2b'10.
byte4 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Register Write Data |
|||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
8-bit data. The user can keep providing additional 8-bit data streams and they would be uploaded to the sequential registers. |
|||||||
Byte |
Bit |
Description |
Comment |
||||||||||||
1 |
[7:5] |
Mode |
For Global Register Write, Mode = 3'b010. |
||||||||||||
[4] |
Sub-array Enable |
SE=0: Command is executed on all devices. |
|||||||||||||
[3:0] |
Sub-array Index |
Hardware device address to select chip to be accessed by SPI command. |
|||||||||||||
2 |
[7:0] |
Register Address |
8-bit (start) address of internal register(s) to access. In case of continuous read, the address is automatically incremented. |
||||||||||||
3 |
[7:6] |
RF Load |
These bits trigger data update of all the RF channels for all chips on the SPI bus at once regardless of the chip address: |
||||||||||||
[5:4] |
DAC Load |
These bits trigger data update of all DACs for all the chips on the SPI bus at once regardless of the chip address: |
|||||||||||||
[3:2] |
Phase/Gain Set |
These bits ({ PSS, GAS }) enable 8-bit phase and/or gain set for consecutive addresses: |
|||||||||||||
[1:0] |
Data Bytes |
When the Cyclic Redundancy Check (CRC) error detection feature is enabled, these bits ({ NB1, NB0 }) define the number of write data bytes that are transmitted: |
|||||||||||||
Option 1: When { PSS, GAS } = 2b'00 or { PSS, GAS } = 2b'11.
4+2n |
[7:0] |
Data byte 1+2n |
Data sent by the SPI master on the MOSI line, and received on spi_mosi_in, will be stored in the selected register. |
||||||||||||
5+2n |
[7:0] |
Data byte 2+2n |
|||||||||||||
Option 2: When { PSS, GAS } = 2b'01 or { PSS, GAS } = 2b'10.
4+n |
[7:0] |
Data byte 1+n |
Data sent by the SPI master on the MOSI line, and received on spi_mosi_in, will be stored in the selected register. |
||||||||||||
Notes:
· Bytes: n = 0, 1, 2, 3 …
⏵ Requirements: SPI_5
· Auto Burst Mode:
The Global Register Write SPI command provides auto burst mode. Sending another n times (n=1, 2, 3...) 16 (when { PSS, GAS } = 2b'00 or { PSS, GAS } = 2b'11) or 8 (when { PSS, GAS } = 2b'01 or { PSS, GAS } = 2b'10) clocks with the chip select signal asserted after the initial command writes data to the next registers. After register address 0xFF, data from register address 0x0 are written. In auto burst mode, the command length becomes 4 + n*2 bytes.
⏵ Requirements: SPI_74
· Register Write Data:
When there is an access to a buffered register, it depends on the RF Load settings if the data is written to the active register, too.
Use cases:
1. Write 0x1234 to register 0x06 for chip with sub-array index 0xA.
a. SPI command: 0xAA_06_00_1234
b. Comment: As this register is not buffered, it is updated even without setting any RF Load bit in the SPI command.
Local LUT Read - LCL_LUT_RD
⏵ Requirements: SPI_87
Local LUT Read (LCL_LUT_RD) is a 40-bit (5 bytes) SPI command bounded by the chip select (spi_csb) signal that reads data from the look-up tables (LUTs) of the device.
⏵ Requirements: SPI_80, SPI_4
The Chip Address given in byte1 selects the device to be accessed. If the Chip Address does not match the (pre-configured) chip address, the access will be ignored.
⏵ Requirements: SPI_66, SPI_15, SPI_16
There is a LUT with 128 entries at 64-bit per direction (TX/RX) and polarization (H/V) including four (4) channels at 16-bit per entry. When any of the LUT Pointer (TXV, TXH, RXV or RXH) bit in byte2 is set to 1, access to the associated LUT is enabled. Each LUT location information is completely read with 64 clock pulses (16 bits x 4 channels). When more than one LUT Pointer bit is set to 1, the LUTs are accessed in the following order: TXV -> TXH -> RXV -> RXH.
In general, a complete 64-bit LUT entry including all 4 channels is read with a single read access, starting with channel #1 and followed by channel #2 to #4. In this case the channel select bits ({ CH1, CH0 }) in byte2 must be set to 2'b00. However, if data of a particular channel of a single entry shall only be read, the channel select bits can be set according to the required channel number.
⏵ Requirements: SPI_89, SPI_17
The LUT Address given in byte3 provides the 7-bit address of the LUT to access. Continuous read access and address roll-back is supported. Sending another 64 clock (spi_clk) cycles with the chip select (spi_csb) signal asserted after the initial command increases the LUT address, and data are transmitted accordingly. When reaching the LUT address 0x7F, the next access targets address 0x0.
⏵ Requirements: SPI_87, SPI_88, SPI_4, SPI_80, SPI_15, SPI_89, SPI_87
The following tables show the LCL_LUT_RD frame structure.
byte1 |
byte2 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Mode |
Chip Address |
LUT Pointer |
Reserved |
Channel Select |
|||||||||||
0 |
1 |
1 |
ADD4 |
ADD3 |
ADD2 |
ADD1 |
ADD0 |
TXV |
TXH |
RXV |
RXH |
0 |
0 |
CH1 |
CH0 |
SPI protocol mode. |
Hardware device address to select chip to be accessed by SPI command. |
TX/RX LUT for vertical and horizontal polarization. |
For future use. |
4 channels at 16-bit per entry. |
|||||||||||
byte3 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Address |
Reserved |
||||||
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
0 |
7-bit address of look-up tables to access. Continuous read and address roll back is supported. |
For future use. |
||||||
byte4 |
byte5 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Read Data |
|||||||||||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
16-bit data. Data from the consecutive look-up table location is read every 64 clock cycles at the end until the CSB is set to high again. 4 x 16-bit in each look-up table location. |
|||||||||||||||
Byte |
Bit |
Description |
Comment |
||||||||||||
1 |
[7:5] |
Mode |
For Local LUT Read, Mode = 3'b011. |
||||||||||||
[4:0] |
Chip Address |
Hardware device address to select chip to be accessed by SPI command. |
|||||||||||||
2 |
[7:4] |
LUT Pointer |
User can choose to read TXV, TXH, RXV and RXH by setting |
||||||||||||
[3:2] |
Reserved |
For future use. |
|||||||||||||
[1:0] |
Channel Select |
These bits ({ CH1, CH0 }) select the channel when a particular channel of a single entry shall be read: |
|||||||||||||
3 |
[7:1] |
LUT Address |
7-bit address of look-up tables to access. |
||||||||||||
[0] |
Reserved |
For future use. |
|||||||||||||
4 |
[7:0] |
Data byte 1 |
Master sends out the spi_clk pulses and read data is received on the SDO (MISO) line. |
||||||||||||
5 |
[7:0] |
Data byte 2 |
|||||||||||||
Notes:
· Chip Address:
Although F641x supports only 4-bit physical address, the digital block supports 5-bit chip address. The top bit is hard coded to 0 on-chip. This design also supports programming the chip-address using shift register blocks, where the chip can be assigned a 5-bit address.
· Auto Burst Mode:
The Local LUT Read SPI command provides auto burst mode. Sending another n times (n=1, 2, 3...) 64 clocks with the chip select signal asserted after the initial command fetches the content of the next LUT address. After LUT address 0x7F, data from LUT address 0x0 is sent. In auto burst mode, the command length becomes 5 + n*2 bytes.
Use cases:
1. Read 4 channels data of TXV LUT address 0x74 from chip with address 0x0A.
a. SPI command: 0x6A_80_E8_**_**_**_**_**_**_**_**
b. Comment: 64 clock cycles when reading only from TXV LUT address 0x74.
Local LUT Write - LCL_LUT_WR
⏵ Requirements: SPI_91
Local LUT Write (LCL_LUT_WR) is a 40-bit (5 bytes) SPI command bounded by the chip select (spi_csb) signal that writes data to the look-up tables (LUTs) of the device.
⏵ Requirements: SPI_80, SPI_4
The Chip Address given in byte1 selects the device to be accessed. If the Chip Address does not match the (pre-configured) chip address, the access will be ignored.
⏵ Requirements: SPI_66, SPI_15, SPI_16
There is a LUT with 128 entries at 64-bit per direction (TX/RX) and polarization (H/V) including four (4) channels at 16-bit per entry. When any of the LUT Pointer (TXV, TXH, RXV or RXH) bit in byte2 is set to 1, access to the associated LUT is enabled. Each LUT location information is completely written with 64 clock pulses (16 bits x 4 channels). When more than one LUT Pointer bit is set to 1, the LUTs are accessed in the following order: TXV -> TXH -> RXV -> RXH.
In general, a complete 64-bit LUT entry including all 4 channels is written with a single write access, starting with channel #1 and followed by channel #2 to #4. In this case the channel select bits ({ CH1, CH0 }) in byte2 must be set to 2'b00. However, if data of a particular channel of a single entry shall only be written, the channel select bits can be set according to the required channel number.
⏵ Requirements: SPI_89, SPI_17
The LUT Address given in byte3 provides the 7-bit address of the LUT to access. Continuous write access and address roll-back is supported. Sending another 64 clock (spi_clk) cycles with the chip select (spi_csb) signal asserted after the initial command increases the LUT address, and data are received accordingly. When reaching the LUT address 0x7F, the next access targets address 0x0.
⏵ Requirements: SPI_91, SPI_90, SPI_4, SPI_80, SPI_15, SPI_89
The following tables show the LCL_LUT_WR frame structure.
byte1 |
byte2 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Mode |
Chip Address |
LUT Pointer |
Reserved |
Channel Select |
|||||||||||
1 |
0 |
0 |
ADD4 |
ADD3 |
ADD2 |
ADD1 |
ADD0 |
TXV |
TXH |
RXV |
RXH |
0 |
0 |
CH1 |
CH0 |
SPI protocol mode |
Hardware device address to select chip to be accessed by SPI command. |
TX/RX LUT for vertical and horizontal polarization. |
For future use. |
4 channels at 16-bit per entry. |
|||||||||||
byte3 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Address |
Reserved |
||||||
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
0 |
7-bit address of look-up tables to access. Continuous read and address roll back is supported. |
For future use. |
||||||
byte4 |
byte5 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Write Data |
|||||||||||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
16-bit data. The user can keep providing additional 16-bit data streams and they would be uploaded to the associated channel of the selected LUT. |
|||||||||||||||
Byte |
Bit |
Description |
Comment |
||||||||||||
1 |
[7:5] |
Mode |
For Local LUT Write, Mode = 3'b100. |
||||||||||||
[4:0] |
Chip Address |
Hardware device address to select chip to be accessed by SPI command. |
|||||||||||||
2 |
[7:4] |
LUT Pointer |
User can choose to write TXV, TXH, RXV and RXH by setting |
||||||||||||
[3:2] |
Reserved |
For future use. |
|||||||||||||
[1:0] |
Channel Select |
These bits ({ CH1, CH0 }) select the channel when a particular channel of a single entry shall be written: |
|||||||||||||
3 |
[7:1] |
LUT Address |
7-bit address of look-up tables to access. |
||||||||||||
[0] |
Reserved |
For future use. |
|||||||||||||
4 |
[7:0] |
Data byte 1 |
Data sent by the SPI master on the MOSI line, and received on spi_mosi_in, will be stored in the selected LUT. |
||||||||||||
5 |
[7:0] |
Data byte 2 |
|||||||||||||
Notes:
· Chip Address:
Although F641x supports only 4-bit physical address, the digital block supports 5-bit chip address. The top bit is hard coded to 0 on-chip. This design also supports programming the chip-address using shift register blocks, where the chip can be assigned a 5-bit address.
· Auto Burst Mode:
The Local LUT Write SPI command provides auto burst mode. Sending another n times (n=1, 2, 3...) 64 clocks with the chip select signal asserted after the initial command fetches the content of the next LUT address. After LUT address 0x7F, data from LUT address 0x0 is sent. In auto burst mode, the command length becomes 5 + n*2 bytes.
Use cases:
1. Write 4 channels data (0x1234_5678_9ABC_DEF1) of TXV LUT address 0x74 to chip with address 0x0A.
a. SPI command: 0x8A_80_E8_1234_5678_9ABC_DEF1
b. Comment: 64 clock cycles when writing only to TXV LUT address 0x74.
Global LUT Write - GBL_LUT_WR
⏵ Requirements: SPI_91
Global LUT Write (GBL_LUT_WR) is a 40-bit (5 bytes) SPI command bounded by the chip select (spi_csb) signal that writes data to the look-up tables (LUTs) of the device.
⏵ Requirements: SPI_6, SPI_86
When the Sub-array Enable (SE) bit in byte1 is set to 1, the command is only executed when the Sub-array Index given in the same byte matches the Sub-array Index (SA_INDEX) of the device in the CHIP_INFO register. When SE is set to 0, the command is executed for all devices.
⏵ Requirements: SPI_66, SPI_15, SPI_16
There is a LUT with 128 entries at 64-bit per direction (TX/RX) and polarization (H/V) including four (4) channels at 16-bit per entry. When any of the LUT Pointer (TXV, TXH, RXV or RXH) bit in byte2 is set to 1, access to the associated LUT is enabled. Each LUT location information is completely written with 64 clock pulses (16 bits x 4 channels). When more than one LUT Pointer bit is set to 1, the LUTs are accessed in the following order: TXV -> TXH -> RXV -> RXH.
In general, a complete 64-bit LUT entry including all 4 channels is written with a single write access, starting with channel #1 and followed by channel #2 to #4. In this case the channel select bits ({ CH1, CH0 }) in byte2 must be set to 2'b00. However, if data of a particular channel of a single entry shall only be written, the channel select bits can be set according to the required channel number.
⏵ Requirements: SPI_89, SPI_17
The LUT Address given in byte3 provides the 7-bit address of the LUT to access. Continuous write access and address roll-back is supported. Sending another 64 clock (spi_clk) cycles with the chip select (spi_csb) signal asserted after the initial command increases the LUT address, and data are received accordingly. When reaching the LUT address 0x7F, the next access targets address 0x0.
⏵ Requirements: SPI_91, SPI_92, SPI_6, SPI_86, SPI_15, SPI_89
The following tables show the LCL_LUT_WR frame structure.
byte1 |
byte2 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Mode |
SA Enable |
Sub-array Index |
LUT Pointer |
Reserved |
Channel Select |
||||||||||
1 |
0 |
1 |
SE |
SA3 |
SA2 |
SA1 |
SA0 |
TXV |
TXH |
RXV |
RXH |
0 |
0 |
CH1 |
CH0 |
SPI protocol mode |
Sub-array enable |
Sub-array index info for each chip is stored in CHIP_INFO register. |
TX/RX LUT for vertical and horizontal polarization. |
For future use. |
4 channels at 16-bit per entry. |
||||||||||
byte3 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Address |
Reserved |
||||||
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
0 |
7-bit address of look-up tables to access. Continuous read and address roll back is supported. |
For future use. |
||||||
byte4 |
byte5 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Write Data |
|||||||||||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
16-bit data. The user can keep providing additional 16-bit data streams and they would be uploaded to the associated channel of the selected LUT. |
|||||||||||||||
Byte |
Bit |
Description |
Comment |
||||||||||||
1 |
[7:5] |
Mode |
For Local LUT Write, Mode = 3'b100. |
||||||||||||
[4] |
Sub-array Enable |
SE=0: Command is executed on all devices. |
|||||||||||||
[3:0] |
Sub-array Index |
Hardware device address to select chip to be accessed by SPI command. |
|||||||||||||
2 |
[7:4] |
LUT Pointer |
User can choose to read TXV, TXH, RXV and RXH by setting |
||||||||||||
[3:2] |
Reserved |
For future use. |
|||||||||||||
[1:0] |
Channel Select |
These bits ({ CH1, CH0 }) select the channel when a particular channel of a single entry shall be written: |
|||||||||||||
3 |
[7:1] |
LUT Address |
7-bit address of look-up tables to access. |
||||||||||||
[0] |
Reserved |
For future use. |
|||||||||||||
4 |
[7:0] |
Data byte 1 |
Data sent by the SPI master on the MOSI line, and received on spi_mosi_in, will be stored in the selected LUT. |
||||||||||||
5 |
[7:0] |
Data byte 2 |
|||||||||||||
Notes:
· Auto Burst Mode:
The Global LUT Write SPI command provides auto burst mode. Sending another n times (n=1, 2, 3...) 64 clocks with the chip select signal asserted after the initial command fetches the content of the next LUT address. After LUT address 0x7F, data from LUT address 0x0 is sent. In auto burst mode, the command length becomes 5 + n*2 bytes.
Use cases:
1. Write 4 channels data (0x1234_5678_9ABC_DEF1) of TXV LUT address 0x74 to chip with sub-array index 0xA.
a. SPI command: 0xBA_80_E8_1234_5678_9ABC_DEF1
b. Comment: 64 clock cycles when writing only to TXV LUT address 0x74.
Local Fast Beam Steering - LCL_FBS
⏵ Requirements: SPI_93
Local Fast Beam Steering (LCL_FBS) is basically a 24-bit (3 bytes) SPI command bounded by the chip select (spi_csb) signal and one of the ways to fetch data stored in the LUTs and impress them to the desired channels. There is an exception when both the vertical and horizontal LUT pointer are set, which results in a 4-byte command.
⏵ Requirements: SPI_80, SPI_4, SPI_72
The Chip Address given in byte1 selects the device to be accessed. If the Chip Address does not match the (pre-configured) chip address, the access will be ignored. The Chip Address is increased by 1 internally after each data byte that has been transferred when { PVER, PHOR } is not equal to 2'b00 or every second data byte when { PVER, PHOR } is equal to 2'b00.
⏵ Requirements: SPI_51, SPI_52
The LUT Enable (V_POL_EN, H_POL_EN) bits in byte2 select which polarization will be ON (enabled, powered-up) or OFF (disabled, powered-down). When a LCL_FBS command is issued, the SW_TRX[9:8] bits are updated with the value of the associated LUT Enable bit when latching occurs.
⏵ Requirements: SPI_53
The LUT Pointer (PVER, PHOR) bits in byte2 select the pointer for each polarization. When { PVER, PHOR } = 2b'11, the same LUT address is set for both polarizations. When { PVER, PHOR } = 2b'10, the vertical LUT address is only set. When { PVER, PHOR } = 2b'01, the horizontal LUT address is only set. When { PVER, PHOR } = 2b'00, the vertical LUT pointer is set with the first LUT address and the horizontal LUT pointer with the second address. In this mode data have a width of 16-bits (8 bits for vertical and 8 bits for horizontal).
⏵ Requirements: SPI_20, SPI_97, SPI_98, SPI_70, SPI_107
The Global Latch Enable (GLEN) bit in byte2 selects if the latching is done locally (GLEN=0) or globally (GLEN=1). When GLEN is 0 and { PVER, PHOR } is not equal to 2'b00, data are latched (effective) at the end of each byte. When GLEN is 0 and { PVER, PHOR } is equal to 2'b00, data are latched (effective) at the end of every second byte. Otherwise (GLEN=1), data will be latched after the last data byte that has been transferred with the TRX/GL bit set to 1 in byte3 ({ PVER, PHOR } is not equal to 2'b00) or byte4 ({ PVER, PHOR } is equal to 2'b00). That provides a possibility to keep sending 8-bit data for different V- and H-channels when TRX/GLis set to 0. However, if the TRX/GL bit is not set in any data byte that has been transferred, latching does not occur.
⏵ Requirements: SPI_21, SPI_106, SPI_71
When GLEN is 0, and { PVER, PHOR } is not equal to 2b'00, then the operation mode is set with the TRX/GL bit in byte3. When GLEN is 0, and { PVER, PHOR } is equal to 2b'00, then the operation mode is set with the Tx/Rx/GL (TRX/GL) bit in byte4. The Tx/Rx/GL (TRX/GL) bit in byte3 will be ignored in this case. Otherwise (GLEN=1), the operation mode is set with the TRX bit in byte2.
⏵ Requirements: SPI_22
When CTRL_CFG[0] (TRX_CONT_MODE) bit is set to 1 (SPI control), the SW_TRX[7] (TRX) bit is updated with the value of the
· Tx/Rx (TRX) bit provided in byte3 if GLEN is 0 and {PVER, PHOR} is not equal to 2b'00.
· Tx/Rx (TRX) bit provided in byte4 if GLEN is 0 and {PVER, PHOR} is equal to 2b'00.
· TRX bit in byte2 if GLEN is 1.
⏵ Requirements: SPI_55
When a LCL_FBS command is issued, and CTRL_CFG[0] (TRX_CONT_MODE) bit is set to 0 (external pin configuration), then the operation mode shall remain unchanged independently of the setting in the TRX/GL (GLEN=0) or TRX (GLEN=1) bit to avoid that there is a conflict between the TRX setting in the LCL_FBS command and the external TR pin.
⏵ Requirements: SPI_95, SPI_18
The LUT Address given in byte3 or any following byte provides the 7-bit address of the LUT to access. When any LUT Pointer (PVER, PHOR) bit is set to 1, data from the LUT Address is copied to all four (4) TX/RX Set buffer registers of the selected polarization. There is no provision to load selected channels.
⏵ Requirements: REG_25, REG_27, REG_29, REG_31
When the horizontal LUT pointer (PHOR) is set to 1, the LUT Address that has been accessed is stored in the HLUT_INFO[14:8] bit fields for TX and in HLUT_INFO[6:0] for RX operation mode. When the vertical LUT pointer (PVER) is set to 1, the corresponding bit fields of the VLUT_INFO register are updated with the LUT Address.
⏵ Requirements: SPI_93, SPI_94
The following tables show the LCL_FBS frame structure.
byte1 |
byte2 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Mode |
Chip Address |
LUT Enable |
LUT Pointer |
Reserved |
Global Latch Enable |
TRX |
Reserved |
||||||||
1 |
1 |
0 |
ADD4 |
ADD3 |
ADD2 |
ADD1 |
ADD0 |
V_POL_EN |
H_POL_EN |
PVER |
PHOR |
0 |
GLEN |
TRX |
0 |
SPI protocol mode |
Hardware device address to select chip to be accessed by SPI command. |
Vertical/Horizontal LUT enable |
Vertical/Horizontal LUT pointer |
For future use. |
Local/ |
TX/RX select |
For future use. |
||||||||
Option 1: When { PVER, PHOR } = 2b'11 or { PVER, PHOR } = 2b'10 or { PVER, PHOR } = 2b'01.
byte3+n |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Address |
TX/RX/GL |
||||||
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
TRX/GL |
7-bit address of look-up tables to access. |
TX/RX or GL |
||||||
Option 2: When { PVER, PHOR } = 2b'00.
byte3+2n |
byte4+2n |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Address |
Reserved |
LUT Address |
TX/RX/GL |
||||||||||||
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
0 |
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
TRX/GL |
7-bit address of look-up tables to access |
For future use. |
7-bit address of look-up tables to access |
TX/RX or GL |
||||||||||||
Byte |
Bit |
Description |
Comment |
||||||||||||
1 |
[7:5] |
Mode |
For Local Fast Beam Steering, Mode = 3'b110. |
||||||||||||
[4:0] |
Chip Address |
Hardware device address to select chip to be accessed by SPI command. |
|||||||||||||
2 |
[7:6] |
LUT Enable |
Selects which polarization is ON (enabled, powered-up): |
||||||||||||
[5:4] |
LUT Pointer |
Selects the pointer for each polarization (user can change the pointer of the inactive polarization): |
|||||||||||||
[3] |
Reserved |
For future use. |
|||||||||||||
[2] |
Global Latch Enable |
Selects if the latching will be done locally (GLEN=0) or globally (GLEN=1). |
|||||||||||||
[1] |
TRX |
Selects the direction when latching is done globally (GLEN=1): |
|||||||||||||
[0] |
Reserved |
For future use. |
|||||||||||||
Option 1: When { PVER, PHOR } = 2b'11 or { PVER, PHOR } = 2b'10 or { PVER, PHOR } = 2b'01.
3+n |
[7:1] |
LUT Address |
(n+1)-th 7-bit address of look-up tables to access. |
||||||||||||
[0] |
TX/RX/GL |
When latching is done locally (GLEN=0), selects the direction: |
|||||||||||||
Option 2: When { PVER, PHOR } = 2b'00.
3+2n |
[7:1] |
LUT Address |
(n+1)-th 7-bit address of vertical look-up tables to access (vertical polarization). |
||||||||||||
[0] |
Reserved |
For future use. |
|||||||||||||
4+2n |
[7:1] |
LUT Address |
(n+1)-th 7-bit address of horizontal look-up tables to access (horizontal polarization). |
||||||||||||
[0] |
TX/RX/GL |
When latching is done locally (GLEN=0), selects the direction: |
|||||||||||||
Notes:
· Bytes: n = 0, 1, 2, 3 …
· Chip Address:
Although F641x supports only 4-bit physical address, the digital block supports 5-bit chip address. The top bit is hard coded to 0 on-chip. This design also supports programming the chip-address using shift register blocks, where the chip can be assigned a 5-bit address.
Use cases:
1. Fetch 4 channels data of vertical polarization locally from LUT address 0x74 from chip with address 0x0A and switch to TX-mode with some delay.
a. SPI command: 0xCA_A8_E9
b. Comment: V_POL_EN=1, H_POL_EN=0, PVER=1, PHOR=0, DACS=1, GLEN=0, TRX=1.
2. Fetch 4 channels data of vertical and horizontal polarization locally from LUT address 0x74 from chip with address 0x0A and switch to RX-mode with some delay.
a. SPI command: 0xCA_F8_E8
b. Comment: V_POL_EN=1, H_POL_EN=1, PVER=1, PHOR=1, DACS=1, GLEN=0, TRX=0.
Global Fast Beam Steering - GBL_FBS
⏵ Requirements: SPI_93
Global Fast Beam Steering (GBL_FBS) is basically a 24-bit (3 bytes) SPI command bounded by the chip select (spi_csb) signal and one of the ways to fetch data stored in the LUTs and impress them to the desired channels. There is an exception when both the vertical and horizontal LUT pointer are set, which results in a 4-byte command.
⏵ Requirements: SPI_6, SPI_86, SPI_73
When the Sub-array Enable (SE) bit in byte1 is set to 1, the command is only executed when the Sub-array Index given in the same byte matches the Sub-array Index (SA_INDEX) of the device in the CHIP_INFO register. When SE is set to 0, the command is executed for all devices. The Sub-array Index is increased by 1 internally after each data byte that has been transferred when { PVER, PHOR } is not equal to 2'b00 or every second data byte when { PVER, PHOR } is equal to 2'b00. When reaching the sub-array index 0xF, the next access targets Sub-array Index 0x0.
⏵ Requirements: SPI_51, SPI_52
The LUT Enable (V_POL_EN, H_POL_EN) bits in byte2 select which polarization will be ON (enabled, powered-up) or OFF (disabled, powered-down). When a LCL_FBS command is issued, the SW_TRX[9:8] bits are updated with the value of the associated LUT Enable bit when latching occurs.
⏵ Requirements: SPI_53
The LUT Pointer (PVER, PHOR) bits in byte2 select the pointer for each polarization. When { PVER, PHOR } = 2b'11, the same LUT address is set for both polarizations. When { PVER, PHOR } = 2b'10, the vertical LUT address is only set. When { PVER, PHOR } = 2b'01, the horizontal LUT address is only set. When { PVER, PHOR } = 2b'00, the vertical LUT pointer is set with the first LUT address and the horizontal LUT pointer with the second address. In this mode data have a width of 16-bits (8 bits for vertical and 8 bits for horizontal).
⏵ Requirements: SPI_20, SPI_97, SPI_98, SPI_70, SPI_107
The Global Latch Enable (GLEN) bit in byte2 selects if the latching is done locally (GLEN=0) or globally (GLEN=1). When GLEN is 0 and { PVER, PHOR } is not equal to 2'b00, data are latched (effective) at the end of each byte. When GLEN is 0 and { PVER, PHOR } is equal to 2'b00, data are latched (effective) at the end of every second byte. Otherwise (GLEN=1), data will be latched after the last data byte that has been transferred with the TRX/GL bit set to 1 in byte3 ({ PVER, PHOR } is not equal to 2'b00) or byte4 ({ PVER, PHOR } is equal to 2'b00). That provides a possibility to keep sending 8-bit data for different V- and H-channels when TRX/GLis set to 0. However, if the TRX/GL bit is not set in any data byte that has been transferred, latching does not occur.
⏵ Requirements: SPI_21, SPI_106, SPI_71
When GLEN is 0, and { PVER, PHOR } is not equal to 2b'00, then the operation mode is set with the TRX/GL bit in byte3. When GLEN is 0, and { PVER, PHOR } is equal to 2b'00, then the operation mode is set with the Tx/Rx/GL (TRX/GL) bit in byte4. The Tx/Rx/GL (TRX/GL) bit in byte3 will be ignored in this case. Otherwise (GLEN=1), the operation mode is set with the TRX bit in byte2.
⏵ Requirements: SPI_22
When CTRL_CFG[0] (TRX_CONT_MODE) bit is set to 1 (SPI control), the SW_TRX[7] (TRX) bit is updated with the value of the
· Tx/Rx (TRX) bit provided in byte3 if GLEN is 0 and {PVER, PHOR} is not equal to 2b'00.
· Tx/Rx (TRX) bit provided in byte4 if GLEN is 0 and {PVER, PHOR} is equal to 2b'00.
· TRX bit in byte2 if GLEN is 1.
⏵ Requirements: SPI_55
When a GBL_FBS command is issued, and CTRL_CFG[0] (TRX_CONT_MODE) bit is set to 0 (external pin configuration), then the operation mode shall remain unchanged independently of the setting in the TRX/GL (GLEN=0) or TRX (GLEN=1) bit to avoid that there is a conflict between the TRX setting in the GBL_FBS command and the external TR pin.
⏵ Requirements: SPI_95, SPI_18
The LUT Address given in byte3 or any following byte provides the 7-bit address of the LUT to access. When any LUT Pointer (PVER, PHOR) bit is set to 1, data from the LUT Address is copied to all four (4) TX/RX Set buffer registers of the selected polarization. There is no provision to load selected channels.
⏵ Requirements: REG_25, REG_27, REG_29, REG_31
When the horizontal LUT pointer (PHOR) is set to 1, the LUT Address that has been accessed is stored in the HLUT_INFO[14:8] bit fields for TX and in HLUT_INFO[6:0] for RX operation mode. When the vertical LUT pointer (PVER) is set to 1, the corresponding bit fields of the VLUT_INFO register are updated with the LUT Address.
⏵ Requirements: SPI_93, SPI_96
The following tables show the GBL_FBS frame structure.
byte1 |
byte2 |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Mode |
SA Enable |
Sub-array Index |
LUT Enable |
LUT Pointer |
Reserved |
Global Latch Enable |
TRX |
Reserved |
|||||||
1 |
1 |
0 |
SE |
SA3 |
SA2 |
SA1 |
SA0 |
V_POL_EN |
H_POL_EN |
PVER |
PHOR |
0 |
GLEN |
TRX |
0 |
SPI protocol mode |
Sub-array enable |
Sub-array index info for each chip is stored in CHIP_INFO register. |
Vertical/Horizontal LUT enable |
Vertical/Horizontal LUT pointer |
For future use. |
Local/ |
TX/RX select |
For future use. |
|||||||
Option 1: When { PVER, PHOR } = 2b'11 or { PVER, PHOR } = 2b'10 or { PVER, PHOR } = 2b'01.
byte3+n |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Address |
TX/RX/GL |
||||||
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
TRX/GL |
7-bit address of look-up tables to access. |
TX/RX or GL |
||||||
Option 2: When { PVER, PHOR } = 2b'00.
byte3+2n |
byte4+2n |
||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LUT Address |
Reserved |
LUT Address |
TX/RX/GL |
||||||||||||
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
0 |
LA6 |
LA5 |
LA4 |
LA3 |
LA2 |
LA1 |
LA0 |
TRX/GL |
7-bit address of look-up tables to access. |
For future use. |
7-bit address of look-up tables to access. |
TX/RX or GL |
||||||||||||
Byte |
Bit |
Description |
Comment |
||||||||||||
1 |
[7:5] |
Mode |
For Local Fast Beam Steering, Mode = 3'b110. |
||||||||||||
[4] |
Sub-array Enable |
SE=0: Command is executed on all devices. |
|||||||||||||
[3:0] |
Sub-array Index |
Hardware device address to select chip to be accessed by SPI command. |
|||||||||||||
2 |
[7:6] |
LUT Enable |
Selects which polarization is ON (enabled, powered-up): |
||||||||||||
[5:4] |
LUT Pointer |
Selects the pointer for each polarization (user can change the pointer of the inactive polarization): |
|||||||||||||
[3] |
Reserved |
For future use. |
|||||||||||||
[2] |
Global Latch Enable |
Selects if the latching will be done locally (GLEN=0) or globally (GLEN=1). |
|||||||||||||
[1] |
TRX |
Selects the direction when latching is done globally (GLEN=1): |
|||||||||||||
[0] |
Reserved |
For future use. |
|||||||||||||
Option 1: When { PVER, PHOR } = 2b'11 or { PVER, PHOR } = 2b'10 or { PVER, PHOR } = 2b'01.
3+n |
[7:1] |
LUT Address |
(n+1)-th 7-bit address of look-up tables to access. |
||||||||||||
[0] |
TX/RX/GL |
When latching is done locally (GLEN=0), selects the direction: |
|||||||||||||
Option 2: When { PVER, PHOR } = 2b'00.
3+2n |
[7:1] |
LUT Address |
(n+1)-th 7-bit address of vertical look-up tables to access. |
||||||||||||
[0] |
Reserved |
For future use. |
|||||||||||||
4+2n |
[7:1] |
LUT Address |
(n+1)-th 7-bit address of horizontal look-up tables to access. |
||||||||||||
[0] |
TX/RX/GL |
When latching is done locally (GLEN=0), selects the direction: |
|||||||||||||
Notes:
· Bytes: n = 0, 1, 2, 3 …
Use cases:
The GBL_FBS command is very similar to LCL_FBS. Instead of selecting chips by the chip address, here the command is executed on all chips if SE=0, or with matching Sub-array Index if SE=1. Hence, all LCL_FBS use cases are applicable here as well.
Cyclic Redundancy Check
⏵ Requirements: SPI_37, SPI_42, SPI_44
The Cyclic Redundancy Check (CRC) error detection feature extends a valid LCL_REG_WR or GBL_REG_WR command by sixteen (16) clock (spi_clk) cycles. These sixteen extra cycles are needed to send two CRC bytes for that SPI frame.
⏵ Requirements: SPI_46, SPI_104
The CRC component is used to compute the CRC from the serial data stream with a maximum length (payload) of 35 bytes.The payload is dependent on the number of data bytes that are specified with the NB1 and NB0 bits, and may vary between 4 and 35 bytes. The minimum payload is calculated assuming 3 command and 1 data byte, and the maximum payload assumes 3 command and 32 data bytes. If more or less data bytes than specified in { NB1, NB0 }are transmitted in an SPI frame with CRC enabled, proper device operation is not guaranteed. A timing diagram with CRC enabled is shown in Figure 7 for { PSS, GAS } = 2b'00 and { NB1, NB0 } = 2b'00.
Figure 7: SPI frame with CRC enabled
⏵ Requirements: SPI_37, SPI_39, SPI_40, SPI_41, SPI_43, SPI_45
The CRC component is implemented as a linear feedback shift register (LFSR). The polynomial used in the CRC component is CRC-16-CCITT (0x8810, x^16 +x^12 +x^5 +1) with a seed value of 0xFFFF. This is shown in Figure 8. The polynomial is fixed and not programmable. The LFSR is initialized (set to 0xFFFF) automatically before each CRC starts. The CRC componenet does not augment a zero-length message with 16 zero bits, which is known as CRC-16-CCITT-FALSE implementation.
Figure 8: SPI 16-bit CRC computation feedback shift register
⏵ Requirements: SPI_49, SPI_50, SPI_48
If the calculated CRC does not correspond to the transmitted CRC, data are not discarded, but the CRC error flag (CTRL_CFG[8]) is asserted (set to 1). Writing 1 to the CRC error flag (CTRL_CFG[8]) clears it. Writing 0 has no meaning. It is not possible to read out the computed CRC value on completion of the bitstream.
⏵ Requirements: SPI_38
The CRC error detection feature is disabled by default and can be configured by system software through CTRL_CFG[7] (ERR_DET_EN).
Register Map
Introduction
⏵ Requirements: REG_1, REG_2
The registers are described in more detail in 'Register Map/Descriptions'. The following table outlines the register map. Click on the picture to see all details.
Figure 9: Register map sunmary
Programming Considerations
This chapter provides some programming considerations for the following registers:
· Overall Chip Configuration Register
· Sensor Configuration Register
Control Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: SPI_28, SPI_30, SPI_36, SPI_103
Programming of the internal chip address is enabled by setting CTRL_CFG[10] (SHIFTREG_ADDR_PROG) to 1. When programming is terminated, then CTRL_CFG[10] (SHIFTREG_ADDR_PROG) is cleared (set to 0) automatically, and CTRL_CFG[11] (SHIFTREG_ADDR_EN) is set to 1 to indicate that the internal chip address is used. Writing 0 to CTRL_CFG[10] (SHIFTREG_ADDR_PROG) has no effect. CTRL_CFG[11] (SHIFTREG_ADDR_EN) can only be cleared (set to 0) by power-on (porb) or hardware (rstb) reset signal. Refer to section Addressing for more information.
⏵ Requirements: REG_61
Through CTRL_CFG[9] (IO_PROTOCOL) the status of the spib_lvds input pin can be read.
⏵ Requirements: SPI_38, SPI_49, SPI_50
When CTRL_CFG[7] (ERR_DET_EN) is set to 1, the CRC error detection feature is enabled. If the calculated CRC does not correspond to the transmitted CRC, CTRL_CFG[8] (ERR_STATUS_BIT) is asserted (set to 1). Writing 1 to CTRL_CFG[8] clears it. Writing 0 has no meaning. Refer to section Cyclic Redundancy Check for more information.
⏵ Requirements: SPI_38, SPI_49, SPI_50
When CTRL_CFG[6] (TAL_RAL_EN) is set to 1,
⏵ Requirements: REG_4
When CTRL_CFG[5] (RESET) is set to 1, a software reset event is initiated. After reset, CTRL_CFG[5] is cleared (set to 0) automatically. The functionality is the same as for a power-on or hardware reset event with the following exceptions:
· Scan and IO test mode are not disabled.
· SPI communication is not reset.
· The programmable chip address stored in the 8-bit shift register is not initialized to its default value.
⏵ Requirements: REG_14, DFT_17, DFT_18
When CTRL_CFG[4] (IO_TEST) is set to 1, the IO test mode is enabled. When IO test mode is enabled, there is no access to the SPI Interface anymore. To exit IO test mode, a power-on or hardware reset event must be initiated by a minimum 20ns logic low on the porb and rstb pin respectively. Refer to section IO Test for more information.
⏵ Requirements: REG_7
When CTRL_CFG[3] (MANUAL_EN) is set to 1, the enable pin of individual channels (txvN_en, txhN_en, rxvN_en, rxhN_en) can be controlled by CH_ENS register bits. Refer to Figure 18 in section TRX Control for more information.
⏵ Requirements: REG_18, DFT_1, DFT_11, DFT_12
When CTRL_CFG[2] (SCAN_MODE) is set to 1, the scan test mode is enabled. When scan test mode is enabled, there is no access to the SPI Interface anymore. To exit scan test mode, a power-on or hardware reset event must be initiated by a minimum 20ns logic low on the porb and rstb pin respectively. Refer to section Scan Test for more information.
⏵ Requirements: REG_9, IO_5
When CTRL_CFG[1] (SYNC_TRX) is set to 1, FEMs and internal SW are controlled by SW_TRX[7] (TRX) or tr input pin (dependent on CTRL_CFG[0]). Otherwise, they are controlled by the SW_TRX[1:0] ({ TRX_BFH, TRX_BFV}) bit fields. Refer to Figure 19 in section TRX Control for more information.
⏵ Requirements: REG_11, REG_13, REG_70, REG_12
When CTRL_CFG[0] (TRX_CONT_MODE) is set to 1, which is the default value, SW_TRX[7] (TRX) controls the operation mode (1=TX, 0=RX). Otherwise, the tr input signal controls the operation mode. When CTRL_CFG[0] is set to 0, SW_TRX[7] (TRX) is overwritten with the value of the external tr input signal. This way, the state of the tr pin can be read back from this bit.
Overall Chip Configuration Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
The CHIP_INFO register sets the sub-array index of the chip, configures the oscillator, and starts the data transfer from OTP to registers.
⏵ Requirements: IO_2, REG_15, REG_16, IO_8
When set to 1, CHIP_INFO[5] (OSC_EN) enables the oscillator. Otherwise, and by default, the oscillator is disabled. When enabled, the oscillator clock (osc_clk) frequency may vary between 20MHz and 80MHz. CHIP_INFO[7:6] (OSC_FREQ[1:0]) selects the target oscillator frequency by driving the associated osc_freq[1:0] output signals as follows:
· 0x0: 80MHz, 0x1: 40MHz, 0x2: 20MHz, 0x3: OFF.
⏵ Requirements: REG_57, REG_51
When the oscillator gets enabled with the start of an ADC operation or start of the OTP state machine to read all data from the OTP memory to the OTP_DATAn registers, the status of CHIP_INFO[5] is updated accordingly.
⏵ Requirements: REG_17
When set to 1, CHIP_INFO[4] (OTP_FSM_START) starts the OTP state machine to read all data from the OTP memory to the OTP_DATAn registers. This bit is write-only and cleared automatically once the transfer of the OTP bits is completed. Refer to section OTP Memory for more information.
⏵ Requirements: REG_21
CHIP_INFO[3:0] (SA_INDEX[3:0]) stores the sub-array index of the chip that is used for comparison by all global SPI commands when the Sub-array Enable (SE) bit in byte1 of the respective command is set to 1. By default, CHIP_INFO[3:0] is set to 0x0. Refer to sections Global Register Write - GBL_REG_WR, Global LUT Write - GBL_LUT_WR, and Global Fast Beam Steering - GBL_FBS for more information.
Look-up Table Registers
⏵ Requirements: REG_24, REG_26, REG_28, REG_30, REG_71, REG_72, REG_73, REG_74, REG_75, REG_76, REG_77, REG_78, REG_69
There are three (3) different types of Look-up Table registers. These are shown in Figure 10.
· HLUT_INFO register stores the current (active) LUT pointer (index) for horizontal TX SRAM in bit fields [14:8] (TXH_LUT_IND[6:0]) and for horizontal RX SRAM in bit fields [6:0] (RXH_LUT_IND[6:0]). Equivalent to HLUT_INFO, VLUT_INFO stores the current (active) LUT pointer (index) for vertical TX/RX SRAMs.
· When the external pin configuration is enabled (CTRL_CFG[0]=0), HLUT_START register defines the start LUT pointer (index) for horizontal TX SRAM in bit fields [14:8] (TXH_LUT_START[6:0]) and for horizontal RX SRAM in bit fields [6:0] (RXH_LUT_START[6:0]).
Equivalent to HLUT_START, VLUT_START defines the start LUT pointer (index) for vertical TX/RX SRAMs.
By default, HLUT_START is set to 0x0 and VLUT_START is set to 0x7F, in this way covering all look-up table range.
These registers are not applicable when SPI control mode is enabled (CTRL_CFG[0]=1).
· When the external pin configuration is enabled (CTRL_CFG[0]=0), HLUT_STOP register defines the stop LUT pointer (index) for horizontal TX SRAM in bit fields [14:8] (TXH_LUT_STOP[6:0]) and for horizontal RX SRAM in bit fields [6:0] (RXH_LUT_STOP[6:0]).
Equivalent to HLUT_STOP, VLUT_STOP defines the stop LUT pointer (index) for vertical TX/RX SRAMs.
By default, HLUT_START is set to 0x0 and VLUT_START is set to 0x7F, in this way covering all look-up table range.
These registers are not applicable when SPI control mode is enabled (CTRL_CFG[0]=1).
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the registers.
Figure 10: Look-up table registers
⏵ Requirements: REG_25, REG_27, REG_29, REG_31, REG_79, REG_80, REG_81, REG_82, REG_83
Referring to the numbering shown in Figure 10, HLUT/VLUT_INFO registers are updated when
1. a LCL_FBS or GBL_FBS command is issued.
When the horizontal LUT pointer (PHOR) is set to 1, the LUT Address that has been accessed is stored in the HLUT_INFO[14:8] bit fields for TX and in HLUT_INFO[6:0] for RX operation mode. When the vertical LUT pointer (PVER) is set to 1, the corresponding bit fields of the VLUT_INFO register are updated with the LUT Address.
Refer to sections Local Fast Beam Steering - LCL_FBS and Global Fast Beam Steering - GBL_FBS for more information.
2. the external pin configuration is enabled by setting CTRL_CFG[0] (TRX_CONT_MODE) to 0.
The HLUT_INFO and VLUT_INFO registers are overwritten with the values of HLUT_START and VLUT_START registers respectively.
3. the external pin configuration is enabled and there is a 'latch TX/RX+1' or 'TX/RX+1' trigger through the external pins.
Dependent on the operation mode and enabled polarization, either HLUT_INFO [14:8] (tr=1, SW_TRX[9]=1) or VLUT_INFO[14:8] (tr=1, SW_TRX[8]) or HLUT_INFO[6:0] (tr=0, SW_TRX[9]) or VLUT_INFO[6:0] (tr=0, SW_TRX[8]) are automatically incremented by one to reflect the new active LUT index. When reaching the associated HLUT_STOP register value, HLUT_INFO is set to HLUT_START.
Refer to Figure 24 in section External Pin Configuration for more information.
BIST Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: REG_85
BIST[4:3] (SRAM_SEL[1:0]) selects the look-up table (LUT) that is used for initialization, cyclic redundancy check (CRC) or embedded memory self-test (BIST).
⏵ Requirements: REG_86
When set to 1, BIST[2] (SRAM_CRC) triggers a CRC of the content of the LUT (SRAM) that is selected in BIST[4:3]. Refer to section Data Consistency Check for more information. This bit is not cleared automatically, but must be set to 0 by system software.
⏵ Requirements: REG_87
When set to 1, BIST[1] (SRAM_BIST) triggers a BIST of the LUT (SRAM) that is selected in BIST[4:3]. Refer to section Built-in Self Test for more information. This bit is not cleared automatically, but must be set to 0 by system software.
⏵ Requirements: REG_88
When set to 1, BIST[0] (SRAM_INIT) initializes the LUT (SRAM) that is selected in BIST[4:3], and sets all bits to 0. Refer to section Initialization for more information. This bit is not cleared automatically, but must be set to 0 by system software.
⏵ Requirements: REG_89, REG_90
When any of CRC or BIST or LUT (SRAM) initialization is completed, BIST[11] (SRAM_DONE) is set to 1 for the LUT (SRAM) that is selected in BIST[4:3]. If BIST[11] is already set to 1, the status remains unchanged. BIST[11] is cleared (set to 0) for the LUT (SRAM) that is selected in BIST[4:3], if BIST[2:0] is set to 3'b000.
⏵ Requirements: REG_91, REG_92
The number of errors that occured during a BIST is reported in BIST[10:8] (SRAM_ERR[2:0]) for the LUT (SRAM) that is selected in BIST[4:3]. If the number of errors exceeds 7, it is kept as 7. The BIST error counter is cleared (set to 3'b000) for the LUT (SRAM) that is selected in BIST[4:3] when BIST[1] is set to 0.
TRX Switch Control Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: REG_5, REG_6
When set to 1, SW_TRX[11] (MB_EN) enables the chip reference bias. Otherwise, it is disabled. It is possible to read the SW_TRX[11] value on MBIAS[0], too.
⏵ Requirements: REG_8
When SW_TRX[10] (STANDBY) is set to 1, all transmit/receive channels and all DACs are disabled. Refer to Figure 18 in section TRX Control and Figure 22 in section DAC Control for more information.
⏵ Requirements: REG_10
When set to 1, all transmit/receive channels with horizontal (SW_TRX[9]) or vertical (SW_TRX[8]) polarization are enabled. Otherwise, they are disabled. Refer to Figure 18 in section TRX Control for more information.
⏵ Requirements: REG_11, REG_12
When CTRL_CFG[0] (TRX_CONT_MODE) is set to 1, SW_TRX[7] (TRX) selects the operation mode (1=TX, 0=RX). When CTRL_CFG[0] is set to 0, SW_TRX[7] (TRX) is overwritten with the value of the tr input signal. This way, the state of the external TR pin can be read back from this bit.
⏵ Requirements: REG_32, REG_33
The external FEM switches get enabled if the SW_TRX[4] (SW_DRV_EN_TR) bit is set to 1. Dependent on SW_TRX[6] (SW_FEM_TR_MODE) either the positive (SW_TRX[6]=0) or negative (SW_TRX[6]=1) switch is enabled. When an external FEM switch is enabled, dependent on the operation mode SW_TRX[5] (SW_DRV_TR_STATE) defines the level of the output pins. Refer to Figure 20 in section TRX Control for more information.
⏵ Requirements: REG_35, REG_36
When CTRL_CFG[1] (SYNC_TRX) is set to 0, SW_TRX[3:2] ({ TRX_EXTH, TRX_EXTV }) bits select the operation mode (1=TX, 0=RX) of the external FEM switches for vertical (SW_TRX[2]) and horizontal polarization (SW_TRX[3]). Refer to Figure 20 in section TRX Control for more information.
⏵ Requirements: REG_37, REG_38
When CTRL_CFG[1] (SYNC_TRX) is set to 0, SW_TRX[1:0] ({ TRX_BFH, TRX_BFV }) bits enable the BF switches if the operation mode is set to 'TX'. Refer to Figure 19 in section TRX Control for more information.
Chip ID Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: IO_9
Chip ID (CHIP_ID) register is an informational read-only register. It is possible to read the implementation-specific code given by the chip_id[15:0] input signals through the CHIP_ID register. This is shown in Figure 11.
Figure 11: CHIP_ID register input signals connections
MBIAS Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: IO_10
All the bits of this register are directly connected to outputs (digital to analog), and they are used to adjust master bias settings. MBIAS[0] (MB_EN) is an informational read-only bit showing the status of SW_TRX[11] (MB_EN). Setting SW_TRX[11] to 1 is required for the whole chip to be powered up.
ADC Clock Control Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: ADC_2, ADC_3
Based on the CLK_CFG register default settings, the ADC reference clock (adc_clk) is generated based on the following equations:
base_clk = osc_clk/(BASE_CLK_CTRL+1) = osc_clk/(11+1) = osc_clk/12
adc_clk = base_clk/[(ADC_CLK_HIGH+1)+(ADC_CLK_LOW+1)] = base_clk/[(3+1)+(0+1)] = base_clk/5 = osc_clk/60
Whereas,
T(adc_clk, high) = T(base_clk)*(ADC_CLK_HIGH+1) = T(base_clk)*(3+1) = T(base_clk)*4 = T(osc_clk)*48
T(adc_clk, low) = T(base_clk)*(ADC_CLK_LOW+1) = T(base_clk)*(0+1) = T(base_clk)*1 = T(osc_clk)*12
⏵ Requirements: OSC_1, REG_56, REG_16, ADC_1, ADC_5
This is shown in Figure 12. The oscillator gets enabled after writing 1 to any bit of the Sensor Activation 1 (ADC_SRQ1) register when ADC_CFG[10] (ADC_SEL_SOURCE) is set to 0 - refer to the section ADC Controller & Interface for more information - or setting CHIP_INFO[5] (OSC_EN) to 1. There is a wait time of 63 cycles for the oscillator clock to stabilize before adc_clk is output to the ADC with a high to low ratio of 4:1 and the ADC is enabled (adc_en signal driven high).
Figure 12: CLK_CFG register ADC clock generation
⏵ Requirements: ADC_4
Once adc_clk is available, ADC_START_DELAY determines the time (delay) in multiples of adc_clk cycles between the time the ADC is enabled and the start of aquisition phase. With the default value set to 0xF, this would be ADC_START_DELAY+1 = 15+1 = 16 ADC clock cycles.
ADC Control Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: REG_52, REG_53, REG_58
When ADC_CFG[10] (ADC_SEL_SOURCE) is set to 1, the input source of the ADC is selected by ADC_CFG[15:11] (ADC_SEL[4:0]). Otherwise, and by default, it is selected by the Sensor Activation 1 (ADC_SRQ1) register.
⏵ Requirements: REG_54
ADC_CFG[9:7] (ADC_AVG[2:0]) determines the number (n) of data that are used for averaging as follows:
· n = 1, for ADC_AVG[2:0]=0 (no averaging).
· n = 2^ADC_AVG, for ADC_AVG[2:0]=1..6.
· n = 64, for ADC_AVG[2:0]=7.
By default, averaing is enabled, and 64 data are used for averaging (ADC_AVG[2:0]=7).
⏵ Requirements: REG_55, REG_66
When ADC_CFG[6] (PD_DIFF_MODE) is set to 1, PDET data are stored as measured (and after averaging). Otherwise, and by default, the difference of PREF and PDET (PREF-PDET) is stored. When ADC_CFG[6] is set to 0, and the result of PREF-PDET is less than zero, 0x0 is stored.
⏵ Requirements: IO_16
All other bits, ADC_CFG[5:0], are connected straight to output signals for configuring the ADC. This is shown in Figure 13.
Figure 13: ADC_CFG register to output signals connections
Sensor Enable Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: IO_17, REG_59
The Sensor Enable (SENSOR_EN) register drives the enable pins (sensor_en[15:0]) for miscellaneous sensors on the chip. By default, the value of the SENSOR_EN register is 0x0 (no sensor enabled).
⏵ Requirements: REG_60, REG_64
When ADC_CFG[10] (ADC_SEL_SOURCE) is set to 0, writing 1 to any bit of the Sensor Activation 1 (ADC_SRQ1) register sets the associated bit in the SENSOR_EN register, and this way enables the selected sensor(s). Once the ADC operation of all selected channels is completed, the SENSOR_EN register is cleared (set to 0x0, all sensors disabled). Refer to section ADC Controller & Interface for more information.
When ADC_CFG[10] (ADC_SEL_SOURCE) is set to 1, the selected sensor must be enabled manually before the measurement is started by writing 1 to the associated bit in the SENSOR_EN register. Similarly, the selected sensor must be disabled by writing 0 once the ADC operation is completed.
⏵ Requirements: IO_23
The sensor bias enable (sensor_bias_en) output signal is driven high when any of SENSOR_EN[9:0] are 1.
Sensor Configuration Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: REG_62, REG_67
SENSOR_CFG[13:12] (TSENS_POL_CFG[1:0]) selects the setting that is used for temperature sensor measurements. This setting is applicable independently of the mode selection in ADC_CFG[10] (ADC_SEL_SOURCE).
· When set to 2'b00, two measurements, TSENS_POL0 and TSENS_POL1, are executed. In the first measurement d_tsens_pol is driven low, and in the second measurement it is driven high.
· When set to 2'b01, two measurements, TSENS_POL0 and TSENS_POL1, are executed, and in both measurements d_tsens_pol is driven low.
· When set to 2'b10, two measurements, TSENS_POL0 and TSENS_POL1, are executed, and in both measurements d_tsens_pol is driven high.
· When set to 2'b11, the same procedure is executed as for 2'b00.
⏵ Requirements: IO_18
Besides that, all bits (SENSOR_CFG[15:0]) are connected straight to output signals for configuring the on-chip sensors. This is shown in Figure 14.
Figure 14: SENSOR_CFG register to output signals connections
SCRATCH Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: REG_50
2 bytes of memory for arbitrary data storage. This data does not affect the operation of the device.
TRX Setting Registers
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: REG_3, IO_43, IO_44
Data written to the TXVn/TXHn/RXVn/RXHn_SET (n = 1..4) registers is initially stored in the TXVn/TXHn/RXVn/RXHn_SET buffer registers. The data update can either be done with
· a LCL_REG_WR or GBL_REG_WR command through the SPI interface, or
· a 'latch TX/RX+1' trigger through the external pins - refer to Figure 24 in section External Pin Configuration for more information.
⏵ Requirements: SPI_8, IO_41
Transfer of data from the TXVn/TXHn_SET buffer registers to the active registers is initiated
· when the TX RF Load (TRL) bit in byte3 of a LCL_REG_WR or GBL_REG_WR command is set to 1.
· when external pin configuration is enabled (CTRL_CFG[0]=0), and
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x6 or 0x9, and there is a transition on tload from 0 to 1 (rising edge).
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x3 or 0xC, and tr is set to 1, and there is a transition on rload from 0 to 1 (rising edge).
⏵ Requirements: SPI_9, IO_42
Transfer of data from the RXVn/RXHn_SET buffer registers to the active registers is initiated
· when the RX RF Load (RRL) bit in byte3 of a LCL_REG_WR or GBL_REG_WR command is set to 1.
· when external pin configuration is enabled (CTRL_CFG[0]=0), and
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x6 or 0x9, and there is a transition on rload pin from 0 to 1 (rising edge).
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x3 or 0xC, and tr is set to 0, and there is a transition on tload pin from 0 to 1 (rising edge).
⏵ Requirements: IO_43
Transfer of data from the active TXVn/TXHn LUT index + 1 to both TXVn/TXHn_SET buffer and active registers is initiated
· when external pin configuration is enabled (CTRL_CFG[0]=0), and
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x4 or 0x5 or 0x7 or 0x8, and there is a transition on tload from 0 to 1 (rising edge), or
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x1 or 0x2 or 0xA or 0xB, and tr is set to 1, and there is a transition on rload from 0 to 1 (rising edge).
⏵ Requirements: IO_44
Transfer of data from the active RXVn/RXHn LUT index + 1 to both RXVn/RXHn_SET buffer and active registers is initiated
· when external pin configuration is enabled (CTRL_CFG[0]=0), and
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x4 or 0x5 or 0x7 or 0x8, and there is a transition on rload from 0 to 1 (rising edge), or
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x1 or 0x2 or 0xA or 0xB, and tr is set to 0, and there is a transition on tload from 0 to 1 (rising edge).
Once the active registers are updated, the TX/RX outputs change to their new values.This is shown in Figure 15 taking the example of TX.
Figure 15: TX/RX register to output signal connections
⏵ Requirements: REG_63
As for the data in the TXVn/TXHn/RXVn/RXHn_OFFSET (for n = 1; n <= 4) registers, the phase offset (TX/RX_PH_OFF) is stored in twos (2s) complement format, whereas channel bias (TX/RX_CH_BIAS) and align offset (TX/RX_ALIGN_OFF) are stored as absolute values.
⏵ Requirements: REG_102, REG_103
The TXVn_SET (n=1..4) output register values are generated according to the following equations, taking TX operation mode with vertical polarization as an example. The equations for TXHn_SET, RXVn_SET, and RXHn_SET output registers are equivalent.
TXVn_SET[15:10] (output) = TXVn_SET[15:10] (buffer) +/- TXVn_OFFSET[7:4]
TXVn_SET[9:0] (output) = TXVn_SET[9:0] (buffer)
Whereas,
N = n = 1..4.
⏵ Requirements: IO_35
If the result of TXVn_SET[15:10] (buffer) + TXVn_OFFSET[7:4] is greater than 64, the overflow is ignored (in decimal it would be TXVn_SET[15:10] (buffer) + TXVn_OFFSET[7:4] - 64). The same method is applied if the result of TXHn_SET[15:10] (buffer) + TXHn_OFFSET[7:4], RXVn_SET[15:10] (buffer) + RXVn_OFFSET[7:4] (buffer) or RXHn_SET[15:10] (buffer) + RXHn_OFFSET[7:4] is greater than 64.
⏵ Requirements: IO_36
If the result of TXVn_SET[15:10] (buffer) - TXVn_OFFSET[7:4] is less than 0, than d'64 is added (in decimal it would be TXVn_SET[15:10] (buffer) - TXVn_OFFSET[7:4] + 64). The same method is applied if the result of TXHn_SET[15:10] (buffer) - TXHn_OFFSET[7:4], RXVn_SET[15:10] (buffer) + RXVn_OFFSET[7:4] or RXHn_SET[15:10] (buffer) + RXHn_OFFSET[7:4] is less than 0.
⏵ Requirements: SPI_74
When there is a LCL_REG_RD command to a TXVn/TXHn/RXVn/RXHn_SET register, the content of the active register is read.
⏵ Requirements: REG_94
[OPTIONAL] The host has the option to read from either the TXVn/TXHn/RXVn/RXHn_SET buffer, active or output register when accessing theTXVn/TXHn/RXVn/RXHn_SET registers. The TX/RX read back option is configured by the CTRL_CFG[14:13] (READBACK[1:0]) bits. By default, the host reads from the active register.
⏵ Requirements: IO_14, IO_26, IO_34, IO_15, IO_27, IO_28, IO_29
As shown in Figure 15, all TXVn/TXHn/RXVn/RXHn SET output register bits are connected straight to output signals. This applies also to the TXCOM/RXCOM_BIAS2, TXCOM/RXCOM_BIAS1, TXCOM/RXCOM_CFG, and TXCOM/RXCOM_TUNE registers values, which are used to compile the common TX/RX setting output signals, as well as for TXVn/TXHn/RXVn/RXHn_OFFSET register bits [15:8] and [3:0]:
txvN/txhN/rxvN/rxhN_set[63:0] = TXVn/TXHn/RXVn/RXHn_SET[15:0]
txvN/txhN/rxvN/rxhN_spare[4:0] = TXVn/TXHn/RXVn/RXHn_OFFSET[15:11]
txvN/txhN/rxvN/rxhN_bias[2:0] = TXVn/TXHn/RXVn/RXHn_OFFSET[10:8]
txvN/txhN/rxvN/rxhN_off[3:0] = TXVn/TXHn/RXVn/RXHn_OFFSET[3:0]
tx/rx_com[63:0] = { TXCOM/RXCOM_BIAS2[15:0], TXCOM/RXCOM_BIAS1[15:0], TXCOM/RXCOM_CFG[15:0], TXCOM/RXCOM_TUNE[15:0] }
TRX Spare Register
Refer to the 'Register Map/Descriptions' or click here to see a detailed description of the register.
⏵ Requirements: IO_25
The TRX Spare (TX_RX_SPARE) register drives some spare pins (spare[15:0]) for TX/RX channels. By default, the value of the TX_RX_SPARE register is 0x0.
ADC Controller & Interface
⏵ Requirements: REG_56, REG_84, REG_60
The ADC Controller & Interface controls the operation of a successive-approximation-register (SAR) ADC. The whole sensor measurement sequence is triggered by
· Writing 1 to any bit of the Sensor Activation 1 (ADC_SRQ1) register when ADC_CFG[10] (ADC_SEL_SOURCE) is set to 0. This action also sets the associated bit in the SENSOR_EN register, and this way enables the selected sensor(s).
· Any write access to the Sensor Activation 1 (ADC_SRQ1) register when ADC_CFG[10] (ADC_SEL_SOURCE) is set to 1.
⏵ Requirements: ADC_5, ADC_1
The ADC will be enabled (adc_en signal driven high), when the ADC operation has been triggered. As shown in Figure 12 there is a delay of 64 oscillator clock cycles between the trigger and the adc_en signal going high in case the oscillator is not yet up and running.
⏵ Requirements: ADC_4
Once the ADC is enabled, CLK_CFG[15:12] (ADC_START_DELAY) determines the time (delay) in multiples of ADC clock (adc_clk) cycles between the time the ADC is enabled and the start of aquisition phase (adc_sp signal driven high). This is shown in Figure 16.
Figure 16: ADC timing diagram for single input source
⏵ Requirements: ADC_11
The ADC sampling (adc_sp) output signal is driven high for three (3) adc_clk cycles after the ADC operation has been started (adc_start signal going high) to track/hold the analog input voltage (Vin). Afterwards, adc_sp is driven low again.
⏵ Requirements: ADC_12, ADC_13
A 10-bit successive-approximation register (SAR) is used to supply an approximate digital code (adc_dac_in[9:0]) of Vdac to the ADC-internal DAC. The initial value of the SAR is first set to midscale (that is, 10'b1000000000, where the MSB is set to 1).
⏵ Requirements: ADC_14, ADC_15
If Vin is greater than Vdac, the comparator output (adc_1_bit) signal is driven high, and the MSB of the successive-approximation register remains at 1. Conversely, if Vin is less than Vdac, the comparator output is driven low and the MSB of the register is cleared to 0. The SAR control logic then moves to the next bit down, forces that bit high, and does another comparison. The sequence continues all the way down to the LSB.
⏵ Requirements: ADC_7
The resulting data (adc_data[9:0]) are stored in the associated ADC_DATA_CHn (n=1..32) register, whereas n corresponds to the channel coding in ADC_CFG[15:11]+1. For example, the data for TSENS1 (ADC_CFG[15:11]=0x14) are stored in ADC_DATA_CH21.
⏵ Requirements: ADC_16, ADC_17
If TSENS1 or TSENS2 is enabled, two consecutive measurements, TSENS_POL0 and TSENS_POL1, are executed and the result is caculated as follows:
TSENS1 = 0.5 * (TSENS_POL0 + TSENS_POL1)
TSENS2 = TSENS_POL1 - TSENS_POL0
If the result of TSENS2 is less than zero, 0x0 is stored. Refer to SENSOR_CFG[13:12] (TSENS_POL_CFG[1:0]) for the value of d_tsens_pol that is used for the first (POL0) and second (POL1) measurement.
⏵ Requirements: ADC_6
When averaging is enabled (ADC_CFG[9:7]>0), then the converted data are added and divided (right-shifted) by the number of iterations. Averaging for TSENS1, TSENS2 and PDETn (when ADC_CFG[6] (PD_DIFF_MODE) is set to 0, n=1..10) is done on the inner loop. For example,
TSENS1(avg) = 0.5 * (SUM( TSENS_POL0) + SUM( TSENS_POL1)) / n.
Whereas, the number (n) of iterations is determined by ADC_CFG[9:7] (ADC_AVG[2:0]).
⏵ Requirements: ADC_8
When conversion and averaging (if enabled) of all selected sources are completed, thethe ADC_DATA_CHn[10] (DONE) bits are set to 1, whereas n corresponds to the channel coding in ADC_CFG[15:11]+1. For example, when PDET1 (ADC_CFG[15:11]=0x0) is done, ADC_DATA_CH1[10] is set to 1.
⏵ Requirements: ADC_9, REG_52, REG_53, REG_58
The selection of the input source(s) is dependent on the setting of ADC_CFG[10] (ADC_SEL_SOURCE) as follows:
· When set to 0, the sources are selected by the Sensor Activation 1 (ADC_SRQ1) register. ADC operation is done for all selected input sources in a loop from 0 to 15.
· When set to 1, the source is selected by ADC_CFG[15:11] (ADC_SEL[4:0]).
⏵ Requirements: ADC_18, ADC_10, REG_64
Once the ADC operation of all selected channels is completed, the ADC will be disabled (adc_en signal driven low). When ADC_CFG[10] (ADC_SEL_SOURCE) is 0, additionally
· the SENSOR_EN register is cleared (set to 0x0, all sensors disabled)
· CHIP_INFO[5] (OSC_EN) is cleared (set to 0, oscillator disabled)
Look-up Tables
⏵ Requirements: SPI_66
There is a look-up table (LUT) with 128 entries at 16-bit per direction (TX/RX), polarization (H/V) and channel (1..4), which are 128 x 2 x 2 x 4 = 2,048 entries in total.
Initialization
⏵ Requirements: SPI_91, REG_88, REG_85
There are two ways to initialize the LUTs:
1. Use a Local (LCL_LUT_WR) or Global (GBL_LUT_WR) LUT Write command - refer to sections Local LUT Write - LCL_LUT_WR and Global LUT Write - GBL_LUT_WR for more information - to write specific data to the LUT(s).
2. Writing 1 to BIST[0] (SRAM_INIT) sets all bits to 0 of the LUT that is selected by BIST[4:3] (SRAM_SEL[1:0]).
⏵ Requirements: REG_89, REG_88, REG_90
When option 2 is selected and the initialization is completed, BIST[11] (SRAM_DONE) is set to 1. BIST[0] (SRAM_INIT) is not cleared automatically, but must be set to 0 by system software. BIST[11] (SRAM_DONE) is cleared (set to 0) if BIST[2:0] ({ SRAM_CRC, SRAM_BIST, SRAM_INIT }) is set to 3'b000.
Built-in Self Test
⏵ Requirements: LUT_1, REG_85, REG_87
F641X Digital supports an embedded memory self-test (BIST) for all LUTs. There can only be one LUT tested at a time, which is selected by BIST[4:3] (SRAM_SEL[1:0]). Setting BIST[1] (SRAM_BIST) to 1 triggers the BIST.
⏵ Requirements: LUT_2
The BIST uses the following test algorithm:
1. w(5), up addressing order
2. r(5)-w(a)-r(a), up addressing order
3. r(a)-w(5)-r(5), up addressing order
4. r(5)-w(a)-r(a), down addressing order
5. r(a)-w(5)-r(5), down addressing order
6. r(5), down addressing order
Whereas,
w(5): writing 0x5555_5555_5555_5555 into an address location.
r(5): reading 0x5555_5555_5555_5555 from an address location.
w(a): writing 0xAAAA_AAAA_AAAA_AAAA into an address location.
r(a): reading 0xAAAA_AAAA_AAAA_AAAA from an address location.
up addressing order: address sequence is in ascending order from 0 to 2^7-1.
down addressing order: address sequence is in descending order from 2^7-1 to 0.
⏵ Requirements: REG_89, REG_87, REG_90
When the BIST is completed, BIST[11] (SRAM_DONE) is set to 1. BIST[1] (SRAM_BIST) is not cleared automatically, but must be set to 0 by system software. BIST[11] (SRAM_DONE) is cleared (set to 0) if BIST[2:0] ({ SRAM_CRC, SRAM_BIST, SRAM_INIT }) is set to 3'b000.
⏵ Requirements: REG_91, REG_92
The number of errors that occured during a BIST is reported in BIST[10:8] (SRAM_ERR[2:0]) as follows:
· 0: No error.
· 4: One stuck-at '1' fault at an even or one stuck-at '0' fault at an odd bit location.
· 5: One stuck-at '1' fault at an odd or one stuck-at '0' fault at an even bit location.
· 7: More than one error occurred.
The error counter is cleared (set to 3'b000) when BIST[1] (SRAM_BIST) is set to 0.
Data Consistency Check
⏵ Requirements: SPI_78, REG_86, REG_85
There are two ways to check data consistency in the LUTs:
1. Use a Local LUT Read (LCL_LUT_RD) command - refer to section Local LUT Read - LCL_LUT_RD for more information - to read specific data from the LUT(s).
2. Writing 1 to BIST[2] (SRAM_CRC) triggers a cyclic redundancy check (CRC) of the content of the LUT (SRAM) that is selected in BIST[4:3] (SRAM_SEL[1:0]).
⏵ Requirements: LUT_3, LUT_4, LUT_5, LUT_6
The CRC component is implemented as a linear feedback shift register (LFSR). The polynomial used in the CRC component is CRC-16-CCITT (0x8810, x^16 +x^12 +x^5 +1) with a seed value of 0xFFFF. This is shown in Figure 17. The polynomial is fixed and not programmable. The LFSR is initialized (set to 0xFFFF) automatically before each CRC starts. The CRC componenet does not augment a zero-length message with 16 zero bits, which is known as CRC-16-CCITT-FALSE implementation.
Figure 17: LUT 16-bit CRC computation feedback shift register
The single data bit (crc_bit_in) that is used as an input to the 16-bit CRC computation feedback shift register is compiled from the LUT data (sram_rdata[63:0]) as follows:
for ch = 1 to 4
for i = 0 to 15
crc_bit_in = sram_rdata[16*ch-1-i]
i = i + 1
ch = ch + 1
⏵ Requirements: REG_89, REG_93, REG_65
When the CRC is completed, BIST[11] (SRAM_DONE) is set to 1 and the computed CRC value is shown in the SRAM CRC Result (CRC_RESULT) register for the LUT (SRAM) that is selected in BIST[4:3] (SRAM_SEL[1:0]). The default value of the CRC_RESULT register is 0xFFFF.
⏵ Requirements: REG_86, REG_90
BIST[2] (SRAM_CRC) is not cleared automatically, but must be set to 0 by system software. BIST[11] (SRAM_DONE) is cleared (set to 0) if BIST[2:0] ({ SRAM_CRC, SRAM_BIST, SRAM_INIT }) is set to 3'b000.
TRX Control
Introduction
Refer to section TRX Setting Registers and Figure 15 for setting up the TX/RX channels.
⏵ Requirements: IO_4, IO_7, REG_7, REG_11, REG_39, REG_40
The TX/RX channels get enabled if all of the following conditions are met:
· Standby mode is disabled, meaning that neither SW_TRX[10] (STANDBY) is set to 1 nor the external stdby pin is driven high.
· The associated polarization is enabled, meaning that SW_TRX[8] (V_POL_EN) is set to 1 for channels with vertical and SW_TRX[9] (H_POL_EN) is set to 1 for channels with horizontal polarization.
· The associated operation mode is selected by either SW_TRX[7] (TRX) when CTRL_CFG[0] (TRX_CONT_MODE) is set to 1 or external TR pin otherwise.
· Individual channels are enabled if they are controlled by CH_ENS register bits, and CTRL_CFG[3] (MANUAL_EN) is set to 1 accordingly. Otherwise (CTRL_CFG[3]=0), this requirement can be ignored.
If any of the above mentioned conditions is not met, the channels are disabled. This is shown in Figure 18 taking the example of vertical TX channel enable signals. This is approximate conceptual diagram shown for illustration purpose only.
Figure 18: TX/RX channel enable signal connections
⏵ Requirements: IO_5, REG_11, REG_13, REG_9, REG_37, REG_38
The BF switches get enabled if the operation mode is set to 'TX'. The selection of the operation mode is done with the
· SW_TRX[1:0] ({ TRX_BFH, TRX_BFV }) bits when CTRL_CFG[1] (SYNC_TRX) is set to 0.
· SW_TRX[7] (TRX) bit when both CTRL_CFG[1] (SYNC_TRX) and CTRL_CFG[0] (TRX_CONT_MODE) are set to 1 .
· external tr pin when CTRL_CFG[1] (SYNC_TRX) is set to 1 and CTRL_CFG[0] (TRX_CONT_MODE) is set to 0.
This is shown in Figure 19. This is approximate conceptual diagram shown for illustration purpose only.
Figure 19: BF switch enable signal connections
⏵ Requirements: IO_6, REG_32
The external FEM switches get enabled if the SW_TRX[4] (SW_DRV_EN_TR) bit is set to 1. Dependent on SW_TRX[6] (SW_FEM_TR_MODE) either the positive (SW_TRX[6]=0) or negative (SW_TRX[6]=1) switch is enabled, and the drvenp and drvenn output signal is driven high respectively. This is shown in Figure 20. This is approximate conceptual diagram shown for illustration purpose only.
Figure 20: External FEM switch pin control signal connections
⏵ Requirements: REG_33
When an external FEM switch is enabled, dependent on the operation mode SW_TRX[5] (SW_DRV_TR_STATE) defines the level of the output pins as follows:
TRX |
SW_TRX[5] |
swcXy |
1 (TX) |
0 |
GND |
1 (TX) |
1 |
High/Low |
0 (RX) |
0 |
High/Low |
0 (RX) |
1 |
GND |
⏵ Requirements: REG_11, REG_13, REG_35, REG_36
The selection of the operation mode (column 'TRX' in above table) is done with the
· SW_TRX[3:2] ({ TRX_EXTH, TRX_EXTV }) bits when CTRL_CFG[1] (SYNC_TRX) is set to 0.
· SW_TRX[7] (TRX) bit when both CTRL_CFG[1] (SYNC_TRX) and CTRL_CFG[0] (TRX_CONT_MODE) are set to 1 .
· external tr pin when CTRL_CFG[1] (SYNC_TRX) is set to 1 and CTRL_CFG[0] (TRX_CONT_MODE) is set to 0.
Electrical Data/Timing
This section provides the timing requirements and switching characteristics of the external control signals, tr, tload, rload, and stdby.
Figure 21: External control signals timing requirements
⏵ Requirements: IO_47, IO_48
With reference to Figure 21, Table 2 shows the timing characteristics of the external control signals, unless otherwise noted.
No. |
Parameter |
Description |
Condition |
Min. |
Max. |
Unit |
|||||||||
1 |
tph |
Pulse width high |
125 |
ns |
|||||||||||
2 |
tpl |
Pulse width low |
125 |
ns |
|||||||||||
3 |
tod |
TX/RX channel output signals delay time |
20 |
ns |
|||||||||||
DAC Control
The DAC output signal generation is shown in Figure 22. This is approximate conceptual diagram shown for illustration purpose only.
Figure 22: DAC output signals generation
⏵ Requirements: REG_96, REG_97, REG_101
When DAC n (n=1..10) is enabled, the DAC_ONn register provide the DAC input value for ON-mode. When it is disabled, dependent on the setting in the PA_LNA_DAC_CFG1 register either the DAC_PA_OFF (PA_LNA_CONTROL[n-1]=1) or DAC_LNA_OFF (PA_LNA_CONTROL[n-1]=0) register provides the DAC input value for OFF-mode.
⏵ Requirements: DAC_1, IO_7, IO_11
DAC n (n=1..10) gets disabled, and the dacN_en (N=n) output signals driven low, if any of the following conditions occur:
· Standby mode is enabled, meaning that either SW_TRX[10] (STANDBY) is set to 1 or the external stdby pin is driven high.
· the associated PA_LNA_ENn bit in the PA_LNA_DAC_CFG3 register is set to 0.
⏵ Requirements: DAC_2, IO_12, REG_95
If DAC n (n=1..10) is not disabled by any of the above mentioned conditions, it gets enabled and the dacN_en (N=n) output signal is driven high, if any of the following conditions is met:
· When CTRL_CFG[0] (TRX_CONT_MODE) is set to 1 (SPI control), and
o SW_TRX[7] (TRX) and PA_LNA_DAC_CFG1[n-1] (PA_LNA_CONTRL[n-1]) are set to 1, and
§ CTRL_CFG[6] (TAL_RAL_EN) is set to 0, or
§ CTRL_CFG[6] (TAL_RAL_EN) is set to 1 and the TX DAC Load (TAL) bit in byte3 of a LCL_REG_WR or GBL_REG_WR command was set to 1.
o SW_TRX[7] (TRX) and PA_LNA_DAC_CFG1[n-1] (PA_LNA_CONTRL[n-1]) are set to 0 and
§ CTRL_CFG[6] (TAL_RAL_EN) is set to 0, or
§ CTRL_CFG[6] (TAL_RAL_EN) is set to 1 and the RX DAC Load (RAL) bit in byte3 of a LCL_REG_WR or GBL_REG_WR command was set to 1.
· When CTRL_CFG[0] (TRX_CONT_MODE) is set to 0 (external pin control), and
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to either 0x1 or 0x2 or 0x3, and
§ tr and tload and PA_LNA_DAC_CFG1[n-1] (PA_LNA_CONTRL[n-1]) are set to 1, or
§ tr and and PA_LNA_DAC_CFG1[n-1] (PA_LNA_CONTRL[n-1]) are set to 0, and rload is set to 1.
o PIN_CFG[6:2] (EXT_PIN_MODE[4:0]) is set to a value between 0x7 up to and including 0xC, and
§ tr and PA_LNA_DAC_CFG1[n-1] (PA_LNA_CONTRL[n-1]) are set to 1, or
§ tr and PA_LNA_DAC_CFG1[n-1] (PA_LNA_CONTRL[n-1]) are set to 0.
⏵ Requirements: REG_98, REG_100
Otherwise, DAC n (n=1..10) is disabled. The DAC_STATUS[n-1] (DAC_STATE[n-1]) bit holds the status (ON/OFF-mode) of DAC n. The bit is read as 1 if the DAC is enabled (ON), and it is read as 0 if it is disabled (OFF). DAC_STATUS[15:14] ({ TX_DAC_EN, RX_DAC_EN }) bits hold the enable status of the DACs configured as 'PA' (TX_DAC_EN) and 'LNA' (RX_DAC_EN) in the PA_LNA_DAC_CFG1 register respectively. The respective bit is read as 1 if the DACs are enabled (ON), and it is read as 0 if they are disabled (OFF).
⏵ Requirements: IO_20, IO_40, IO_30, IO_31, IO_32, IO_33, IO_38
As shown in Figure 22, other DAC control signals are directly driven by register bits, such as
· the value of PA_LNA_DAC_CFG1[15:10] register bits is output on dac_buff_ctrl[5:0] signals.
· the value of PA_LNA_DAC_CFG2 register bits is output on dac_vh_ctrl[15:0] signals.
· the value of PA_LNA_DAC_CFG4[15:12] (LNA_DAC_RES_CONTROL[3:0]) is output on dac_lna_res[3:0] signals.
· the value of PA_LNA_DAC_CFG4[11:8] (PA_DAC_RES_CONTROL[3:0]) is output on dac_lna_res[3:0] signals.
· the value of PA_LNA_DAC_CFG4[7:4] (LNA_DAC_REF_VOLTAGE[3:0]) is output on dac_lna_res[3:0] signals.
· the value of PA_LNA_DAC_CFG4[3:0] (PA_DAC_REF_VOLTAGE[3:0]) is output on dac_lna_res[3:0] signals.
· the value of DAC_BIAS_CTRL register is output on dac_bias_ctrl[15:0] signals.
External Pin Configuration
⏵ Requirements: REG_22, IO_22
For F641x, the value of the TX/RX Set registers and the DAC state can be modified by external tr, tload, and rload pins. Updates are triggered by either rising edge or logical change, and the action taken is dependent on the pin configuration selected in PIN_CFG[6:2] (EXT_PIN_MODE[4:0]).
⏵ Requirements: REG_13, REG_79
External pin configuration is enabled by setting CTRL_CFG[0] (TRX_CONT_MODE) to 0. This operation also overwrites the values of the HLUT_INFO and VLUT_INFO registers with the values of HLUT_START and VLUT_START registers respectively.
Figure 23 shows the underlying flowcharts for configurations 1-3 and 10-12 on the left side as well as for configurations 4-9 on the right side. Circles filled with light blue color are operating points. Circles filled with light brown color are transition states, and you must return to the previous operating point before changing to another operating point. Circles connected to an arrow indicate that an action is triggered with this transition. This, in return means that an arrow without a connected circle does not trigger any action.
Figure 23: External pin configuration flowcharts
⏵ Requirements: DAC_2
Table 3 lists the DAC states for the different operation points dependent on the selected pin configuration. Refer to the DAC output signal generation shown in Figure 22 for more information.
EXT_PIN_MODE [4:0] |
Operation points ({ tr, tload, rload }) |
||||||||
000 |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
||
0 |
PA=OFF, LNA=OFF |
||||||||
1-3 |
PA=OFF LNA=OFF |
PA=OFF LNA=ON |
PA=OFF LNA=OFF |
PA=OFF LNA=ON |
PA=OFF LNA=OFF |
PA=OFF LNA=OFF |
PA=ON LNA=OFF |
PA=ON LNA=OFF |
|
4-6 |
PA=OFF, LNA=OFF |
N/A |
PA=OFF, LNA=OFF |
N/A |
|||||
7-9 |
PA=OFF, LNA=ON |
N/A |
PA=ON, LNA=OFF |
N/A |
|||||
10-12 |
PA=OFF LNA=ON |
PA=OFF LNA=ON |
PA=OFF LNA=ON |
PA=OFF LNA=ON |
PA=ON LNA=OFF |
PA=ON LNA=OFF |
PA=ON LNA=OFF |
PA=ON LNA=OFF |
|
13-31 |
PA=OFF, LNA=OFF |
||||||||
⏵ Requirements: IO_41, IO_42, IO_43, IO_44, IO_45, IO_46, REG_80, REG_81, REG_82, REG_83
Table 4 lists the actions that are triggered by transitions (rising edge) on external pins according to Figure 23. Refer to section TRX Setting Registers for more information.
EXT_PIN_MODE [4:0] |
Actions triggered by transition |
||||||||
2 |
3 |
4 |
5 |
||||||
0 |
N/A |
||||||||
1 |
Latch RX+1 |
Latch TX+1 |
N/A |
N/A |
|||||
2 |
Latch RX+1, TX+1 |
Latch TX+1, RX+1 |
N/A |
N/A |
|||||
3 |
Latch RX buffer |
Latch TX buffer |
N/A |
N/A |
|||||
4 |
Latch TX+1 |
Latch RX+1 |
Latch TX+1 |
Latch RX+1 |
|||||
5 |
Latch TX+1, RX+1 |
Latch RX+1, TX+1 |
Latch TX+1, RX+1 |
Latch RX+1, TX+1 |
|||||
6 |
Latch TX buffer |
Latch RX buffer |
Latch TX buffer |
Latch RX buffer |
|||||
7 |
Latch TX+1 |
Latch RX+1 |
Latch TX+1 |
Latch RX+1 |
|||||
8 |
Latch TX+1, RX+1 |
Latch RX+1, TX+1 |
Latch TX+1, RX+1 |
Latch RX+1, TX+1 |
|||||
9 |
Latch TX buffer |
Latch RX buffer |
Latch TX buffer |
Latch RX buffer |
|||||
10 |
Latch RX+1 |
Latch TX+1 |
N/A |
N/A |
|||||
11 |
Latch RX+1, TX+1 |
Latch TX+1, RX+1 |
N/A |
N/A |
|||||
12 |
Latch RX buffer |
Latch TX buffer |
N/A |
N/A |
|||||
13-31 |
N/A |
||||||||
Notes:
1. Latch TX/RX+1: Increases the active LUT index by 1 and copies the data stored at this pointer (location) to the associated
a. TXVn/RXVn_SET (n=1..4) buffer and active registers if SW_TRX[8] (V_POL_EN) is set to 1 (channels with vertical polarization are enabled).
b. TXHn/RXHn_SET (n=1..4) buffer and active registers if SW_TRX[9] (H_POL_EN) is set to 1 (channels with horizontal polarization are enabled).
This is shown in Figure 24.
Dependent on the operation mode and enabled polarization, either HLUT_INFO [14:8] (tr=1, SW_TRX[9]=1) or VLUT_INFO[14:8] (tr=1, SW_TRX[8]) or HLUT_INFO[6:0] (tr=0, SW_TRX[9]) or VLUT_INFO[6:0] (tr=0, SW_TRX[8]) are automatically incremented by one to reflect the new active LUT index. When reaching the associated HLUT_STOP register value, HLUT_INFO is set to HLUT_START.
Figure 24: External pin configuration triggered action latch TX/RX+1
2. TX/RX+1: Increases the active LUT index by 1 and copies the data stored at this pointer (location) to the associated
a. TXVn/RXVn_SET (n=1..4) buffer registers if SW_TRX[8] (V_POL_EN) is set to 1 (channels with vertical polarization are enabled).
b. TXHn/RXHn_SET (n=1..4) buffer registers if SW_TRX[9] (H_POL_EN) is set to 1 (channels with horizontal polarization are enabled).
Leaves the content of TXVn/TXHn/RXVn/RXHn_SET active registers unchanged. This is shown in Figure 25.
Dependent on the operation mode and enabled polarization, either HLUT_INFO [14:8] (tr=1, SW_TRX[9]=1) or VLUT_INFO[14:8] (tr=1, SW_TRX[8]) or HLUT_INFO[6:0] (tr=0, SW_TRX[9]) or VLUT_INFO[6:0] (tr=0, SW_TRX[8]) are automatically incremented by one to reflect the new active LUT index. When reaching the associated HLUT_STOP register value, HLUT_INFO is set to HLUT_START.
Figure 25: External pin configuration triggered action TX/RX+1
3. Latch TX/RX buffer: Copies the content of the
a. TXVn/RXVn_SET (n=1..4) buffer to active registers if SW_TRX[8] (V_POL_EN) is set to 1 (channels with vertical polarization are enabled).
b. TXHn/RXHn_SET (n=1..4) buffer to active registers if SW_TRX[9] (H_POL_EN) is set to 1 (channels with horizontal polarization are enabled).
Leaves the active LUT index unchanged (0xN). This is shown in Figure 26.
Figure 26: External pin configuration triggered action latch TX/RX buffer
OTP Memory
F641x features an OTP memory that contains 128b of one time electrically programmed fuses (e-fuses).
⏵ Requirements: REG_45
There are two ways to read data from OTP memory:
1. Using the OTP state machine. This option requires the oscillator clock to run.
2. Set all OTP control signals manually through OTP_CFG register bits.
Programming is always done by setting the OTP control signals manually through OTP_CFG register bits.
OTP State Machine
⏵ Requirements: REG_17, REG_41, REG_42, REG_49
When set to 1, CHIP_INFO[4] (OTP_FSM_START) starts the OTP state machine to read all data from the OTP memory to the OTP_DATAn (n=1..8) registers. There is no error detection when reading data from the OTP memory. CHIP_INFO[4] is write-only and cleared automatically once the transfer of the OTP bits is completed. The status of CHIP_INFO[4] is mirrored in OTP_CFG[15]. After a power-on or hardware reset, the OTP_DATAn registers are cleared to 0x0.
⏵ Requirements: OSC_1
The oscillator gets enabled (osc_en going high) after writing 1 to CHIP_INFO[4]. There is a wait time of 63 cycles for the oscillator clock to stabilize before the OTP state machine is triggered (osc_clk_enable going high) and the OTP memory is enabled (otp_en going high). With the assertion of the read signal (otp_read going high), the 8 fuses of the selected bank (otp_bank_sel) are read, and the data output of the fuse module (otp_din) is captured in otp_data[n], whereas OTP_DATAn = { otp_data[n], otp_data[n-1] }. After all data are read, OTP memory and oscillator are disabled one after another. This is shown in Figure 27.
Figure 27: OTP Memory FSM read access
OTP_CFG Register Settings
Reading Fuses
⏵ Requirements: REG_44
With this sequence, a read of 8 bits is done simultaneously. The status of the selected fuses (otp_din[7:0]) is latched when OTP_CFG[13] (OTP_DIN_LATCH) is set to 1, whereas OTP_DATAn = { otp_data[n], otp_data[n-1] }.
⏵ Requirements: REG_46
The read current level is being selected by two bits OTP_CFG[3:2] (OTP_CUR[1:0]). These bits are used for examining the robustness of the read. The purpose of these two bits is to ensure a robust read over temperature and voltage range even when the test is done in a single voltage and at a room temperature. In normal operation OTP_CUR[1:0]=2'b01. If a burned fuse is measured one would like to perform a measurement in a lower current to ensure that the fuse is being read as a burned one even with the lower current. In this case OTP_CUR[1:0]=2'b00 will be selected as a robustness of the read test. This function ensures that there is enough margin for avoiding the need to test the module over the whole temperature range. When a “non-burned” fuse is read, one would like to perform a test with a higher current to ensure that the fuse is read as an un-burned fuse with higher current. In this case OTP_CUR[1:0]=2'b10 is selected as a robustness read test.
When reading from the OTP memory, the OTP_CFG register bits must be set according to the sequence shown in Figure 28, at the same time respecting the timing requirements set forth in Table 5. Even though there are no concrete timing requirements, OTP power-on reset (OTP_POR) and program enable (OTP_PROG) must be set before the OTP memory is enabled (OTP_EN set to 1).
Figure 28: OTP memory register read access (option 1)
With reference to Figure 28, Table 5 shows the timing characteristics of the OTP memory for read access, unless otherwise noted.
No. |
Parameter |
Description |
Min. |
Max. |
Unit |
||||||
1 |
Ten_rd |
OTP_EN to OTP_READ setup time |
1 |
us |
|||||||
2 |
Ts_rd_setup |
OTP_CUR to OTP_READ setup time |
1 |
us |
|||||||
3 |
Tbs_rd_set |
OTP_WR_ADDRESS to OTP_READ setup time |
50 |
ns |
|||||||
4 |
Tdout_delay |
OTP_READ to otp_din delay |
400 |
ns |
|||||||
5 |
Tread_min_width |
OTP_READ minimum high pulse width |
500 |
ns |
|||||||
6 |
Tread_bs_hold |
OTP_READ to OTP_WR_ADDRESS hold time |
10 |
ns |
|||||||
7 |
Tread_dis |
OTP_READ to OTP_READ min delay |
1 |
us |
|||||||
Another option for reading data from the OTP memory is shown in Figure 29. The OTP_READ is continuously asserted (set to 1) for the whole read access, and only OTP_RW_ACCESS is changing its value. The timing characteristics specified in Table 5 are applicable for this option, too.
Figure 29: OTP memory register read access (option 2)
Programming Fuses
With this sequence, a selected fuse is being burned. The selection of the fuse is done by the following register bits:
· OTP_CFG[12:10] (OTP_WR_BIT[2:0]) selects one out of 16 8-bit banks.
· OTP_CFG[9:6] (OTP_RW_ADDRESS[3:0]) selects the bit within the bank to be burned.
When programming the OTP memory, the OTP_CFG register bits must be set according to the sequence shown in Figure 30, at the same time respecting the timing requirements set forth in Table 6. Even though there are no concrete timing requirements, OTP power-on reset (OTP_POR) and enable (OTP_EN) must be set before or at the same time OTP read (OTP_READ) is set to 0.
Figure 30: OTP memory register programming
With reference to Figure 30, Table 6 shows the timing characteristics of the OTP memory for programming, unless otherwise noted.
No. |
Parameter |
Description |
Min. |
Max. |
Unit |
||||||
1 |
Trd_prog_setup |
OTP_READ to OTP_PROG setup time |
50 |
ns |
|||||||
2 |
Tsels |
OTP_RW_ADDRESS to OTP_PROG setup time |
50 |
ns |
|||||||
3 |
Tburn |
OTP_PROG minimum high pulse width, programming interval |
20 |
us |
|||||||
4 |
Tselh |
OTP_PROG to OTP_RW_ADDRESS hold time |
20 |
ns |
|||||||
5 |
Tpr_pr_delay |
OTP_PROG to OTP_PROG setup time |
1 |
us |
|||||||
6 |
Trd_prog_hold |
OTP_READ to OTP_PROG hold time |
1 |
us |
|||||||
Process Corner Monitor
⏵ Requirements: IO_24
F641x does not include a process corner monitor (PCM) module. All signals associated to PCM (pcm_*) are not used, and therefore output signals are tied low and input signals left unconnected.
Design for Testability
The F641X provides the following Design for Testability (DFT) features to enable and facilitate device tests as well as system level debugging:
· IO Test
Scan Test
⏵ Requirements: DFT_2, DFT_3, DFT_4, DFT_5, DFT_6, DFT_7
Scan Test structures are inserted into the Digital Subsystem. The test structures contain the following features:
· Controllability features are added to all inputs that don’t go directly to FFs.
· All outputs to the Analog Subsystem are forced to benign state during Scan Test.
· Observability FFs are added to all outputs that don’t come directly from a FF.
· The shift mode frequency is 20MHz.
· All scan clocks are switched off in normal mode (root clock gating).
· The (target) stuck-at fault coverage is 98.0%.
⏵ Requirements: DFT_10
The following external pins are shared in Scan Test mode:
· spi_csb is an input pin and works as low active scan reset.
· add_in[2] is an input pin and works as high active scan enable.
· spi_clk is an input pin and works as scan clock.
· spi_mosi_in is an input pin and works as scan data 0 in.
· spi_miso_out is an output pin and works as scan data 0 out.
· add_in[0] is an input pin and works as scan data 1 in.
· add_in[1] is an output pin and works as scan data 1 out.
⏵ Requirements: DFT_9
The following FFs are excluded from the scan chain:
· CTRL_CFG[2] (SCAN_MODE) register bit.
⏵ Requirements: DFT_1, DFT_11, DFT_12
Scan test is enabled by setting CTRL_CFG[2] (SCAN_MODE) to 1. When scan test mode is enabled, there is no access to the SPI Interface anymore. To exit scan test mode, a power-on or hardware reset event must be initiated by a minimum 20ns logic low on the porb and rstb pin respectively.
IO Test
Overview
⏵ Requirements: DFT_13, DFT_15
IO test structures are inserted into the Digital Subsystem for spi_csb, spi_clk, spi_mosi_in, spi_mosi_out, add_in[3:0], tr, tload, rload and stdby. rstb is excluded from the IO test, because any input low value will issue a hardware reset.
⏵ Requirements: DFT_14
The test structures are used for testing and characterizing the following features:
· General input and output functional operation.
· Input and output voltage levels.
· Input leakage current.
⏵ Requirements: DFT_16, DFT_17, DFT_18
IO test is enabled by setting CTRL_CFG[4] (IO_TEST) to 1. When IO test mode is enabled, there is no access to the SPI Interface anymore. To exit IO test mode, a power-on or hardware reset event must be initiated by a minimum 20ns logic low on the porb and rstb pin respectively.
Functional Description
This section describes some of the operations or implementation-defined features of the IO test. The topics in this section are:
· Input Characteristics
· Output Characteristics
Input Characteristics
For testing the input characteristics of the single-ended IO buffers, all input pins of the SPI interface (spi_csb, spi_clk, spi_mosi_in, add_in[4:0]) and control pins (tr, tload, rload, stdby) are OR-ed and output on spi_miso_out. This is shown in Figure 31.
Make sure that only one input pin is driven at a time and single-ended signaling (spib_lvds=0) is selected.
Figure 31: IO test input characteristics
For testing the input characteristics of the LVDS buffers, the setup shown in Figure 31 can be reused. This is shown in Figure 32 taking the SPI clock as an example. Make sure that except SCLK and ADD3 all other input pins are driven low and differential signaling (spib_lvds=1) is selected.
Figure 32: IO test LVDS buffer
Output Characteristics
The SPI data output (spi_miso_out) pin can be tested when testing the input characteristics.
The address output (add_in_1_data) pin can be tested when the internal chip address is programmed. Refer to section Addressing for more information.
Typical Applications
Introduction
This chapter covers three typical application examples that are targeted for F641X:
· Single-Ended SPI and External Chip Address
· Differential SPI and External Chip Address
· Single-Ended SPI and Internal, Programmable Chip Address
Note Configuring the device for differential SPI and internal, programmable chip address is not considered a use case.
Single-Ended SPI and External Chip Address
There is a maximum of 16 devices that are all connected to the same control signals (TR, TLOAD, RLOAD, RSTB, STBY) and a common, single-ended SPI bus. This is shown in the figure appended below. This is approximate conceptual diagram shown for illustration purpose only.
Single-ended SPI on the device is enabled when the SPIB/LVDS is set to 0. By default, external chip address setting on ADD0..3 is selected, and each chip gets a unique address ranging from 0 to 15. All devices are expected to work either in TX or RX mode.
Figure 33: Single-ended SPI and external chip address setting
Differential SPI and External Chip Address
There is a maximum of 4 devices that are all connected to the same control signals (TR, TLOAD, RLOAD, RSTB, STBY) and a common SPI bus. To increase the frequency for write operations, clock (SCLK) and data input (SDI) signals are layed out as differential signals, whereas the negative traces are connected to ADD3 and ADD2 respectively. Using ADD3..2 for differential SPI signaling reduces the number of external chip address pins to two (ADD1..0), and hence a maximum of 4 devices can only be addressed. This is shown in the figure appended below. This is approximate conceptual diagram shown for illustration purpose only.
Differential SPI on the device is enabled when the SPIB/LVDS is set to 1. By default, external chip address setting on ADD0..1 is selected, and each chip gets a unique address ranging from 0 to 3. All devices are expected to work either in TX or RX mode.
Figure 34: Differential SPI and external chip address setting
Single-Ended SPI and Internal, Programmable Chip Address
There is a maximum of 32 devices that are all connected to the same control signals (TR, TLOAD, RLOAD, RSTB, STBY) and a common, single-ended SPI bus. For programming the internal chip address, ADD0 of the first device (#1) is connected to SDI. ADD0 of all other devices (#2..n) is connected to ADD1 of the previous device (#1..n-1). ADD3..2 input pins are not used in this mode and can be set to any value. An example with 16 devices is shown in the figure appended below. This is approximate conceptual diagram shown for illustration purpose only.
Single-ended SPI on the device is enabled when the SPIB/LVDS is set to 0. For enabling and programming the internal chip address, refer to section Addressing. All devices are expected to work either in TX or RX mode.
Figure 35: Single-ended SPI and internal, programmable chip address setting
Theory of Operation
Sensor Measurements
Implementation
Technology
⏵ Requirements: TECH_1, TECH_2, TECH_3
F641X is developed based on Jazz Semiconductor SBC18HX process. Features of the SBC18HX technology are:
· Core voltage: 1.8V +/- 10%
· Junction temperature: -40degC to +125degC.
Interface/Signal Descriptions
⏵ Requirements: IO_1
Refer to 'Interface/Signal Description' in the left navigation menu for information about the interfaces and signals of the Renesas f641x_dig.
SPI Timing Constraints
SPI timing constraints are derived from the block diagram shown in Figure 36. This is approximate conceptual diagram shown for illustration purpose only.
Figure 36: SPI timing paths
Input Delay
⏵ Requirements: SPI_59
The SPI master drives data (MOSI) on the falling edge of SCLK. MOSI and SCLK shall be synchronized as much as possible, and MOSI output delay [tod(MOSI)] should be less than 1ns. The board delay is assumed to be 1ns for SCLK [tld(SCLK)] and 2ns for MOSI [tld(MOSI)] (considering a board delay skew between SCLK and MOSI of 1ns). F641X input buffer delay for both SCLK [tio(SCLK)] and SDI [tio(SDI)] is less than 1ns. Data is captured on the rising edge of SCLK. This is shown in Figure 37.
Figure 37: SPI input timing
With reference to Figure 3 and Table 1 the SDI (input data) setup time tsu(SDI) is specified as follows:
tsu(SDI) = tpl(SCLK) - tod(MOSI) - [tld(MOSI) - tld(SCLK)] - [tio(SDI) - tio(SCLK)] = 4ns - 1ns - [2ns - 1ns] - [1ns - 1ns] = 2ns
Output Delay
⏵ Requirements: SPI_60
F641X drives data (SDO) on the falling edge of SCLK. With a board delay of 1ns for SCLK [tld(SCLK)] and SDO [tld(SDO)] each, the data (MOSI) setup time [tsu(MOSI)] at the SPI master is 2ns. This is shown in Figure 38.
Figure 38: SPI output timing
With reference to Figure 3 and Table 1 the SDO (output data) delay time tod(SDO) is specified as follows:
tod(SDO) = tpl(SCLK) - tld(SCLK) - tld(SDO) - tsu(MISO) = 9ns - 1ns - 1ns - 2ns = 5ns
Whereas,
tod(spi_miso_out) = tod(SDO) - tio(SCLK) - tio(SDO) = 5ns - 1ns - 1ns = 3ns
History, Change Log
This section tracks the significant documentation changes that occur during this release. It does not indicate minor changes that were made for readability, formatting, and so on. It only indicates changes to requirements, functionality, features, and major rewrites.
Revision: 0.13 - July 31 2023
· Information about channel select bits added for all LUT-commands.
· Register map modified.
Revision: 0.12 - July 21, 2023
· Figure 'External FEM switch pin control signal connections' corrected.
· CRC-information added wrt. SPI_45 and LUT_6.
· Sections 'Chip ID Register' and 'General Outline' and 'Implementation' and 'MBIAS' added.
· (Target) stuck-at fault coverage added.
· Description of TXVn/TXHn/RXVn/RXHn_SET active registers corrected, and TXVn/TXHn/RXVn/RXHn_SET output registers introduced.
Revision: 0.11 - July 10, 2023
· Sections 'Electrical Data/Timing' for TRX Control and 'OTP Memory' and 'Sensor Enable Register' and 'SCRATCH Register' and 'Process Corner Monitor' added.
· Description of 'TX/RX+1' corrected.
· Descriptions modified for H/VLUT_INFO updates when external pin configuration is enabled.
· CHIP_INFO[4] description added to section 'Overall Chip Configuration Register'.
Revision: 0.10 - July 4, 2023
· add_in[4] added to IO test and dependency on spib_lvds considered.
· SPI interface signals and connections added.
· Information added about LVDS buffer test.
· Sections 'External Pin Configuration' and 'Overall Chip Configuration Register' and 'Look-up Table Register' added.
· Information added for a transfer of data from buffer to active register when external pin configuration is enabled.
· Information added for a transfer of data from LUT to buffer and active register when external pin configuration is enabled.
· Generation of txvN_set[15:0], txhN_set[15:0], rxvN_set[15:0], rxhN_set[15:0] output signals modified.
· Information added about H/VLUT_INFO registers for LCL/GBL_FBS commands.
Revision: 0.09 - June 23, 2023
· Sections 'TX/RX Registers' and 'TX/RX Channel Control' and 'TRX Switch Control Register' added.
· Information added for CTRL_CFG register.
· Information about TAL/RAL operation modified.
· Information about BIST error counter corrected.
· Information added for DAC control.
· Information added about external pins that are shared in Scan Test mode, and excluded FFs.
Revision: 0.08 - June 19, 2023
· Wording wrt. the selection of ADC input source(s) modified.
· Information related to SPI_54 and SPI_100 removed.
· Reference to SPI_47 added in SPI Core & Commands/Introduction.
· Section 'Cyclic Redundancy Check' added for within section 'SPI Core & Commands'.
· Information related to REG_65 added to section 'Look-up Tables/Data Consistency Check'.
· Wording wrt. SW_TRX[9:8] bits in a LCL_FBS or GBL_FBS command modified.
· Sections 'Control Register' and 'Design for Testability' added.
· Description of byte3+… and byte4+… in a LCL_FBS and GBL_FBS corrected.
· Register map updated.
· Information modified related to SPI_67..68, SPI_101, ADC_8, SPI_21..22, SPI_55, SPI_70.
Revision: 0.07 - June 12, 2023
· Sections 'BIST Register', 'Look-up Tables' and 'Theory of Operation' added.
· Information related to SPI_36 added to SPI addressing.
· Averaging method modified: outer -> inner loop.
Revision: 0.06 - June 6, 2023
· Description about enabling the oscillator corrected in section 'ADC Clock Control Register'.
· Further information added to section 'ADC Controller & Interface'.
· SENSOR_CFG register information added.
Revision: 0.05 - May 26, 2023
· Modifications made corresponding to the changes of SPI_10.
· Information added according to SPI_101 for LCL/GBL_REG_WR that setting both DAC Load bits (TAL and RAL) to 1 is prohibited.
· Information added according to SPI_103 that CTRL_CFG[11] (SHIFTREG_ADDR_EN) can only be cleared (set to 0) by power-on (porb) or hardware (rstb) reset signal.
· CLK_CFG and ADC_CFG register information added.
· ADC Controller & Interface information added.
Revision: 0.04 - May 23, 2023
· Connection details added for differential SPI application example.
· Number of devices increased to 32 in single-ended SPI and internal, programmable chip address setting application example.
· SPI Electrical Data/Timing added.
· Register map updated.
Revision: 0.03 - May 16, 2023
· Register Map added.
· Behavior of RF Load bits in LCL/GBL_REG_WR commands modified according to the update of requirements SPI_8..9.
· TXVn_SET and TXHn_SET (n=1..4) replaced for TXn_SET (n=1..8) in LCL/GBL_REG_WR commands. The same applies for RXn_SET.
· Typical application examples added.
· SPI addressing added.
Revision: 0.02 - May 10, 2023
· Preface and Global Fast Beam Steering (GBL_FBS) added.
· Link to Technical Requirement Specification added in navigation menu.
Revision: 0.01 - May 8, 2023
First release.