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

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

3天内不再提示

FSK调制技术的MATLAB与FPGA设计

FPGA设计论坛 来源:CSDN技术社区 作者:FPGADesigner 2022-04-26 13:12 次阅读

FSK调制

FSK是利用载波的频率表示基带信息,比如在2FSK系统中,采用单频信号f1表示信息0、单频信号f2表示信息1。根据码元转换时载波的相位是否连续,分为非连续相位FSK和连续相位FSK,如下图所示:

ed9ac034-c515-11ec-bce3-dac502259ad0.jpg

第三幅图为连续相位FSK调制,也称作CPFSK,可视作振荡频率随基带信号线性变化;第四幅图为非连续相位FSK,在码元转换时有一个相位的跳变,可视作两个ASK调制信号的叠加。

FSK的一个重要参数是频移指数h=(f2-f1)*T,T为码元周期。该参数影响着两个单频信号之间的相关系数ρ。ρ越小,越容易将两个信号区分开,即解调系统的解调性能越好。h的几个特殊取值如下:

当h=0.715时,ρ可以取到最小值-2π/3;

当h=kπ(k≥1)时,ρ为0,即两信号正交;

当h=N(整数)时,FSK总是会体现出连续相位特性。

调制信号的频谱与相位变化息息相关,如果存在相位突变,信号频谱宽度会扩展(产生旁瓣)。CPFSK是一种恒包络调制技术,在码元速率和h相同时,CPFSK比非连续相位的FSK主瓣宽度更窄,且旁瓣分量更小,通过限带滤波后信号包络起伏小,适合应用于非线性信道。

MATLAB设计

MATLAB中可以按照FSK原理完成FSK调制,但是只能产生非连续相位的FSK调制信号(除非h=1)。如果想要产生连续相位的FSK调制信号,必须使用MATLAB提供的fskmod函数,示例代码如下:

edb6e4c6-c515-11ec-bce3-dac502259ad0.png

上面将代表0和1两个频率之间的间隔直接设置为8,也可以根据频移指数h的计算公式来设定。fskmod最后还可以增加一个参数,默认值为’cont’表示连续相位;’discont’表示非连续相位。

需要注意的是,老版本的MATLAB可能会用到randint函数产生随机序列;而2017以后的版本只能使用randi函数。

FSK的FPGA设计

在Vivado开发环境下完成2FSK(非连续相位)调制技术的设计并进行仿真,系统时钟32Mhz,码元速率1Mhz,载波频率6Mhz,频移指数h=3.5。模块接口如下:

edd0128e-c515-11ec-bce3-dac502259ad0.png

配置两个DDS产生两个代表1和0的单频信号。f2-f1=h/T=3.5/1ns=3.5Mhz,则在6Mhz载波频率的基础上选择4.25Mhz和7.75MHz。DDS Compiler IP核使用方法可参考https://blog.csdn.net/fpgadesigner/article/details/80512067。本设计将DDS的无杂散动态范围设置为95dB,对应的位宽为16bit。实例化代码如下:

ede74878-c515-11ec-bce3-dac502259ad0.png

FSK调制信号的产生有两种方法。第一种方法将FSK视作两路ASK信号的合成(一路ASK有载波代表1,一路ASK无载波代表1),代码如下:

edfb4940-c515-11ec-bce3-dac502259ad0.png

采用此方法的系统原理图如下:

ee105498-c515-11ec-bce3-dac502259ad0.jpg

可以看到一路ASK信号为din与f1的乘法,另一路信号为din取反后与f2的乘法,两路加起来便得到FSK调制信号。另一种方法直接使用多路选择器对输入的基带数据进行判决输出:

ee3109d6-c515-11ec-bce3-dac502259ad0.png

采用此方法的系统原理图如下:

RTL_MUX即为多路选择器,明显第二种方法更加节省资源。

CPFSK的FPGA设计

连续相位的FSK调制信号产生可以借助DDS的特性,DDS的实现原理就使其输出信号具有连续相位特性,即使频率突然改变。配置一个DDS,Implementation->Phase Increment Programmability设置为Streaming,可以通过S_AXIS_PHASE接口动态配置DDS的输出频率。完整代码如下:

ee470114-c515-11ec-bce3-dac502259ad0.png

DDS的频率分辨率设置为976.5625Hz,正好对应相位位宽为15Bits(Fs/2^B=32MHz/2^15=976.5625Hz)。因此f1=4.25MHz对应的频率控制字为4351(f1/976.5625-1=4351);f2=7.75MHz对应的频率控制字为7935(f2/976.5625-1=7935)。

代码中根据输入基带的情况设定对应的频率控制字。可见CPFSK只需要使用一个DDS Compiler IP核即可,比FSK要节省不少资源。

仿真测试

编写testbench,产生一个周期信号模拟二进制基带数据。首先仿真非连续相位的FSK:

ee69f8d6-c515-11ec-bce3-dac502259ad0.jpg

可以明显看到在码元的跳变时刻FSK信号的相位有明显的突变。再仿真CPFSK:

ee82f714-c515-11ec-bce3-dac502259ad0.jpg

看到码元跳变时刻FSK信号的相位仍保持连续变化。注意由于DDS有一定的Latency,导致上图FSK信号相比基带数据有一定的延迟。

Quartus环境下实现

Quartus中对应的IP核为NCO,在产生FSK信号时与DDS用法基本相同;但在产生CPFSK信号时,NCO IP核有独特的配置方式。

NCO的输出频率由phi_inc_i接口控制。需要使用FSK调制功能时,在Implementation标签下选中“Frequency Modulation Input”:

ee9e0572-c515-11ec-bce3-dac502259ad0.jpg

