address_offset : 0x0 Bytes (0x0)
size : 0x2C byte (0x0)
mem_usage : registers
protection :
address_offset : 0x0 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
EN : When EN is 1, the HSTX will shift out data as it appears in the FIFO. As long as there is data, the HSTX shift register will shift once per clock cycle, and the frequency of popping from the FIFO is determined by the ratio of SHIFT and SHIFT_THRESH.
When EN is 0, the FIFO is not popped. The shift counter and clock generator are also reset to their initial state for as long as EN is low. Note the initial phase of the clock generator can be configured by the CLKPHASE field.
Once the HSTX is enabled again, and data is pushed to the FIFO, the generated clock's first rising edge will be one half-period after the first data is launched.
bits : 0 - 0 (1 bit)
access : read-write
EXPAND_EN : Enable the command expander. When 0, raw FIFO data is passed directly to the output shift register. When 1, the command expander can perform simple operations such as run length decoding on data between the FIFO and the shift register.
Do not change CXPD_EN whilst EN is set. It's safe to set CXPD_EN simultaneously with setting EN.
bits : 1 - 1 (1 bit)
access : read-write
COUPLED_MODE : Enable the PIO-to-HSTX 1:1 connection. The HSTX must be clocked *directly* from the system clock (not just from some other clock source of the same frequency) for this synchronous interface to function correctly.
When COUPLED_MODE is set, BITx_SEL_P and SEL_N indices 24 through 31 will select bits from the 8-bit PIO-to-HSTX path, rather than shifter bits. Indices of 0 through 23 will still index the shift register as normal.
The PIO outputs connected to the PIO-to-HSTX bus are those same outputs that would appear on the HSTX-capable pins if those pins' FUNCSELs were set to PIO instead of HSTX.
For example, if HSTX is on GPIOs 12 through 19, then PIO outputs 12 through 19 are connected to the HSTX when coupled mode is engaged.
bits : 4 - 4 (1 bit)
access : read-write
COUPLED_SEL : Select which PIO to use for coupled mode operation.
bits : 5 - 6 (2 bit)
access : read-write
SHIFT : How many bits to right-rotate the shift register by each cycle.
The use of a rotate rather than a shift allows left shifts to be emulated, by subtracting the left-shift amount from 32. It also allows data to be repeated, when the product of SHIFT and N_SHIFTS is greater than 32.
bits : 8 - 12 (5 bit)
access : read-write
N_SHIFTS : Number of times to shift the shift register before refilling it from the FIFO. (A count of how many times it has been shifted, *not* the total shift distance.)
A register value of 0 means shift 32 times.
bits : 16 - 20 (5 bit)
access : read-write
CLKPHASE : Set the initial phase of the generated clock.
A CLKPHASE of 0 means the clock is initially low, and the first rising edge occurs after one half period of the generated clock (i.e. CLKDIV/2 cycles of clk_hstx). Incrementing CLKPHASE by 1 will advance the initial clock phase by one half clk_hstx period. For example, if CLKDIV=2 and CLKPHASE=1:
* The clock will be initially low
* The first rising edge will be 0.5 clk_hstx cycles after asserting first data
* The first falling edge will be 1.5 clk_hstx cycles after asserting first data
This configuration would be suitable for serialising at a bit rate of clk_hstx with a centre-aligned DDR clock.
When the HSTX is halted by clearing CSR_EN, the clock generator will return to its initial phase as configured by the CLKPHASE field.
Note CLKPHASE must be strictly less than double the value of CLKDIV (one full period), else its operation is undefined.
bits : 24 - 27 (4 bit)
access : read-write
CLKDIV : Clock period of the generated clock, measured in HSTX clock cycles. Can be odd or even. The generated clock advances only on cycles where the shift register shifts.
For example, a clkdiv of 5 would generate a complete output clock period for every 5 HSTX clocks (or every 10 half-clocks).
A CLKDIV value of 0 is mapped to a period of 16 HSTX clock cycles.
bits : 28 - 31 (4 bit)
access : read-write
Data control register for output bit 3
address_offset : 0x10 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SEL_P : Shift register data bit select for the first half of the HSTX clock cycle
bits : 0 - 4 (5 bit)
access : read-write
SEL_N : Shift register data bit select for the second half of the HSTX clock cycle
bits : 8 - 12 (5 bit)
access : read-write
INV : Invert this data output (logical NOT)
bits : 16 - 16 (1 bit)
access : read-write
CLK : Connect this output to the generated clock, rather than the data shift register. SEL_P and SEL_N are ignored if this bit is set, but INV can still be set to generate an antiphase clock.
bits : 17 - 17 (1 bit)
access : read-write
Data control register for output bit 4
address_offset : 0x14 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SEL_P : Shift register data bit select for the first half of the HSTX clock cycle
bits : 0 - 4 (5 bit)
access : read-write
SEL_N : Shift register data bit select for the second half of the HSTX clock cycle
bits : 8 - 12 (5 bit)
access : read-write
INV : Invert this data output (logical NOT)
bits : 16 - 16 (1 bit)
access : read-write
CLK : Connect this output to the generated clock, rather than the data shift register. SEL_P and SEL_N are ignored if this bit is set, but INV can still be set to generate an antiphase clock.
bits : 17 - 17 (1 bit)
access : read-write
Data control register for output bit 5
address_offset : 0x18 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SEL_P : Shift register data bit select for the first half of the HSTX clock cycle
bits : 0 - 4 (5 bit)
access : read-write
SEL_N : Shift register data bit select for the second half of the HSTX clock cycle
bits : 8 - 12 (5 bit)
access : read-write
INV : Invert this data output (logical NOT)
bits : 16 - 16 (1 bit)
access : read-write
CLK : Connect this output to the generated clock, rather than the data shift register. SEL_P and SEL_N are ignored if this bit is set, but INV can still be set to generate an antiphase clock.
bits : 17 - 17 (1 bit)
access : read-write
Data control register for output bit 6
address_offset : 0x1C Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SEL_P : Shift register data bit select for the first half of the HSTX clock cycle
bits : 0 - 4 (5 bit)
access : read-write
SEL_N : Shift register data bit select for the second half of the HSTX clock cycle
bits : 8 - 12 (5 bit)
access : read-write
INV : Invert this data output (logical NOT)
bits : 16 - 16 (1 bit)
access : read-write
CLK : Connect this output to the generated clock, rather than the data shift register. SEL_P and SEL_N are ignored if this bit is set, but INV can still be set to generate an antiphase clock.
bits : 17 - 17 (1 bit)
access : read-write
Data control register for output bit 7
address_offset : 0x20 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SEL_P : Shift register data bit select for the first half of the HSTX clock cycle
bits : 0 - 4 (5 bit)
access : read-write
SEL_N : Shift register data bit select for the second half of the HSTX clock cycle
bits : 8 - 12 (5 bit)
access : read-write
INV : Invert this data output (logical NOT)
bits : 16 - 16 (1 bit)
access : read-write
CLK : Connect this output to the generated clock, rather than the data shift register. SEL_P and SEL_N are ignored if this bit is set, but INV can still be set to generate an antiphase clock.
bits : 17 - 17 (1 bit)
access : read-write
Configure the optional shifter inside the command expander
address_offset : 0x24 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
RAW_SHIFT : How many bits to right-rotate the shift register by each time data is pushed to the output shifter, when the current command is a raw data command.
bits : 0 - 4 (5 bit)
access : read-write
RAW_N_SHIFTS : Number of times to consume from the shift register before refilling it from the FIFO, when the current command is a raw data command. A register value of 0 means shift 32 times.
bits : 8 - 12 (5 bit)
access : read-write
ENC_SHIFT : How many bits to right-rotate the shift register by each time data is pushed to the output shifter, when the current command is an encoded data command (e.g. TMDS).
bits : 16 - 20 (5 bit)
access : read-write
ENC_N_SHIFTS : Number of times to consume from the shift register before refilling it from the FIFO, when the current command is an encoded data command (e.g. TMDS). A register value of 0 means shift 32 times.
bits : 24 - 28 (5 bit)
access : read-write
Configure the optional TMDS encoder inside the command expander
address_offset : 0x28 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
L0_ROT : Right-rotate applied to the current shifter data before the lane 0 TMDS encoder.
bits : 0 - 4 (5 bit)
access : read-write
L0_NBITS : Number of valid data bits for the lane 0 TMDS encoder, starting from bit 7 of the rotated data. Field values of 0 -> 7 encode counts of 1 -> 8 bits.
bits : 5 - 7 (3 bit)
access : read-write
L1_ROT : Right-rotate applied to the current shifter data before the lane 1 TMDS encoder.
bits : 8 - 12 (5 bit)
access : read-write
L1_NBITS : Number of valid data bits for the lane 1 TMDS encoder, starting from bit 7 of the rotated data. Field values of 0 -> 7 encode counts of 1 -> 8 bits.
bits : 13 - 15 (3 bit)
access : read-write
L2_ROT : Right-rotate applied to the current shifter data before the lane 2 TMDS encoder.
bits : 16 - 20 (5 bit)
access : read-write
L2_NBITS : Number of valid data bits for the lane 2 TMDS encoder, starting from bit 7 of the rotated data. Field values of 0 -> 7 encode counts of 1 -> 8 bits.
bits : 21 - 23 (3 bit)
access : read-write
Data control register for output bit 0
address_offset : 0x4 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SEL_P : Shift register data bit select for the first half of the HSTX clock cycle
bits : 0 - 4 (5 bit)
access : read-write
SEL_N : Shift register data bit select for the second half of the HSTX clock cycle
bits : 8 - 12 (5 bit)
access : read-write
INV : Invert this data output (logical NOT)
bits : 16 - 16 (1 bit)
access : read-write
CLK : Connect this output to the generated clock, rather than the data shift register. SEL_P and SEL_N are ignored if this bit is set, but INV can still be set to generate an antiphase clock.
bits : 17 - 17 (1 bit)
access : read-write
Data control register for output bit 1
address_offset : 0x8 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SEL_P : Shift register data bit select for the first half of the HSTX clock cycle
bits : 0 - 4 (5 bit)
access : read-write
SEL_N : Shift register data bit select for the second half of the HSTX clock cycle
bits : 8 - 12 (5 bit)
access : read-write
INV : Invert this data output (logical NOT)
bits : 16 - 16 (1 bit)
access : read-write
CLK : Connect this output to the generated clock, rather than the data shift register. SEL_P and SEL_N are ignored if this bit is set, but INV can still be set to generate an antiphase clock.
bits : 17 - 17 (1 bit)
access : read-write
Data control register for output bit 2
address_offset : 0xC Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SEL_P : Shift register data bit select for the first half of the HSTX clock cycle
bits : 0 - 4 (5 bit)
access : read-write
SEL_N : Shift register data bit select for the second half of the HSTX clock cycle
bits : 8 - 12 (5 bit)
access : read-write
INV : Invert this data output (logical NOT)
bits : 16 - 16 (1 bit)
access : read-write
CLK : Connect this output to the generated clock, rather than the data shift register. SEL_P and SEL_N are ignored if this bit is set, but INV can still be set to generate an antiphase clock.
bits : 17 - 17 (1 bit)
access : read-write
Is something missing? Is something wrong? can you help correct it ? Please contact us at info@chipselect.org !
This website is sponsored by
Embeetle, an IDE designed from scratch for embedded software developers.