当前位置:   article > 正文

m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件_可见光通信中的2ask调制解调技术与fpga实现

可见光通信中的2ask调制解调技术与fpga实现

目录

1.算法仿真效果

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

3.Verilog核心程序

4.完整算法代码文件


1.算法仿真效果


本系统Vivado2019.2平台开发,测试结果如下:

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

      2ASK调制解调是一种数字调制解调技术,它是基于ASK调制的一种数字调制方式。ASK调制是一种模拟调制方式,它是通过改变载波的振幅来传输数字信号。而2ASK调制解调则是将数字信号转换为二进制码,再通过改变载波的振幅来传输数字信号。 2ASK调制的原理是将数字信号转换为二进制码,然后将二进制码与载波信号相乘,得到调制信号。在解调时,将接收到的信号与载波信号相乘,再通过低通滤波器滤波,得到原始的数字信号。

        2ASK是一种数字调制方式,其中“2”代表二进制,即调制信号只有两个幅度水平。在2ASK调制中,数字基带信号控制载波的幅度。当发送二进制“1”时,发送全幅度载波;当发送二进制“0”时,不发送信号,即无载波输出。因此,2ASK信号可以看作是基带脉冲序列与一个全幅度正弦波的乘积。2ASK的调制解调系统结构如下图所示:

        假设我们的输入二进制序列为an,那么2ASK的调制过程可以用以下数学公式表示:

        e2ASK(t) = Σan g(t - nTs) cos(ωct)

        其中,g(t)是基带脉冲形状,Ts是基带脉冲间隔,ωc是载波的角频率。解调过程则是对接收到的信号进行包络检波,恢复出原始的二进制序列。

在FPGA上实现2ASK调制解调系统主要分为以下几个步骤:

  1. 系统设计:首先,我们需要根据2ASK调制解调的原理设计出系统的整体架构,包括调制器、信道模拟器和解调器等主要部分。
  2. Verilog编码:然后,我们使用Verilog硬件描述语言对系统各个部分进行编码。例如,我们可以创建一个调制器模块,它接收二进制输入,根据2ASK调制原理生成相应的调制信号。同样,我们也需要创建一个解调器模块,它接收调制信号,通过包络检波恢复出原始的二进制序列。
  3. 仿真测试:编码完成后,我们需要通过仿真测试验证我们的设计是否正确。我们可以使用一些测试工具,如ModelSim,对我们的设计进行仿真。通过观察仿真结果,我们可以检查我们的设计是否满足预期。
  4. FPGA实现:最后,我们将通过仿真测试的设计下载到FPGA上进行实现。这通常需要使用特定的FPGA开发工具,如Xilinx Vivado。在这个步骤中,我们需要考虑FPGA的资源限制和性能优化等问题。

       在FPGA实现过程中,需要注意的是,由于FPGA是硬件实现,所以设计需要考虑实时性和并行性。此外,对于调制和解调过程中的一些非线性操作,可能需要利用FPGA的查找表(LUT)等资源进行优化。


3.Verilog核心程序

  1. `timescale 1ns / 1ps
  2. //
  3. //
  4. module test_ASK2;
  5. reg i_clk;
  6. reg i_rst;
  7. reg[0:0]i_bits;
  8. wire signed[15:0]o_2ask;
  9. wire signed[31:0]o_de_2askf;
  10. wire [0:0]o_bits;
  11. ASK2 uut(
  12. .i_clk(i_clk),
  13. .i_rst(i_rst),
  14. .i_bits(i_bits),
  15. .o_2ask(o_2ask),
  16. .o_de_2ask(),
  17. .o_de_2askf(o_de_2askf),
  18. .o_bits(o_bits)
  19. );
  20. initial
  21. begin
  22. i_clk = 1'b1;
  23. i_rst = 1'b1;
  24. #1000
  25. i_rst = 1'b0;
  26. end
  27. initial
  28. begin
  29. i_bits= 1'b0;
  30. #1024
  31. i_bits= 1'b1;
  32. #256
  33. i_bits= 1'b0;
  34. #512
  35. i_bits= 1'b1;
  36. #512
  37. i_bits= 1'b1;
  38. #512
  39. i_bits= 1'b1;
  40. #1024
  41. i_bits= 1'b0;
  42. #512
  43. i_bits= 1'b0;
  44. #256
  45. i_bits= 1'b1;
  46. #128
  47. i_bits= 1'b1;
  48. #128
  49. i_bits= 1'b0;
  50. repeat(100)
  51. begin
  52. #256
  53. i_bits= 1'b0;
  54. #2048
  55. i_bits= 1'b1;
  56. #2048
  57. i_bits= 1'b0;
  58. #2048
  59. i_bits= 1'b1;
  60. #2048
  61. i_bits= 1'b1;
  62. #2048
  63. i_bits= 1'b0;
  64. #1024
  65. i_bits= 1'b1;
  66. #1024
  67. i_bits= 1'b0;
  68. #1024
  69. i_bits= 1'b1;
  70. #512
  71. i_bits= 1'b1;
  72. #512
  73. i_bits= 1'b0;
  74. #512
  75. i_bits= 1'b1;
  76. #256
  77. i_bits= 1'b1;
  78. #256
  79. i_bits= 1'b0;
  80. #512
  81. i_bits= 1'b1;
  82. #256
  83. i_bits= 1'b0;
  84. #128
  85. i_bits= 1'b0;
  86. #128
  87. i_bits= 1'b0;
  88. #128
  89. i_bits= 1'b1;
  90. #1024
  91. i_bits= 1'b0;
  92. #512
  93. i_bits= 1'b0;
  94. #128
  95. i_bits= 1'b1;
  96. #256
  97. i_bits= 1'b1;
  98. #128
  99. i_bits= 1'b1;
  100. #256
  101. i_bits= 1'b0;
  102. end
  103. end
  104. always #1 i_clk=~i_clk;
  105. endmodule
  106. 00_049m


4.完整算法代码文件


V

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

闽ICP备14008679号