SPRUJ28E November 2021 – September 2024 AM68 , AM68A , TDA4AL-Q1 , TDA4VE-Q1 , TDA4VL-Q1
Figure 4-7 shows the DRU functional diagram.
The DRU receives commands to transfer data from one location to another called Transfer Requests (TRs) or to send messages to CPUs or MMUs to pre-warm logic called Cache Requests (CRs). The DRU can receive these commands through the following mechanisms:
The previously described mechanisms of receiving TRs and CRs are also referred to as TR submission (see, Section 10.4.3.1.3). In other words, the DRU memory-to-memory transfers work by receiving TR or CR through TR submission. Then the corresponding request (TR or CR) is placed in a queue to be processed.
Once the TR has been received the Channel Trigger Control block detects if the triggers specified in the TR have been received. If the trigger is not specified (value of 0x0 in the TRIGGER0 or TRIGGER1 fields of the TR FLAGS field), the treatment is as it is always received. Once received the channel is considered active. All active channels are involved in arbitration process for using the subtiler. The channel arbitration is based on the channel queue. There are queues using a fixed priority arbitration - the lowest channel has the highest priority. There are also round robin queues that use the same algorithm as in the fixed priority queue arbitration (lowest channel - highest priority) but on a round robin basis.
The subtiler takes the winning channel (that is, channel with highest priority) and generates the next 1D or 2D transfer (called also sub-TR) based on the trigger size, transfer type and event size specified in the TR. Then the subtiler places that sub-TR into the queue specified for the channel. Once the sub-TR is generated an event control is notified and any active triggers are cleared if the sub-TR crosses the boundary of one of the triggers. For example, if a TR has a trigger size for a 3D block and the ICNT2 value is 16, then the active triggers are cleared after 16 sub-TRs are sent to the queue. ICNT2 can be specified through one of the following:
Upon reaching the top of the queue the TR is processed. Based on the information in the TR a read of the specified location and size is performed followed by writing the data to the specified destination. Upon sending the last write of the entire TR loop a completion event is generated. The completion event output also places a TR response in the PSI-L response FIFO in case of UDMA-C TR. For information about the TR response format, see Transfer Response Record in DMA Architecture.
The channel is an independent data flow that can be given requests for data movement. Each channel operates independently of the others but they all share common resources.
The queue is a shared unit between several channels. It holds the order of the channel data movement requests until the shared data engine can perform the actual data move. A channel is assigned a queue where its data movement requests are placed.
The CHRT_SWTRIG register can only be accessed directly through the DRU configuration interface and is used if software wants to control the triggers for the TR.
Figure 10-51 shows the interaction between software and hardware to setup DRU, submit TRs and then release the channel to be used by a different resource. Section 10.4.3.1.1 through Section 10.4.3.1.5 explain in more detail what occurs in each process or decision.