This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello. Keep fighting with your RFSDK and can see *.tgtcfg files with DFE configuration.
Inside we can find addreses and some values we want to store in but these addresses are not physical apparently. How do these addresses correspond to physical memory?
Hello,
Within the context of the 66Ak2L06 / TCI6630K2L devices, there is a Digital Front End (DFE) block for the radio.
The RFSDK concept for programming DFE, is based on:
a) selecting the radio select - that corresponds to the desired number of Tx, Rx streams, and Baseband channels
b) the use case, related to the radio select, has a fixed register configuration, xxx.tgtcfg
c) once the registers are loaded, and initialized, only DFE registers that have dynamic update capability are programmed through the RFSDK DFE commands.
In the device datasheet, Table 7-1 Device memory map lists the DFE base address. The .tgtcfg address is the offset address to this physical address.
00 2400 0000 00 25FF FFFF 32M DFE configuration DFE configuration DFE configuration
The .tgtcfg fixed configuration is based on a prebuilt configuration file, for wireless LTE, WCDMA with AFE7500, and adjacent market data converters DAC38J84, ADC12J4000, ADC14x250, ADC32RF80.
More details about the DFE sections, can be seen in the DFE User Guide, "www.ti.com/.../spruhx8a.pdf"
In a script environment for RFSDK, you can combine the RFSDK commands for static configuration, dynamic reconfiguration, along with memory write and read registers, if you have the specific registers addressing.
Normally register based programming is not needed for using DFE with the RFSDK.
an example
# run_l_dfetest_lte20_lab1f
# this lab shows the generate test script radio framework.
# it requires file management, to update specific files, and scripts
# we load BBTx data with a specific gain, we adjust the digital gains using the dfe set
# commands. We then have frequency translation in the various sections
# TxDDUC - channel NCO, frequency translation
# sumchain channel -> stream selects which channels are in a Tx stream
# CDFR Tx - stream NCO, used in digital combiner not in RFSDK controlled in TGTCFG
# Tx - stream NCO, used for Tx stream IF translation
# JESD Tx Transport - can modify Tx stream order to JESD
# JESD Rx Transport - can modify Rx/Fb stream order to Rx and Fb
# Rx RealtoComplex - if real input, translates by Fs/4, or 3Fs/4# not in RFSDK, controlled in TGTCFG
# Rx switch - can translate JESD rx to Rx stream number not in RFSDK, controlled in TGTCFG
# Rx - stream NCO, used for Rx stream iF translation *
# Fb - stream select - selects one of two Fb stream inputs
# Fb - RealtoComplex - if real input, translates by Fs/4, or 3Fs/4# not in RFSDK, controlled in TGTCFG
# Fb - stream NCO, used for Fb stream iF translation *
# RxDDUC Distributor - can select which Rx out stream or Fb stream for Rx DDUC channel
# RxDDUC - channel NCO, frequency translation *
# the JESD loopback have xxxx and xxxx_Rxlb for small cell configurations, xxxx Tx1 -> Fb, xxxx_Rxlb Tx0/Tx1 -> Rx0/Rx1
# this modifies the scripting to output 4 Axc to 1 Tx stream, use Feedback path for Rx, currently uses AFE7500 need Tx1 -> Rx3 connect
echo Start 4Axc LTE20 test, with AFE7500
RFSDK_UPLINK_CN=2600.0
RFSDK_DOWNLINK_CN=2600.0
# erase previous test results
cd /usr/share/radio/tests/rf-verif
rm -f dsp_psd_dfe*.csv
rm -f dsp_dfe*.csv
cd /srv/www/data/
rm -f dsp_psd_dfe*.csv
rm -f dsp_dfe*.csv
cd /usr/share/radio/tests/rf-verif/
if [ -f report_result.dat ]
then
rm report_result.dat
fi
# copy the Tx BBIQ patterns to the /usr/share/radio/patterns folder
read -p "use some tool to copy the .bin files to the folder, then press ENTER"
# start the test, note this JESD loopback has decimated Tx and Rx in Tx block, and different JESD format to meet JESDRx loopback
radio reset
echo selecting 2x2-4xLTE20-SC-JESD3b-SD using AFE7500
radio select 2x2-4xLTE20-SC-JESD3b-SD
radio init
echo Starting the DSP
playback program
playback start
sleep 3
echo Turning the radio on with AFE7500 RF loopback..
radio on $RFSDK_UPLINK_CN $RFSDK_DOWNLINK_CN
echo load LTE20 for 4Axc
playback load 1 1 /usr/share/radio/patterns/LTE20_TM1p1_C1_m6.bin
playback load 1 2 /usr/share/radio/patterns/LTE20_TM1p1_C2_m6.bin
playback load 2 1 /usr/share/radio/patterns/LTE20_TM3p1_C1_m6.bin
playback load 2 2 /usr/share/radio/patterns/LTE20_TM3p1_C2_m6.bin
sleep 1
echo set BBTx gain, sumshift gain, preCFR gain, postCFR gain as appropriate for CFR use
radio set dfe.baseband.tx[0].gain -3.0
radio set dfe.baseband.tx[1].gain -3.0
radio set dfe.baseband.tx[2].gain -3.0
radio set dfe.baseband.tx[3].gain -3.0
radio set dfe.baseband.rx[0].gain 3.0
radio set dfe.baseband.rx[1].gain 3.0
radio set dfe.baseband.rx[2].gain 3.0
radio set dfe.baseband.rx[3].gain 3.0
radio set dfe.stream[0].summerGain 0.0
radio set dfe.stream[1].summerGain 0.0
# no CFR action
radio set dfe.stream[0].cfr.preGain -6.0
radio set dfe.stream[1].cfr.preGain -6.0
radio set dfe.stream[0].cfr.postGain 6.0
radio set dfe.stream[1].cfr.postGain 6.0
echo 4Axc 2xLTE20 Tx1, 2xLTE20 Tx2
echo Rx, Fb, RxDDUC values multiply by -1
radio set dfe.baseband.tx[0].nco -10.0
radio set dfe.baseband.tx[0].streamMask 1
radio set dfe.baseband.tx[1].nco 10.0
radio set dfe.baseband.tx[1].streamMask 1
radio set dfe.baseband.tx[2].nco -10.0
radio set dfe.baseband.tx[2].streamMask 2
radio set dfe.baseband.tx[3].nco 10.0
radio set dfe.baseband.tx[3].streamMask 2
radio set dfe.stream[0].txNco 20.0
radio set dfe.stream[1].txNco -20.0
# note Rx Fdbk stream NCO frequencies are negated
radio set dfe.stream[0].rxNco 20.0
radio set dfe.stream[1].rxNco -20.0
radio set dfe.feedback[0].nco 0.0
# note Rx DDUC NCO frequencies are negated, stream IDs are 0,1 Rx, 2,3 unused Rx, 4 Fb
radio set dfe.baseband.rx[0].nco -10.0
radio set dfe.baseband.rx[0].streamId 0
radio set dfe.baseband.rx[1].nco 10.0
radio set dfe.baseband.rx[1].streamId 0
radio set dfe.baseband.rx[2].nco -10.0
radio set dfe.baseband.rx[2].streamId 0
radio set dfe.baseband.rx[3].nco 10.0
radio set dfe.baseband.rx[3].streamId 0
read -p "use RFSDK webpage to look at the Tx, Rx stream, and BBRx 2carLTE20 Tx1, Tx2"
echo read Tx register that combines Tx0 and Tx1 to Tx0; Tx2, Tx3 on stream Tx1
devmem2 0x2560002c | grep Read | sed 's/.*: //'
read -p "attempt to add Tx1 to Tx2, through register read (0x2aa0) OR with bit 12=1, x1000"
devmem2 0x2560002c w 0x00003aa0 > /dev/null
read -p "use RFSDK webpage to look at the Tx, Rx stream, this should be Axc Tx0,1,2,3 on stream Tx0, Axc2,3 on stream Tx1"
playback stop
radio off
Regards,
Joe Quintal
Hi, thanks for your response. Is it possible to enable JESD204 without involving DFE processing (bypass mode)? How to achieve it?
Best regards, Eugene