Commit 2146e89f7c2a283fd1368bb58c4a878842564d89

Authored by bachi
1 parent de9cf8e01a
Exists in master

ddsFreq.c : suppression fonction checksize

Showing 1 changed file with 1 additions and 1 deletions Inline Diff

#include <stdlib.h> 1 1 #include <stdlib.h>
#include <stdio.h> 2 2 #include <stdio.h>
#include <unistd.h> 3 3 #include <unistd.h>
#include <math.h> 4 4 #include <math.h>
#include "ddsFreq.h" 5 5 #include "ddsFreq.h"
#include "ad9915.h" 6 6 #include "ad9915.h"
7 7
//#define debug 8 8 //#define debug
long double pgcd ( long double m , long double n) 9 9 long double pgcd ( long double m , long double n)
{ 10 10 {
if (fmod(m,n) ==0) 11 11 if (fmod(m,n) ==0)
return n; 12 12 return n;
return pgcd(n,fmod(m,n)); 13 13 return pgcd(n,fmod(m,n));
} 14 14 }
15 15
int setddsFreq(int fd, int f_dds, long double f0, long double fs) 16 16 int setddsFreq(int fd, int f_dds, long double f0, long double fs)
{ 17 17 {
18 18
#ifdef debug 19 19 #ifdef debug
printf("f0=%Le\tfs=%Le\n",f0,fs); 20 20 printf("f0=%Le\tfs=%Le\n",f0,fs);
#endif 21 21 #endif
22 22
if (fs<0 || f0<0) return EXIT_FAILURE; 23 23 if (fs<0 || f0<0) return EXIT_FAILURE;
24 24
struct frac f1; 25 25 struct frac f1;
26 26
f1.numerator = f0; 27 27 f1.numerator = f0;
f1.denominator = fs; 28 28 f1.denominator = fs;
29 29
long double d1 = pgcd (f1.numerator , f1.denominator ); 30 30 long double d1 = pgcd (f1.numerator , f1.denominator );
//printf(" d1 = %24.16Lf\n",d1); 31 31 //printf(" d1 = %24.16Lf\n",d1);
32 32
long double M = f0 / d1 ; 33 33 long double M = f0 / d1 ;
long double N = fs / d1 ; 34 34 long double N = fs / d1 ;
//printf(" M = f0 / d1 = %24.16Lf\n",M); 35 35 //printf(" M = f0 / d1 = %24.16Lf\n",M);
//printf(" N = fs / d1 = %24.16Lf\n",N); 36 36 //printf(" N = fs / d1 = %24.16Lf\n",N);
37 37
38 38
long double ftw = M * scalbn(1.0,32); 39 39 long double ftw = M * scalbn(1.0,32);
ftw /= N; 40 40 ftw /= N;
//printf("ftw = %24.16Lf\n",ftw); 41 41 //printf("ftw = %24.16Lf\n",ftw);
42 42
43 43
//printf("X=floor(ftw) = %24.16Lf\n",(long double)floor(ftw)); 44 44 //printf("X=floor(ftw) = %24.16Lf\n",(long double)floor(ftw));
45 45
long double Y = M * scalbn(1.0,32); 46 46 long double Y = M * scalbn(1.0,32);
Y -= N * floor(ftw); 47 47 Y -= N * floor(ftw);
//printf("Y=M*2**32-X*N = %24.16Lf\n",Y); 48 48 //printf("Y=M*2**32-X*N = %24.16Lf\n",Y);
49 49
long double d2 = pgcd (Y,N); 50 50 long double d2 = pgcd (Y,N);
//printf(" d2 = %24.16Lf\n",d2); 51 51 //printf(" d2 = %24.16Lf\n",d2);
52 52
long double A = Y / d2; 53 53 long double A = Y / d2;
long double B = N / d2; 54 54 long double B = N / d2;
//printf("A = Y/d2 = %24.16Lf\n",A); 55 55 //printf("A = Y/d2 = %24.16Lf\n",A);
//printf("B = N/d2 = %24.16Lf\n",B); 56 56 //printf("B = N/d2 = %24.16Lf\n",B);
57 57
//printf("f0 = (M/N) * fclk= %24.32Lf\n",fs*M/N); 58 58 //printf("f0 = (M/N) * fclk= %24.32Lf\n",fs*M/N);
//printf("f0 = (X+A/B)2**32= %24.32Lf\n",fs*(floor(ftw)+A/B)/scalbn(1.0,32)); 59 59 //printf("f0 = (X+A/B)2**32= %24.32Lf\n",fs*(floor(ftw)+A/B)/scalbn(1.0,32));
60 60
#ifdef debug 61 61 #ifdef debug
printf("\n so finally the programmed registers are :\n" 62 62 printf("\n so finally the programmed registers are :\n"
"ftw= 0x%08x A= 0x%08x B= 0x%08x\n" 63 63 "ftw= 0x%08x A= 0x%08x B= 0x%08x\n"
"",(unsigned int)ftw,(unsigned int)A,(unsigned int)B); 64 64 "",(unsigned int)ftw,(unsigned int)A,(unsigned int)B);
printf("uint ftw = %d\n",(unsigned int)ftw); 65 65 printf("uint ftw = %d\n",(unsigned int)ftw);
66 66
printf("\n 0x%08x 0x%08x 0x%08x \n\n",(unsigned int)ftw,(unsigned int)A,(unsigned int)B); 67 67 printf("\n 0x%08x 0x%08x 0x%08x \n\n",(unsigned int)ftw,(unsigned int)A,(unsigned int)B);
//setFreqMM(fd,f_dds,(unsigned int)ftw, (unsigned int)A, (unsigned int)B); 68 68 //setFreqMM(fd,f_dds,(unsigned int)ftw, (unsigned int)A, (unsigned int)B);
#endif 69 69 #endif
setFreqMM(fd,f_dds,(unsigned int)ftw, 2*(unsigned int)B, 2*(unsigned int)A); //??why *2?? 70 70 setFreqMM(fd,f_dds,(unsigned int)ftw, 2*(unsigned int)B, 2*(unsigned int)A); //??why *2??
return EXIT_SUCCESS; 71 71 return EXIT_SUCCESS;
} 72 72 }
int ddsFreq(int fd, int f_dds) 73 73 int ddsFreq(int fd, int f_dds)
{ 74 74 {
checkSize(); 75 75 //checkSize();
long double f0,fs; 76 76 long double f0,fs;
//printf("long = %lu\n",sizeof (long)); 77 77 //printf("long = %lu\n",sizeof (long));
//printf("float = %lu\n",sizeof (float)); 78 78 //printf("float = %lu\n",sizeof (float));
//printf("double = %lu\n",sizeof (double)); 79 79 //printf("double = %lu\n",sizeof (double));
//printf("long double = %lu\n",sizeof (long double)); 80 80 //printf("long double = %lu\n",sizeof (long double));
81 81
printf("\nDesired output Frequency (MHz) : "); 82 82 printf("\nDesired output Frequency (MHz) : ");
scanf("%Lf",&f0); 83 83 scanf("%Lf",&f0);
printf("DDS frequency Clock (MHz) : "); 84 84 printf("DDS frequency Clock (MHz) : ");
scanf("%Lf",&fs); 85 85 scanf("%Lf",&fs);
86 86
//long double f0=atof(argv[1]); //desired output freq 87 87 //long double f0=atof(argv[1]); //desired output freq
//long double fs=atof(argv[2]); //dds_clk 88 88 //long double fs=atof(argv[2]); //dds_clk
//int toto = (int)strtol(argv[3],NULL,0); 89 89 //int toto = (int)strtol(argv[3],NULL,0);
//printf("toto=%d\t%x\n",toto,toto); 90 90 //printf("toto=%d\t%x\n",toto,toto);
91 91
if (fs<0 || f0<0) return EXIT_FAILURE; 92 92 if (fs<0 || f0<0) return EXIT_FAILURE;
93 93
struct frac f1; 94 94 struct frac f1;
95 95
f1.numerator = f0; 96 96 f1.numerator = f0;
f1.denominator = fs; 97 97 f1.denominator = fs;
98 98
long double d1 = pgcd (f1.numerator , f1.denominator ); 99 99 long double d1 = pgcd (f1.numerator , f1.denominator );
printf(" d1 = %24.16Lf\n",d1); 100 100 printf(" d1 = %24.16Lf\n",d1);
101 101
long double M = f0 / d1 ; 102 102 long double M = f0 / d1 ;
long double N = fs / d1 ; 103 103 long double N = fs / d1 ;
printf(" M = f0 / d1 = %24.16Lf\n",M); 104 104 printf(" M = f0 / d1 = %24.16Lf\n",M);
printf(" N = fs / d1 = %24.16Lf\n",N); 105 105 printf(" N = fs / d1 = %24.16Lf\n",N);