PPM即Pulse Position Modulation(脉冲位置调制),利用脉冲的相对位置来传递信息的一种调制方式。在这种调制方式中,数据能够高速的传递。本文就来详细介绍一下PPM解码器。
1、PPM的功能描述
输入信号
clk,时钟周期为0.59us
rst,异步复位信号,低电平有效
din,输入的PPM编码后的数据
输出信号
[7:0] dout,PPM解码后的8位数据
d_en,输出数据有效标志,高电平有效,持续一个时钟周期
f_en,帧头检测有效标志,高电平有效,持续一个时钟周期
PPM数据编码格式.png
PPM数据帧格式.png
2、PPM的功能分析
计数器用来控制时序,移位寄存器用来暂存数据,状态机用来进行状态转换。
2.1计数器
时钟的周期是0.59us,而输入的每一位数据宽度为9.44us=0.59us※16,解码2bit的数据需要的时间为75.52us=0.59us※128,解码一个完整的8位数据,需要302.08us=75.52us※4。基于以上分析,我们可以设置3个计数器来控制数据的采样。
count0,0~15,每16个时钟周期采一位din信号。
count1,0~7,解码2bit需要采到8位din信号。
count2,0~3,完成一个完整的8位信号,需要解码2bit数据4次。
计数器count0.png
计数器count1.png
计数器count2.png
2.2移位寄存器
我们要对输入数据的8位数据进行判读,就要求我们对数据进行暂存。这里我们采用移位寄存器对输入数据进行暂存。与此同时,输出的8bit数据是2bit数据输出累加到8bit,所以我们也需要移位寄存器对输出数据进行暂存。
[7:0] reg1,对输入的数据进行移位操作,{reg1[6:0],din}。
[7:0] reg2,对输出的数据进行暂存,等待8bit移满,就进行数据的输出,{2'b11,reg2[7:2]},{2'b00,reg2[7:2]},{2'b10,reg2[7:2]},{2'b01,reg2[7:2]}。
移位寄存器reg1.png
移位寄存器reg2.png
2.3状态机
在传送数据的时候,主要有两个状态。要么是收到帧头解码数据,要么是没有收到帧头不进行解码。
S0,表示没有收到帧头,处于未工作状态。
S1,表示收到帧头,开始进行解码。
状态转移图.png
注:以上电路图和状态转移图的判断条件有所简化。
具体代码如下:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。