FPGA 学习小组
登录
直播中
杨平
7年用户
151经验值
私信
关注
FPGA设计中频域问题的解决
开启该帖子的消息推送
FPGA
频域
时域
许多应用都要求能够在频域内开展工作。本文将介绍如何处理
FPGA
设计中的频域问题。
对许多工程师而言,在频域中开展工作不如在时域中开展工作那么自然,可能是因为频率与复杂的数学运算有关。但是要充分发挥赛灵思FPGA解决方案的潜力,您需要在这两个域中自由切换。
令人欣慰的是详细地掌握频域并不像您最初想象的那样令人生畏。不管是您自己设计的定制模块还是市场上现有的IP模块,都能帮助您轻松转入转出频域。同时在频域中实现高速处理的方法也不乏其数。
回帖
(5)
张曼曼
2019-6-25 17:22:40
时域还是频域?
工程师既能在时域中检验和处理信号,根据时间分析信号,也能在频域中检验和处理信号,根据频率分析信号。项目对工程师的主要要求之一,就是应该知道什么时候应该开展哪种分析。
一般在电子系统中,需要考查的信号是一个不断变化的电压、电流或频率。它可以是传感器的输出,也可能是系统其他部分生成的输出。在时域中,您可以测量信号的幅度、频率和周期,以及信号上升或下降时间等更有意义的参数。实验室环境中观察时域信号常用的是示波器或逻辑分析仪。
但是信号的一些参数体现在频域内。必须在频率中分析这些参数,才能解读其中包含的信息。在频域中可以识别信号的频率分量、各自的幅度和每种频率的相位。由于在频域中便于开展卷积运算,因此在频域中工作也能大大简化信号处理。卷积是一种将两种信号混合成第三种信号的数学方法。和时域分析一样,如果想要在实验室环境中观察频域信号,可以使用频谱分析仪。
根据信号的类型,如重复性还是非重复性、离散还是非离散,有多种方法可用于时域和频域之间的变换
对某些应用而言在时域中工作比较合适,例如用于监测更大型系统的电压或温度的系统。虽然噪声可能是个问题,在许多情况下取一定数量样本的平均值就可以满足要求。但对其他应用来说,最好是在频域中开展工作。例如需要从另一信号中过滤某种信号的信号处理应用,或是需要将信号与噪声源分离的信号处理应用,最好在频率中开展分析。
由于采样是在时域中完成的,在时域中工作基本不需要对量化数字信号进行后处理。与此相反,在频域中开展工作首先要求应用将量化数据从时域变换到频域。同样,从频域输出后处理过的数据时,需要从频率转回到时域。
时域还是频域?
工程师既能在时域中检验和处理信号,根据时间分析信号,也能在频域中检验和处理信号,根据频率分析信号。项目对工程师的主要要求之一,就是应该知道什么时候应该开展哪种分析。
一般在电子系统中,需要考查的信号是一个不断变化的电压、电流或频率。它可以是传感器的输出,也可能是系统其他部分生成的输出。在时域中,您可以测量信号的幅度、频率和周期,以及信号上升或下降时间等更有意义的参数。实验室环境中观察时域信号常用的是示波器或逻辑分析仪。
但是信号的一些参数体现在频域内。必须在频率中分析这些参数,才能解读其中包含的信息。在频域中可以识别信号的频率分量、各自的幅度和每种频率的相位。由于在频域中便于开展卷积运算,因此在频域中工作也能大大简化信号处理。卷积是一种将两种信号混合成第三种信号的数学方法。和时域分析一样,如果想要在实验室环境中观察频域信号,可以使用频谱分析仪。
根据信号的类型,如重复性还是非重复性、离散还是非离散,有多种方法可用于时域和频域之间的变换
对某些应用而言在时域中工作比较合适,例如用于监测更大型系统的电压或温度的系统。虽然噪声可能是个问题,在许多情况下取一定数量样本的平均值就可以满足要求。但对其他应用来说,最好是在频域中开展工作。例如需要从另一信号中过滤某种信号的信号处理应用,或是需要将信号与噪声源分离的信号处理应用,最好在频率中开展分析。
由于采样是在时域中完成的,在时域中工作基本不需要对量化数字信号进行后处理。与此相反,在频域中开展工作首先要求应用将量化数据从时域变换到频域。同样,从频域输出后处理过的数据时,需要从频率转回到时域。
举报
宫昊
2019-6-25 17:22:58
如何进行变换?
根据信号的类型,如重复性还是非重复性、离散还是非离散,有多种方法可用于时域和频域之间的变换,包括傅里叶级数、傅里叶变换和Z变换。尤其是在电子信号处理和FPGA应用中,最常用到的变换是离散傅里叶变换(DFT),傅里叶变换中的一种。工程师使用DFT分析具有周期性和离散性的信号,即由一定数量均匀分布在采样频率中的n位样本组成的信号。在许多应用中这种信号一般来自系统内的ADC。
简单地说,DFT的工作原理就是把输入信号分解成代表信号正弦分量和余弦分量的两个输出信号。因此对由N个样本组成的时域序列,DFT会返回两组N/2+1个余弦波样本和正弦波样本,分别被称为实分量和虚分量(图1)。实样本和虚样本的宽度为n位输入信号宽度的n/2。
图1 - 时域中的n位被变换为频域中n/2实位和n/2虚位
计算DFT的算法十分简明,如下式所示:
其中,x
代表时域信号;i的取值为0到N-1;k的取值为0到N/2。这种方法被称为关联法,其功能是将输入信号与对应迭代的正弦波或余弦波相乘,以确定其幅度。
当然,您可能想要在应用中的某点从频域变换回时域。为此可以使用综合公式,它将实波形和虚波形结合起来,重建时域信号,即:
但ReX和ImX是正弦波和余弦波的缩放结果,因此需要进行缩放。除Rex[0]和Rex[N/2]之外的所有情况,ReX和ImX的值均为ReX[k]或ImX[k]除以N/2。对Rex[0]和Rex[N/2],则除以N。出于明显的理由,这种运算被称为傅里叶反变换(IDFT)。
通过探讨确定DFT和IDFT所使用的算法,可能有助于了解如何加以利用这些算法。
您可以使用Octave、MATLAB®乃至Excel对所采集的数据进行DFT计算。许多实验室工具,如示波器,也能根据需要执行DFT计算。
不过需要指出的是上述的DFT和IDFT被称为实DFT和实IDFT,因为输入的是实数而非复数。很快就会清楚为何要了解这一点。
如何进行变换?
根据信号的类型,如重复性还是非重复性、离散还是非离散,有多种方法可用于时域和频域之间的变换,包括傅里叶级数、傅里叶变换和Z变换。尤其是在电子信号处理和FPGA应用中,最常用到的变换是离散傅里叶变换(DFT),傅里叶变换中的一种。工程师使用DFT分析具有周期性和离散性的信号,即由一定数量均匀分布在采样频率中的n位样本组成的信号。在许多应用中这种信号一般来自系统内的ADC。
简单地说,DFT的工作原理就是把输入信号分解成代表信号正弦分量和余弦分量的两个输出信号。因此对由N个样本组成的时域序列,DFT会返回两组N/2+1个余弦波样本和正弦波样本,分别被称为实分量和虚分量(图1)。实样本和虚样本的宽度为n位输入信号宽度的n/2。
图1 - 时域中的n位被变换为频域中n/2实位和n/2虚位
计算DFT的算法十分简明,如下式所示:
其中,x
代表时域信号;i的取值为0到N-1;k的取值为0到N/2。这种方法被称为关联法,其功能是将输入信号与对应迭代的正弦波或余弦波相乘,以确定其幅度。
当然,您可能想要在应用中的某点从频域变换回时域。为此可以使用综合公式,它将实波形和虚波形结合起来,重建时域信号,即:
但ReX和ImX是正弦波和余弦波的缩放结果,因此需要进行缩放。除Rex[0]和Rex[N/2]之外的所有情况,ReX和ImX的值均为ReX[k]或ImX[k]除以N/2。对Rex[0]和Rex[N/2],则除以N。出于明显的理由,这种运算被称为傅里叶反变换(IDFT)。
通过探讨确定DFT和IDFT所使用的算法,可能有助于了解如何加以利用这些算法。
您可以使用Octave、MATLAB®乃至Excel对所采集的数据进行DFT计算。许多实验室工具,如示波器,也能根据需要执行DFT计算。
不过需要指出的是上述的DFT和IDFT被称为实DFT和实IDFT,因为输入的是实数而非复数。很快就会清楚为何要了解这一点。
举报
李春梅
2019-6-25 17:23:08
需要进行变换的地方
从电信到图像处理、雷达和声纳,难以想象有比傅里叶变换更强大、更适合并可实现FPGA中的分析技术。实际上DFT是最常用FPGA应用之一(即,生产有限输入响应(FIR)滤波器系数)的基础(参阅赛灵思中国通讯第43期《数字滤波器设计与实现详情》)。
但其用途不局限于滤波。DFT和IDFT还可用于电信处理中,用于执行电信通道的信道化和重组。在频谱监测应用中,它们可用来判断监测带宽内的频率构成。在图像处理中,它们用于处理图像卷积,供滤波器内核开展图像模式识别等操作。所有这些应用在实现过程中一般使用比上文介绍的更有效的算法来计算DFT。
总而言之,了解DFT并将其实现在FPGA中是每个FPGA开发人员的必备技能。
需要进行变换的地方
从电信到图像处理、雷达和声纳,难以想象有比傅里叶变换更强大、更适合并可实现FPGA中的分析技术。实际上DFT是最常用FPGA应用之一(即,生产有限输入响应(FIR)滤波器系数)的基础(参阅赛灵思中国通讯第43期《数字滤波器设计与实现详情》)。
但其用途不局限于滤波。DFT和IDFT还可用于电信处理中,用于执行电信通道的信道化和重组。在频谱监测应用中,它们可用来判断监测带宽内的频率构成。在图像处理中,它们用于处理图像卷积,供滤波器内核开展图像模式识别等操作。所有这些应用在实现过程中一般使用比上文介绍的更有效的算法来计算DFT。
总而言之,了解DFT并将其实现在FPGA中是每个FPGA开发人员的必备技能。
举报
李姜芫
2019-6-25 17:23:18
基于FPGA的实现方式
上文介绍的DFT和IDFT的实现一般采用嵌套循环,每个循环完成N次计算。因此实现DFT计算所需的时间为:
DFTtime = N * N * Kdft
其中,Kdft表示完成每次迭代的处理时间。显然这种方法实现起来极为耗时。为此FPGA中实现DFT一般使用快速傅里叶变换算法(FFT)。FFT常常被称为我们时代最重要的算法,因为它对许多行业都产生根本性的影响。
FFT与DFT算法稍有不同,它计算的是复数DFT,即它需要实时域信号和虚时域信号,得到的结果的宽度是n位而非n/2位。这意味着如果需要计算实DFT,必须首先把虚部设为0,然后把时域信号转移到实部。如果要在赛灵思FPGA实现FFT,可以有两种选择。您可以使用您选择的HDL重新编写FFT,也可以使用Vivado®设计套件IP Catalog或其他来源提供的FFT IP。除非有不得已的原因不能使用IP,为缩短开发时间,一般都应该选择IP。
FFT的基本方法是将时域信号分解为一系列单点时域信号。因为样本被重新排序,这个过程常被称为位反转。如果没有位反转算法这一捷径可走,那么创建单点时域信号的级数可以用Log2 N计算得到,其中,N表示位数。
随后使用这些单点时域信号计算每个点的频谱。这一计算相当简单,因为频谱与单点的时域相等。
这些单频点的重组是FFT算法最复杂环节。必须每一级重组一次这些频点,恰好是时域分解的反向操作。因此要重建频谱需要Log2 N级,这里就是著名的蝶形FFT发挥作用的地方。
与DFT的执行时间相比,FFT用时为:
FFTtime = K f ft * N Log2 N
与计算DFT相比,执行时间明显缩短。
在FPGA中实现FFT算法时,还必须考虑FFT采样数。FFT采样数将决定本底噪声,在此之下将无法再看到有用信号。FFT采样数还将决定频点之间的间距。使用下面的公式可以确定FFT采样数:
其中,n为时域中量化位的数量,FFTSize为FFT采样数。对基于FPGA的设计,这一般是2的幂,如256、512、1,024等。频点可采用下列公式计算出其等间隔:
举个非常简单的例子,在采样频率(FS)为100MHz的情况下,使用128个FFT样本可实现0.39Hz的频率精度。这意味着如果频率彼此之间的间隔小于0.39Hz将无法分辨。
基于FPGA的实现方式
上文介绍的DFT和IDFT的实现一般采用嵌套循环,每个循环完成N次计算。因此实现DFT计算所需的时间为:
DFTtime = N * N * Kdft
其中,Kdft表示完成每次迭代的处理时间。显然这种方法实现起来极为耗时。为此FPGA中实现DFT一般使用快速傅里叶变换算法(FFT)。FFT常常被称为我们时代最重要的算法,因为它对许多行业都产生根本性的影响。
FFT与DFT算法稍有不同,它计算的是复数DFT,即它需要实时域信号和虚时域信号,得到的结果的宽度是n位而非n/2位。这意味着如果需要计算实DFT,必须首先把虚部设为0,然后把时域信号转移到实部。如果要在赛灵思FPGA实现FFT,可以有两种选择。您可以使用您选择的HDL重新编写FFT,也可以使用Vivado®设计套件IP Catalog或其他来源提供的FFT IP。除非有不得已的原因不能使用IP,为缩短开发时间,一般都应该选择IP。
FFT的基本方法是将时域信号分解为一系列单点时域信号。因为样本被重新排序,这个过程常被称为位反转。如果没有位反转算法这一捷径可走,那么创建单点时域信号的级数可以用Log2 N计算得到,其中,N表示位数。
随后使用这些单点时域信号计算每个点的频谱。这一计算相当简单,因为频谱与单点的时域相等。
这些单频点的重组是FFT算法最复杂环节。必须每一级重组一次这些频点,恰好是时域分解的反向操作。因此要重建频谱需要Log2 N级,这里就是著名的蝶形FFT发挥作用的地方。
与DFT的执行时间相比,FFT用时为:
FFTtime = K f ft * N Log2 N
与计算DFT相比,执行时间明显缩短。
在FPGA中实现FFT算法时,还必须考虑FFT采样数。FFT采样数将决定本底噪声,在此之下将无法再看到有用信号。FFT采样数还将决定频点之间的间距。使用下面的公式可以确定FFT采样数:
其中,n为时域中量化位的数量,FFTSize为FFT采样数。对基于FPGA的设计,这一般是2的幂,如256、512、1,024等。频点可采用下列公式计算出其等间隔:
举个非常简单的例子,在采样频率(FS)为100MHz的情况下,使用128个FFT样本可实现0.39Hz的频率精度。这意味着如果频率彼此之间的间隔小于0.39Hz将无法分辨。
举报
更多回帖
rotate(-90deg);
回复
相关问答
FPGA
频域
时域
什么是数字
中频
?
FPGA
怎么实现数字
中频
?
2021-05-08
2358
OFDM系统
中频域
同步技术及
FPGA
实现方法是什么
2021-05-07
739
如何利用
FPGA
设计实现GNSS信号的
频域
快速捕获算法?
2021-05-20
954
如何去实现GNSS信号的
频域
快速捕获算法?
2021-05-19
1679
如何利用
FPGA
去实现
中频
调制解调系统?
2021-04-28
1348
分析一款不错的
中频
软件无线电系统的
FPGA
实现方案
2021-04-29
1049
请问ADIsimPLL
频域
分析中相噪贡献SDM项具体指什么?
2018-09-05
3320
求问大神怎么做一个北斗的
中频
信号产生
2015-06-25
4544
有人能帮我做下基于Zc序列的时
频域
同步的
Fpga
实现嘛
2017-04-13
2757
求一种基于“AD+
FPGA
”的
中频
信号处理技术
2021-05-18
1105
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分