Files
openairinterface5g/openair1/PHY/TOOLS/generate_twiddles.m
T
2013-06-25 09:05:02 +00:00

288 lines
7.8 KiB
Matlab
Executable File

k=0;
for i=0:5,
for n=0:(2^i)-1,
twiddleFFT_64(1+(4*k)) = round(16384*cos(2*pi*n/(2^(i+1))));
twiddleIFFT_64(1+(4*k)) = twiddleFFT_64(1+(4*k));
twiddleFFT_64(2+(4*k)) = round(16384*sin(2*pi*n/(2^(i+1))));
twiddleIFFT_64(2+(4*k)) = -twiddleFFT_64(2+(4*k));
twiddleFFT_64(3+(4*k)) = -twiddleFFT_64(2+(4*k));
twiddleIFFT_64(3+(4*k)) = twiddleFFT_64(2+(4*k));
twiddleFFT_64(4+(4*k)) = twiddleFFT_64(1+(4*k));
twiddleIFFT_64(4+(4*k)) = twiddleFFT_64(1+(4*k));
k=k+1;
end
end
[fid, msg] = fopen("twiddle64.h","w","ieee-le");
fprintf(fid,"short twiddle_fft64[63*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleFFT_64(1:248));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleFFT_64(249:252));
fprintf(fid,"short twiddle_ifft64[63*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleIFFT_64(1:248));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleIFFT_64(249:252));
fclose(fid);
k=0;
for i=0:6,
for n=0:(2^i)-1,
twiddleFFT_128(1+(4*k)) = round(16384*cos(2*pi*n/(2^(i+1))));
twiddleIFFT_128(1+(4*k)) = twiddleFFT_128(1+(4*k));
twiddleFFT_128(2+(4*k)) = round(16384*sin(2*pi*n/(2^(i+1))));
twiddleIFFT_128(2+(4*k)) = -twiddleFFT_128(2+(4*k));
twiddleFFT_128(3+(4*k)) = -twiddleFFT_128(2+(4*k));
twiddleIFFT_128(3+(4*k)) = twiddleFFT_128(2+(4*k));
twiddleFFT_128(4+(4*k)) = twiddleFFT_128(1+(4*k));
twiddleIFFT_128(4+(4*k)) = twiddleFFT_128(1+(4*k));
k=k+1;
end
end
[fid, msg] = fopen("twiddle128.h","w","ieee-le");
fprintf(fid,"short twiddle_fft128[127*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleFFT_128(1:504));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleFFT_128(505:508));
fprintf(fid,"short twiddle_ifft128[127*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleIFFT_128(1:504));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleIFFT_128(505:508));
fclose(fid);
k=0;
for i=0:7,
for n=0:(2^i)-1,
twiddleFFT_256(1+(4*k)) = round(16384*cos(2*pi*n/(2^(i+1))));
twiddleIFFT_256(1+(4*k)) = twiddleFFT_256(1+(4*k));
twiddleFFT_256(2+(4*k)) = round(16384*sin(2*pi*n/(2^(i+1))));
twiddleIFFT_256(2+(4*k)) = -twiddleFFT_256(2+(4*k));
twiddleFFT_256(3+(4*k)) = -twiddleFFT_256(2+(4*k));
twiddleIFFT_256(3+(4*k)) = twiddleFFT_256(2+(4*k));
twiddleFFT_256(4+(4*k)) = twiddleFFT_256(1+(4*k));
twiddleIFFT_256(4+(4*k)) = twiddleFFT_256(1+(4*k));
k=k+1;
end
end
[fid, msg] = fopen("twiddle256.h","w","ieee-le");
fprintf(fid,"short twiddle_fft256[255*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleFFT_256(1:1016));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleFFT_256(1017:1020));
fprintf(fid,"short twiddle_ifft256[255*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleIFFT_256(1:1016));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleIFFT_256(1017:1020));
fclose(fid)
k=0;
for i=0:8,
for n=0:(2^i)-1,
twiddleFFT_512(1+(4*k)) = round(16384*cos(2*pi*n/(2^(i+1))));
twiddleIFFT_512(1+(4*k)) = twiddleFFT_512(1+(4*k));
twiddleFFT_512(2+(4*k)) = round(16384*sin(2*pi*n/(2^(i+1))));
twiddleIFFT_512(2+(4*k)) = -twiddleFFT_512(2+(4*k));
twiddleFFT_512(3+(4*k)) = -twiddleFFT_512(2+(4*k));
twiddleIFFT_512(3+(4*k)) = twiddleFFT_512(2+(4*k));
twiddleFFT_512(4+(4*k)) = twiddleFFT_512(1+(4*k));
twiddleIFFT_512(4+(4*k)) = twiddleFFT_512(1+(4*k));
k=k+1;
end
end
[fid, msg] = fopen("twiddle512.h","w","ieee-le");
fprintf(fid,"short twiddle_fft512[511*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleFFT_512(1:2040));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleFFT_512(2041:2044));
fprintf(fid,"short twiddle_ifft512[511*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleIFFT_512(1:2040));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleIFFT_512(2041:2044));
fclose(fid)
k=0;
for i=0:9,
for n=0:(2^i)-1,
twiddleFFT_1024(1+(4*k)) = fix(16384*cos(2*pi*n/(2^(i+1))));
twiddleIFFT_1024(1+(4*k)) = twiddleFFT_1024(1+(4*k));
twiddleFFT_1024(2+(4*k)) = fix(16384*sin(2*pi*n/(2^(i+1))));
twiddleIFFT_1024(2+(4*k)) = -twiddleFFT_1024(2+(4*k));
twiddleFFT_1024(3+(4*k)) = -twiddleFFT_1024(2+(4*k));
twiddleIFFT_1024(3+(4*k)) = twiddleFFT_1024(2+(4*k));
twiddleFFT_1024(4+(4*k)) = twiddleFFT_1024(1+(4*k));
twiddleIFFT_1024(4+(4*k)) = twiddleFFT_1024(1+(4*k));
k=k+1;
end
end
[fid, msg] = fopen("twiddle1024.h","w","ieee-le");
fprintf(fid,"short twiddle_fft1024[1023*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleFFT_1024(1:4088));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleFFT_1024(4089:4092));
fprintf(fid,"short twiddle_ifft1024[1023*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleIFFT_1024(1:4088));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleIFFT_1024(4089:4092));
%fprintf(fid,"unsigned short rev1024[1024];\n")
fclose(fid)
k=0;
for i=0:10,
for n=0:(2^i)-1,
twiddleFFT_2048(1+(4*k)) = fix(16384*cos(2*pi*n/(2^(i+1))));
twiddleIFFT_2048(1+(4*k)) = twiddleFFT_2048(1+(4*k));
twiddleFFT_2048(2+(4*k)) = fix(16384*sin(2*pi*n/(2^(i+1))));
twiddleIFFT_2048(2+(4*k)) = -twiddleFFT_2048(2+(4*k));
twiddleFFT_2048(3+(4*k)) = -twiddleFFT_2048(2+(4*k));
twiddleIFFT_2048(3+(4*k)) = twiddleFFT_2048(2+(4*k));
twiddleFFT_2048(4+(4*k)) = twiddleFFT_2048(1+(4*k));
twiddleIFFT_2048(4+(4*k)) = twiddleFFT_2048(1+(4*k));
k=k+1;
end
end
[fid, msg] = fopen("twiddle2048.h","w","ieee-le");
fprintf(fid,"short twiddle_fft2048[2047*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleFFT_2048(1:8184));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleFFT_2048(8185:8188));
fprintf(fid,"short twiddle_ifft2048[2047*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleIFFT_2048(1:8184));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleIFFT_2048(8185:8188));
fclose(fid)
k=0;
for i=0:11,
for n=0:(2^i)-1,
twiddleFFT_4096(1+(4*k)) = fix(16384*cos(2*pi*n/(2^(i+1))));
twiddleIFFT_4096(1+(4*k)) = twiddleFFT_4096(1+(4*k));
twiddleFFT_4096(2+(4*k)) = fix(16384*sin(2*pi*n/(2^(i+1))));
twiddleIFFT_4096(2+(4*k)) = -twiddleFFT_4096(2+(4*k));
twiddleFFT_4096(3+(4*k)) = -twiddleFFT_4096(2+(4*k));
twiddleIFFT_4096(3+(4*k)) = twiddleFFT_4096(2+(4*k));
twiddleFFT_4096(4+(4*k)) = twiddleFFT_4096(1+(4*k));
twiddleIFFT_4096(4+(4*k)) = twiddleFFT_4096(1+(4*k));
k=k+1;
end
end
[fid, msg] = fopen("twiddle4096.h","w","ieee-le");
fprintf(fid,"short twiddle_fft4096[4095*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleFFT_4096(1:16376));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleFFT_4096(16377:16380));
fprintf(fid,"short twiddle_ifft4096[4095*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleIFFT_4096(1:16376));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleIFFT_4096(16377:16380));
%fprintf(fid,"unsigned short rev4096[4096];\n")
fclose(fid)
k=0;
for i=0:12,
for n=0:(2^i)-1,
twiddleFFT_8192(1+(4*k)) = fix(16384*cos(2*pi*n/(2^(i+1))));
twiddleIFFT_8192(1+(4*k)) = twiddleFFT_8192(1+(4*k));
twiddleFFT_8192(2+(4*k)) = fix(16384*sin(2*pi*n/(2^(i+1))));
twiddleIFFT_8192(2+(4*k)) = -twiddleFFT_8192(2+(4*k));
twiddleFFT_8192(3+(4*k)) = -twiddleFFT_8192(2+(4*k));
twiddleIFFT_8192(3+(4*k)) = twiddleFFT_8192(2+(4*k));
twiddleFFT_8192(4+(4*k)) = twiddleFFT_8192(1+(4*k));
twiddleIFFT_8192(4+(4*k)) = twiddleFFT_8192(1+(4*k));
k=k+1;
end
end
[fid, msg] = fopen("twiddle8192.h","w","ieee-le");
fprintf(fid,"short twiddle_fft8192[8191*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleFFT_8192(1:16376));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleFFT_8192(16377:16380));
fprintf(fid,"short twiddle_ifft8192[8191*4] = {");
fprintf(fid,"%d,%d,%d,%d,\n",twiddleIFFT_8192(1:16376));
fprintf(fid,"%d,%d,%d,%d};\n\n",twiddleIFFT_8192(16377:16380));
%fprintf(fid,"unsigned short rev8192[8192];\n")
fclose(fid)