0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用DDS生成三个信号并在Vivado中实现低通滤波器

FPGA技术江湖 来源:OpenFPGA 2025-03-01 14:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者: 碎碎思,来源:OpenFPGA

本文使用 DDS 生成三个信号,并在 Vivado 中实现低通滤波器。低通滤波器将滤除相关信号。

f2bb87e4-efea-11ef-9310-92fbcf53809c.png

介绍

用DDS生成三个信号,并在Vivado中实现低通滤波器。低通滤波器将滤除较快的信号。

本文分为几个主要部分:

信号生成:展示如何使用DDS(直接数字合成)IP生成测试信号 - 10 MHz 信号和 500 kHz 信号,然后将它们组合起来创建混合信号进行测试。

FIR 滤波器设计:解释影响 FIR 滤波器性能的关键因素,包括:

抽头数量及其对滤波器响应的影响

量化和系数位宽设计

权衡资源利用

设计:演示使用 Vivado 进行设计,包括

设置FIR IP

使用 MATLAB 生成的系数配置滤波器参数

设置适当的位宽和时钟频率

添加必要的组件,如时钟源和 ILA(集成逻辑分析仪)

测试和验证:显示如何通过以下方式验证滤波器的操作:

仿真结果显示高频分量的滤波

FPGA 板上的硬件实现

使用基于计数器的脉冲发生器观察滤波器脉冲响应的特殊技术

第 1 部分:DDS 设置,用于生成两个信号和混合信号

首先为测试台生成信号:

f2d2738c-efea-11ef-9310-92fbcf53809c.png

在BD设计中添加 DDS IP。在配置选项卡中,将系统时钟设置为 100 MHz。

f2e46876-efea-11ef-9310-92fbcf53809c.png

由于我们只需要生成正弦波,因此在Implementation选项卡中,选择输出为Sine选项,并取消选择相位输出选项。在Output Frequency选项卡中,将Channel 1的频率设置为 500 kHz。

f2edffc6-efea-11ef-9310-92fbcf53809c.pngf2f521de-efea-11ef-9310-92fbcf53809c.png

在BD设计中添加另一个 DDS IP。重复相同的设置,但这次将输出频率设置为 10 MHz。

f2f95362-efea-11ef-9310-92fbcf53809c.png

在BD设计中添加一个加法器。将其输入位宽设置为 8,将其输出位宽设置为 9。

f3071c0e-efea-11ef-9310-92fbcf53809c.png

将两个 DDS 编译器的输出连接到加法器的输入。这将生成混合信号。

在设计中添加一个模拟时钟发生器,并将其频率设置为 100MHz。该频率也是设计的采样率

DDS编译器仿真结果:

如仿真结果所示:

f30f94b0-efea-11ef-9310-92fbcf53809c.png

第一个正弦波的周期为 2000 ns,这是一个 500 kHz 的信号。

第二个正弦波的周期为 100 ns,这是一个 10 MHz 信号。

还可以观察混合信号,其中较快信号的幅度以较慢信号的频率波动,从而显示了两个频率的组合。

Vivado FIR 滤波器仿真

f319fd42-efea-11ef-9310-92fbcf53809c.png

FIR 滤波器配置:FIR 滤波器的性能受几个因素影响:

抽头数量:

增加抽头数量可改善滤波器响应,从而使通带更平坦,波纹更少,振铃减少。

更多的抽头数还会增强截止频率的衰减,从而提高滤波器的精度。然而,更多的抽头会引入更大的延迟,这可能不适合某些 DSP 系统。

f320221c-efea-11ef-9310-92fbcf53809c.png 不同抽头数的FIR滤波器响应比较

量化和滤波器系数位宽:

量化-通过将数字映射到由分配的位宽决定的一组固定的离散值来降低数字的精度。

使用较少的位数进行量化会降低滤波器系数的准确性,从而对滤波器的性能产生负面影响。

资源权衡:

滤波器性能和 FPGA 资源利用率之间存在权衡。

增加抽头数量或系数的位宽需要更多的 DSP 资源,这可能会消耗 FPGA 很多资源。

f32fd77a-efea-11ef-9310-92fbcf53809c.png 两种不同FIR滤波器所需的FPGA资源

通过平衡这些因素,可以优化 FIR 滤波器以满足应用程序的特定要求。

在 Matlab 中生成量化 FIR 滤波器抽头

为了简化工作,提供了一个可以轻松生成量化 FIR 滤波器的 Matalab 代码,可以在 Vivado 中直接使用它:

