基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功

server/2024/11/27 4:51:43/

基于FPGA的2FSK调制

  • 前言
  • 一、2FSK储备知识
  • 二、代码分析
    • 1.模块分析
    • 2.波形分析
  • 总结


前言

设计实现连续相位 2FSK 调制器,2FSK 的两个频率为:fI=15KHz,f2=3KHz,波特率为 1500 bps,比特0映射为f 载波,比特1映射为 载波。
1)接收到被发送的数据帧后,按下面格式生成突发帧:帧头(1111111101111110,16比特)+数据帧长度字节(高位在前)+数据帧(来自UART接口的数据字节,每个字节高位在前)+XOR校验字节(长度字节、数据的XOR结果)+结尾8比特(0000000)
2)通过 DAC 模块输出已调信号波形

一、2FSK储备知识

2FSK(双频移键控)调制是数字调制技术的一种,常用于无线通信、数据传输等领域。2FSK属于频移键控(FSK)调制方式的一种特例,其中“2”表示使用两个不同的频率来表示二进制数据0和1。

  1. 输入数据比特流:发送端输入二进制数据流(0和1)。
  2. 选择频率:比特0对应f0,比特1对应f1
  3. 频率调制:在发送端,根据信号的0和1的不同,调节载波信号的频率。每个数据比特对应一个特定的频率周期。
  4. 信号传输:调制后的信号通过传输媒介(如无线电波、电缆等)发送到接收端。

二、代码分析

1.模块分析

代码如下(示例):

//产生载波0
module DDS_Mod1(input 	clk,input   rst_n,output wire    [11:0] 	addr_I,output wire signed  [7:0]  sin		//调制信号
);parameter   Freq =  34'd687026;	//题目要求2KHz/3Khz  设置频率控制字  0.04096 * 2的22次方 =171966  257530
//parameter    Freq =  32'd4278;	//题目要求2KHz/3Khz  设置频率控制字  0.04096 * 2的22次方 =171966  257530
reg     [31:0]  Freq_1;
reg     [33:0]  cnt_I = 0;  //32位=10+22always @(posedge clk or negedge rst_n) beginif(!rst_n)	begincnt_I <= 0;endelse	begincnt_I <= cnt_I + Freq;end
endassign  addr_I = cnt_I[33:22];  //右移12位,相当于除以2的12次方ROM	b2v_inst2(   //调用ROM,将右移后的值送入ROM的地址端.clka(clk),.addra(addr_I),.douta(sin));endmodule
//产生载波1
module DDS_Mod(input 	clk,input   rst_n,output wire    [11:0] 	addr_I,output wire signed  [7:0]  sin		//调制信号
);
//0对应2k 1对应3k
parameter   Freq =  34'd343932;	//题目要求2KHz/3Khz  设置频率控制字  0.04096 * 2的22次方 =171966  257530
//parameter    Freq =  32'd4278;	//题目要求2KHz/3Khz  设置频率控制字  0.04096 * 2的22次方 =171966  257530
reg     [31:0]  Freq_1;
reg     [31:0]  Freq_2;
reg     [33:0]  cnt_I = 0;  //32位=10+22always @(posedge clk or negedge rst_n) beginif(!rst_n)	begincnt_I <= 0;endelse	begincnt_I <= cnt_I + Freq;end
endassign  addr_I = cnt_I[33:22];  //右移12位,相当于除以2的12次方ROM	b2v_inst2(   //调用ROM,将右移后的值送入ROM的地址端.clka(clk),.addra(addr_I),.douta(sin));endmodule

其他模块就是围绕功能进行编写
其他模块就是围绕功能进行编写
其他模块就是围绕功能进行编写
关注三连后台获取

2.波形分析

串口接收到88、55数据后存在fifo里面
在这里插入图片描述
按照通信协议进行实现,将比特0和1映射为对应的频率。

在这里插入图片描述

总结

软件:vivado 2023 modelsim
工程文件完善,修改比较方便,方便大家进行课程知识点的学习与设计,加深对于FSK的理解。


http://www.ppmy.cn/server/145244.html

相关文章

开源Tacchi 视触觉传感器仿真器,为机器人与物体接触仿真提供高质量的Sim2Real性能!

Tacchi是一个基于Taichi编程语言开发的低计算成本弹性体形变仿真器&#xff0c;由方斌教授团队开发并已开源&#xff0c;为机器人与物体接触仿真提供高质量的Sim2Real性能&#xff01;该仿真器以较低的计算资源消耗来模拟弹性体的物理形变&#xff0c;并生成与真实触觉图像相似…

国科大数据挖掘24秋期末考试试题回顾

1. 数据仓库 OLAP操作 2.bin 平滑 归一化计算 3.决策树&#xff08;Information Gain&#xff09;/ 朴素贝叶斯算法 4.FPgrowth 5. single Link 6. recommend rating 和这个题差不多 7.忘了 大部分题目可以看往年题目&#xff0c;作业题。

第9章 异常处理器

第九章 异常处理器 9.1 什么是异常处理器 Spring MVC在处理器方法执行过程中出现了异常&#xff0c;可以采用异常处理器进行应对。 一句话概括异常处理器作用&#xff1a;处理器方法执行过程中出现了异常&#xff0c;跳转到对应的视图&#xff0c;在视图上展示友好信息。 S…

Python 网络爬虫操作指南

网络爬虫是自动化获取互联网上信息的一种工具。它广泛应用于数据采集、分析以及实现信息聚合等众多领域。本文将为你提供一个完整的Python网络爬虫操作指南&#xff0c;帮助你从零开始学习并实现简单的网络爬虫。我们将涵盖基本的爬虫概念、Python环境配置、常用库介绍。 上传…

HAProxy面试题及参考答案(精选80道面试题)

目录 什么是 HAProxy? HAProxy 主要有哪些功能? HAProxy 的关键特性有哪些? HAProxy 的主要功能是什么? HAProxy 的作用是什么? 解释 HAProxy 在网络架构中的作用。 HAProxy 与负载均衡器之间的关系是什么? HAProxy 是如何实现负载均衡的? 阐述 HAProxy 的四层…

《硬件架构的艺术》笔记(七):处理字节顺序

介绍 本章主要介绍字节顺序的的基本规则。&#xff08;感觉偏软件了&#xff0c;不知道为啥那么会放进《硬件架构的艺术》这本书&#xff09;。 定义 字节顺序定义数据在计算机系统中的存储格式&#xff0c;描述存储器中的MSB和LSB的位置。对于数据始终以32位形式保存在存储器…

光伏电站项目-视频监控、微气象及安全警卫系统

一、项目背景 近年来&#xff0c;我国光伏发电持续快速发展。截止2019年5月装机总容量超过2.043亿千瓦&#xff0c;技术水平不断提升&#xff0c;成本显著降低&#xff0c;开发建设质量和消纳利用明显改善&#xff0c;在部分地区实现了家庭分布式光伏并入电网&#xff0c;为建…

【Mybatis】@Param注解 resultMap手动映射

文章目录 一、映射文件参数二、查询映射2-1 一对一2-2 一对多2-3 总结 一、映射文件参数 Param 注解官方文档解释 1、单个参数&#xff08;对象&#xff09;不使用注解 public int save(User user);<!-- 添加用户 --> <insert id"save" parameterType&quo…