SPRUIL1D May 2019 – December 2024 DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4VM , TDA4VM-Q1
The HWA1 scheduler in HTS is used for the SDE. The HTS programming is as follows:
// RFGW Fetch
HTS->DMA8_SCHEDULER_CONTROL->sch_en = 1; // scheduler enable
HTS->DMA8_SCHEDULER_CONTROL->pipeline_num = 1; // Belongs to pipeline 1
HTS->DMA8_SCHEDULER_CONTROL->dma_channel_no = 6; // Assign appropriate DMA channel
HTS->DMA8_HOP->hop = 1;
HTS->DMA8_HOP->hop_thread_count = ImgHeight/8;
HTS->DMA8_PROD0_CONTROL->prod_en = 1;
HTS->DMA8_PROD0_CONTROL->cons_select = 0;
HTS->DMA8_PROD0_BUF_CONTROL->depth = 3;
HTS->DMA8_PROD0_BUF_CONTROL->count_dec = 1;
HTS->DMA8_PROD0_BUF_CONTROL->threshold = 2;
HTS->DMA8_PROD0_COUNT->count_preload = 0;
HTS->DMA8_PROD0_COUNT->count_preload = 0;
HTS->DMA8_PA0_CONTROL->pa_enable = 1; // Enable Pattern Adapter
HTS->DMA8_PA0_CONTROL->pa_dec_cntl = 1; // post pattern adaptation, decrement ps count by count_dec
HTS->DMA8_PA0_CONTROL->pa_buf_cntl = 0; // Apply threshold, count_preload and count_postload on prodcount
psMaxCnt = ImgWidth/64;
if((64 * psMaxCnt) != ImgWidth)
{
psMaxCnt++;
}
HTS->DMA8_PA0_CONTROL->pa_ps_maxcount = ImgWidth; // Assuming frame width of 2048 and block width of 64
HTS->DMA8_PA0_CONTROL->pa_cs_maxcount = 2; // Pattern Adapter starts when we have 16 lines in GW
HTS->DMA8_PROD0_BUF_CONTROL->count_dec = 1; // Overwrite 8 line in GW once the entire
// BFGW Fetch
HTS->DMA9_SCHEDULER_CONTROL->sch_en = 1; // scheduler enable
HTS->DMA9_SCHEDULER_CONTROL->pipeline_num = 1; // Belongs to pipeline 1
HTS->DMA9_SCHEDULER_CONTROL->dma_channel_no = 6; // Assign appropriate DMA channel
HTS->DMA9_HOP->hop = 1;
HTS->DMA9_HOP->hop_thread_count = ImgHeight/8;
HTS->DMA9_PROD0_CONTROL->prod_en = 1;
HTS->DMA9_PROD0_CONTROL->cons_select = 0;
HTS->DMA9_PROD0_BUF_CONTROL->depth = 3;
HTS->DMA9_PROD0_BUF_CONTROL->count_dec = 1;
HTS->DMA9_PROD0_BUF_CONTROL->threshold = 2;
HTS->DMA9_PROD0_COUNT->count_preload = 0;
HTS->DMA9_PROD0_COUNT->count_preload = 0;
psMaxCnt = ImgWidth/64;
if((64 * psMaxCnt) != ImgWidth)
{
psMaxCnt++;
}
HTS->DMA9_PA0_CONTROL->pa_ps_maxcount = ImgWidth; // Assuming frame width of 2048 and block width of 64
HTS->DMA9_PA0_CONTROL->pa_cs_maxcount = 2; // Pattern Adapter starts when we have 16 lines in GW
HTS->DMA9_PROD0_BUF_CONTROL->count_dec = 1; // Overwrite 8 line in GW once the entire
// HWA1 Scheduler Programming
HTS->HWA1_SCHEDULER_CONTROL->sch_en = 1; // scheduler enable
HTS->HWA1_SCHEDULER_CONTROL->pipeline_num = 1; // Belongs to pipeline
HTS->HWA1_WDTIMER->watchdog_timer_en = 0; //Activate WD
HTS->HWA1_HOP->hop = 0;
HTS->HWA1_BW_LIMITER->BW_limiter_en = 0;
// HWA0 consumer and producer control
HTS->HWA1_CONS0_CONTROL->cons_en = 1; // Enable RFGW Fetch
HTS->HWA1_CONS1_CONTROL->cons_en = 1; // Enable CFGW Fetch
HTS->HWA1_CONS0_CONTROL->prod_select = 0;
HTS->HWA1_CONS1_CONTROL->prod_select = 0;
HTS->HWA1_PROD0_CONTROL->prod_en = 1; // Enable Producer socket
HTS->HWA1_PROD0_CONTROL->cons_select = 0; // Fixed to DMA
HTS->HWA1_PROD0_BUF_CONTROL->depth = 2;
HTS->HWA1_PROD0_BUF_CONTROL->threshold = 1;
HTS->HWA1_PROD0_BUF_CONTROL->count_dec = 1;
HTS->HWA1_PROD0_COUNT->count_preload = 0;
HTS->HWA1_PROD0_COUNT->count_postload = 0;
// Flow vector output
HTS->DMA256_SCHEDULER_CONTROL->sch_en = 1; // scheduler enable
HTS->DMA256_SCHEDULER_CONTROL->pipeline_num = 0; // Belongs to pipeline 0
HTS->DMA256_SCHEDULER_CONTROL->dma_channel_no = 8; // Assign appropriate DMA channel
HTS->DMA256_CONS0_CONTROL->cons_en = 1;
HTS->DMA256_CONS0_CONTROL->prod_select = 0;
// Enable Pipeline
HTS->PIPELINE_CONTROL_1->pipe_en = 1; // Enable DOF pipeline# 1