加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

FPGA数字信号处理频率采样问题

09/29 12:10
1056
阅读需 9 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。“煮酒言欢”进入IC技术圈,这里有近100个IC技术公众号。

今天给大侠带来在FPAG技术交流群里平时讨论的问题答疑合集(二十一),以后还会多推出本系列,话不多说,上货。

Q:FPGA数字信号处理问题,这样处理可行吗?在做项目的时候遇到一个问题,求大佬们解答一下。

要求对频率范围为5Hz到5000Hz的三路振动信号进行采集,打算用一块AD复用三个通道来进行采集,采样频率打算用60KHz,那么每通道的实际采样频率是不是就是20KHz呢?这样是不是就能满足每通道采样频率为信号频率的4倍呢?

对采集到的信号进行fft处理,以得到指定频率点的幅度值,指定的频率点都集中在200Hz以内,且都精确到了小数点后一位,也就是说频率分辨率得是0.1才能将这些信号区分出来,这样的话fft点数得是20K*2/0.1 ,达到了40万以上(不知道我这样算对不对),那么fpga是不是没办法做了呢,我看7系fpga的fft ip核最大点数也就到65536。

如果我将采集到的数据通过一个数字滤波器,将200Hz以上频率的信号全部滤除,再做fft,这样可处理可行吗?

A:以下是对问题的分析以及给出的一些小建议,仅供参考:

一、关于采样频率分配

如果用一块 AD 复用三个通道进行采集,采样频率为 60kHz,理论上平均分配给三个通道时,每通道的实际采样频率约为 20kHz。但在实际应用中,由于复用的方式可能会引入一些不确定性,不能简单地认为完全平均分配。对于频率范围为 5Hz 到 5000Hz 的信号,一般来说,采样频率为信号最高频率的 2 倍以上就能较好地还原信号,但为了更好的效果通常取 4 倍及以上。在这种情况下,20kHz 的采样频率对于 5000Hz 的信号满足了 4 倍的关系。

二、关于 FFT 点数计算

对于频率分辨率的计算方法基本正确。如果要区分出精确到小数点后一位且集中在 200Hz 以内的频率点,频率分辨率为 0.1Hz 时,根据采样频率和频率分辨率的关系(采样频率/FFT 点数 = 频率分辨率),FFT 点数确实需要达到 20kHz/0.1 = 200000,远超过一般 FPGA 的 FFT IP 核最大点数。

三、关于数字滤波后再做 FFT

这种方法在一定程度上是可行的。通过数字滤波器将 200Hz 以上频率的信号滤除,可以降低数据量和处理复杂度。但需要注意以下几点:

1. 数字滤波器的设计要合理,确保能够有效地滤除不需要的频率成分,同时对 200Hz 以内的信号影响最小。

2. 滤波后的信号可能会出现一些失真或相位变化,需要评估这些影响对最终结果的准确性。

3. 即使经过滤波,FFT 的点数仍然可能比较大,需要进一步优化算法或考虑其他处理方式,比如分段处理再拼接结果等。

总之,这种处理方法有一定的可行性,但需要仔细设计和验证各个环节,以确保满足项目的要求。

Q:IIC协议中如何校验ACK?在学51单片机,使用到at24c02这块EEPROM芯片存储,iic与单片机通信。对于主机发数据给从机,从机应答,SDA=0。主机怎么校验这个应答位呢?需要自己写函数吗?

还有,在主机作为接收器,接收数据后应答从机又是怎么检验的呢?

A:在 IIC 协议中,校验 ACK(应答位)的方法如下:

一、主机发送数据后校验从机应答

1. 当主机发送完一个字节的数据后,会释放 SDA 线(将其设置为输入模式),并在 SCL 线上产生第 9 个时钟脉冲。

2. 在这个时钟脉冲期间,从机应该将 SDA 线拉低以表示应答(ACK),即 SDA = 0。如果从机拉低 SDA 线,主机可以读取 SDA 线的状态来判断是否收到应答。

3. 对于 51 单片机,可以通过编程设置相应的 GPIO 口为输入模式来读取 SDA 线的状态。如果读取到的 SDA 值为 0,则表示从机应答成功;如果为 1,则表示从机未应答或出现错误。

在一些单片机的开发环境中,可能已经提供了 IIC 通信的库函数,这些库函数通常会自动处理 ACK 的校验。但如果没有现成的库函数,你可能需要自己编写函数来实现 ACK 的校验。

二、主机作为接收器接收数据后应答从机

1. 当主机作为接收器接收从机发送的数据时,在接收到每个字节后,主机需要在 SCL 线上产生一个应答脉冲。

2. 如果主机希望继续接收数据,它应该在第 9 个时钟脉冲期间将 SDA 线拉低以表示应答;如果主机希望结束通信,它应该将 SDA 线保持为高电平以表示非应答(NACK)。

3. 同样,对于 51 单片机,可以通过编程设置相应的 GPIO 口为输出模式,并根据需要将 SDA 线设置为低电平(应答)或高电平(非应答)。

校验 ACK 的过程需要仔细考虑时钟同步、数据传输的时序以及 GPIO 口的设置和读取操作,以确保通信的准确性和可靠性。

Q:这个Quartus软件显示问题怎么解决?我在Quartus上面进行Verilog仿真,全编译后查看RTL视图,正常显示应该如图1,但是我的电脑屏幕上面显示的如图2,有些内容显示不完整,看着很难受,这种问题应该怎么解决?

A:这种情况可以尝试以下几种方法来解决:

一、调整软件显示设置

1. 尝试调整 Quartus 软件的窗口大小。有时候窗口过小过大可能会导致部分内容显示不完整。可以手动拉伸窗口边框,看是否能使显示内容完整呈现。

2. 检查软件的缩放设置。如果软件支持缩放功能,可以尝试调整缩放比例,看是否能改善显示效果。通常可以在软件的“视图”或“设置”菜单中找到相关选项。

二、更新显卡驱动

1. 过时的显卡驱动可能会导致图形显示问题。访问显卡制造商的官方网站,下载并安装最新版本的显卡驱动程序

2. 安装完成后,重新启动计算机,然后再次打开 Quartus 软件,查看 RTL 视图是否正常显示。

三、检查系统分辨率设置

1. 确保你的计算机系统分辨率设置合理。过高或过低的分辨率可能会影响软件的显示效果。

2. 尝试调整系统分辨率,看是否能使 Quartus 软件的 RTL 视图正常显示。可以在操作系统的“显示设置”中进行分辨率调整。

四、重新安装 Quartus 软件

1. 如果以上方法都无法解决问题,可以考虑重新安装 Quartus 软件。

2. 在卸载软件之前,确保备份好你的项目文件和设置。然后按照正确的步骤卸载 Quartus 软件,并清理残留文件。

3. 下载较新且稳定的版本的 Quartus 软件(如18.0版本,并进行安装。安装过程中,注意选择正确的安装选项和配置。安装完成后,重新打开软件,查看 RTL 视图是否正常显示。

如果多种方法尝试都不行,卸载重装最直接高效。

今天先整理三个问题答疑,后续还会持续推出本系列。

相关推荐

电子产业图谱

任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。