论坛风格切换切换到宽版
  • 6775阅读
  • 13回复

MB15E03SL的 PLL VCO 实验结束 [复制链接]

上一主题 下一主题
离线qiufeng
 
发帖
401
只看楼主 倒序阅读 0楼 发表于: 2012-04-08
mb15e03sl的 pll vco 实验结束,验证了自己的一些思路,更加深入的了解了一些电路知识。最后调试软件的时候遇到了些问题,结果是那买来的迷你单片机的板子上avr和51的复位跳线标识错误。害人不浅啊。
硬道理如下:
其他细节见此贴:http://www.hellocq.net/forum/showthread-t-291085.%e5%9c%a8%e7%8e%a9pll%20vco%ef%bc%8c%e4%b8%8a%e7%a1%ac%e9%81%93%e7%90%86--%e6%9c%89%e6%97%b6%e9%97%b4%e4%b8%80%e6%ad%a5%e6%ad%a5%e7%9a%84%e6%9d%a5.html
这里我设置的参数是:315.000mhz,现在显示:314.9991mhz。s51只是演示驱动是否成功,下次改用m8 做点有用的东西。
资料见下帖:
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线qiufeng
发帖
401
只看该作者 1楼 发表于: 2012-04-08
资料……
这是这次实验的部分参考资料和固件,
mb15e03sl的参数选择如下:
单片机:at89s51;单片机时钟:12mhz。
mcu单周期指令耗时1us,
mb15e03sl最小时钟(clk)100ns;
mb15e03sl使能脉冲要求大于等于100ns。

4-bit latch : (sw=l;fc=h;lds=h;cs=l);
sw = l : prescaler divide ratio | 128/129;
fc = h : lpf output voltage(up)--vco output frequency(up) | set fc bit high
lds= h : ld/fout output select data setting | fout signal
cs = l : charge pump current setting | ±1.5 ma
7-bit latch : binary 7-bit swallow counter data setting (a)
11-bit latch : binary 11-bit programmable counter data setting (n)
14-bit latch : binary 14-bit programmable reference counter data setting (r)

fvco = [(m*n)+a]*fosc/r (a<n)
fr=10khz=fosc/r;
fvco=315.000mhz;
fosc=12.800mhz;
m=128;
r=1280;
带入可得:128n+a=31500;
即:n=246;a=12;(这部分求解代码很好写,n取整,a取余)
n = (fvco/fr)/m
a = (fvco/fr)%m

fvco : output frequency of external voltage controlled oscillator (vco)
n   : preset divide ratio of binary 11-bit programmable counter (3 to 2,047)
a   : preset divide ratio of binary 7-bit swallow counter (0=<a=<127)
fosc : output frequency of the reference frequency oscillator
r   : preset divide ratio of binary 14-bit programmable reference counter (3 to 16,383)
m   : preset divide ratio of the dual modulus prescaler (64 or 128)

cnt : programmable counter data setting (l) & programmable reference counter data setting (h)
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线qiufeng
发帖
401
只看该作者 2楼 发表于: 2012-04-08
代码如下
#include <at89x51.h>
#include <stdio.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

void calc();
void pll(unsigned long);

ulong rcdata,nadata,sun,kill;

sbit data=p2^2;
sbit clk=p2^1;
sbit le=p2^0;

void calc()
{
     uchar a,cs;
    uint n,r;
     r=1280;
     n=246;
     a=12;
     cs=6;//cs=l;lds=h;fc=h;sw=l;
     rcdata=cs;
     rcdata=rcdata<<14;
     rcdata=rcdata+r;
     rcdata=rcdata<<1;
     rcdata=rcdata+1;
  nadata=n;
  nadata=nadata<<7;
  nadata=nadata+a;
  nadata=nadata<<1;
}

void pll (ulong kill)//msb first
{
     uchar i;
     sun=0x40000;
     for(i = 0; i < 19; i++)
     {
           clk=0;
           if(kill & sun)
           {
                 data=1;
           }
           else
           {
                 data=0;
           }
           clk=1;
           sun=sun>>1;
     }
     clk=0;
     data=0;
     le=1;
     le=0;

}

void main(void)
{
while(1)
{
  le=0;
  clk=0;
  data=0;
           calc();
           pll(rcdata);  
           pll(nadata);
}
}
离线qiufeng
发帖
401
只看该作者 3楼 发表于: 2012-04-08
好了,基本就这些了,现在那pll vco 还稳定在 314.9990mhz的频率上,没频谱仪有时也挺烦的。过些天做atmega8的pcb,做一个小东西玩玩看。
以后不帮忙写代码了,太费时间精力,还有……
补充下:这里只用了vco2的,vco2的输出范围(实测):264.6mhz-372.3mhz。
离线BI7MV
发帖
312
只看该作者 4楼 发表于: 2012-04-08
谢谢分享
离线zgj
发帖
3883
只看该作者 5楼 发表于: 2012-04-08
实际上,我怀疑你那个频率计的精度,呵呵,有没有校准的条件?
离线qiufeng
发帖
401
只看该作者 6楼 发表于: 2012-04-08
有,有个10mhz的铷钟,就是没时间做电源,要不明天就找个开关电源24v3a左右的开关电源来做个
离线BG7TBL
发帖
2965
只看该作者 7楼 发表于: 2012-04-09
做得挺好的,如果要保留整个东西,就要考虑个外壳了。单独的板很容易丢!
离线BH7KVE
发帖
1334
只看该作者 8楼 发表于: 2012-04-09
做得真不错!
离线梭鱼
发帖
589
只看该作者 9楼 发表于: 2012-04-09
不用频谱仪调试pll-vco,就是耍流氓!!!
离线qiufeng
发帖
401
只看该作者 10楼 发表于: 2012-04-09
好点的二手频谱买不起,国产的有点郁闷。。。
离线qiufeng
发帖
401
只看该作者 11楼 发表于: 2012-04-09
补充电路图
补充电路图,有两点比较郁闷,就是vco的电源没考虑好(多电源,使用0欧姆电阻选择),还有就是vxo的vo上可变电阻没接到vp(5v)上,接到vcc(3.3v)上了,不过还好。
另外两个变容管为bb179
同时调整如下:r704 r706取5.6k(我使用了5.62k),r714取56k
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线永远的FM
发帖
12098
只看该作者 12楼 发表于: 2012-04-09
楼主的vco部分电路设计的不错,简易自动调节反馈vco。
现在正在调试adf4110+70~120mhz vco,过几天上测试图。
离线bd7bq
发帖
1491
只看该作者 13楼 发表于: 2012-05-01
记   号.
BD7BQ 徐征宇
湖南长沙
E-Mail:bd7bq@126.com
QQ:830472