[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Discuss-gnuradio] IT++ Convolutional encoder
From: |
Viktor Ivan Rodriguez Abdala |
Subject: |
[Discuss-gnuradio] IT++ Convolutional encoder |
Date: |
Tue, 28 Aug 2012 14:08:02 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120714 Thunderbird/14.0 |
I have the next code working, in the firsts seconds I have erroneous
bits, after 10 seconds I don't have any error... another thing if I put
Max Number of Output = 0 always have a ber of 40%...
Umbrella_encodconv_vff::Umbrella_encodconv_vff (const std::vector<int>
&val1, int val2, int val3)
: gr_sync_block ("encodconv_vff",
gr_make_io_signature (1, 1, sizeof (float) * val3),
gr_make_io_signature (1, 1, sizeof (float) * val3 * val1.size()))
{
polsize = val1.size();
cl = val2;
pz = val3;
for (int i = 0; i < 0x100; i++){
polynom[i] = i;
}
unsigned int size = std::min((size_t) 0x100, val1.size());
for (unsigned int i = 0; i < size; i++){
polynom[i] = val1[i];
}
// -- Channel code parameters --
itpp::ivec generator(polsize);
for (int i = 0; i < polsize; i++){
generator[i] = polynom[i];
}
code.set_generator_polynomials(generator, cl);
}
int
Umbrella_encodconv_vff::work (int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
const float *in = (const float *) input_items[0];
float *out = (float *) output_items[0];
itpp::bvec tempin(pz * sizeof(float));
itpp::bvec tempout(pz * polsize * sizeof(float));
for (int j = 0; j < (pz * sizeof(float)); j++){
tempin[j] = in[j];
}
code.encode_tailbite(tempin, tempout);
for (int k = 0; k < (pz * polsize * sizeof(float)); k++){
out[k] = tempout[k];
}
// Tell runtime system how many output items we produced.
return noutput_items;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Discuss-gnuradio] IT++ Convolutional encoder,
Viktor Ivan Rodriguez Abdala <=