IP核会多出一个freq_mod_i接口,该接口的作用时在phi_inc_i输出频率的基础上进行调整。比如:频率控制字位宽为25Bits,phi_inc_i输出频率6Mhz,系统时钟32MHz,需要输出f1=4.25Mhz,则freq_mod_i对应的控制字为(4.25Mhz-6MHz)/(32Mhz/2^25)=-1835008。

根据基带数据改变freq_mod_i接口的控制字即可实现CPFSK信号的产生。

原文标题:FPGA学习-FSK调制技术

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

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

    关注

    1602

    文章

    21301

    浏览量

    593093
  • matlab
    +关注

    关注

    175

    文章

    2922

    浏览量

    228429
  • FSK调制
    +关注

    关注

    0

    文章

    7

    浏览量

    7800

原文标题:FPGA学习-FSK调制技术

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FSK调制工作原理

    0用不发射载波表示,二进制1用发射1表示。 ASK跟OOK的频谱都比较宽。 FSK是频移键控调制的简写,即用不同的频率来表示不同的符号。例如2KHz表示符号0,3KHz表示符号1。 GFSK是高斯
    发表于 03-27 14:38

    【资料分享】基于FPGAFSK调制解器器设计

    的2FSK信号调制解调器,利用m序列的随机性和确定性来产生输入基带信号,用分频器把时钟信号分频成两个不同频率的信号。详细介绍了基于FPGA的2FSK信号发生器的设计方法,提供了VHDL
    发表于 03-20 16:54

    怎样用FPGA实现FSK调制解调呢?

    最近想做这方面的,怎样用FPGA实现FSK调制解调?但是我一点头绪都没有,哪位高手帮帮忙,讲解一下什么的
    发表于 04-06 14:29

    怎样用FPGA实现FSK调制解调呢?

    最近想做这方面的,怎样用FPGA实现FSK调制解调?但是我一点头绪都没有,哪位高手帮帮忙,讲解一下什么的
    发表于 05-08 17:34

    Matlab/simulink在FPGA设计中的应用

    文中首先分析了MATLAB/Simulink 中DSP Builder 模块库在FPGA 设计中优点,然后结合FSK 信号的产生原理,给出了如何利用DSP Builder 模块库建立FSK
    发表于 08-27 12:07 87次下载

    什么是fsk调制? fsk调制是什么意思?

    什么是fsk调制fsk调制是什么意思? 数字调频又称移频键控,简记为FSK,它是载波频率随数字信号而变化的一种
    发表于 04-21 13:13 2.2w次阅读

    fsk调制电路

    fsk调制电路 本图是由74LS74等构成的FSK调制电路。这种频移键控(FSK)调制电路既没
    发表于 04-22 00:24 7662次阅读
    <b class='flag-5'>fsk</b><b class='flag-5'>调制</b>电路

    基于CORDIC算法2FSK调制器的FPGA设计

    本文提出了应用CORDIC(Coordinate Rotation Digital Computer)算法实时计算正弦值的方案,并基于CORDIC算法在FPGA芯片上设计了2FSK调制器。这不仅能够节省大量的
    发表于 05-31 10:22 1543次阅读
    基于CORDIC算法2<b class='flag-5'>FSK</b><b class='flag-5'>调制</b>器的<b class='flag-5'>FPGA</b>设计

    基于DDS与FPGAFSK调制方式

    在传统的 FSK 调制方式中, 两个载波频率转换期间, 已调信号存在相位和频率突变, 造成系统频带利用率不高和信号频谱衰减太慢。用DDS 进行标准FSK 调制, 可使其相位连续, 但由
    发表于 08-04 15:16 72次下载
    基于DDS与<b class='flag-5'>FPGA</b>的<b class='flag-5'>FSK</b><b class='flag-5'>调制</b>方式

    FPGA实现2FSK数字信号调制解调

    基于FPGA调制和解调的数字信号有多种,包括2ASK、2FSK、2PSK等,文中介绍了2FSK信号的调制与解调,以及该信号的功率谱。最后提
    发表于 03-23 11:17 398次下载
    <b class='flag-5'>FPGA</b>实现2<b class='flag-5'>FSK</b>数字信号<b class='flag-5'>调制</b>解调

    基于MATLAB的simulink仿真2Fsk调制解调

    基于MATLAB的simulink仿真2Fsk调制解调
    发表于 11-12 10:36 32次下载

    一文看懂MSK调制FSK调制的区别和联系

    本文开始阐述了MSK调制的基本原理,其次介绍了FSK调制的基本原理,最后介绍了MSK调制FSK调制
    的头像 发表于 04-16 08:44 7.7w次阅读
    一文看懂MSK<b class='flag-5'>调制</b>与<b class='flag-5'>FSK</b><b class='flag-5'>调制</b>的区别和联系

    FSK信号的调制原理 FSK调制信号的FPGA实现

    1、FSK信号的调制原理 数字频率调制是利用载波的频率传输信息的一种调制方式,FSK是在ASK之后出现的一种
    的头像 发表于 09-28 15:01 5.5w次阅读
    <b class='flag-5'>FSK</b>信号的<b class='flag-5'>调制</b>原理 <b class='flag-5'>FSK</b><b class='flag-5'>调制</b>信号的<b class='flag-5'>FPGA</b>实现

    FSK调制解调方法简析

    FSK通信系统主要由基带数据生成模块(pcm.v)、FSK调制模块(fsk_mod.v) 、FSK解调模块(
    的头像 发表于 03-31 09:07 3433次阅读

    fsk调制解调原理 Fsk调制体制的主要优点

    FSK调制和解调是一种常用的调制解调技术,其中FSK代表频移键控。在FSK
    的头像 发表于 02-03 14:28 966次阅读