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

目录

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核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2023/12/21 16:01:10
// Design Name: 
// Module Name: test
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module test();

reg i_clock;
reg i_rst;


initial
begin
i_clock=1'b1;
i_rst=1'b1;

#1000;
i_rst=1'b0;
end

always #5 i_clock=~i_clock;


reg[19:0]cnts;
always@(posedge i_clock or posedge i_rst)
begin 
   if(i_rst)begin //同步复位
      cnts <= 20'd0;
   end 
   else begin 
      if(cnts==151)
      cnts <= 16'd1;
	  else 
      cnts <= cnts + 16'd1;
   end
end 
    

reg[7:0]data1;
always@(posedge i_clock or posedge i_rst)
begin 
   if(i_rst)begin //同步复位
   data1<=8'd0;
   end 
   else begin 
      if(cnts==151)
       data1<=data1 + 8'd1;
	  else 
       data1<=data1;
   end
end 



wire o_t_dat;
TPPM TPPM_u1(  
	.i_clock (i_clock),//100MHz,input
	.i_rst   (i_rst),//input
	.i_din   (data1),    //input [7:0] 
	.o_t_dat (o_t_dat),//output reg 
	.o_t_en  ()//output reg 
    );


wire[7:0]rx_data;
RPPM RPPM_u1(          //ppm解调模块
	
	//时钟和复位
	.i_clock (i_clock),//100MHz,input
	.i_rst   (i_rst),//input
	.i_t_dat (o_t_dat),//input
	//输入的数据和有效信号
	.o_dout  (rx_data),    //output [7:0] 
	.o_en    ()		
	
	//ppm输入信号


    );	
endmodule
00_054m

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

V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值