23 #ifndef _CONVOLUTIONAL_INTERLEAVER_H_
24 #define _CONVOLUTIONAL_INTERLEAVER_H_
34 template<
class symbol_type>
60 void transform (symbol_type *out,
const symbol_type *in,
int nsymbols);
66 std::vector<interleaver_fifo<symbol_type> *>
m_fifo;
69 template<
class symbol_type>
76 assert (fifo_size_incr >= 1);
79 m_fifo_size_incr = fifo_size_incr;
81 m_fifo.resize (nbanks);
84 for (
int i = 0; i < nbanks; i++)
88 for (
int i = 0; i < nbanks; i++)
94 template<
class symbol_type>
97 for (
int i = 0; i < m_nbanks; i++)
101 template<
class symbol_type>
void
105 for (
int i = 0; i < m_nbanks; i++)
109 template<
class symbol_type>
int
112 int m = m_nbanks * m_fifo_size_incr;
113 return m * (m_nbanks - 1);
116 template<
class symbol_type>
void
118 const symbol_type *in,
122 for (
int i = 0; i < nsymbols; i++)
123 out[i] = transform (in[i]);
int end_to_end_delay()
return end to end delay in symbols (delay through concatenated interleaver / deinterleaver) ...
Definition: convolutional_interleaver.h:110
template class for generic convolutional interleaver
Definition: convolutional_interleaver.h:35
int m_nbanks
Definition: convolutional_interleaver.h:64
template class for interleaver fifo
Definition: interleaver_fifo.h:35
#define retval
Definition: gc_spu_macs.h:170
void reset()
reset interleaver (flushes contents and resets commutator)
Definition: convolutional_interleaver.h:102
void sync()
sync interleaver (resets commutator, but doesn't flush fifos)
Definition: convolutional_interleaver.h:45
int m_fifo_size_incr
Definition: convolutional_interleaver.h:65
int m_commutator
Definition: convolutional_interleaver.h:63
convolutional_interleaver(bool interleave_p, int nbanks, int fifo_size_incr)
Definition: convolutional_interleaver.h:70
symbol_type transform(symbol_type input)
transform a single symbol
Definition: convolutional_interleaver.h:51
virtual ~convolutional_interleaver()
Definition: convolutional_interleaver.h:95
std::vector< interleaver_fifo< symbol_type > * > m_fifo
Definition: convolutional_interleaver.h:66