当前位置:   article > 正文

m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench_fpga ppm调制

fpga ppm调制

目录

1.算法仿真效果

2.算法涉及理论知识概要

2.1 PPM调制解调原理

2.2 基于FPGA的PPM系统实现

3.Verilog核心程序

4.完整算法代码文件获得


1.算法仿真效果

vivado2019.2仿真结果如下:

2.算法涉及理论知识概要

         基于FPGA的PPM(脉冲位置调制)光学脉位调制解调系统是一个复杂的电子与光电子相结合的通信系统。

2.1 PPM调制解调原理

       脉冲相位调制(PPM)最早由Pierce提出并应用于空间通信,是利用脉冲的相对位置来传递信息的一种调制方式。在光通信中,这种调制方式可以以最小的光平均功率达到最高的数据传输速率。PPM的优点在于:它仅需根据数据符号控制脉冲位置,不需要进行极性和脉冲幅度的控制,便于以较低的复杂度实现调制与解调,PPM特别适用于室内计算机红外线通信和对潜通信等要求低平均功率传输信息的场合。PPM信号调制广泛应用于超宽带移动通信、光通信等现代通信前沿技术领域。PPM信号的调制和接收对通信系统的性能起很大作用。

       在PPM中,一个时间窗口被分成等长的N个时隙,脉冲可以在其中的任何一个时隙内出现。假设一个PPM符号的持续时间为(T),并且被分为(N)个等长的时隙,每个时隙的持续时间为(T_s),则(T = N \times T_s)。对于一个给定的信息比特序列,我们可以将其映射到一个特定的脉冲位置。例如,对于4-PPM((N=4)),比特序列“00”可以映射到第一个时隙的脉冲,“01”映射到第二个时隙,以此类推。
       PPM解调的目标是从接收到的信号中恢复出原始的脉冲位置,从而还原出传输的信息。相关解调是一种常用的PPM解调方法。其基本原理是将接收到的信号与本地生成的参考信号进行相关运算,通过观察相关峰的位置来判断脉冲的位置。

2.2 基于FPGA的PPM系统实现


基于FPGA的PPM系统通常包括以下几个主要部分:

PPM调制器:根据输入的比特序列生成对应的PPM信号。这通常涉及到查找表(LUT)或算法逻辑来实现比特到脉冲位置的映射。
相关器:在接收端实现相关运算,用于检测PPM信号中的脉冲位置。相关器需要高精度的时序控制和数据处理能力。
同步模块:确保发送和接收端的符号同步,这是准确解调的关键。通常采用帧同步来实现。
数字信号处理(DSP)模块:用于优化信号质量,如滤波器设计、噪声抑制等。

3.Verilog核心程序

  1. `timescale 1ns / 1ps
  2. //
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 2023/12/21 16:01:10
  7. // Design Name:
  8. // Module Name: test
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //
  21. module test();
  22. reg i_clock;
  23. reg i_rst;
  24. initial
  25. begin
  26. i_clock=1'b1;
  27. i_rst=1'b1;
  28. #1000;
  29. i_rst=1'b0;
  30. end
  31. always #5 i_clock=~i_clock;
  32. reg[19:0]cnts;
  33. always@(posedge i_clock or posedge i_rst)
  34. begin
  35. if(i_rst)begin //同步复位
  36. cnts <= 20'd0;
  37. end
  38. else begin
  39. if(cnts==151)
  40. cnts <= 16'd1;
  41. else
  42. cnts <= cnts + 16'd1;
  43. end
  44. end
  45. reg[7:0]data1;
  46. always@(posedge i_clock or posedge i_rst)
  47. begin
  48. if(i_rst)begin //同步复位
  49. data1<=8'd0;
  50. end
  51. else begin
  52. if(cnts==151)
  53. data1<=data1 + 8'd1;
  54. else
  55. data1<=data1;
  56. end
  57. end
  58. wire o_t_dat;
  59. TPPM TPPM_u1(
  60. .i_clock (i_clock),//100MHz,input
  61. .i_rst (i_rst),//input
  62. .i_din (data1), //input [7:0]
  63. .o_t_dat (o_t_dat),//output reg
  64. .o_t_en ()//output reg
  65. );
  66. wire[7:0]rx_data;
  67. RPPM RPPM_u1( //ppm解调模块
  68. //时钟和复位
  69. .i_clock (i_clock),//100MHz,input
  70. .i_rst (i_rst),//input
  71. .i_t_dat (o_t_dat),//input
  72. //输入的数据和有效信号
  73. .o_dout (rx_data), //output [7:0]
  74. .o_en ()
  75. //ppm输入信号
  76. );
  77. endmodule
  78. 00_054m

4.完整算法代码文件获得

V

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/485103
推荐阅读
相关标签
  

闽ICP备14008679号