搜索
查看: 2459|回复: 2

【转】短波接收机前端模块电路设计

[复制链接]

180

主题

360

帖子

928

积分

高级会员

Rank: 4

积分
928
发表于 2015-9-23 10:41:28 | 显示全部楼层 |阅读模式
说是做接收机,其实主要的工作量集中在本振,因为混频之后的滤波器只允许一个信号过去,这就意味着当本振固定的时候,接收进来的信号也就固定了。接收机进来的信号通过预选频之后就进入混频端,而混频的本振是选择信号的关键之处,当改变混频的本振时,就会选择某个进来的频率,这是接收信号里面的主要之处。

   


        一个信号进来首先经过预选频,之后通过低噪放,这里的opa很关键,因为进来的信号灵敏度很低,不能随便选择一个放大器。因为越在前面一级他的噪声系数要求就越高。镜像抑制之前我的博客讲解过,涉及很多指标以后有机会再统一归纳一下。天线进来的信号与本振一起进入混频之后通过41.4M的晶体滤波器,因为输出选择有晶体滤波器的存在,也就是说当本振固定的时候,选择的天线进来的频率也就固定了,这也是接收机最主要的理论。这里的DDS显得很关键,因为它几乎是整个系统的核心,选择的频率由它决定了。我们采用的DDS为AD9953,时钟要求较高,配合锁相环一起做的本振。进入混频出来之后的信号通过滤波器再进行自动增益控制,采用两级信号自动增益以及滤波的原因是为了更好的滤除掉波形。接着进入模数转换AD中进行数字采集,再通过下变频之后把信号的频率转换为基带的信号,送入DSP去处理就行了。

        指标要求:
        频率范围:1-35M
        频率间隔:1Hz
        基准灵敏度:端口电压≤0.5uV
        中频抑制和镜像抑制>90db
        较大信号信噪比>40db
        阻塞:≥100dBuV
        
          先看一下平时的仪器。这张图几乎可以代表着平时的生活状态以及接触的东西。


        再看原理图吧,这是本振部分的。

        处理器用的ti的。

        虽然市场上USB芯片很流行,但是我老师对232特别有情怀,每次他都说用这个就好, 省钱。


        中间用了多阶滤波器以及后面加了一个固定增益放大器。下面是多个电源部分。





        本振部分的PCB和3D图。





        实物板子图,



        这是MSP430



        dds在这里了.

        信号经过混频出来之后通过滤波,信号不太稳定的情况下这里设计了AGC用来稳定信号的幅度再送往后级处理。芯片用的ADI的AD8367和AD603.多级603,前期的实验用的是AD605,但是605被我调废了。之后改的方案就用的这款。我老师特别喜欢AD8367,不仅仅是因为它的带宽很高!AGC有很多种方案,采用603的原因除了因为他熟悉之外还有因为他的移植性很高,在ADI的一个典型的方案里面就配合了AD8367做的一个自动增益。



        放大图。





    AGC设计在这里了,AD8367用来检波的。603负责程控。




        最后的指标测试,晶振源的频谱。

        单信号频谱




        测试细节部分不过多解释,测试的指标包括带宽,灵敏度,阻塞,镜像抑制等。大部分指标达标。
        上一张接收机的图。


    附带AD9953的部分程序。
    主程序部分:
void main( void )
{
    /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF1OUT = 0XFF;
    P2DIR = 0XFF2OUT = 0XFF;
    P3DIR = 0XFF3OUT = 0XFF;
    P4DIR = 0XFF4OUT = 0XFF;
    P5DIR = 0XFF5OUT = 0XFF;
    P6DIR = 0XFF6OUT = 0XFF;
    WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗

    InitAD9953();  //初始化
//    InitDAC12();   //初始化DA
    InitUART0();   //初始化串口
    InitADF4350();  //初始化PLL
   
    AD9953_WriteFreq(30000000);
    while(1)
    {
      UART0_ChangeFreq();
//      UART0_ChangeDA();
//      a=10000;
//      if(flag==3)
//      {
//        a=10000;
//        while(a--);
//        i=i+100000;
//        if(i>75000000) i=46500000;
//        AD9953_WriteFreq(i);  
//      }
      
//      DA_Sweep=DA_Sweep+10;
//      if(DA_Sweep>3000) i=0;
//      DAC12_0DAT=DA_Sweep;      
    }
}

        DDS主要用的AD99系列的。程序参考了ADI官网的代码示例,想要参考的可以去下载。在那个基础上修改就好了。另外剩下的就只有PLL的程序部分,也可以下载参考,剩下的MCU模块里面的只有串口的程序,组合在一起就差不多。

DDS程序部分:
void WriteByte(unsigned char data)
{
  PORT_SCLK_OUT;
  PORT_SDIO_OUT;
  unsigned char i;
  unsigned char temp;
  temp = data;
  for(i=0;i<8;i++)       //送入1个字节的数据
  {
    CLR_SCLK;
    nNop(4);
    if(temp&0x80)
      SET_SDIO;
    else
      CLR_SDIO;
    temp<<=1;
    nNop(2);
    SET_SCLK;
    nNop(4);
  }  
}


回复

使用道具 举报

55

主题

207

帖子

746

积分

高级会员

Rank: 4

积分
746
发表于 2015-10-19 21:25:56 | 显示全部楼层
好厉害
回复 支持 反对

使用道具 举报

0

主题

21

帖子

329

积分

中级会员

Rank: 3Rank: 3

积分
329
发表于 2015-11-1 14:46:58 | 显示全部楼层
牛逼的帖子
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|RF技术社区

GMT+8, 2024-3-29 08:13 , Processed in 0.075918 second(s), 9 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表