| ... | @@ -20,16 +20,16 @@ Turbo Decoder on the UE side is offloaded to FPGA Board. |
... | @@ -20,16 +20,16 @@ Turbo Decoder on the UE side is offloaded to FPGA Board. |
|
|
|
|
|
|
|
#### Modification image for the Turbo offload
|
|
#### Modification image for the Turbo offload
|
|
|
Initialization
|
|
Initialization
|
|
|
From OAI process, Turbo decode operation initialization API is called in order to use Turbo offload process in FPGA.The API call is located in the very beginning of main function described below. To be more concrete, API is called immedeiately after logInit.
|
|
From OAI process, Turbo decode operation initialization API is called in order to use Turbo offload process in FPGA. The API call is located in the very beginning of main function described below. To be more concrete, API is called immediately after logInit.
|
|
|
Real : /targets/RT/USER/lte_softmodem.c main()
|
|
Real : /targets/RT/USER/lte_softmodem.c main()
|
|
|
SIM : /openair1/SIMULATION/LTE_PHY/dlsim.c main()
|
|
SIM : /openair1/SIMULATION/LTE_PHY/dlsim.c main()
|
|
|
|
|
|
|
|
DLSCH decode process (dlsch_decoding)
|
|
DLSCH decode process (dlsch_decoding)
|
|
|
In order to pass the data which the De-rate matching process is done to FPGA for Turbo offload, Turbo decode operation request API is called. When the API transfers the operation request to FPGA, the buffer mapped by Turbo decode operation initalization API is needed, but, this buffer trasnfer is done during 16bit -> 8bit conversion in Turbo decode operation request API,so that OAI has to give harq_process->w[r] to the API as it is (r is CodeBlock number).
|
|
In order to pass the data which the De-rate matching process is done to FPGA for Turbo offload, Turbo decode operation request API is called. When the API transfers the operation request to FPGA, the buffer mapped by Turbo decode operation initialization API is needed, but, this buffer transfer is done during 16bit -> 8bit conversion in Turbo decode operation request API,so that OAI has to give harq_process->w[r] to the API as it is (r is CodeBlock number).
|
|
|
|
|
|
|
|
After OAI calls Turbo decode operation request API as many as the number of CodeBlocks, OAI waits for the Turbo decode process completion by calling Turbo decode end wait API. The asynchronous mode is used for the API. The number of retry of the API call should be determined in case of no end response.
|
|
After OAI calls Turbo decode operation request API as many as the number of CodeBlocks, OAI waits for the Turbo decode process completion by calling Turbo decode end wait API. The asynchronous mode is used for the API. The number of retry of the API call should be determined in case of no end response.
|
|
|
|
|
|
|
|
When the Turbo deocode operation result read API returns NG or returns CRC NG, HARQ retransmission counter is incremented, and the function returns the iteration max number + 1. The API returns OK and CRC OK, OAI manages the pointer to the Turbo decoded data which is notified by the API. The buffer is stored in harq_process->b, and the function returns the interation number which is also notifed by the API.
|
|
When the Turbo decode operation result read API returns NG or returns CRC NG, HARQ retransmission counter is incremented, and the function returns the iteration max number + 1. The API returns OK and CRC OK, OAI manages the pointer to the Turbo decoded data which is notified by the API. The buffer is stored in harq_process->b, and the function returns the iteration number which is also notified by the API.
|
|
|
|
|
|
|
|
The detalied process flow is described in the "Turbo Offload Modification Flow" sheet.
|
|
The detailed process flow is described in the "Turbo Offload Modification Flow" sheet.
|
|
|
[TurboOffloadModificationFlow.xlsx](/uploads/b488bbba24bf551f3e9e0bb0434e9560/TurboOffloadModificationFlow.xlsx) |
|
[TurboOffloadModificationFlow.xlsx](/uploads/b488bbba24bf551f3e9e0bb0434e9560/TurboOffloadModificationFlow.xlsx) |