本实验基于FPGA开发板DE2-115和AD/DA板THDB-ADA设计一个信号产生与频谱分析的系统。运用Quartus II软件进行编程,首先,设计一个参数可变的LFM信号发生器和数字FIR滤波器。然后,通过DAC将其转换为模拟中频信号输出,再对外接信号进行ADC采样,最后,对信号进行频谱分析。
关键词:FPGA, Quartus II, LFM, ADC/DAC
FPGA(Field-Programmable Gate Array)是一种半定制的集成数字芯片,其最大特点是现场可编程。内部结构由CLB、RAM、DCM、IOB、Interconnect等构成。
图1 FPGA内部结构
FPGA开发的一般流程:
设计输入:硬件描述语言,IP核,原理图;
编译:综合,Fitter,时序;
仿真:Modelsim;
下载调试:SignalTap。
Altera Cyclone® IV 4CE115 FPGA 器件
Altera 串行配置芯片: EPCS64
USB Blaster 在线编程;也支持JTAG和AS可编程方式
2MB SRAM
两片 64MB SDRAM
8MB Flash memory
SD卡插槽
4个按钮
18个滑动开关
18个红色LED
9个绿色LED
50M时钟源
24位音频编解码器,麦克风插孔
电视解码
RJ45 2G以太网接口
VGA连接器
含有USB_A和USB_B连接器的主从控制器
RS232收发器和9针连接器
PS/2鼠标和键盘连接器
红外接收器
ControlPanel是开发板自带的一个工具软件,可以通过该软件提供的图形界面直接对FPGA上的各个外设进行操作。通过该操作可以确认PC机与开发板的连接是否正确,开发板的硬件工作是否正常。
ControlPanel的安装过程如下:
确保QUARTUS II 10.0 或以上版本能被成功安装;将开关RUN/PROG切换到RUN位置;将USB接线连接至USB驱动端口,供12V电源并打开开关;打开主机上的可执行文件DE2_115_ControlPanel.exe,controlPanel的用户界面如下:
图3 用户界面
DE2_115_ControlPanel.exe一旦被启动,DE2_115_ControlPanel.sof程序流文件将会被自动加载;如果未连接,点击CONNECT,点sof文件将会重新加载到板子上;注意,控制面板将会占用一直到你关闭那个端口,除非你关闭USB端口,否则你不能使用QUARTUS II来下载文件;控制面板现在可以使用了,通过设置一些LED灯ON/OFF的状态来观察DE2-115上的状态。
JTAG配置FPGA:
连接电源适配器打开电源开关
将下图开关到RUN位置进行调试
连接USB连接线连到DE2-115开发板的USB BLASTER端口
下载.sof后缀名的文件来对FPGA进行编程
如需对配置芯片变成开关需要打到PROGRAM位置
图4 设计流程
利用System Builder建立工程,系统将自动根据需求进行管脚分配和相关设置。
输入工程名字,将自动设置为顶层设计实体;
用户根据自己的需求,选择需要使用的模块the DE2-115 ,System Builder将会自动产生相关联的引脚配置;
用户可以自己定义引脚的名字、位置、目录、和IO标准
通过高速中间接口可以外挂子卡
he DE2-115 System Builder 可以使用户加载某个配置,保存用户的配置;将会产生QUARTUS II 的文件。
ADDA扩展板是 利用HSMC接口进行扩展的子卡,相当于FPGA的一个外设。扩展板提供两路 65 M 65M 65M, 14 14 14位采样分辨率的ADC以及两路 125 M 125M 125M, 14 14 14位采样精度的DAC。采样时钟设置灵活可以采用多种形式。信号输入和输出采用变压器耦合方式,频率范围为 0.1 M H z 800 M H z 0.1MHz~800MHz 0.1MHz 800MHz。
ADC的基本参数:集成双端口14位AD; 3 V 3V 3V供电 ( 2.7 V − 3.6 V ) (2.7V-3.6V) (2.7V−3.6V); S N R = 71.6 d B SNR=71.6dB SNR=71.6dB;固定的模拟输入范围 0 V 2 V 0V~2V 0V 2V。
本实验利用DE2-115开发板产生一个参数可变的线性调频(LFM)信号,利用数字滤波器改变LFM信号的幅频特性,并通过DA扩展板转换为模拟中频信号。通过AD扩展板采集该信号,经过数字正交下变频转换为数字基带信号,并对此基带信号进行频谱分析。
基本要求:
产生LFM脉冲,通过调试工具设置信号参数,使得脉冲宽度在1us~1s内可变,带宽在5MHz~10MHz可变,脉冲重复周期在10us~2s内可变,载波频率在5MHz~20MHz可变,输出信号幅度在0.1~1V可变,以上参数可任意组合,产生的信号通过DAC输出,DAC数据更新率为120MHz。
将上面产生的LFM脉冲先通过截止频率为5MHz,阻带频率为10MHz的FIR低通滤波器,再通过DAC输出。
将上面产生的LFM脉冲先通过截止频率为5MHz,阻带频率为10MHz的FIR低通滤波器,再通过DAC输出。
提高要求:
LFM信号的参数可变范围进一步扩展,范围越大越好。
多组FIR滤波器的冲击响应可实时切换。
频谱分析的分辨率进一步提高。
LFM基带信号的数学表达式:
s ( t ) = r e c t ( t / T ) e ( j π K t 2 ) , − T / 2 ≤ t < T / 2 s(t)=rect(t/T)\ e^( j\pi Kt^2\ ),-T/2\le t<T/2 s(t)=rect(t/T) e(jπKt2 ),−T/2≤t<T/2
其中, r e c t ( ) rect() rect()是矩形脉冲函数, T T T是脉冲持续时间,单位是 s s s, K K K是调频斜率,单位是 H z / s Hz/s Hz/s。
LFM信号的瞬时相位为:
ψ ( t ) = π K t 2 \psi\left(t\right)=\pi Kt^2 ψ(t)=πKt2
LFM信号的瞬时频率为:
f ( t ) = 1 2 π d ψ ( t ) d t = K t f\left(t\right)=\frac{1}{2\pi}\frac{d\psi\left(t\right)}{dt}=Kt f(t)=2π1dtdψ(t)=Kt
LFM信号的带宽为:
图5 带宽为10MHz,脉宽为10us的LFM信号
LFM带通信号的数学表达式:
s ( t ) = r e a l ( r e c t ( t / T ) e ( j ( 2 π f c t + π K t 2 ) ) ) , − T / 2 ≤ t < T / 2 s(t)=real(rect(t/T) e^(j(2πf_c t+πKt^2))),-T/2≤t<T/2 s(t)=real(rect(t/T)e(j(2πfct+πKt2))),−T/2≤t<T/2
其中, r e a l ( ) real() real()是取复数实部函数, f c f_c fc是载波频率,单位是 H z Hz Hz。
LFM带通信号的瞬时相位为:
ψ ( t ) = 2 π f c t + π K t 2 ψ(t)=2πf_c t+πKt^2 ψ(t)=2πfct+πKt2
LFM信号的瞬时频率为:
f ( t ) = 1 / 2 π d ψ ( t ) / d t = f c + K t f(t)=1/2π dψ(t)/dt=f_c+Kt f(t)=1/2πdψ(t)/dt=fc+Kt
LFM信号的带宽为:
B = K T B=KT B=KT
LFM带通信号时域波形
图6 载波为 10 M H z 10MHz 10MHz,带宽为 10 M H z 10MHz 10MHz,脉宽为 10 u s 10us 10us的LFM实带通信号LFM带通信号频谱
图7 载波为 10 M H z 10MHz 10MHz,带宽为 10 M H z 10MHz 10MHz,脉宽为 100 u s 100us 100us的LFM实带通信号
瞬时频率:
f ( n T s ) = f c + K n T s f(nT_s )=f_c+KnT_s f(nTs)=fc+KnTs
DDS的频率调谐字FTW和输出频率 f o f_o fo的关系:
F T W = f o / f s 2 N FTW=f_o/f_s 2^N FTW=fo/fs2N
其中,N是DDS的相位累加器位数,$f_s=1⁄T_s $为DDS的时钟频率。因此,用DDS产生LFM信号时,对应的频率调谐字为:
F T W ( n ) = r o u n d ( f o / f s 2 N ) = r o u n d ( f c / f s 2 N + n K 〖 T s 〗 2 2 N ) FTW(n)=round(f_o/f_s 2^N )=round(f_c/f_s 2^N+nK〖T_s〗^2 2^N) FTW(n)=round(fo/fs2N)=round(fc/fs2N+nK〖Ts〗22N)
窗函数法:是一种在时域设计FIR数字滤波器的方法,用窗函数对理想滤波器的冲击响应进行加权。
频率取样法:从频域出发,对理想滤波器频域特性进行等间隔采样,将采样值作为待设计滤波器的频率特性,对其做IDFT得到滤波器的冲击响应。
最优设计方法:等波纹切比雪夫逼近法,采用“最大误差最小”准则得到最佳滤波器。
MATLAB函数:fir1、fir2、firpm
FIR滤波器设计工具:fdatool
FFT是快速傅里叶变换的简称,可对离散信号进行频域分析。
若时域离散序列 x ( n ) , 0 ≤ n ≤ N − 1 , x(n),0≤n≤N-1, x(n),0≤n≤N−1,对其作N点FFT运算得到 X ( k ) X(k) X(k):
X ( k ) = ∑ ( n = 0 ) ( N − 1 ) ▒ 〖 x ( n ) e ( − j 2 π / N k n ) 〗 X(k)=∑_(n=0)^(N-1)▒〖x(n)e^(-j 2π/N kn) 〗 X(k)=(∑n=0)(N−1)▒〖x(n)e(−j2π/Nkn)〗
其中, | X ( k ) | |X(k)| |X(k)|是归一化频率 2 π / N k 2π/N k 2π/Nk的信号分量的幅度, a r g ( X ( k ) ) arg(X(k)) arg(X(k))是其相位。
对模拟信号进行低通采样或者带通采样得到实信号;
对实信号正交下变频,得到零中频复信号;
对零中频信号作FFT,得到被分析信号的幅频特性和相频特性。
图8 实验流程
本次实验使用了PLL IP核、NCO IP核、FIR IP核、FFT IP核以及乘法和加法器IP核。
PLL IP核:锁相环IP核,利用50MHz系统时钟,产生 125 M H z 125MHz 125MHz和 65 M H z 65MHz 65MHz的时钟信号,分别驱动DAC和ADC模块。
NCO IP核:根据随时间变化的频率控制字,输出正余弦信号,得到线性调频(LFM)信号。
FIR IP核:导入由matlab生成的系数文件(.txt),对输入数据进行滤波。本次实验一共设计了两个低通滤波器,一个是对LFM信号进行滤波的滤波器,它的通带截止频率为 5 M H z 5MHz 5MHz,阻带截止频率为 10 M H z 10MHz 10MHz的低通FIR滤波器,另一个是在正交下变频中使用的低通滤波器,它的通带截止频率为 2.5 M H z 2.5MHz 2.5MHz,阻带截止频率为 5 M H z 5MHz 5MHz。
FFT IP核:设置点数,可以对输入数据进行相应点数的FFT/IFFT运算,将时域输入转换成频域输出。
图9 LFM_1参数设置
打开In-System Sources and Probes Editor工具,进行参数设置, s o u r c e 1 source1 source1调节幅度, s o u r c e 2 source2 source2调节脉冲宽度, s o u r c e 3 source3 source3调节脉冲重复周期, s o u r c e 4 source4 source4调节载频, s o u r c e 5 v 调 节 带 宽 , source5v调节带宽, source5v调节带宽,source6$调节FFT输出幅频特性大小。
要产生一个幅度为 1 V 1V 1V,脉宽为 1 u s 1us 1us,脉冲重复周期为 2 u s 2us 2us,载频 6 M H z 6MHz 6MHz,带宽 5 M H z 5MHz 5MHz的LFM信号,则 s o u r c e 1 = 1 , s o u r c e 2 = 1 , s o u r c e 3 = 2 , s o u r c e 4 = 6 , s o u r c e 5 = 5 , s o u r c e 6 = 0 source1=1,source2=1,source3=2,source4=6,source5=5,source6=0 source1=1,source2=1,source3=2,source4=6,source5=5,source6=0。
图10 LFM_2参数设置
产生一个幅度为 1 V 1V 1V,脉宽为 10 u s 10us 10us,脉冲重复周期为 20 u s 20us 20us,载频 5 M H z 5MHz 5MHz,带宽 5 M H z 5MHz 5MHz的LFM信号。
图11 调试结果1
打开SignalTap II Logic Analyzer工具,添加需要观测的信号,运行,可以看到信号波形。其中DAC_DA信号是幅度为 1 V 1V 1V,脉宽为 1 u s 1us 1us,脉冲重复周期为2us,载频 6 M H z 6MHz 6MHz,带宽 5 M H z 5MHz 5MHz的LFM信号,可以看到占空比为 1 / 2 1/2 1/2;DAC_DB是经过滤波以后的LFM信号,可以观察到高频部分的衰减;ADC_DB是经过滤波后的数字LFM信号,result信号是对其进行FFT运算后的结果。
图12 调试结果2
幅度为1V,脉宽为10us,脉冲重复周期为20us,载频5MHz,带宽5MHz的LFM信号的硬件调试结果。将AD/DA拓展板上的DAC_DA接口和ADC_DB接口相连,通过SignalTap II工具可以得到没有经过低通滤波的LFM信号的幅频和相频特性,从上往下数第二条波形是该LFM信号的幅频特性。将该带通信号ADC_DB正交下变频,得到零中频信号,再进行FFT,倒数第二条波形是正交下变频之后的幅频特性,最后一条波形是采用Cordic算法得到的相频特性。
图13 滤波后的调试结果
将AD/DA拓展板上的DAC_DB接口和ADC_DB接口相连,通过SignalTap II工具可以得到经过低通滤波的LFM信号的幅频和相频特性,从上往下数第二条波形是经过低通滤波的LFM信号的幅频特性。将该带通信号ADC_DB正交下变频,得到零中频信号,再进行FFT,倒数第二条波形是正交下变频之后的幅频特性,最后一条波形是相频特性。
打开In-System Sources and Probes Editor工具,进行参数设置, s o u r c e 1 = 0 , s o u r c e 2 = 10 , s o u r c e 3 = 20 , s o u r c e 4 = 10 , s o u r c e 5 = 10 , s o u r c e 6 = 5 source1=0,source2=10,source3=20,source4=10,source5=10,source6=5 source1=0,source2=10,source3=20,source4=10,source5=10,source6=5。产生脉宽为 10 u s 10us 10us,脉冲重复周期为 20 u s 20us 20us,载频 10 M H z 10MHz 10MHz,带宽 10 M H z 10MHz 10MHz的LFM信号。
图14 时域波形
通过显示光标,可以在示波器上看到脉宽为 10 u s 10us 10us,重复周期为 20 u s 20us 20us的LFM信号。
图15 原信号频谱
按下示波器上的FFT按键,显示该LFM信号的频谱,通过显示光标,可以看到信号的载频为 10 M H z 10MHz 10MHz,带宽为 10 M H z 10MHz 10MHz。
图16 滤波后的时域波形
这是LFM信号通过通带截止频率为 5 M H z 5MHz 5MHz,阻带截止频率为 10 M H z 10MHz 10MHz的低通滤波器后输出的波形。
图17 滤波后的频谱
由于滤波器的过渡带为 5 M H z 10 M H z 5MHz~10MHz 5MHz 10MHz,所以经过滤波后,信号的幅频特性在 5 M H z 10 M H z 5MHz~10MHz 5MHz 10MHz内有了衰减, 10 M H z 10MHz 10MHz以上的频率成分被滤除。
通过这一个星期的电类综合实验,我学会了Quartus II软件的使用,熟悉了Quartus II软件内部的调试工具,熟悉了verilog语言的使用,了解了LFM信号的产生和数字处理、频谱分析。从一开始的一筹莫展,到一步一步的实现这个过程中,我学到了很多学习新知识的方法,掌握了专业知识,同时锻炼了动手的能力。
回顾整个设计过程,发现自己真的有很多不足。在实验过程中,学到了很多有关电子技术理论和实际方面的知识,从理论中得出结论,才能真正的提高自己的实际动手能力和独立能力,从中获得经验和知识。对以前所学过的知识理解不够深,不够透,掌握不够牢固。
之前,在课本上学习过很多数字信号处理的方法,但是从未动手实践过,在这次实践的同时,发现了以前知识的短板。理论知识掌握了还是远远不够的,还需要会使用matlab仿真,会使用verilog语言编写代码,会使用Quartus II软件硬件调试,会使用示波器观察信号等等,在实践之后才知道要真正实现一个系统,理论学习只是特别小的一部分,但也是第一步。在该如何设计,并且使之能实现我们需要的功能这个过程中,培养了我们的设计思维,增加了实际操作能力。这次让我体会到了实现数字系统的艰辛与成功之后的喜悦。尤其是Quartus II软件的编程花费了我大量的时间,但是最终基本完成了实验目标。
因为我平时接触FPGA较少,不是这个专业的,在此要多谢杨同学的指导。
程序链接: link.