FPGA实战--2FSK调制

通信原理与MATLAB(七):2FSK的调制解调 通信原理和MATLAB 阅读详情

首先了解一下2FSK的百度百科:(2ASK请直接看结尾)

FSK是信息传输中使用得较早的一种调制方式,它的主要优点是: 实现起来较容易,抗噪声与抗衰减的性能较好。在中低速数据传输中得到了广泛的应用。所谓FSK就是用数字信号去调制载波的频率。如果是采用二进制调制信号,则称为2FSK;采用多进制调制信号,则称为MFSK。
l 调制方法:2FSK可看作是两个不同载波频率的ASK已调信号之和。
l 解调方法:相干法和非相干法。
l 类型: 二进制移频键控( 2FSK), 多进制移频键控(MFSK)。
在上述三种基本的调制方法之外,随着大容量和远距离 数字通信技术的发展,出现了一些新的问题,主要是信道的带宽限制和非线性对传输信号的影响。在这种情况下,传统的数字调制方式已不能满足应用的需求,需要采用新的数字调制方式以减小信道对所传信号的影响,以便在有限的带宽资源条件下获得更高的传输速率。这些技术的研究,主要是围绕充分节省频谱和高效率的利用频带展开的。多进制调制,是提高 频谱利用率的有效方法,恒包络技术能适应信道的非线性,并且保持较小的频谱占用率。
从传统数字调制技术扩展的技术有 最小移频键控( MSK)、 高斯滤波最小移频键控( GMSK)、 正交幅度调制( QAM)、 正交频分复用调制( OFDM)等等。
我们需要怎么做
本次实战中,我们选用二进制频移键控,原理和方法比较简单粗暴,我们用一个伪随机序列(M序列)来假装按键,然后生成2个不同频率正弦波,通过一个选通开关并口输出,在使用并转串芯片转换实现2FSK的简单实践,下面我们来记录实践流程。

        首先是顶层文件(实践中就是原理草图,大概的实现原理)

从左到右分别是时钟接口->分频器->正弦波发生器/M序列发生器->开关选通(实验中时钟为20M),下面是各个模块代码:

分频器:(N代表分频数,为了让结果清晰,所以M序列的分频数很高,因为要让一个上升沿有好几个周期才行)

module fenpin(clk_out,clk_in);
output clk_out;
input clk_in;
reg[13:0] cnt;
reg clk_out;
parameter N=1024;
always@(posedge clk_in)
begin
  begin
    if(cnt==N/2-1)
    begin clk_out<=!clk_out;
    cnt<=0;
    end else
    cnt<=cnt+1;
  end
end
endmodule

仿真结果:


M序列发生器:

