Changes between Version 7 and Version 8 of Component/Vci Chbuf Dma
- Timestamp:
- Nov 17, 2016, 3:10:46 PM (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Component/Vci Chbuf Dma
v7 v8 6 6 7 7 This component is a multi-channels DMA controller supporting chained buffers. 8 It can be used to move a data stream (such as packets or video) from one set of chained buffers (SRC chbuf)9 to another set of chained buffers (DST chbuf), with out involving software.8 It can be used to move a data streams (such as network packets or video stream) from one set of chained buffers (SRC chbuf) 9 to another set of chained buffers (DST chbuf), with minimal software activity. 10 10 11 11 All buffers must have the same length, and must be aligned on a 32 bits word boundary. 12 12 The buffer length must be the same for the SRC chbuf and for the DST chbuf. 13 13 14 The state of each buffer must be defined in a variable called '''status'''. Each “status” occupies 64 bytes, but only the lastbit is useful (1 if the buffer is full, 0 if it is empty). A buffer and its status physical addresses must be 64 bytes aligned and must have the same extension (identical bits[43:32]).14 The state of each buffer must be defined in a variable called '''status'''. Each “status” occupies 64 bytes, but only the LSB bit is useful (1 if the buffer is full, 0 if it is empty). A buffer and its status physical addresses must be 64 bytes aligned and must have the same extension (identical bits[43:32]). 15 15 16 16 A '''chbuf descriptor''' is a circular array of '''buffer descriptors'''. Each buffer descriptor occupies 64 bits: … … 24 24 * '''OUT_OF_ORDER''': The SRC and DST chbuf descriptors and status are scanned with a round robin priority. The first full SRC buffer found is read, and the first empty DST buffer found is written. This mode is activated when the CHBUF_PERIOD value is zero (default value). 25 25 26 A long as no error is reported, each channel FSM does not stop moving buffers, until it is reset by software. 27 28 There is one IRQ per channel, that is activated each time a buffer has been sucessfully moved from source chbuf to destination chbuf, or when 29 an address error has been reported. This IRQ is acknowledged by a read command to the channel status register. 30 26 31 This component supports both 32 bits and 64 bits VCI RDATA & WDATA fields, and supports VCI addresses up to 64 bits. 27 32 In order to support multiple simultaneous transactions, the channel index is transmitted in the VCI TRDID field. … … 34 39 * The number of pipelined bursts cannot be larger than 4 (default parameter). 35 40 36 The total storage capacity for transferred data is channels * pipelined_bursts * burst_max_length.41 The total internal storage capacity for transferred data is (channels * pipelined_bursts * burst_max_length) bytes. 37 42 38 43 Each channel [k] has 10 memory-mapped 32 bits registers: … … 48 53 * CHBUF_DST_EXT[k] (read/write) : DST chbuf descriptor 32 MSB bits physical address 49 54 For extensibility issues, you should access the DMA using globally-defined offsets, and you should include file `soclib/chbuf_dma.h` in your software. 50 In order to support v arious protection mechanisms, for each channel, the channel addressable registers takes 4K bytes in the address space.55 In order to support virtualisation mechanisms, for each channel, the channel addressable registers takes 4K bytes in the address space. 51 56 The following address bits are decoded . 52 57 * The 5 bits ADDRESS[4:0] define the target register.