📄 pllset.c
字号:
//#include <dos.h>
#include <stdio.h>
#include <process.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
void main(int argc,char *argv[])
{
long pow2[]={1L,2L,4L,8L};
char str[20];
long mclk,clkXtal,tmpMclk,bMclk,fVco,max_fvco;
long m,p,s,bm,bp;
long temp;
long tmp,freqDiff,freqDiffMin;
float par1,par2,par3,par4;
int pass;
printf(" +---------------------------+\n");
printf(" | PLL VALUE CALCULATER |\n");
printf(" | Ver 1.21 |\n");
printf(" +---------------------------+\n");
if (argc<4)
{
printf("Revision History:\n");
printf("Usage:pllset <dev_id> <input freq> <output freq>\n");
printf("dev_id: 1 :S3C44B0X,S3C44A0X\n");
printf(" 2 :S3C2400X/S3C2410X/S3CA400X\n");
exit(0);
}
if(atoi(argv[1])==1)max_fvco=(long)(170000000*1.01); //S3C44B0X,S3C44A0X
else if(atoi(argv[1])==2)max_fvco=(long)(600000000*1.01); //S3C2400
else
{
printf("ERROR:unknown device ID.\n");
return;
}
clkXtal=atol(argv[2]);
mclk=atol(argv[3]);
printf("Input XTAL0 Freq:%ld\n",clkXtal);
printf("Output MCLK Freq:%ld\n",mclk);
printf("M ,P ,S |MCLK |fvco|fi/P+2|PAR1<PAR2<PAR3|P|\n");
for(s=0L;s<4L;s++)
{
for(p=0L;p<64L;p++)
{
tmp=(p+2L)*pow2[s];
freqDiffMin=500000L;
bm=256L;
for(m=0;m<256L;m++)
{
tmpMclk=clkXtal*(m+8L)/tmp;
freqDiff=labs(mclk-tmpMclk);
if(freqDiff<freqDiffMin)
{
fVco=tmpMclk*pow2[s];
if(fVco<=max_fvco)
{
freqDiffMin=freqDiff;
bm=m;
bMclk=tmpMclk;
}
}
}
par1=clkXtal/(25*(p+2))/1000000.;
par2=16700000./(bm+8)/1000000.;
par3=clkXtal/(10*(p+2))/1000000.;
par4=6.48/pow(bm+8,0.5);
pass=(par1<=par2)&&(par2<=par3)&&(bm>=4)&&(bm<=0x4e);
if(bm!=256L)
printf("%3lxh,%2lxh,%1lxh |%9ld|%3ldM| %4.1fM|%4.1f|%4.1f|%4.1f|%1d|\n",
bm,p,s,bMclk,fVco/1000000L,clkXtal/(p+2)/1000000.,
par1,par2,par3,pass);
}
}
printf("\n");
printf("Selection Guide: choose the nearst one to this guide\n");
printf(" 1) large SDIV value \n");
printf(" 2) S3C44B0X: 1Mhz<= fin/(PDIV+2) <=2Mhz\n");
printf(" 3) S3C2400X/S3CA400X/S3C2410X: Refer to user's manual.\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -