基于FPGA的软件无线电FM信号解调实验
实验题目:基于 FPGA 的软件无线电 FM 信号解调实验
1. 课程简要信息
课程名称:《数字电路与逻辑设计实践项目》
课程学时:20学时
项目学时:课内10学时、课外 10学时
适用专业:电子信息类
学生年级:大三年级秋季学期
2. 实验内容与任务(限 500 字,可与“实验过程及要求”合并)
结合《数字电路与逻辑设计》课程中所学的基础理论知识及基于 Verilog 硬件描述语言的编程开发基础,在 FPGA 上设计电路,实现对软件无线电 FM 信号的解调实验,整个实验系统框架如下图所示;

图1 实验系统框架图
具体实验内容如下:
【基本要求】
1)熟悉可编程逻辑器件集成开发环境 Vivado,掌握数字系统设计基本流程;
2) 使用 FPGA 通过 AD 模块采集 FM 调制信号(载波频率 2Mhz,峰值频偏不大于 $2 5 \mathrm { k H z }$ ),将模拟信号转换为数字信号;
3) 在 Matlab 中设计低通滤波器的系数,并使用 Verilog 语言仿真;
4) 使用 Verilog 语言仿真正交下变频,在 FPGA 中将 AD 采集的信号进行正交下变频;
5) 使用 Verilog 语言仿真FM 小角度近似解调算法,并在 FPGA 中实现;
6) 将解调后的信号,通过DA模块将数字信号转换为模拟信号,并在示波器显示,观察期望的解调信号频率及信号波形失真情况。
【扩展内容】
1) 学习使用带通采样,实现对 FM 调制信号(载波频率 10Mhz)的采集;2) 学习 CIC 梳状滤波器的使用,首先将下变频的信号先进行 CIC 抽取降低数据的计算量,其次将 FM 解调后的信号进行 CIC 插值,最后通过 DA 模块输出,使用示波器观察解调的效果。
3. 实验过程及要求(限 300 字)
1)实验前做好预习,掌握Vivado、Matlab等软件使用,复习数字电路、模拟电路、信号处理、通信原理等相关理论基础知识,了解硬件 ZYNQ-7020 FPGA 开发板的使用方法;
2)实验要求 2 人一组,推荐分工协作。自行制定实现方案、按照实验步骤,详细记录实验中遇到的各种问题,学会分析问题并解决问题;
3)学习 Matlab软件的使用,学会利用 Filter Designer 设计滤波器并导出滤波器参数,并能在 Matlab 仿真滤波器的效果;
4) 学习 Vivado 的使用,运用 Verilog HDL 硬件描述语言,采用层次化设计方法,完成程序编写,对各模块进行仿真和测试,记录综合、仿真、实现和下载验证等过程的实验结果;
5) 查阅资料,结合数电模电基础知识,熟悉并应用 AD/DA 模块,实现模拟信号的采集并转换数字信号,数字信号转换成模拟信号输出;
6) 按要求,输入信号采用鼎阳科技 SDG1062X-G 信号源生成 FM 调制信号,输出接鼎阳科技的SDS1000X-E系列数字示波器测试实验结果验收,老师随机提问实验相关问题,学生回答;
7)每人独立撰写实验报告,明确实验中各自完成的工作。通过分组汇报设计方案、项目亮点、问题及解决方法、建议与体会等,已达到学习交流、互通有无、增加经验的效果,同时也为老师下一步课程改革提供依据。
4. 相关知识及背景(限 150 字)
以我校开展的科研成果进课堂活动为导向,教学团队调研了我院主流科研方向的优秀成果,结合大三学生所掌握的基础知识以及数字电路逻辑设计的前沿方向,通过精简我院无线电通信科研成果设计了该实验项目,实验内容涵盖了雷达和通信科研涉及的数字电路、模拟电路、信号处理、IP核使用、AD/DA 模块等知识点,可激励学生学以致用。
5. 实验环境条件
学生实验台如下图所示,主要包含有基础仪器四件套:SDM3055X-G 数字万用表、SDS1000X-E系列数字示波器、SDG1062X-G 信号源、SPD3303X 直流电源,另外还包含电烙铁、ZYNQ-7020 FPGA 开发板一套及相对应的AD/DA扩展模块,每个实验台配有虚拟云桌面瘦客户机端电脑,装有Matlab软件,Vivado 软件进行 Verilog HDL 语言进行程序开发,老师针对实验课程的实验参考资料也已上传到所有实验台电脑共享的硬盘中,学生打开电脑后都可以进行实验参考资料的访问与阅读。

图2 学生实验台实验条件实物图
6. 教学目标与目的(限 150 字)
通过科研成果进课堂活动,让学生基于 FPGA 平台完成 FM 解调任务,旨在引导学生掌握可编程逻辑器件数字电路设计方法,以及自顶向下的层次化模块化设计方法,促进学生对数字电子技术基础理论知识的理解,提高学生综合运用所学知识解决复杂数字系统的工程实践能力,启迪学生的创新性思维,培养学生的工程素养。
7. 教学设计与实施进程
本实验项目既是一个电子系统的设计,也是一个比较完整的简化后的小型科研项目,需要经历方案设计、电路设计、模块选型、程序开发、软件仿真、调试优化、测试答辩、总结报告等过程。实验教学过程中,主要在以下几个方面加强对学生的引导:
1)了解 FM解调的基本原理和方法,正交下变频、滤波器的实现原理与应用等方面知识;
2)学习通过收集的资料了解芯片的应用及 Verilog HDL 语言进行电路设计的过程与方法;
3)了解使用 ADC 和 DAC 分别实现模拟信号到数字信号、数字信号到模拟信号的转换的原理和方法;
4)学会自顶向下层次化模块化设计方法,结合 Matlab 仿真,用 Verilog HDL 设计仿真实现各个模块的功能;
5)学习并掌握使用 IP核的方法;
6)学习并掌握 FPGA 调试、下载的基本方法及系统联调的过程和方法。
本实验的教学实施进程如下:
1)任务安排。利用 1学时时间,进行信号滤波实验的基本原理、ZYNQ-7020 FPGA开发板结构等理论知识的讲解,在原理、思路、方法等方面进行指导;
2)设计准备。利用 2 学时时间,在工具软件使用方面指导学生,推荐实验指导书,指导学生学习电路设计相关资料等;
3)课堂辅导。利用 2 学时时间,课堂辅导主要解答学生在电路原理设计、仿真实现功能中的共性问题。
4)程序调试。开放电子实训室和创客空间,让学生自主结合仪器进行程序调试,并在未结合开发板的情况下进行功能性仿真。
5)考核验收。利用 2 学时时间,针对学生提交的硬件实物和设计仿真结果进行现场测试验收。
6)总结答辩。利用 1学时时间,让学生交流展示,老师随机提问。
8. 实验原理及方案
1) 系统结构
基于 FPGA 的软件无线电 FM 信号解调实验,首先对输入的 FM 模拟信号进行信号调理,再经过AD 模块转换成数字信号。FM 解调过程分为三步,第一步将 AD 采集的信号进行正交下变频处理,第二步将正交下变频处理的信号进行低通滤波,第三步经滤波后的信号进行 FM 解调。最后将 FM 解调后的信号经过 DA 模块输出。
扩展部分中,主要期望学生可以使用带通采样法采集更高频率的 FM 信号,以及使用 CIC 梳状滤波器提高输出信号的质量。

图3 实验系统结构图
2) FPGA 开发板及 AD/DA 模块介绍
如下图所示,为 ZYNQ-7020 FPGA 开发板底板接口资源;

图4 FPGA底板接口资源图
另外其核心板的参数及硬件布局如下图所示:

图 5 核心板参数及布局图
本实验采用的 AD/DA 模块如下图所示,包括扩展排线接口及 AD 输入通道与 DA 输出通道,其中
AD 转换芯片为 AD9280,DA 转换芯片为 AD9708。

图 6 AD/DA 模块图
AD9280 的时序图如下图所示:

图 7 AD9280 时序图
模拟信号转换成数字信号并不是当前周期就能转换完成,从采集模拟信号开始到输出数据需要经过3个时钟周期。比如上图中在时钟CLK的上升沿沿采集的模拟电压信号S1,经过3个时钟周期后(实际上再加上 25ns 的时间延时),输出转换后的数据 DATA1。需要注意的是,AD9280 芯片的最大转换速度是 32MSPS,即输入的时钟最大频率为 $3 2 \mathrm { M H z }$ 。
AD9708 必须在时钟的驱动下才能把数据写入片内的锁存器中,其触发方式为上升沿触发,AD9708 的时序图如下图所示:

图 8 AD9708 时序图
上图中的 DBO-DB7 和 CLOCK 是 AD9708 的 8 位输入数据和输入时钟,IOUTA 和 IOUTB 为 AD9708输出的电流信号。由上图可知,数据在时钟的上升沿锁存,因此我们可以在时钟的下降沿发送数据。需要注意的是,CLOCK 的时钟频率越快,AD9708 的数模转换速度越快,AD9708 的时钟频率最快为$1 2 5 \mathrm { M h z }$ 。
3) 实现方案

