#include #include #define FREF 24000000UL #define NR_MIN 1UL #define NR_MAX (FREF/300000) #define NF_MIN 1U #define NF_MAX (1<<12) #define OD_MIN 1UL #define OD_MAX (1<<3) #define CODEC_DIV_MIN 1UL #define CODEC_DIV_MAX (1<<4) int main(int argc, char **argv) { uint32_t nr, nf, od, cd; unsigned long fout; fout = strtoul(argv[1], NULL, 0); printf("FREF: %ldHz FOUT: %ldHz NR_MIN: %ld NR_MAX: %ld\n", FREF, fout, NR_MIN, NR_MAX); for (cd = CODEC_DIV_MIN; cd < CODEC_DIV_MAX; cd++) for (od = OD_MIN; od < OD_MAX; od++) for (nr = NR_MIN; nr < NR_MAX; nr++) for (nf = NF_MIN; nf < NF_MAX; nf++) if ( (((FREF/nr)*nf)/od)/cd == fout ) if ( FREF/nr < 600000000 && FREF/nr > 300000 ) if ((FREF/nr)*nf > 120000000 && (FREF/nr)*nf < 600000000) printf("NR: %d, NF: %d, OD: %d, CD: %d FREF/nr: %ld, VCO: %ld\n", nr, nf, od, cd, FREF/nr, (FREF/nr)*nf); return 0; }