交织基数为M,交织深度为I的卷积交织/解交织程序,延时为I*(I-1)*M.
1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <cstdint> 5 6 using namespace std; 7 8 vector<uint8_t> interleaving(vector<uint8_t> &sym_din, size_t M, size_t I) 9 { 10 list<uint8_t> sym_fifo[I]; 11 vector<uint8_t> sym_itlv; 12 13 // Initialize Data FiFo 14 for(size_t i = 0; i < I; ++i) { 15 for(size_t j = 0; j < M*i; ++j) 16 sym_fifo[i].push_back(uint8_t(0)); 17 } 18 19 // Interleaving 20 for(size_t i = 0; i < sym_din.size(); ++i) { 21 sym_fifo[size_t(i%I)].push_back(sym_din[i]); 22 sym_itlv.push_back(sym_fifo[i%I].front()); 23 sym_fifo[i%I].pop_front(); 24 } 25 26 return