狗才摸鱼 2024-03-25 11:38 采纳率: 0%
浏览 222

quartus使用fir ip核无法实现滤波效果

问题遇到的现象和发生背景

在quartus中调用fir ip核无法实现滤波效果
问题描述:
我需要使用fir滤波器滤除50hz以上的频率,使用matlab 生成fir滤波器抽头系数,我在matlab中的设置是这样:

img

img


我在fir ip核中的设置是这样:

img

img

img

img

img


为了验证fir滤波效果:我用ncoIP核分别生成了30hz以及50hz的正弦波进行混频,其设置是这样:

img

img


但是在modelsim中仿真的波形未能实现滤波效果:

img

操作环境、软件版本等信息

软件版本:quartus prime 17.1
使用的IP核:fir ii
使用器件:max 10

尝试过的解决方法

1.尝试更换抽头系数,结果依旧
2.在matlab中进行仿真,可以成功实现滤波:

img


3.怀疑是带入ip核后的量化问题,将ip核量化后的抽头系数带入matlab中进行仿真,依然可以实现滤波效果,只是幅值增大

我想要达到的结果

fir能成功滤除50hz以上频率

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-25 11:49
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    针对你的问题,我给出以下解答: 问题分析: 从你提供的信息来看,你在使用fir IP核时,无法实现滤波效果。你已经尝试更换抽头系数,但结果依旧。你还怀疑是带入ip核后的量化问题,但将ip核量化后的抽头系数带入matlab中进行仿真后,仍然可以实现滤波效果,只是幅值增大。因此,我们可以先分析一下可能的原因。
    1. 抽头系数 首先,抽头系数是否正确可能是问题之一。你在matlab中生成了fir滤波器抽头系数,但无法确定你在IP核中使用的抽头系数是否与生成的一致。你可以再次检查一下是否正确设置了抽头系数。
    2. IP核设置 其次,可能存在IP核设置的问题。你在IP核中设置了滤波器的参数,但是否设置正确,是否存在遗漏或错误值,可能需要再次检查。
    3. 量化误差 此外,由于数字信号的量化误差,将IP核量化后的抽头系数带入matlab中进行仿真,可能会产生幅值增大的情况。因此,在检查抽头系数和IP核设置后,我们还需要考虑量化误差可能对结果产生的影响。 解决方法: 考虑到以上可能性,我建议你尝试以下解决方法:
    4. 确认抽头系数是否正确,重新生成抽头系数,再次设置IP核参数,看是否能够实现滤波效果。
    5. 在IP核和matlab中,尝试增加抽头系数的位数,降低量化误差。你可以逐步增加抽头系数的位数,并比较滤波效果,找出最优位数。
    6. 可以尝试使用其他滤波器的IP核进行滤波,看是否存在与fir IP核不同的结果。
    7. 如果以上方法都不能解决问题,你可以考虑使用其他仿真工具进行仿真,确认是否存在其他问题。 代码示例: 关于代码示例,由于你提供的问题没有给出具体的代码实现,我无法在回答中给出详细代码示例。但是,你可以参考以下方法,在matlab中生成抽头系数,并在IP核中使用。 %matlab代码示例: %生成抽头系数 Fs = 1000; %采样频率 Fpass = 30; %通带频率 Fstop = 50; %阻带频率 Ap = 1; %通带最大衰减量 Ast = 40; %阻带最小衰减量 % 调用fir1函数生成抽头系数 [n,Wn] = buttord(Fpass/(Fs/2),Fstop/(Fs/2),Ap,Ast); b = fir1(n,Wn,'low'); % 在IP核中使用抽头系数 在fir IP核中选择用户自定义抽头,粘贴matlab生成的抽头系数。 % 示例结束 注意:这些代码示例仅供参考,并不能保证一定适用于你的问题,具体实现需要根据具体情况而定。
    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日