closeall
clearall
clc
%%setuptheparametershere
Sample_Rate=50e6;
cutoff_frequency=5e6;
number_of_filter_taps=191;%mustbeoddnumber!
filter_taps_bitwidth=10;
lowpass_highpass='low';%shouldbeloworhigh
%%Caluculatethetaps
Nyquist_frequency=Sample_Rate/2;
Wn=cutoff_frequency/(Nyquist_frequency);
%Generatearowvectorbcontainingthen+1coefficients
filter_taps=fir1(number_of_filter_taps-1,Wn,lowpass_highpass);
%%Quantization
%onebitforsign
filter_taps=floor(filter_taps/max(filter_taps)*(2^(filter_taps_bitwidth-1)-1));
%%plotthefilterresponse
N=1024;%Numberofpointsforthefrequencyresponse
[H,f]=freqz(filter_taps,1,N,Sample_Rate);%Calculatethefrequencyresponse
%Magnitudeandphaseresponse
magnitude=abs(H);%Magnituderesponse

%Plotthefilterresponse
%Magnituderesponseplot
figure;
plot(f,20*log10(magnitude),'linewidth',1.3);%PlotmagnitudeindB
gridon;
title('MagnitudeResponse(dB)',FontSize=22);
xlabel_txt='Frequency(Hz)';
xlabel(xlabel_txt,FontSize=22);
ylabel('Magnitude(dB)',FontSize=22);
%xlim([030e6])
figure
freqz(filter_taps,1)
figure
stem(filter_taps,'linewidth',1.3)
gridon;

在提供的Matlab代码中,需要配置以下参数:

采样率:这是采样频率,在我们的设计中它对应于驱动系统的时钟频率。

截止频率:指定滤波器的截止频率。

抽头数:设置滤波器的抽头数,决定滤波器的精度和性能。

抽头位宽:定义滤波器系数的位宽,影响量化精度。

滤波器类型:选择需要的滤波器类型。此代码目前仅支持高通和低通滤波器。

Vivado 中的 FIR 编译器 IP 设置:

借助 Matlab 代码,生成截止频率为 1MHz、量化为 16 位的 21 个滤波器抽头。需要进行少许修改才能使生成的值在 Vivado 中可用。

复制 FIR 滤波器抽头并将其粘贴到“滤波器选项”选项卡 下的“系数向量”字段中。

f3417e30-efea-11ef-9310-92fbcf53809c.png

请注意,一旦更新滤波器系数,实施选项卡中的输出宽度将自动调整。

在“通道规范”选项卡中,设置采样率和时钟频率匹配连接到 FIR 滤波器的时钟。在本教程中,我们使用 100 MHz 时钟。

f34ceac2-efea-11ef-9310-92fbcf53809c.png

在“实施”选项卡中,配置“输入位宽”以匹配输入信号的位宽。例如,由于此设计中加法器的输出有 9 位,因此将输入位宽设置为 9。

f3515940-efea-11ef-9310-92fbcf53809c.png

这样FIR 滤波器现已配置完毕并可以使用。

请注意,FIR 滤波器的输入和输出位宽与正确的字节数对齐。例如,当我们将输入位宽设置为 9 位时,滤波器的实际输入位宽会调整为 2 个字节(16 位)。

仿真结果

仿真就会观察到 FIR 滤波器表现为低通滤波器,衰减频率更高的信号。

f3592a44-efea-11ef-9310-92fbcf53809c.png

Vivado 综合

上诉设计都是可综合的,在系统内为设计添加时钟后就可以进行综合和实现了。

最后,需要在设计中加入一个 ILA 来监控和研究目标信号。移除所有额外的端口,并将它们连接到 ILA。

f362d526-efea-11ef-9310-92fbcf53809c.png

使用上面的架构需要使用SDK或者Vitis运行一个简单的“HelloWorld!”程序。

如果使用板载时钟就按照需求进行修改。

f36f5a4e-efea-11ef-9310-92fbcf53809c.png

运行后,应该能看到与仿真相同的结果:

f3739cb2-efea-11ef-9310-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1656

    文章

    22298

    浏览量

    630465
  • 滤波器
    +关注

    关注

    162

    文章

    8361

    浏览量

    184794
  • FIR
    FIR
    +关注

    关注

    4

    文章

    151

    浏览量

    35121
  • Vivado
    +关注

    关注

    19

    文章

    847

    浏览量

    70479

