23 #ifndef _CONVOLUTIONAL_INTERLEAVER_H_
24 #define _CONVOLUTIONAL_INTERLEAVER_H_
34 template <
class symbol_type>
62 void transform(symbol_type* out,
const symbol_type* in,
int nsymbols);
68 std::vector<interleaver_fifo<symbol_type>*>
m_fifo;
71 template <
class symbol_type>
77 assert(fifo_size_incr >= 1);
80 m_fifo_size_incr = fifo_size_incr;
82 m_fifo.resize(nbanks);
85 for (
int i = 0; i < nbanks; i++)
88 for (
int i = 0; i < nbanks; i++)
89 m_fifo[nbanks - 1 - i] =
95 template <
class symbol_type>
98 for (
int i = 0; i < m_nbanks; i++)
102 template <
class symbol_type>
106 for (
int i = 0; i < m_nbanks; i++)
110 template <
class symbol_type>
113 int m = m_nbanks * m_fifo_size_incr;
114 return m * (m_nbanks - 1);
117 template <
class symbol_type>
119 const symbol_type* in,
123 for (
int i = 0; i < nsymbols; i++)
124 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:111
template class for generic convolutional interleaver
Definition: convolutional_interleaver.h:35
int m_nbanks
Definition: convolutional_interleaver.h:66
template class for interleaver fifo
Definition: interleaver_fifo.h:35
void reset()
reset interleaver (flushes contents and resets commutator)
Definition: convolutional_interleaver.h:103
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:67
int m_commutator
Definition: convolutional_interleaver.h:65
convolutional_interleaver(bool interleave_p, int nbanks, int fifo_size_incr)
Definition: convolutional_interleaver.h:72
symbol_type transform(symbol_type input)
transform a single symbol
Definition: convolutional_interleaver.h:52
virtual ~convolutional_interleaver()
Definition: convolutional_interleaver.h:96
std::vector< interleaver_fifo< symbol_type > * > m_fifo
Definition: convolutional_interleaver.h:68