module MXL(clk ,out);
input clk;
output out;
reg[3:0] tmp=4'b0;
reg out;
always @(posedge clk )
begin
if(tmp > 4'd15)
tmp=4'd0;
else tmp=tmp+1'b1;
case(tmp)
4'd0:out<=0;
4'd1:out<=1;
4'd2:out<=0;
4'd3:out<=0;
4'd4:out<=1;
4'd5:out<=1;
4'd6:out<=0;
4'd7:out<=1;
4'd8:out<=1;
4'd9:out<=0;
4'd10:out<=1;
4'd11:out<=0;
4'd12:out<=0;
4'd13:out<=0;
4'd14:out<=0;
4'd15:out<=0;
endcase
end
endmodule

仿真结果:



重点,正弦波发生器:(这是这个实验难点,需要使用IP,所谓正弦波发生器,就是计数器+ram核,将正弦波抽样128个点,然后随着计数器计数逐个输出,ps,并口),调用IP核流程和mif文件的参数设置参考TOP文件,就是顶层文件图。mif文件导入在ram核的创建中。下面也带上C语言产生mif文件(也就是正弦波的序列)

内部结构图:


C语言mif文件代码(用VC或者devc++运行即可,摘自:点击打开链接)这个代码浅显易懂,读懂为好。

#include <stdio.h>
#include <math.h>

#define PI 3.141592
#define DEPTH 128     /*数据深度,即存储单元的个数*/
#define WIDTH 8       /*存储单元的宽度*/

int main(void)
{
    int i,temp;
    float s;

    FILE *fp;
    fp = fopen("TestMif.mif","w");   /*文件名随意,但扩展名必须为.mif*/
    if(NULL==fp)
        printf("Can not creat file!\r\n");
    else
    {
        printf("File created successfully!\n");
        /*
        *    生成文件头:注意不要忘了“;”
        */
        fprintf(fp,"DEPTH = %d;\n",DEPTH);
        fprintf(fp,"WIDTH = %d;\n",WIDTH);
        fprintf(fp,"ADDRESS_RADIX = HEX;\n");
        fprintf(fp,"DATA_RADIX = HEX;\n");
        fprintf(fp,"CONTENT\n");
        fprintf(fp,"BEGIN\n");

        /*
        * 以十六进制输出地址和数据
        */
        for(i=0;i<DEPTH;i++)
        {
             /*周期为128个点的正弦波*/ 
            s = sin(PI*i/64);   
            /*将-1~1之间的正弦波的值扩展到0-255之间*/ 
            temp = (int)((s+1)*255/2);
            /*以十六进制输出地址和数据*/
            fprintf(fp,"%x\t:\t%x;\n",i,temp);
        }//end for
        
        fprintf(fp,"END;\n");
        fclose(fp);
    }
}

仿真结果:

选通开关代码:

module KAIGUAN(din0,dout,din1,sel);
parameter N=12;
input[N-1:0] din0;
output[N-1:0] dout;
input[N-1:0] din1;
input sel;
wire[N-1:0] MW_din0l;
wire[N-1:0] MW_din1l;
reg[N-1:0] MW_dtempl;
always@(MW_din0l or MW_din1l or sel)
begin
  case(sel)
  1'd0:MW_dtempl=MW_din0l;
  default:MW_dtempl=MW_din1l;
  endcase
  end
assign dout=MW_dtempl;
assign MW_din0l=din0;
assign MW_din1l=din1;
endmodule

整体系统的仿真结果:

仿真成功!

下载到FPGA中接上示波器:(FFT中有两个高峰,实验成功,具体速率大家可以自己算哦)


2ASK比较简单,至于要信号发生器的分频器分频数目一致,然后改任意一个波形发生器的mif文件(中心范围缩小,可改代码得,记得有个直流偏置),其他不用变。

过程写的比较简单粗暴,有问题可留言或者私信,我都会看的!





实验二 二进制频移键控(2FSK) 载波的幅度不变,频率随an在两个频率中变化,用两个不同的频率携带传递二进制数字信息,当发送“1 ”时对应于某个载波频率ωc1发送 “0”时对应于另 个载频 ωc0 我们把这种调制方式称之为二进制频移键控(2FSK)。当二进制数字信息序列是具有逻辑电平1和0的单极性不归零码时,二进制频移键控信号可以看成是两个不同载频的二进制幅度键控信号之和,所以,一个FSK信号可以看成是两个不同载波的2ASK信号的叠加。其解调和解调方法和ASK差不多。2FSK信号的频谱可以看成是f1和f2的两个2ASK频谱的组合。 阅读详情

相关推荐

FPGA实现2FSK调制解调:DDS调制与过零检测解调实战

数字调制是通信系统实现可靠传输的核心技术,其中频移键控(FSK)因抗幅度干扰能力强,在低速数传、电力载波等场景中广泛应用。2FSK利用不同载波频率表示二进制数据,其调制解调链路可通过FPGA与Verilog完整实现。调制端采用直接数字频率合成(DDS)技术,通过相位累加器与查找表生成连续相位正弦波,避免频率切换时的相位突变;解调端采用过零检测法,统计码元窗口内的过零次数来判决数据,无需复杂载波同步。本文从参数推导到代码实现,详细展示了基于FPGA的2FSK调制解调器设计,并给出仿真与上板调试经验,适合嵌入式

weixin_29165725的博客 225

通信原理笔记—二进制移频键控(2FSK)

二进制移频键控(2FSK)

vizio.blog.youkuaiyun.com 2万+

【Verilog实战解析】基于FPGA的2ASK与2FSK调制解调系统设计与仿真

本文详细解析了基于FPGA的2ASK与2FSK调制解调系统设计与仿真,通过Verilog实现数字通信中的两种基础调制方式。文章从数字通信基础入手,探讨FPGA在实时信号处理中的优势,并提供了2ASK调制模块设计、解调方案优化以及2FSK系统设计的实战代码与调试技巧。内容涵盖核心电路设计、非相干解调原理、双频切换调制实现等关键技术点,适合通信工程师和FPGA开发者参考。

weixin_30615767的博客 437

ASK,FSK和PSK(详细介绍,一定有收获哒!)

终于弄懂了!ASK,PSK,FSK以及载波速率,码元速率和二进制数据速率(比特率)超全超全

weixin_69884785的博客 5万+

2FSK调制解调实验

频移键控是利用载波的频率变化来传递数字信息。数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在 中低速数字通信系统中得到了较为广泛的应用。在2FSK中,载波的频率随着二进制基带 信号在 f1 和f2 两个频点间变化。帧到达检测完毕之后,接收到的信号应该是两路正交的 IQ 正弦波信号,他们的频率 为 1MHZ 和 2MHZ。对于接收端,我们需要接收发送端的 2FSK 调制信号,因此 AD9361 的采样率和频点必 须与发送端一致,即samp_hex

wangjie36的博客 2万+

【FPGA教程案例32】通信案例2——基于FPGA的FSK调制信号产生

在频移键控(2FSK)中,当传送“1”码时对应于载波频率,传送“0”码时对应于载波频率。2FSK信号波形可看作两个2ASK信号波形的合成,下图是相位连续的2FSK信号波形。通过上述分析,我们可以知道在FPGA中,和ASK类似,实现FSK主要涉及到cos信号的产生,二进制数字和cos信号相乘所使用的选择器两个部分。在FPGA中,FSK调制方式的实现结构如下图所示其中NCO的IP核配置如下其对应的verilog程序如下在这个verilog中程序中,安装上一课的操作方式。......

FPGA/MATLAB学习教程/源码/项目合作开发 3110

FPGA产生2FSK信号(1)

FSK通信是常用通信之一,实现起来也很简单。我将在接下来的几篇文章中详细介绍2FSK的调制解调问题。

qq_36901410的博客 5788

基于 FPGA 的 FSK 调制信号产生

摘要 本文介绍了基于FPGA的FSK调制信号生成技术及其应用。FSK调制通过将数字信号转换为不同频率的载波信号,在噪声环境中表现出良好性能。FPGA的并行处理能力使其成为实现FSK调制器的理想选择。文章提供了四个典型应用场景的Verilog实现代码:无线电通信(800Hz/1600Hz)、调制解调器(600Hz/1200Hz)、远程控制系统(700Hz/1400Hz)和工业通信(900Hz/1800Hz)。每个代码示例均采用相位累加器结构,根据输入比特选择不同频率生成正弦波输出,展示了FPGA实现FSK调制

走向CTO的路上... 796

【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真③(信号调制仿真)

Verilog编写2FSK第③步信号的调制 上一篇编写了2FSK调制信号的程序,本节编写信号调制的子程序 2FSK二进制频移键控,FSK 是用不同频率的载波来传递数字消息的。 例如:f1=sin2πw f2=sin4πw 传输f1时代表’0’传输f2时是’1’ module modulation(clk,DDSin,DA_Data,DA_Data2,DDS_out);//定义模块和端口 input clk;//输入的时钟 input DDSin;//需要调制的信号 input wire [10:

qq_43196083的博客 4612

FPGA实现的2FSK调制器项目实战

FPGA(现场可编程门阵列)是一种基于逻辑单元阵列的集成电路,它能够通过编程来实现各种数字电路的功能。与传统的ASIC(专用集成电路)相比,FPGA具有可编程、灵活性高、开发周期短等优势。因此,FPGA广泛应用于各种电子系统的设计中,特别是在需要快速迭代和高度定制化的通信系统领域。2FSK(二进制频移键控)调制是一种数字调制方式,它通过改变载波频率来表示数字信号的二进制“0”和“1”。在2FSK系统中,每个二进制位对应于两个不同的频率——一个频率用于传输“0”,另一个频率用于传输“1”。

weixin_33239721的博客 869

FPGA实现2FSK调制解调:抗频偏与低功耗无线传感实战

2FSK(二进制频移键控)是一种基础但关键的数字调制方式,广泛应用于低功耗物联网节点、工业遥控遥信等对可靠性要求严苛的场景。其核心原理是通过两个离散载波频率映射0/1比特,抗噪能力取决于调制指数h=2Δf/Rₛ。在实际工程中,晶振温漂、窄带干扰和链路抖动极易导致软件解调失锁,而FPGA硬件实现凭借确定性时序、抗中断抖动和可定制鉴频结构,能稳定容忍±1.5kHz频偏并支持全温区运行。本文聚焦Verilog级落地实践,涵盖DDS相位连续调制、片上AWGN+频偏信道建模、过零检测+滑动窗口解调及PLL自适应补偿等

weixin_32349093的博客 242

【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真①( MATLAB生成.mif文件)

【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真①( MATLAB生成.mif文件)

qq_43196083的博客 4978

FPGA实现FSK调制设计指南

频移键控(Frequency Shift Keying, FSK)是一种数字频率调制方式,广泛应用于电子通信中。FSK通过改变数字信号的频率来表示二进制数据,其中逻辑”1”和”0”分别对应于两个不同的频率。这种技术利用频率变化来传递信息,对信号的幅度和相位变化要求不高,使得FSK在抗干扰方面具有优势。Quartus II是Altera公司(现为Intel旗下公司)推出的FPGA/CPLD设计软件,它提供了一套从设计输入、编译、仿真到下载的完整解决方案。

weixin_42576467的博客 778

基于FPGA的2FSK调制解调系统

FSK作为数字通信中不可或缺的一种调制方式,其具有抗干扰能力强,不受信道参数的影响的优点,为此,设计合适的FSK调制解调系统便具有重要意义。

weixin_47143639的博客 3244

数据去重复_京东商品评论情感分析|文本数据预处理

本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意。所以对于文本评论数据先进行文本预处理是必不可少的一步,把大量的、冗余的、无价值的信息去除,可以极大提高文本数据的质量,精确文本分析结果。1 文本去重1.1文本去重的原因文本数据预处理时,首先应去除文本评论数据中反...

weixin_34556808的博客 2074

鱼眼相机矫正实战:除了棋盘格,试试横向展开和经纬度法(OpenCV4/C++实现对比)

本文对比了鱼眼相机矫正的三种主流方法:棋盘格标定法、横向展开法和经纬度法,通过OpenCV4/C++实战代码解析,帮助开发者在自动驾驶、VR全景拼接和安防监控等场景中选择最适合的技术方案。重点分析了各方法的精度、处理速度和适用场景,为工程实践提供实用指导。

weixin_29032489的博客 284

FPGA数字信号处理(22)FSK调制技术

本系列的10~13篇介绍了数字通信中ASK调制解调技术的实现。本文将介绍数字通信系统中FSK调制技术的FPGA实现,后面的文章将介绍FSK解调。 FSK调制 FSK是利用载波的频率表示基带信息,比如在2FSK系统中,采用单频信号f1表示信息0、单频信号f2表示信息1。根据码元转换时载波的相位是否连续,分为非连续相位FSK和连续相位FSK,如下图所示: 第三幅图为连续相位FSK调制,...

FPGADesigner的博客 2万+

Ansys Maxwell磁场仿真入门:无线传能线圈自感与互感计算全流程

本文详细介绍了使用Ansys Maxwell进行无线充电线圈磁场仿真的全流程,包括模型建立、求解器设置、电感参数提取及优化策略。通过实战案例,帮助工程师掌握线圈自感与互感计算技巧,提升无线充电系统设计效率与精度。重点解析了Maxwell在磁场仿真中的关键应用,适用于电磁场仿真初学者和进阶用户。

weixin_29047545的博客 440

基于FPGA的2FSK调制系统发射机设计与实现

本文详细介绍了基于FPGA的2FSK调制系统发射机的设计与实现方法。通过MATLAB数据处理、FIR滤波器设计、DDS频率合成等关键技术,实现了高效可靠的2FSK调制发射机系统,适用于低速无线通信和物联网设备应用。

rice5的博客 681

金融数据自动化:从同花顺API到Excel的智能转换之旅

本文详细介绍了如何利用同花顺API实现金融数据自动化处理,并将其智能转换为Excel格式的全流程。通过Python编程和Excel高级技巧,读者可以掌握从数据获取、清洗到输出的完整解决方案,大幅提升金融数据分析的效率和准确性。文章特别强调了同花顺API的使用技巧和Excel自动化输出的最佳实践。

sql99的博客 462

如何在软件复位后保留指定RAM区域的数据

本文主要介绍S32K144的RAM retention功能

北极熊的脖子(16605192620@163.com) 1万+

FSK调制的FPGA实现(附代码)

摘要: FSK调制通过比特流控制信号频率,1对应频率f1,0对应f2。文章介绍了FSK的原理及FPGA实现方法,采用DDS技术生成正弦信号,并通过频率控制字模块将比特转换为特定频率。FPGA实现包括顶层模块和频率控制字模块,利用公式计算频率控制字(如50MHz时钟下,5MHz输出对应429496730,2.5MHz对应214748365),最终通过CORDIC算法生成FSK信号。

whb1366的博客 1055

别再用Selenium被秒封了!2026最新反爬全突破+动态渲染实战(通过率99%)

做爬虫的同学,肯定都有过这样的经历:遇到一个纯前端渲染的网站,Requests抓包只能拿到一堆空的div标签,所有数据都是JS动态生成的。这时候你想到了Selenium,结果刚打开浏览器,网站直接跳出来一个"检测到机器人访问"的页面,或者直接返回403。我之前做一个跨境电商的爬虫项目,就踩了这个大坑。一开始用默认的Selenium ChromeDriver,10次请求有9次被封,通过率不到10%。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1385

基于FPGA的4FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR

基于FPGA的4FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR

fpga/matlab/simulink算法仿真工程 1648

AI上推荐 之 隐语义模型(LFM)和矩阵分解(MF)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 1万+

大规模新闻聚合爬虫实战:Python爬取数百万新闻数据的完整指南

本文详细介绍了如何构建一个大规模新闻聚合爬虫,结合Python异步爬虫技术,实现高效、稳定的新闻数据采集。增加NLP模块对新闻内容做自动分类、情感分析。引入机器学习模型检测新闻真实性。使用分布式爬虫框架进一步提升规模。增加多媒体内容抓取与处理。

2201_76125261的博客 1554
上一篇: STM32笔记--SDIO(SD卡读取)
下一篇: FPGA实战--2ASK调制
VCA821
博客等级 码龄9年 395粉丝 36原创
评论 37
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值