2011年6月5日星期日

  MBD-FPGA设计小实例:FM接收机

MBD-FPGA设计实例:FM接收机

源文件:http://download.csdn.net/source/3340585

2011年6月4日

21:43

Author by McCrocodile ZHENG

 

一年多之前尝试的基于MBD开发的一个实例,由于只有简单的并行ADC和DAC,所以加了一个PLL就直接编译下载就可以用了。

一直热衷于MBD开发FPGA~~~~~这次准备给以前的做过的几个小实例整理下和大家分享下。程序在硬件上测试过 ,不过当时没有拍个视频。

原理及实现思路:

  • 常用解调方法:
  • 锁相解调(较优的方法)
  • 包络检波
  • 斜率鉴频
  • 相位鉴频
  • 脉冲技术鉴频
  • 正交解调
  • 正交解调原理
  • 参考文献:
    • 文献A 软件无线电FM中频接受系统的仿真与验证 陈惠兵 硕士论文
    • 文献B 基于FPGA的FM解调/位同步系统设计与实现 柴俊栓 空空导弹研究院
    • 文献C 基于SDR的通信系统解调与技术研究 王荔 硕士论文
  • 数字正交解调通用模型:(文献C P19)

    image

  • FM正交解调:(文献A P27 文献C P21)
    • 信号表达式:

    • 信号正交分解:
    • 鉴频:
  • 鉴频的改进:(计算反正切和除法将耗费FPGA大量的资源,且实现起来比较复杂)推到请参考:高等数学中的导数和微分章节(函数的微分和arctan的微分)
  • 系统参数设计及容差设计
  • 接收机数字部分架构:

  

  • 参数设计:
    • 输入IF信号信号:455KHz ,AD采样速度10MHz 10bit位宽
    • FPGA外部晶振时钟:32.768MHz,内部解调模块工作时钟fsp=10MHz(由外部晶振产生的时钟用FPGA内部PLL分频得到)
    • CIC阶数:2阶
    • 下采样系数:4 (Downsample factor)
    • LPF1、LPF2及LPF3参数相同:(满足FM调频信号要求)
      • 采样率Fs=2.5MHz
      • 通带fpass=200KHz 、fstop=400Hz
      • 阶数和通带波纹及阻带衰减:阶数8阶(由于资源限制,只选8阶,由其决定阻带衰减)

  

  

文件说明

2011年6月5日

0:03

  

工程文件说明

  • 目录说明:FM_demod_classification为顶层目录,FM_demod_classification的子目录QII为QuartusII工程所在目录,QII的子目录IQCIC,JianpinQI,mynco和Unsig2Sign为子系统演进和仿真文件所在目录,QII的子目录hdlsrc为生成可以用于FPGA上HDL代码。
  • 文件说明:
    • FM_demod_classification目录下文件:(此目录下模型生成HDL不一定能用于FPGA)
      • _Basic.mdl为基本原理仿真模型
      • _hdllib.mdl为兼容HDL生成的模型
      • _fp.mdl为定点模型
      • UnsigSign.mdl为有符号和无符号之间的转换
      • _over_CompareToDouble.mdl为最中用于生成代码的模型与浮点模型的比较
    • QII目录下文件:
      • _over_CoderUsing.mdl用于生成代码的模型
      • FM_demod.qpf为用于FPGA的最终接收机的QuartusII工程文件。
    • IQCIC,JianpinQI,mynco和Unsig2Sign子系统仿真测试目录:qpf均为对于子系统的工程文件,其下的simulation/modelsim为时序仿真文件和模型所在目录
  • 工程文件的共同点:通过后缀顾名思义

  

  

MBD开发的模型以及结构

2011年6月5日

0:11

测试平台:武汉凌特入门级软件无线电开发平台

FPGA:EP2C5Q240

ADC:AD9200 10MHz 10bit

DAC:TLC5602 10MHz 8bit 外界扬声器或者耳机

DSP 未使用

  

测试环境:

接受FM广播信号。约100M(86M~106M)变换到低IF 455KHz

测试结果:

接收到质量不错的广播信号。

  

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:03

  

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:00

  

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:00

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:04

  

  

  

  

  

屏幕剪辑的捕获时间: 2011/6/5 1:58

  

  

  

联合仿真测试EDA Link

2011年6月5日

1:59

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:10

  

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:11

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:12

  

  

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:11

  

  

屏幕剪辑的捕获时间: 2011/6/5 2:12

  

  

  

  

总结

2011年6月5日

0:00

  

  • LPF滤波器资源耗费过大:
    • FIR IP core 和Matlab的filter HDL coder生成代码都比较占用资源,即使选择一个满足误差要求的较窄位宽。
    • 使用一种减少乘法器的FIR实现,同时减小位宽和系数精度。参考文献:数字信号处理的FPGA实现 刘凌译 清华大学 P79

    • 使用CIC+LPF代替单个LPF,CIC只是用加法器和延时器
  • 对模型的几个配置:simulationconfigure param
    • Slover:
      • Type:Fixed-step
      • Solver:Discrete (no cantinous status)
      • TaskModel:SingleTasking
    • Diagnostis/Sampletime:
      • Multitask rate transition:error
      • Singletask rate transition:error

      

没有评论:

发表评论