28.14.3.2. Descriptor Fields Definition
Read and Write Address Fields
The read and write address fields correspond to the source and destination address for each buffer transfer. Depending on the transfer type, you do not need to provide the read or write address. When performing memory-mapped to streaming transfers, the write address must not be written as there is no destination address. There is no destination address since the data is being transferred to a streaming port. Likewise, when performing streaming to memory-mapped transfers, the read address must not be written as the data source is a streaming port.
If a read or write address descriptor is written in a configuration that does not require it, the mSGDMA ignores the unnecessary address. If a standard descriptor is used and an attempt to write a 64-bit address is made, the upper 32 bits are lost and can cause the hardware to alias a lower address space. 64-bit addressing requires the use of the extended descriptor format.
Length Field
The length field is used to specify the number of bytes to transfer per descriptor. The length field is also used for streaming to memory-mapped packet transfers. This limits the number of bytes that can be transferred before the end-of-packet (EOP) arrives. As a result, you must always program the length field. If you do not wish to limit packet-based transfers in the case of Avalon® -ST to Avalon® -MM transfers, program the length field with the largest possible value of 0xFFFF_FFFF. This method allows you to specify a maximum packet size for each descriptor that has packet support enabled.
Sequence Number Field
The sequence number field is available only when using extended descriptors. The sequence number is an arbitrary value that you assign to a descriptor, so that you can determine which descriptor is being operated on by the read and write hosts. When performing memory-mapped to memory-mapped transfers, this value is tracked independently for hosts since each can be operating on a different descriptor. To use this functionality, program the descriptors with unique sequence numbers. Then, access the dispatcher CSR agent port to determine which descriptor is operated on.
Read and Write Burst Count Fields
The programmable read and write burst counts are only available when using the extended descriptor format and with Programmable Burst Enable parameter enabled in mSGDMA Read Master IP and Write Master IP. The programmable burst count is optional and can be disabled in the read and write hosts. Because the programmable burst count is an 8-bit field for each host, the maximum that you can program burst counts of 1 to 128, with a power of 2.
The maximum programmable burst count is 128, even when you instantiate the mSGDMA Read Master IP and Write Master IP with Maximum Burst Count parameter to different selections up to 1024. Programing to 0 or burst count greater than the parameter value of Maximum Burst Count, gets the maximum burst count from the Maximum Burst Count parameter selected during instantiation time. Refer to the Maximum Burst Count parameter of mSGDMA Read Master IP and Write Master IP.
Programmable burst counts are only recommended for modular SGDMA transfers between slave ports that specify different maximum burst counts. For example if the modular SGDMA is used to transfer data to slave ports that specify maximum burst counts of 2, 64, and 128, you would set the maximum burst count to 128 and program the burst counts of 2, 64, and 128 for the transfers to each slave port. Since burst transfers lock the arbitration posting large bursts to slave ports that can’t handle large bursts may not be beneficial which the programmable burst count serves to address. To learn more about bursting and the arbitration logic created by SOPC Builder, refer to the Avalon® -MM Design Optimizations Guide.
Read and Write Stride Fields
The read and write stride fields are optional and only available when using the extended descriptor format with Stride Addressing Enable parameter enabled in mSGDMA Read Master IP and Write Master IP. The stride value determines how the read and write hosts increment the address when accessing memory. The stride value is in terms of words, so the address incrementing is dependent on the host data width.
When stride is enabled, the host defaults to sequential accesses, which is the equivalent to a stride distance of one. A stride of zero instructs the host to continuously access the same address. A stride of two instructs the host to skip every other word in a sequential transfer. You can use this feature to perform interleaved data accesses, or to perform a frame buffer row and column transpose. The read and write stride distances are stored independently, allowing you to use different address incrementing for read and write accesses in memory-to-memory transfers. For example, to perform a 2:1 data decimation transfer, you would simply configure the read host for a stride distance of two and the write host for a stride distance of one. To complete the decimation operation, you could also insert a filter between the two hosts.
Control Field
The control field is available for both the standard and extended descriptor formats. This field can be programmed to configure parked descriptors, error handling, and interrupt masks. The interrupt masks are programmed into the descriptor so that interrupt enables are unique for each transfer.
| Bit | Sub-Field Name | Definition |
|---|---|---|
| 31 | Go | Commits all the descriptor information into the descriptor FIFO. As the host writes different fields in the descriptor, FIFO byte enables are asserted to transfer the write data to appropriate byte locations in the FIFO. However, the data written is not committed until the go bit has been written. As a result, ensure that the go bit is the last bit written for each descriptor.
Note: Writing '1' to the go bit commits the entire descriptor into the descriptor FIFO(s).
|
| 30:26 | <reserved> | Reserved |
| 25 | Wait for write responses | When set, on completion of the DMA transfer, the host is only notified when all the outstanding writes have been responded. Those outstanding writes include writes transfer initiated by previous descriptor. This field is valid only when Enable Write Response parameter is set. Enabling this bit resulted in longer time for write response host to move into the next descriptor. Therefore, it is recommended to set this field on the last descriptor of the transfer.
Note: This field is applicable only for Avalon® -MM to Avalon® -MM or Avalon® -ST to Avalon® -MM transfer.
|
| 24 | Early done enable | Hides the latency between read descriptors. When the read host is set, it does not wait for pending reads to return before requesting another descriptor. Typically this bit is set for all descriptors except the last one. This bit is most effective for hiding high read latency. For example, it reads from SDRAM, PCIe, and SRIO.
Note: This field is applicable only for Avalon® -MM to Avalon® -MM or Avalon® -MM to Avalon® -ST transfer.
Note: Early done enable cannot be used for unaligned data or when packet support is enabled.
|
| 23:16 | Transmit Error / Error IRQ Enable | For for Avalon® -MM to Avalon® -ST transfers, this field is used to specify a transmit error. This field is commonly used for transmitting error information downstream to streaming components, such as an Ethernet MAC. In this mode, these control bits control the error bits on the streaming output of the read host. For Avalon® -ST to Avalon® -MM transfers, this field is used as an error interrupt mask. As errors arrive at the write host streaming sink port, they are held persistently. When the transfer completes, if any error bits were set at any time during the transfer and the error interrupt mask bits are set, then the host receives an interrupt. In this mode, these control bits are used as an error encountered interrupt enable.
Note: This field is not applicable only for Avalon® -MM to Avalon® -MM transfer.
Note: This field is applicable only when Error Enable parameter is enabled.
|
| 15 | Early Termination IRQ Enable | Signals an interrupt to the host when a Avalon® -ST to Avalon® -MM transfer completes early. For example, if you set this bit and set the length field to 1MB for Avalon® -ST to Avalon® -MM transfers, this interrupt asserts when more than 1MB of data arrives to the write host without the end of packet being seen. |
| 14 | Transfer Complete IRQ Enable | Signals an interrupt to the host when a transfer completes. In the case of Avalon® -MM to Avalon® -ST transfers, this interrupt is based on the read host completing a transfer. In the case of Avalon® -ST to Avalon® -MM or Avalon® -MM to Avalon® -MM transfers, this interrupt is based on the write host completing a transfer. |
| 13 | <reserved> | Reserved |
| 12 | End on EOP | End on end of packet allows the write host to continuously transfer data during Avalon® -ST to Avalon® -MM transfers without knowing how much data is arriving ahead of time. This bit is commonly set for packet-based traffic such as Ethernet. |
| 11 | Park Writes | When set, the dispatcher continues to reissue the same descriptor to the write host when no other descriptors are buffered.
Note: This field is applicable only for Avalon® -MM to Avalon® -MM or Avalon® -ST to Avalon® -MM transfer.
|
| 10 | Park Reads | When set, the dispatcher continues to reissue the same descriptor to the read host when no other descriptors are buffered. This is commonly used for video frame buffering.
Note: This field is applicable only for Avalon® -MM to Avalon® -MM or Avalon® -MM to Avalon® -ST transfer.
|
| 9 | Generate EOP | Emits an end of packet on last beat of a Avalon® -MM to Avlaon-ST transfer.
Note: Applicable only when Packet Support Enable parameter is enabled.
|
| 8 | Generate SOP | Emits a start of packet on the first beat of a Avalon® -MM to Avalon® -ST transfer.
Note: Applicable only when Packet Support Enable parameter is enabled.
|
| 7:0 | Transmit Channel | Emits a channel number during Avalon® -MM to Avalon® -ST transfers.
Note: Applicable only when Channel Enable parameter is enabled.
|