原文标题:FPGA DSP:Vivado 中带有 DDS 的 FIR 滤波器

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于 FPGA 的任意波形发生+低通滤波器系统设计

    设计将用两种方式实现低通滤波器。 方法一:利用Vivado自身具备的DDS和FIR的IP核实现;方法二:通过Verilog编程
    发表于 07-15 18:33

    基于 FPGA 的任意波形发生+低通滤波器系统设计

    设计将用两种方式实现低通滤波器。 方法一:利用Vivado自身具备的DDS和FIR的IP核实现; 方法二:通过Verilog编程
    发表于 05-07 15:34

    低通滤波器如何设计?

    kHz 比音频信号带宽20~20kHz 大得多 为了从 PWM 开关信号恢复出音频信号 通常采用低通滤波器 LPF
    发表于 11-07 14:46

    有源滤波器数字低通滤波器的设计及其DSP实现

    有源滤波器数字低通滤波器的设计及其DSP实现摘要:介绍了基于瞬时无功功率理论的ip iq 谐波检测方法及对低通滤波器的要求,分析讨论了数字
    发表于 05-13 17:19 90次下载

    基于DDS低通滤波器设计与仿真

    分析了几种经典滤波器特性,重点研究了DDS系统中低通滤波器的设计方法。根据DDS的结构特点和输出杂散频谱特性,结合滤波器技术指标使用了归一化
    发表于 06-22 15:19 118次下载

    基于DDS的椭圆函数低通滤波器的设计

      低通滤波器是直接数字频率合成DDS的重要组成部分,其性能的好坏直接影响整个DDS的特性。提出一种基于DDS的椭圆函数低
    发表于 12-09 11:09 4248次阅读
    基于<b class='flag-5'>DDS</b>的椭圆函数<b class='flag-5'>低通滤波器</b>的设计

    DDS信号发生椭圆低通滤波器的设计

    给出了利用DDS技术对DDS信号发生低通滤波器进行设计的一般方法, 该方法采用截止特性陡峭的7阶椭圆函数
    发表于 09-27 14:31 92次下载
    <b class='flag-5'>DDS</b><b class='flag-5'>信号</b>发生<b class='flag-5'>器</b><b class='flag-5'>中</b>椭圆<b class='flag-5'>低通滤波器</b>的设计

    低通滤波器的设计与实现

    低通滤波器的设计是已知ow(dB3-截止频率 )、LPH0(直流增益 )、Q(在dB3-截止频率时的电压放大倍数与通带放大倍数数值之比)三个参数来设计电路,可选的电路形式为压控电压源低通滤波器和无限增益多路反馈
    发表于 04-22 09:23 78次下载
    <b class='flag-5'>低通滤波器</b>的设计与<b class='flag-5'>实现</b>

    低通滤波器与匹配滤波器的区别

    低通滤波器和匹配滤波器的主要区别在于:   1.低通滤波器是一种滤波器,它可以抑制高频信号,使低频
    发表于 02-16 17:44 3204次阅读

    低通滤波器与高通滤波器有什么不同

    低通滤波器和高通滤波器的不同之处在于,低通滤波器的电路结构,电容放在输出端,电感放在输入端,而高通滤波器的电路结构
    发表于 02-17 14:50 1.6w次阅读
    <b class='flag-5'>低通滤波器</b>与高通<b class='flag-5'>滤波器</b>有什么不同

    低通滤波器电路图分享

    低通滤波器是一种电子滤波器,允许低于截止频率的信号通过,但高于截止频率的信号不能通过。低通滤波器常用于音频应用
    的头像 发表于 02-12 09:33 9321次阅读
    <b class='flag-5'>低通滤波器</b>电路图分享

    有源低通滤波器设计原理 有源低通滤波器的截止频率计算

    、增强信号质量。 有源低通滤波器的基本原理是利用一放大器和反馈电路来实现滤波器的放大和滤波功能
    的头像 发表于 02-03 09:36 4901次阅读

    什么是低通滤波器低通滤波器有什么作用?

    在电子工程领域中,滤波器是一种用于信号处理的重要元件。而低通滤波器作为滤波器的一种类型,具有其独特的频率响应特性。本文维爱普电源滤波器小编将
    的头像 发表于 04-08 16:30 6616次阅读
    什么是<b class='flag-5'>低通滤波器</b>?<b class='flag-5'>低通滤波器</b>有什么作用?

    低通滤波器:原理、应用与重要性

    信号处理的世界滤波器是一种非常重要的工具,用于从复杂的信号中提取出我们感兴趣的部分。其中,低通滤波器(Low-Pass Filter,
    的头像 发表于 07-09 14:46 5055次阅读
    <b class='flag-5'>低通滤波器</b>:原理、应用与重要性

    低通滤波器的工作原理 低通滤波器在音频处理的应用

    的特性,电容通高频阻低频,而电感则相反,通低频阻高频。通过巧妙结合这两种元件,低通滤波器可以实现信号的频率选择性过滤。 RC低通滤波器 RC低通滤
    的头像 发表于 02-01 10:24 2670次阅读