Closed brahmi152 closed 4 years ago
dvbs2rate.c is just a command line utility to determine the correct Transport Stream rate for a specific DVB-S2 configuration and symbol rate. Why would you want it in an FPGA?
We want use this code as a testing purpose in FPGA.
Okay, give this a try. It still uses printf() and ceil(), so I'm not sure it will compile.
/* DVB-S2 useful bitrate */
#include <stdio.h>
#include <math.h>
#define TRUE 1
#define FALSE 0
double rate_qpsk[11][4] = {{1.0, 4.0, 12.0, 2}, {1.0, 3.0, 12.0, 2}, {2.0, 5.0, 12.0, 2}, {1.0, 2.0, 12.0, 2}, {3.0, 5.0, 12.0, 2}, {2.0, 3.0, 10.0, 2}, {3.0, 4.0, 12.0, 2}, {4.0, 5.0, 12.0, 2}, {5.0, 6.0, 10.0, 2}, {8.0, 9.0, 8.0, 2}, {9.0, 10.0, 8.0, 1}};
double rate_8psk[6][4] = {{3.0, 5.0, 12.0, 2}, {2.0, 3.0, 10.0, 2}, {3.0, 4.0, 12.0, 2}, {5.0, 6.0, 10.0, 2}, {8.0, 9.0, 8.0, 2}, {9.0, 10.0, 8.0, 1}};
double rate_16apsk[6][4] = {{2.0, 3.0, 10.0, 2}, {3.0, 4.0, 12.0, 2}, {4.0, 5.0, 12.0, 2}, {5.0, 6.0, 10.0, 2}, {8.0, 9.0, 8.0, 2}, {9.0, 10.0, 8.0, 1}};
double rate_32apsk[5][4] = {{3.0, 4.0, 12.0, 2}, {4.0, 5.0, 12.0, 2}, {5.0, 6.0, 10.0, 2}, {8.0, 9.0, 8.0, 2}, {9.0, 10.0, 8.0, 1}};
double rate_qpsk_short[10][6] = {{1.0, 4.0, 12.0, 2, 1.0, 5.0}, {1.0, 3.0, 12.0, 2, 1.0, 3.0}, {2.0, 5.0, 12.0, 2, 2.0, 5.0}, {1.0, 2.0, 12.0, 2, 4.0, 9.0}, {3.0, 5.0, 12.0, 2, 3.0, 5.0}, {2.0, 3.0, 12.0, 2, 2.0, 3.0}, {3.0, 4.0, 12.0, 2, 11.0, 15.0}, {4.0, 5.0, 12.0, 2, 7.0, 9.0}, {5.0, 6.0, 12.0, 2, 37.0, 45.0}, {8.0, 9.0, 12.0, 2, 8.0, 9.0}};
double rate_8psk_short[5][6] = {{3.0, 5.0, 12.0, 2, 3.0, 5.0}, {2.0, 3.0, 12.0, 2, 2.0, 3.0}, {3.0, 4.0, 12.0, 2, 11.0, 15.0}, {5.0, 6.0, 12.0, 2, 37.0, 45.0}, {8.0, 9.0, 12.0, 2, 8.0, 9.0}};
double rate_16apsk_short[5][6] = {{2.0, 3.0, 12.0, 2, 2.0, 3.0}, {3.0, 4.0, 12.0, 2, 11.0, 15.0}, {4.0, 5.0, 12.0, 2, 7.0, 9.0}, {5.0, 6.0, 12.0, 2, 37.0, 45.0}, {8.0, 9.0, 12.0, 2, 8.0, 9.0}};
double rate_32apsk_short[4][6] = {{3.0, 4.0, 12.0, 2, 11.0, 15.0}, {4.0, 5.0, 12.0, 2, 7.0, 9.0}, {5.0, 6.0, 12.0, 2, 37.0, 45.0}, {8.0, 9.0, 12.0, 2, 8.0, 9.0}};
double rate_qpskx[3][4] = {{13.0, 45.0, 12.0, 3}, {9.0, 20.0, 12.0, 4}, {11.0, 20.0, 12.0, 3}};
double rate_8apsk[2][4] = {{100.0, 180.0, 12.0, 1}, {104.0, 180.0, 12.0, 1}};
double rate_8pskx[3][4] = {{23.0, 36.0, 12.0, 3}, {25.0, 36.0, 12.0, 3}, {13.0, 18.0, 12.0, 3}};
double rate_16apskx[8][4] = {{26.0, 45.0, 12.0, 3}, {3.0, 5.0, 12.0, 5}, {28.0, 45.0, 12.0, 3}, {23.0, 36.0, 12.0, 3}, {25.0, 36.0, 12.0, 3}, {13.0, 18.0, 12.0, 3}, {140.0, 180.0, 12.0, 1}, {154.0, 180.0, 12.0, 1}};
double rate_8_8apsk[5][4] = {{90.0, 180.0, 12.0, 2}, {96.0, 180.0, 12.0, 2}, {100.0, 180.0, 12.0, 1}, {18.0, 30.0, 12.0, 3}, {20.0, 30.0, 12.0, 3}};
double rate_32_16rbapsk[1][4] = {{2.0, 3.0, 12.0, 5}};
double rate_32_16apsk[3][4] = {{128.0, 180.0, 12.0, 1}, {132.0, 180.0, 12.0, 1}, {140.0, 180.0, 12.0, 1}};
double rate_64apsk[1][4] = {{128.0, 180.0, 12.0, 1}};
double rate_64_28apsk[1][4] = {{132.0, 180.0, 12.0, 1}};
double rate_64_20apsk[3][4] = {{7.0, 9.0, 12.0, 5}, {4.0, 5.0, 12.0, 5}, {5.0, 6.0, 12.0, 5}};
double rate_128apsk[2][4] = {{135.0, 180.0, 12.0, 1}, {140.0, 180.0, 12.0, 1}};
double rate_256apsk[6][4] = {{20.0, 30.0, 12.0, 3}, {22.0, 30.0, 12.0, 3}, {116.0, 180.0, 12.0, 1}, {124.0, 180.0, 12.0, 1}, {128.0, 180.0, 12.0, 1}, {135.0, 180.0, 12.0, 1}};
double rate_qpskx_short[6][4] = {{11.0, 45.0, 12.0, 3}, {4.0, 15.0, 12.0, 4}, {14.0, 45.0, 12.0, 3}, {7.0, 15.0, 12.0, 4}, {8.0, 15.0, 12.0, 4}, {32.0, 45.0, 12.0, 3}};
double rate_8pskx_short[4][4] = {{7.0, 15.0, 12.0, 4}, {8.0, 15.0, 12.0, 4}, {26.0, 45.0, 12.0, 3}, {32.0, 45.0, 12.0, 3}};
double rate_16apskx_short[5][4] = {{7.0, 15.0, 12.0, 4}, {8.0, 15.0, 12.0, 4}, {26.0, 45.0, 12.0, 3}, {3.0, 5.0, 12.0, 5}, {32.0, 45.0, 12.0, 3}};
double rate_32_16rbapsk_short[2][4] = {{2.0, 3.0, 12.0, 5}, {32.0, 45.0, 12.0, 3}};
double calc(double symbols, double mod, double num, double den, double bch, double pilots)
{
double fec_frame = 64800.0;
double tsrate;
tsrate = symbols / (fec_frame / mod + 90 + ceil((fec_frame/ mod / 90 / 16 - 1)) * pilots) * (fec_frame * (num / den) - (16 * bch) - 80);
return (tsrate);
}
double calc_short(double symbols, double mod, double num, double den, double bch, double pilots)
{
double fec_frame = 16200.0;
double tsrate;
tsrate = symbols / (fec_frame / mod + 90 + ceil((fec_frame/ mod / 90 / 16 - 1)) * pilots) * (fec_frame * (num / den) - (16 * bch) - 80);
return (tsrate);
}
void dump(double rate, double num, double den, double bch, double spaces)
{
int i;
char s[10];
for (i = 0; i < (int)spaces; i++)
{
s[i] = 0x20;
}
s[i] = 0x0;
printf("coderate = %d/%d,%sBCH rate = %2d, ts rate = %f\n", (int)num, (int)den, s, (int)bch, rate);
}
void main(void)
{
int i;
int short_frame = FALSE;
int dvb_s2x = FALSE;
double rate;
double symbol_rate = 27500000.0;
double q;
if (dvb_s2x == FALSE)
{
if (short_frame == FALSE)
{
printf("DVB-S2 normal FECFRAME\n");
q = 2.0;
printf("QPSK, pilots off\n");
for (i = 0; i < 11; i++)
{
rate = calc(symbol_rate, q, rate_qpsk[i][0], rate_qpsk[i][1], rate_qpsk[i][2], 0.0);
dump(rate, rate_qpsk[i][0], rate_qpsk[i][1], rate_qpsk[i][2], rate_qpsk[i][3]);
}
printf("QPSK, pilots on\n");
for (i = 0; i < 11; i++)
{
rate = calc(symbol_rate, q, rate_qpsk[i][0], rate_qpsk[i][1], rate_qpsk[i][2], 36.0);
dump(rate, rate_qpsk[i][0], rate_qpsk[i][1], rate_qpsk[i][2], rate_qpsk[i][3]);
}
q = 3.0;
printf("8PSK, pilots off\n");
for (i = 0; i < 6; i++)
{
rate = calc(symbol_rate, q, rate_8psk[i][0], rate_8psk[i][1], rate_8psk[i][2], 0.0);
dump(rate, rate_8psk[i][0], rate_8psk[i][1], rate_8psk[i][2], rate_8psk[i][3]);
}
printf("8PSK, pilots on\n");
for (i = 0; i < 6; i++)
{
rate = calc(symbol_rate, q, rate_8psk[i][0], rate_8psk[i][1], rate_8psk[i][2], 36.0);
dump(rate, rate_8psk[i][0], rate_8psk[i][1], rate_8psk[i][2], rate_8psk[i][3]);
}
q = 4.0;
printf("16APSK, pilots off\n");
for (i = 0; i < 6; i++)
{
rate = calc(symbol_rate, q, rate_16apsk[i][0], rate_16apsk[i][1], rate_16apsk[i][2], 0.0);
dump(rate, rate_16apsk[i][0], rate_16apsk[i][1], rate_16apsk[i][2], rate_16apsk[i][3]);
}
printf("16APSK, pilots on\n");
for (i = 0; i < 6; i++)
{
rate = calc(symbol_rate, q, rate_16apsk[i][0], rate_16apsk[i][1], rate_16apsk[i][2], 36.0);
dump(rate, rate_16apsk[i][0], rate_16apsk[i][1], rate_16apsk[i][2], rate_16apsk[i][3]);
}
q = 5.0;
printf("32APSK, pilots off\n");
for (i = 0; i < 5; i++)
{
rate = calc(symbol_rate, q, rate_32apsk[i][0], rate_32apsk[i][1], rate_32apsk[i][2], 0.0);
dump(rate, rate_32apsk[i][0], rate_32apsk[i][1], rate_32apsk[i][2], rate_32apsk[i][3]);
}
printf("32APSK, pilots on\n");
for (i = 0; i < 5; i++)
{
rate = calc(symbol_rate, q, rate_32apsk[i][0], rate_32apsk[i][1], rate_32apsk[i][2], 36.0);
dump(rate, rate_32apsk[i][0], rate_32apsk[i][1], rate_32apsk[i][2], rate_32apsk[i][3]);
}
}
else
{
printf("DVB-S2 short FECFRAME\n");
q = 2.0;
printf("QPSK, pilots off\n");
for (i = 0; i < 10; i++)
{
rate = calc_short(symbol_rate, q, rate_qpsk_short[i][4], rate_qpsk_short[i][5], rate_qpsk_short[i][2], 0.0);
dump(rate, rate_qpsk_short[i][0], rate_qpsk_short[i][1], rate_qpsk_short[i][2], rate_qpsk_short[i][3]);
}
printf("QPSK, pilots on\n");
for (i = 0; i < 10; i++)
{
rate = calc_short(symbol_rate, q, rate_qpsk_short[i][4], rate_qpsk_short[i][5], rate_qpsk_short[i][2], 36.0);
dump(rate, rate_qpsk_short[i][0], rate_qpsk_short[i][1], rate_qpsk_short[i][2], rate_qpsk_short[i][3]);
}
q = 3.0;
printf("8PSK, pilots off\n");
for (i = 0; i < 5; i++)
{
rate = calc_short(symbol_rate, q, rate_8psk_short[i][4], rate_8psk_short[i][5], rate_8psk_short[i][2], 0.0);
dump(rate, rate_8psk_short[i][0], rate_8psk_short[i][1], rate_8psk_short[i][2], rate_8psk_short[i][3]);
}
printf("8PSK, pilots on\n");
for (i = 0; i < 5; i++)
{
rate = calc_short(symbol_rate, q, rate_8psk_short[i][4], rate_8psk_short[i][5], rate_8psk_short[i][2], 36.0);
dump(rate, rate_8psk_short[i][0], rate_8psk_short[i][1], rate_8psk_short[i][2], rate_8psk_short[i][3]);
}
q = 4.0;
printf("16APSK, pilots off\n");
for (i = 0; i < 5; i++)
{
rate = calc_short(symbol_rate, q, rate_16apsk_short[i][4], rate_16apsk_short[i][5], rate_16apsk_short[i][2], 0.0);
dump(rate, rate_16apsk_short[i][0], rate_16apsk_short[i][1], rate_16apsk_short[i][2], rate_16apsk_short[i][3]);
}
printf("16APSK, pilots on\n");
for (i = 0; i < 5; i++)
{
rate = calc_short(symbol_rate, q, rate_16apsk_short[i][4], rate_16apsk_short[i][5], rate_16apsk_short[i][2], 36.0);
dump(rate, rate_16apsk_short[i][0], rate_16apsk_short[i][1], rate_16apsk_short[i][2], rate_16apsk_short[i][3]);
}
q = 5.0;
printf("32APSK, pilots off\n");
for (i = 0; i < 4; i++)
{
rate = calc_short(symbol_rate, q, rate_32apsk_short[i][4], rate_32apsk_short[i][5], rate_32apsk_short[i][2], 0.0);
dump(rate, rate_32apsk_short[i][0], rate_32apsk_short[i][1], rate_32apsk_short[i][2], rate_32apsk_short[i][3]);
}
printf("32APSK, pilots on\n");
for (i = 0; i < 4; i++)
{
rate = calc_short(symbol_rate, q, rate_32apsk_short[i][4], rate_32apsk_short[i][5], rate_32apsk_short[i][2], 36.0);
dump(rate, rate_32apsk_short[i][0], rate_32apsk_short[i][1], rate_32apsk_short[i][2], rate_32apsk_short[i][3]);
}
}
}
else
{
if (short_frame == FALSE)
{
printf("DVB-S2X normal FECFRAME\n");
q = 2.0;
printf("QPSK, pilots off\n");
for (i = 0; i < 3; i++)
{
rate = calc(symbol_rate, q, rate_qpskx[i][0], rate_qpskx[i][1], rate_qpskx[i][2], 0.0);
dump(rate, rate_qpskx[i][0], rate_qpskx[i][1], rate_qpskx[i][2], rate_qpskx[i][3]);
}
printf("QPSK, pilots on\n");
for (i = 0; i < 3; i++)
{
rate = calc(symbol_rate, q, rate_qpskx[i][0], rate_qpskx[i][1], rate_qpskx[i][2], 36.0);
dump(rate, rate_qpskx[i][0], rate_qpskx[i][1], rate_qpskx[i][2], rate_qpskx[i][3]);
}
q = 3.0;
printf("8APSK, pilots off\n");
for (i = 0; i < 2; i++)
{
rate = calc(symbol_rate, q, rate_8apsk[i][0], rate_8apsk[i][1], rate_8apsk[i][2], 0.0);
dump(rate, rate_8apsk[i][0], rate_8apsk[i][1], rate_8apsk[i][2], rate_8apsk[i][3]);
}
printf("8APSK, pilots on\n");
for (i = 0; i < 2; i++)
{
rate = calc(symbol_rate, q, rate_8apsk[i][0], rate_8apsk[i][1], rate_8apsk[i][2], 36.0);
dump(rate, rate_8apsk[i][0], rate_8apsk[i][1], rate_8apsk[i][2], rate_8apsk[i][3]);
}
q = 3.0;
printf("8PSK, pilots off\n");
for (i = 0; i < 3; i++)
{
rate = calc(symbol_rate, q, rate_8pskx[i][0], rate_8pskx[i][1], rate_8pskx[i][2], 0.0);
dump(rate, rate_8pskx[i][0], rate_8pskx[i][1], rate_8pskx[i][2], rate_8pskx[i][3]);
}
printf("8PSK, pilots on\n");
for (i = 0; i < 3; i++)
{
rate = calc(symbol_rate, q, rate_8pskx[i][0], rate_8pskx[i][1], rate_8pskx[i][2], 36.0);
dump(rate, rate_8pskx[i][0], rate_8pskx[i][1], rate_8pskx[i][2], rate_8pskx[i][3]);
}
q = 4.0;
printf("16APSK, pilots off\n");
for (i = 0; i < 8; i++)
{
rate = calc(symbol_rate, q, rate_16apskx[i][0], rate_16apskx[i][1], rate_16apskx[i][2], 0.0);
dump(rate, rate_16apskx[i][0], rate_16apskx[i][1], rate_16apskx[i][2], rate_16apskx[i][3]);
}
printf("16APSK, pilots on\n");
for (i = 0; i < 8; i++)
{
rate = calc(symbol_rate, q, rate_16apskx[i][0], rate_16apskx[i][1], rate_16apskx[i][2], 36.0);
dump(rate, rate_16apskx[i][0], rate_16apskx[i][1], rate_16apskx[i][2], rate_16apskx[i][3]);
}
q = 4.0;
printf("8+8APSK, pilots off\n");
for (i = 0; i < 5; i++)
{
rate = calc(symbol_rate, q, rate_8_8apsk[i][0], rate_8_8apsk[i][1], rate_8_8apsk[i][2], 0.0);
dump(rate, rate_8_8apsk[i][0], rate_8_8apsk[i][1], rate_8_8apsk[i][2], rate_8_8apsk[i][3]);
}
printf("8+8APSK, pilots on\n");
for (i = 0; i < 5; i++)
{
rate = calc(symbol_rate, q, rate_8_8apsk[i][0], rate_8_8apsk[i][1], rate_8_8apsk[i][2], 36.0);
dump(rate, rate_8_8apsk[i][0], rate_8_8apsk[i][1], rate_8_8apsk[i][2], rate_8_8apsk[i][3]);
}
q = 5.0;
printf("4+12+16rbAPSK, pilots off\n");
for (i = 0; i < 1; i++)
{
rate = calc(symbol_rate, q, rate_32_16rbapsk[i][0], rate_32_16rbapsk[i][1], rate_32_16rbapsk[i][2], 0.0);
dump(rate, rate_32_16rbapsk[i][0], rate_32_16rbapsk[i][1], rate_32_16rbapsk[i][2], rate_32_16rbapsk[i][3]);
}
printf("4+12+16rbAPSK, pilots on\n");
for (i = 0; i < 1; i++)
{
rate = calc(symbol_rate, q, rate_32_16rbapsk[i][0], rate_32_16rbapsk[i][1], rate_32_16rbapsk[i][2], 36.0);
dump(rate, rate_32_16rbapsk[i][0], rate_32_16rbapsk[i][1], rate_32_16rbapsk[i][2], rate_32_16rbapsk[i][3]);
}
q = 5.0;
printf("4+8+4+16APSK, pilots off\n");
for (i = 0; i < 3; i++)
{
rate = calc(symbol_rate, q, rate_32_16apsk[i][0], rate_32_16apsk[i][1], rate_32_16apsk[i][2], 0.0);
dump(rate, rate_32_16apsk[i][0], rate_32_16apsk[i][1], rate_32_16apsk[i][2], rate_32_16apsk[i][3]);
}
printf("4+8+4+16APSK, pilots on\n");
for (i = 0; i < 3; i++)
{
rate = calc(symbol_rate, q, rate_32_16apsk[i][0], rate_32_16apsk[i][1], rate_32_16apsk[i][2], 36.0);
dump(rate, rate_32_16apsk[i][0], rate_32_16apsk[i][1], rate_32_16apsk[i][2], rate_32_16apsk[i][3]);
}
q = 6.0;
printf("64APSK, pilots off\n");
for (i = 0; i < 1; i++)
{
rate = calc(symbol_rate, q, rate_64apsk[i][0], rate_64apsk[i][1], rate_64apsk[i][2], 0.0);
dump(rate, rate_64apsk[i][0], rate_64apsk[i][1], rate_64apsk[i][2], rate_64apsk[i][3]);
}
printf("64APSK, pilots on\n");
for (i = 0; i < 1; i++)
{
rate = calc(symbol_rate, q, rate_64apsk[i][0], rate_64apsk[i][1], rate_64apsk[i][2], 36.0);
dump(rate, rate_64apsk[i][0], rate_64apsk[i][1], rate_64apsk[i][2], rate_64apsk[i][3]);
}
q = 6.0;
printf("4+12+20+28APSK, pilots off\n");
for (i = 0; i < 1; i++)
{
rate = calc(symbol_rate, q, rate_64_28apsk[i][0], rate_64_28apsk[i][1], rate_64_28apsk[i][2], 0.0);
dump(rate, rate_64_28apsk[i][0], rate_64_28apsk[i][1], rate_64_28apsk[i][2], rate_64_28apsk[i][3]);
}
printf("4+12+20+28APSK, pilots on\n");
for (i = 0; i < 1; i++)
{
rate = calc(symbol_rate, q, rate_64_28apsk[i][0], rate_64_28apsk[i][1], rate_64_28apsk[i][2], 36.0);
dump(rate, rate_64_28apsk[i][0], rate_64_28apsk[i][1], rate_64_28apsk[i][2], rate_64_28apsk[i][3]);
}
q = 6.0;
printf("8+16+20+20APSK, pilots off\n");
for (i = 0; i < 3; i++)
{
rate = calc(symbol_rate, q, rate_64_20apsk[i][0], rate_64_20apsk[i][1], rate_64_20apsk[i][2], 0.0);
dump(rate, rate_64_20apsk[i][0], rate_64_20apsk[i][1], rate_64_20apsk[i][2], rate_64_20apsk[i][3]);
}
printf("8+16+20+20APSK, pilots on\n");
for (i = 0; i < 3; i++)
{
rate = calc(symbol_rate, q, rate_64_20apsk[i][0], rate_64_20apsk[i][1], rate_64_20apsk[i][2], 36.0);
dump(rate, rate_64_20apsk[i][0], rate_64_20apsk[i][1], rate_64_20apsk[i][2], rate_64_20apsk[i][3]);
}
q = 7.0;
printf("128APSK, pilots off\n");
for (i = 0; i < 2; i++)
{
rate = calc(symbol_rate, q, rate_128apsk[i][0], rate_128apsk[i][1], rate_128apsk[i][2], 0.0);
dump(rate, rate_128apsk[i][0], rate_128apsk[i][1], rate_128apsk[i][2], rate_128apsk[i][3]);
}
printf("128APSK, pilots on\n");
for (i = 0; i < 2; i++)
{
rate = calc(symbol_rate, q, rate_128apsk[i][0], rate_128apsk[i][1], rate_128apsk[i][2], 36.0);
dump(rate, rate_128apsk[i][0], rate_128apsk[i][1], rate_128apsk[i][2], rate_128apsk[i][3]);
}
q = 8.0;
printf("256APSK, pilots off\n");
for (i = 0; i < 6; i++)
{
rate = calc(symbol_rate, q, rate_256apsk[i][0], rate_256apsk[i][1], rate_256apsk[i][2], 0.0);
dump(rate, rate_256apsk[i][0], rate_256apsk[i][1], rate_256apsk[i][2], rate_256apsk[i][3]);
}
printf("256APSK, pilots on\n");
for (i = 0; i < 6; i++)
{
rate = calc(symbol_rate, q, rate_256apsk[i][0], rate_256apsk[i][1], rate_256apsk[i][2], 36.0);
dump(rate, rate_256apsk[i][0], rate_256apsk[i][1], rate_256apsk[i][2], rate_256apsk[i][3]);
}
}
else
{
printf("DVB-S2X short FECFRAME\n");
q = 2.0;
printf("QPSK, pilots off\n");
for (i = 0; i < 6; i++)
{
rate = calc_short(symbol_rate, q, rate_qpskx_short[i][0], rate_qpskx_short[i][1], rate_qpskx_short[i][2], 0.0);
dump(rate, rate_qpskx_short[i][0], rate_qpskx_short[i][1], rate_qpskx_short[i][2], rate_qpskx_short[i][3]);
}
printf("QPSK, pilots on\n");
for (i = 0; i < 6; i++)
{
rate = calc_short(symbol_rate, q, rate_qpskx_short[i][0], rate_qpskx_short[i][1], rate_qpskx_short[i][2], 36.0);
dump(rate, rate_qpskx_short[i][0], rate_qpskx_short[i][1], rate_qpskx_short[i][2], rate_qpskx_short[i][3]);
}
q = 3.0;
printf("8PSK, pilots off\n");
for (i = 0; i < 4; i++)
{
rate = calc_short(symbol_rate, q, rate_8pskx_short[i][0], rate_8pskx_short[i][1], rate_8pskx_short[i][2], 0.0);
dump(rate, rate_8pskx_short[i][0], rate_8pskx_short[i][1], rate_8pskx_short[i][2], rate_8pskx_short[i][3]);
}
printf("8PSK, pilots on\n");
for (i = 0; i < 4; i++)
{
rate = calc_short(symbol_rate, q, rate_8pskx_short[i][0], rate_8pskx_short[i][1], rate_8pskx_short[i][2], 36.0);
dump(rate, rate_8pskx_short[i][0], rate_8pskx_short[i][1], rate_8pskx_short[i][2], rate_8pskx_short[i][3]);
}
q = 4.0;
printf("16APSK, pilots off\n");
for (i = 0; i < 5; i++)
{
rate = calc_short(symbol_rate, q, rate_16apskx_short[i][0], rate_16apskx_short[i][1], rate_16apskx_short[i][2], 0.0);
dump(rate, rate_16apskx_short[i][0], rate_16apskx_short[i][1], rate_16apskx_short[i][2], rate_16apskx_short[i][3]);
}
printf("16APSK, pilots on\n");
for (i = 0; i < 5; i++)
{
rate = calc_short(symbol_rate, q, rate_16apskx_short[i][0], rate_16apskx_short[i][1], rate_16apskx_short[i][2], 36.0);
dump(rate, rate_16apskx_short[i][0], rate_16apskx_short[i][1], rate_16apskx_short[i][2], rate_16apskx_short[i][3]);
}
q = 5.0;
printf("4+12+16rbAPSK, pilots off\n");
for (i = 0; i < 2; i++)
{
rate = calc_short(symbol_rate, q, rate_32_16rbapsk_short[i][0], rate_32_16rbapsk_short[i][1], rate_32_16rbapsk_short[i][2], 0.0);
dump(rate, rate_32_16rbapsk_short[i][0], rate_32_16rbapsk_short[i][1], rate_32_16rbapsk_short[i][2], rate_32_16rbapsk_short[i][3]);
}
printf("4+12+16rbAPSK, pilots on\n");
for (i = 0; i < 2; i++)
{
rate = calc_short(symbol_rate, q, rate_32_16rbapsk_short[i][0], rate_32_16rbapsk_short[i][1], rate_32_16rbapsk_short[i][2], 36.0);
dump(rate, rate_32_16rbapsk_short[i][0], rate_32_16rbapsk_short[i][1], rate_32_16rbapsk_short[i][2], rate_32_16rbapsk_short[i][3]);
}
}
}
}
thanks you for your response. It complied successfully.
Hi , I am using this DVB2rate.c code in vivado hls for ZC706 zynq board. Is it working?
[[Hello,]]
I am using dvbs2rate.c file in vivado hls and during synthesis the project I am getting 7 errors. Kindly find the below mentioned errors for your reference and do the needful to solve the error.
ERROR: [SYNCHK 200-61] E:/dtv-utils-master/dvbs2rate.c:99: unsupported memory access on variable 'argv' which is (or contains) an array with unknown size at compile time.
ERROR: [SYNCHK 200-72] E:/dtv-utils-master/dvbs2rate.c:97: unsupported c/c++ library function 'strlen'.
ERROR: [SYNCHK 200-43] E:/dtv-utils-master/dvbs2rate.c:97: use or assignment of a non-static pointer '' (this pointer may refer to different memory locations).
ERROR: [SYNCHK 200-72] E:/dtv-utils-master/dvbs2rate.c:91: unsupported c/c++ library function 'atof'.
ERROR: [SYNCHK 200-71] E:/dtv-utils-master/dvbs2rate.c:83: function '__iob_func' has no function body.
ERROR: [SYNCHK 200-72] E:/dtv-utils-master/dvbs2rate.c:91: unsupported c/c++ library function 'atof'.
ERROR: [SYNCHK 200-71] E:/dtv-utils-master/dvbs2rate.c:83: function '__iob_func' has no function body.
ERROR: [SYNCHK 200-11] E:/dtv-utils-master/dvbs2rate.c:73: Argument 'argv' of function 'main' (E:/dtv-utils-master/dvbs2rate.c:73) has an unsynthesizable type (possible cause(s): pointer to pointer or global pointer).
waiting for your response.