G06F30/34 H04B1/10 G06F119/10
1.一种FPGA的伪随机噪声生成器的设计方法,整个带限伪随机噪声生成器包含PN序列生成模块、伪随机噪声生成模块、FIR滤波器模块、CIC滤波器模块;
包括以下步骤:
步骤1,PN序列生成模块设计:
本发明设计的PN序列生成模块参考的是Matlab官方文档中的PN序列函数,本发明设计的PN序列生成模块支持生成6~25阶本原多项式的PN序列;
模块的输入包括使能、初始值、本原多项式阶数、本原多项式系数值;
步骤2,伪随机噪声生成模块设计:
伪随机噪声生成模块包括4个本地噪声ROM、噪声合成处理、噪声数据速率控制三个部分;其中,4个本地噪声ROM中存储了4种不同的但上下限相同的噪声数据,这些噪声数据是由MATLAB中生成的;噪声数据的生成过程是在MATLAB中使用randn函数生成指定长度的高斯白噪声,然后将这些噪声数据生成为coe文件,之后在Vivado中的ROMIP核中使用这些coe文件初始化ROM;在本发明中,使用的是4096深度的ROM,后续也可根据实际需要对ROM的深度进行调整;噪声合成处理中为了使输出的噪声数据的随机性增加,因此使用前级送入的伪随机序列数据为ROM的读取地址;噪声数据速率控制会通过输入的符号速率去计数并决定在何时输出数据和数据有效标志位;
步骤3,FIR滤波器模块设计:
本发明中使用了两个FIR模块,分别位于CIC滤波器模块的前级和后级;第一个FIR滤波器模块与后级的cic滤波器模块构成级联,该模块将对前级伪随机噪声生成模块输出的噪声数据进行5倍插值;第二个FIR滤波器模块将CIC滤波器模块输出的50MHz数据速率的噪声数据进行2倍插值,插值后噪声数据的数据速率将变为100MHz;
这两个FIR模块中都调用了FIRIP核,但它们的参数设置均不一样,且滤波器系数的设计也不一样,滤波器系数设计使用的是matlab的filterDesigner工具;FIRIP核输出的数据经过了截位处理才输出到下一级,截位处理中数据均值保留一位符号位;
步骤4,CIC滤波器模块设计:
CIC滤波器模块中调用了两个CICIP核,分别对I路噪声信号和Q路噪声信号进行插值滤波,插值倍数将由输入的duc_rate决定,插值倍数为duc_rate除以10,该被除数是由前级和后级的插值倍数之积所求得;
步骤5,仿真验证:
将上述步骤中生成的模块级联起来,可以得到各级输出的模拟信号。
2.根据权利要求1所述的PN序列生成模块设计方法,其特征在于,所述的步骤1中的处理后的生成模块图如图3所示。
3.根据权利要求1所述的伪随机噪声生成模块设计方法,其特征在于,所述的步骤2中的处理后的生成模块图如图4所示。
4.根据权利要求1所述的FIR滤波器模块设计方法,其特征在于,所述的步骤3中的处理后的生成模块图与滤波器系数设计如图5,6所示。
5.根据权利要求1所述的CIR滤波器模块设计方法,其特征在于,所述的步骤4中的处理后的生成模块图与滤波器系数设计如图7所示。
6.根据权利要求1所述的仿真验证,其特征在于,所述的步骤5中的处理后的各模块输出示意图和各电平输出噪声信号的归一化频谱如图8,9所示。
本发明属于FPGA应用领域,具体涉及FPGA伪随机噪声生成器的设计方法。
在通信领域,噪声有着许多作用,一个最简单的例子,噪声经常被用作于干扰信号,在电子对抗中,为了不让目标获取到正确的信息,我们经常使用噪声去干扰目标对信号的接收。自然界中存在各种各样的噪声,但要运用到通信领域,我们就要人为的制造满足需求的噪声。人为的制造噪声意味着生成的噪声并不是随机噪声,但是我们可以通过其他方式增加噪声的随机性。FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。本发明基于FPGA提出了一种随机性较强、具有可扩展性的伪随机噪声生成器。
为克服上述现有技术的不足,本发明的目的提供一种FPGA的伪随机噪声生成器的设计方法,该方法有效解决了如何生成所需噪声问题。
为实现上述目的,本发明采用的技术方案是:
一种FPGA的伪随机噪声生成器的设计方法,整个带限伪随机噪声生成器包含PN序列生成模块、伪随机噪声生成模块、FIR滤波器模块、CIC滤波器模块。本发明设计支持符号速率为1KHz~1MHz,其中支持的符号速率必须是10的整数倍,在后续的运用中也可通过调整滤波器的系数来更改支持的符号速率。本发明设计将把输入的对应符号速率的伪随机噪声信号统一以100MHz的数据速率输出。
一种FPGA的伪随机噪声生成器的设计方法,设计的输出噪声信号为32bit,分为I、Q两路,每路各16bit。从CFIR模块起即开始分为两路信号;其特征在于,包括以下步骤:
步骤1,PN序列生成模块设计:
本发明设计的PN序列生成模块参考的是Matlab官方文档中的PN序列函数,本发明设计的PN序列生成模块支持生成6~25阶本原多项式的PN序列。模块的输入包括使能、初始值、本原多项式阶数、本原多项式系数值;
步骤2,伪随机噪声生成模块设计:
伪随机噪声生成模块包括4个本地噪声ROM、噪声合成处理、噪声数据速率控制三个部分。其中,4个本地噪声ROM中存储了4种不同的但上下限相同的噪声数据,这些噪声数据是由MATLAB中生成的。噪声数据的生成过程是在MATLAB中使用randn函数生成指定长度的高斯白噪声,然后将这些噪声数据生成为coe文件,之后在Vivado中的ROMIP核中使用这些coe文件初始化ROM。在本发明中,使用的是4096深度的ROM,后续也可根据实际需要对ROM的深度进行调整。噪声合成处理中为了使输出的噪声数据的随机性增加,因此使用前级送入的伪随机序列数据为ROM的读取地址。噪声数据速率控制会通过输入的符号速率去计数并决定在何时输出数据和数据有效标志位。
步骤3,FIR滤波器模块设计:
本发明中使用了两个FIR模块,分别位于CIC滤波器模块的前级和后级。第一个FIR滤波器模块与后级的cic滤波器模块构成级联,该模块将对前级伪随机噪声生成模块输出的噪声数据进行5倍插值。第二个FIR滤波器模块将CIC滤波器模块输出的50MHz数据速率的噪声数据进行2倍插值,插值后噪声数据的数据速率将变为100MHz。
这两个FIR模块中都调用了FIRIP核,但它们的参数设置均不一样,且滤波器系数的设计也不一样,滤波器系数设计使用的是matlab的filterDesigner工具。FIRIP核输出的数据经过了截位处理才输出到下一级,截位处理中数据均值保留一位符号位。
步骤4,CIC滤波器模块设计:
CIC滤波器模块中调用了两个CICIP核,分别对I路噪声信号和Q路噪声信号进行插值滤波,插值倍数将由输入的duc_rate决定,插值倍数为duc_rate除以10,该被除数是由前级和后级的插值倍数之积所求得。
步骤5,仿真验证:
将上述步骤中生成的模块级联起来,可以得到各级输出的模拟信号。
与现有技术相比,本发明的有益效果是:
本发明提供了一种FPGA的伪随机噪声生成的设计方法,提出了设计思路和系统架构,运用多个Rom存储Matlab生成的高斯白噪声,通过随机算法增加随机性,近似于随机噪声的噪声,另外还可以控制噪声的功率和带宽,加入了混频模块,可以支持从0混频到40MHz的中频。本发明在Vivado软件中用Verilog设计了各个子模块,并且使用Modelsim软件对子模块进行了联合仿真,并将仿真的数据保存下来放到Matlab中进行的频谱分析,本发明设计通过Modelsim和Matlab验证了功能,该设计可以运用到实际的噪声生成设备中去,并具有可扩展性。
本发明不仅解决了如何生成所需噪声这一问题,也通过随机算法本质增强了噪声的随机性,另外,基于本发明伪随机序列生成器的输出序列通过了全部测试,具有优良的随机性,能广泛应用于加密等工程领域。
图1为本发明的整体设计架构图;
图2为本发明的整体设计RTL视图;
图3为本发明的PN序列生成模块图;
图4为本发明的伪随机噪声生成模块图;
图5为本发明的第一个FIR模块和滤波器系数设计图;
图6为本发明的第二个FIR模块和滤波器系数设计图;
图7为本发明的CIC滤波器模块设计生成图;
图8各模块输出波形图;
图9各电平输出噪声信号的归一化频谱图。
下面结合附图和实施例对本发明作进一步详细说明。
在通信领域,噪声有着许多作用,一个最简单的例子,噪声经常被用作于干扰信号,在电子对抗中,为了不让目标获取到正确的信息,我们经常使用噪声去干扰目标对信号的接收。自然界中存在各种各样的噪声,但要运用到通信领域,我们就要人为的制造满足需求的噪声,因此如何生成所需的噪声成了一个需要解决的问题。
本发明提出了一种FPGA的伪随机噪声生成器的设计方法,给出了完整的设计思路和设计架构,并通过modelsim和matlab进行了仿真验证,仿真验证结果显示本发明的设计能实现伪随机噪声的生成并可以配置不同的符号速率,且本发明设计的具有扩展性,可以通过调整滤波器系数以匹配更多的符号速率;可以通过调整本地噪声ROM的深度以增强生成噪声数据的随机性。
实施例
本发明设计的系统架构图如图1所示,整个带限伪随机噪声生成器包含PN序列生成模块、伪随机噪声生成模块、FIR滤波器模块、CIC滤波器模块。本发明设计支持符号速率为1KHz~1MHz,其中支持的符号速率必须是10的整数倍,在后续的运用中也可通过调整滤波器的系数来更改支持的符号速率。本发明设计将把输入的对应符号速率的伪随机噪声信号统一以100MHz的数据速率输出。本发明设计的伪随机噪声生成器具体包括以下步骤:
步骤1,PN序列生成模块设计:
本发明设计的PN序列生成模块参考的是Matlab官方文档中的PN序列函数,本发明设计的PN序列生成模块支持生成6~25阶本原多项式的PN序列。模块的输入包括使能、初始值、本原多项式阶数、本原多项式系数值;
步骤2,伪随机噪声生成模块设计:
伪随机噪声生成模块包括4个本地噪声ROM、噪声合成处理、噪声数据速率控制三个部分。其中,4个本地噪声ROM中存储了4种不同的但上下限相同的噪声数据,这些噪声数据是由MATLAB中生成的。噪声数据的生成过程是在MATLAB中使用randn函数生成指定长度的高斯白噪声,然后将这些噪声数据生成为coe文件,之后在Vivado中的ROMIP核中使用这些coe文件初始化ROM。在本发明中,使用的是4096深度的ROM,后续也可根据实际需要对ROM的深度进行调整。噪声合成处理中为了使输出的噪声数据的随机性增加,因此使用前级送入的伪随机序列数据为ROM的读取地址。噪声数据速率控制会通过输入的符号速率去计数并决定在何时输出数据和数据有效标志位。
步骤3,FIR滤波器模块设计:
本发明中使用了两个FIR模块,分别位于CIC滤波器模块的前级和后级。第一个FIR滤波器模块与后级的cic滤波器模块构成级联,该模块将对前级伪随机噪声生成模块输出的噪声数据进行5倍插值。第二个FIR滤波器模块将CIC滤波器模块输出的50MHz数据速率的噪声数据进行2倍插值,插值后噪声数据的数据速率将变为100MHz。
这两个FIR模块中都调用了FIRIP核,但它们的参数设置均不一样,且滤波器系数的设计也不一样,滤波器系数设计使用的是matlab的filterDesigner工具。FIRIP核输出的数据经过了截位处理才输出到下一级,截位处理中数据均值保留一位符号位。
步骤4,CIC滤波器模块设计:
CIC滤波器模块中调用了两个CICIP核,分别对I路噪声信号和Q路噪声信号进行插值滤波,插值倍数将由输入的duc_rate决定,插值倍数为duc_rate除以10,该被除数是由前级和后级的插值倍数之积所求得。
步骤5,仿真验证:
将上述步骤中生成的模块级联起来,可以得到各级输出的模拟信号。
在发明设计了一种FPGA的伪随机噪声生成器的设计方案,给出了完整的设计思路和设计架构,并通过modelsim和matlab进行了仿真验证,仿真验证结果显示本发明的设计能实现伪随机噪声的生成并可以配置不同的符号速率,且本发明设计的具有扩展性,可以通过调整滤波器系数以匹配更多的符号速率;可以通过调整本地噪声ROM的深度以增强生成噪声数据的随机性。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行同等替换。凡在本发明的精神和原则之内,所作的任何修改、同等替换、改进等,均应包含在本发明的保护范围之内。
本文发布于:2024-09-24 08:25:13,感谢您对本站的认可!
本文链接:https://www.17tex.com/tex/3/73279.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |