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

打印 上一主题 下一主题

主题 1028|帖子 1028|积分 3084


前言

计划实现一连相位 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。

  • 输入数据比特流:发送端输入二进制数据流(0和1)。
  • 选择频率:比特0对应f0,比特1对应f1
  • 频率调制:在发送端,根据信号的0和1的不同,调治载波信号的频率。每个数据比特对应一个特定的频率周期。
  • 信号传输:调制后的信号通过传输前言(如无线电波、电缆等)发送到吸收端。
二、代码分析

1.模块分析

代码如下(示例):
  1. //产生载波0
  2. module DDS_Mod1(
  3.     input         clk,
  4.     input   rst_n,
  5.     output wire    [11:0]         addr_I,
  6.         output wire signed  [7:0]  sin                //调制信号
  7. );
  8. parameter   Freq =  34'd687026;        //题目要求2KHz/3Khz  设置频率控制字  0.04096 * 2的22次方 =171966  257530
  9. //parameter    Freq =  32'd4278;        //题目要求2KHz/3Khz  设置频率控制字  0.04096 * 2的22次方 =171966  257530
  10. reg     [31:0]  Freq_1;
  11. reg     [33:0]  cnt_I = 0;  //32位=10+22
  12. always @(posedge clk or negedge rst_n) begin
  13.         if(!rst_n)        begin
  14.                 cnt_I <= 0;
  15.         end
  16.         else        begin
  17.             cnt_I <= cnt_I + Freq;
  18.         end
  19. end
  20. assign  addr_I = cnt_I[33:22];  //右移12位,相当于除以2的12次方
  21. ROM        b2v_inst2(   //调用ROM,将右移后的值送入ROM的地址端
  22.         .clka(clk),
  23.         .addra(addr_I),
  24.         .douta(sin));
  25. endmodule
复制代码
  1. //产生载波1
  2. module DDS_Mod(
  3.     input         clk,
  4.     input   rst_n,
  5.    
  6.     output wire    [11:0]         addr_I,
  7.         output wire signed  [7:0]  sin                //调制信号
  8. );
  9. //0对应2k 1对应3k
  10. parameter   Freq =  34'd343932;        //题目要求2KHz/3Khz  设置频率控制字  0.04096 * 2的22次方 =171966  257530
  11. //parameter    Freq =  32'd4278;        //题目要求2KHz/3Khz  设置频率控制字  0.04096 * 2的22次方 =171966  257530
  12. reg     [31:0]  Freq_1;
  13. reg     [31:0]  Freq_2;
  14. reg     [33:0]  cnt_I = 0;  //32位=10+22
  15.    
  16. always @(posedge clk or negedge rst_n) begin
  17.         if(!rst_n)        begin
  18.                 cnt_I <= 0;
  19.         end
  20.         else        begin
  21.             cnt_I <= cnt_I + Freq;
  22.         end
  23. end
  24. assign  addr_I = cnt_I[33:22];  //右移12位,相当于除以2的12次方
  25. ROM        b2v_inst2(   //调用ROM,将右移后的值送入ROM的地址端
  26.         .clka(clk),
  27.         .addra(addr_I),
  28.         .douta(sin));
  29. endmodule
复制代码
其他模块就是围绕功能举行编写
其他模块就是围绕功能举行编写
其他模块就是围绕功能举行编写
关注三连后台获取
2.波形分析

串口吸收到88、55数据后存在fifo里面

按照通讯协议举行实现,将比特0和1映射为对应的频率。

总结

软件:vivado 2023 modelsim
工程文件完满,修改比较方便,方便各人举行课程知识点的学习与计划,加深对于FSK的理解。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表