diff --git a/doc/casestudies.rst b/doc/casestudies.rst index 77e982743..c82a5a04d 100644 --- a/doc/casestudies.rst +++ b/doc/casestudies.rst @@ -41,9 +41,7 @@ Pixel fetcher The pixel fetcher is made up of the address generator, the ASMI reader and the unpacker. -TODO: IntSequence doc - -The address generator is a simple counter that takes one token containing the pair ``(base, length)`` and generates ``length`` tokens containing ``base``, ..., ``base+length-1``. +The address generator is a simple counter that takes one token containing the pair ``(base, length)`` and generates ``length`` tokens containing ``base``, ..., ``base+length-1``. It is implemented using a Migen library component (see :ref:`intsequence`). Those addresses are fed into the ASMI reader (see :ref:`busactors`) that fetches the corresponding locations from the system memory. The ASMI reader design supports an arbitrary number of outstanding requests (which is equal to the number of slots in its ASMI port), which enables it to sustain a high throughput in spite of memory latency. The ASMI reader also contains a reorder buffer and generates memory word tokens in the order of the supplied address tokens, even if the memory system completes the transactions in a different order (see see :ref:`asmi` for information about reordering). These features make it possible to utilize the available memory bandwidth to the full extent, and reduce the need for on-chip buffering. diff --git a/doc/dataflow.rst b/doc/dataflow.rst index 636ab54e9..9e6b01b68 100644 --- a/doc/dataflow.rst +++ b/doc/dataflow.rst @@ -227,6 +227,26 @@ ASMI writer TODO +Miscellaneous actors +==================== + +.. _intsequence: + +Integer sequence generator +-------------------------- + +The integer sequence generator either: + +* takes a token containing a maximum value N and generates N tokens containing the numbers 0 to N-1. +* takes a token containing a number of values N and a offset O and generates N-O tokens containing the numbers O to O+N-1. + +The actor instantiation takes several parameters: + +* the number of bits needed to represent the maximum number of generated values. +* the number of bits needed to represent the maximum offset. When this value is 0 (default), then offsets are not supported and the sequence generator accepts tokens which contain the maximum value alone. + +The integer sequence generator can be used in combination with bus actors to generate addresses and read contiguous blocks of system memory (see :ref:`busactors`). + .. _actornetworks: Actor networks