图 9 实验方案图
$\textcircled{1}$ FM 解调基本原理
传统 FM 正交解调是在 FM 信号采样下变频后,得到已调信号,通过乘上与其载波相同频率的正弦和余弦分量。然后通过低通滤波器,滤除二倍载波频率分量,保留下来的就是基带信号的正余弦形式,得到 I 路和 Q 路信号之后,再对 I 路 Q 路信号的比值求反正切,即可得到基带信号。这个求解的过程就是鉴相。
传统方法需要对正交分量和同相分量进行反正切及差分运算,这样在 FPGA 中实现起来相对来说复杂且耗费资源。改进的小角度近似解调法利用了 FM 的恒包络特性,角度相似原理,得到的解调公式如下:
$$ X ( n ) = Q ( n ) I ( n - 1 ) - I ( n ) Q ( n - 1 ) $$
如此,仅需对信号进行延时,相乘再相减的操作,运算过程简化且易于实现。

图10 FM解调流程图
$\textcircled{2}$ 正交下变频
数字正交下变频系统的任务便是去除接收信号中的中频载波,无损的提取出信号的同相部分和正交部分。数字正交下变频包括三种方式,分别为低通滤波法,插值法和多相滤波法。本次实验使用低通滤波法。

图 11 数字正交下变频
$$ \mathrm { S } _ { 0 } ( \mathrm { t } ) = \mathrm { I ( t ) c o s } ( 2 \pi \mathrm { f _ { 0 } t } ) - \mathrm { Q ( t ) c o s } ( 2 \pi \mathrm { f _ { 0 } t } ) $$
$$ \begin{array} { l } { { S _ { 0 } ^ { Q } ( t ) = - S _ { 0 } ( t ) \sin ( 2 \pi f _ { 0 } t ) } } \ { { \ = - [ I ( t ) \cos ( 2 \pi f _ { 0 } t ) - Q ( t ) \cos ( 2 \pi f _ { 0 } t ) ] \cdot \sin ( 2 \pi f _ { 0 } t ) } } \ { { \ = \displaystyle \frac { 1 } { 2 } Q ( t ) + \frac { 1 } { 2 } I ( t ) \sin ( 2 \pi \cdot 2 f _ { 0 } t ) - \frac { 1 } { 2 } Q ( t ) \cos ( 2 \pi \cdot 2 f _ { 0 } t ) } } \end{array} $$
$$ \begin{array} { l } { { S _ { 0 } ^ { I } ( t ) = S _ { 0 } ( t ) \cos ( 2 \pi f _ { 0 } t ) } } \ { { \ = [ I ( t ) \cos ( 2 \pi f _ { 0 } t ) - Q ( t ) \cos ( 2 \pi f _ { 0 } t ) ] \cdot \cos ( 2 \pi f _ { 0 } t ) } } \ { { \ = \displaystyle \frac { 1 } { 2 } I ( t ) + \displaystyle \frac { 1 } { 2 } I ( t ) \cos ( 2 \pi \cdot 2 f _ { 0 } t ) - \displaystyle \frac { 1 } { 2 } Q ( t ) \sin ( 2 \pi \cdot 2 f _ { 0 } t ) } } \end{array} $$
两条支路相干检波的结果再进行低通滤波就可以得到信号的同相部分和正交部分结果。从而可以进一步组合成复数解析信号,进行后续的进一步处理。
$$ I ^ { \wedge } ( t ) = { \frac { 1 } { 2 } } I ( t ) $$
$$ Q ^ { \wedge } ( t ) = { \frac { 1 } { 2 } } Q ( t ) $$
$\textcircled{3}$ FIR 滤波器基本原理
本实验中采用的是 FIR滤波器,FIR数字滤波器的基本原理如下:
$$ \mathrm { y ( n ) } = \sum _ { \mathrm { i } = 0 } ^ { \mathrm { N - 1 } } \mathrm { b } _ { \mathrm { i } } \mathrm { x } ( \mathrm { n - i } ) - \sum _ { \mathrm { i } = 1 } ^ { \mathrm { M } } \mathrm { a } _ { \mathrm { i } } \mathrm { y } ( \mathrm { n - i } ) \qquad \mathrm { n } \ge 0 $$
式中 $\mathrm { { x } \left( n \right) }$ 为输入信号序列, $\mathrm { { y } \left( n \right) }$ 为输出信号序列, $\mathrm { a } _ { \mathrm { i } }$ 、 $\mathrm { b } _ { \mathrm { i } }$ 为滤波器参数,N 为滤波器的阶数;若所有的 $\mathrm { a } _ { \mathrm { i } }$ 均为 0,则得 FIR 滤波器的差分方程:
$$ \displaystyle \mathbf { y } ( \mathbf { n } ) = \sum _ { \mathbf { i } = 0 } ^ { \mathbf { N } - 1 } \mathbf { b } _ { \mathrm { i } } \mathbf { x } ( \mathbf { n } - \mathbf { i } ) $$
对上式进行 $_ \textrm { Z }$ 变换,可得 FIR 滤波器的传递函数:
$$ \mathrm { H ( z ) = \frac { \vec { Y } ( z ) } { X ( z ) } = \sum _ { i = 0 } ^ { N - 1 } b _ { i } z ^ { - i } } $$
$\textcircled{4}$ Matlab 上设置滤波器参数并进行滤波功能仿真测试
在Matlab软件的Filter Designer设计模块中,可以通过设置我们期望的滤波器的性能参数,包括阶数、实现方法、采样率、截止频率等性能参数,再点击“Design Filter”可生成我们的滤波器参数,如下图所示:

图 12 Filter Designer 设计滤波器
设计好滤波器后,在 Matlab 再生成仿真混频信号,并通过生成的滤波器参数进行计算获得滤波后的信号并显示仿真结果,如下图所示

图 13 Matlab 滤波仿真实验结果
$\textcircled{5}$ Vivado 上设计仿真电路实现数字信号的滤波功能仿真
首先在 Vivado 软件上进行 Verilog HDL 语言编程,将 Matlab 生成的测试信号导入 txt 数据文件中,在Vivado上进行数据读取,然后结合滤波器参数,计算输出滤波后的数字信号,并进行功能仿真,实验结果如下图所示:

图14 Vivado 功能仿真实验结果
$\textcircled{6}$ Vivado 结合 AD/DA 模块设计整个系统电路
实验中所使用的 FPGA 开发板及 AD/DA 模块,如下图所示,结合功能仿真的实验结果,添加IO约束,将信号源输入模拟信号经过 AD模块转换成数字信号,再将处理后的数字信号经过 DA模块转换成模拟信号再输出接示波器,电路设计中修改数据的输入和输出,按照设计输入——分析综合——约束输入——设计实现——生成和下载比特流等过程,完成实验,调节输入的 FM 信号及示波器,观察实验输出信号。

图15 实验硬件实物图
9. 实验报告要求
实验报告需要反映以下工作:
1)分析系统功能要求,进行方案论证;
2) 对功能模块进行划分,并画出系统模块框图;
3) 设计各个功能模块,分别进行仿真,记录仿真结果;
4) 对顶层模块进行仿真,记录仿真结果;
5) 下载到实验板验证设计结果;
6) 列举系统设计调试过程中出现的问题及解决的办法;
7)撰写实验总结报告,并提出实验改进建议。
10.考核要求与方法(限 300 字)
成绩考核主要由实验预习、实验进程、实验验收、实验报告 4 部分成绩组成。
1) 实验预习报告: $( 1 0 % )$ )
$\textcircled{1}$ FM 数字解调的基本原理的学习和掌握情况,完成实验方案设计;( $( 5 %$ )$\textcircled{2}$ 查阅资料了解 ZYNQ-7020 FPGA开发板结构功能和 AD/DA模块的原理情况。( $( 5 % )$
2)实验验收情况:( $7 0 %$ )
$\textcircled{1}$ 是否采用层次化设计方法进行模块功能划分和设计,提供 Verilog 源代码和仿真结果;( $. 1 0 %$ )
$\textcircled{2}$ AD 模数转换及 DA 数模转换模块的实现,IO 约束等实现情况;( $1 5 %$ )
$\textcircled{3}$ 实现正交下变频的功能,FM 解调信号在示波器输出显示的效果,失真情况等,选做内容完成情况。( $3 0 %$ )
$\textcircled{4}$ 现场回答问题及展示表述情况。( $1 5 %$ )
3) 实验总结报告:( $2 0 %$ )
实验报告的规范性与完整性,总结思考的深入性。
11.项目特色或创新(可空缺,限 150 字)
1)科研色彩浓:通过精简软件无线电项目而设计,保留了完整的科研环节;2)两性一度体现足:模数电路融合、软硬兼顾,提升了创新性和挑战度。3)应用价值大:AD、DA、滤波等实验模块在雷达信号源、雷达抗干扰、软件无线电以及大学生电子设计竞赛方面都有广泛应用,学生兴趣高;4)扩展性好:ZYNQ-7020 FPGA 开发板资源丰富,便于拓展实验。