其次,须了解:(1)同步信号为单个码元‘1’(即4个脉冲进行同步), (2)结束信号:脉冲全无。
再次,原理(原理基于脉冲检测法):
1、同步:检测四个脉冲上升沿之后开始同步,若下一个到来的码为‘1’,则同步头中4个脉冲后的下一个脉冲到来的所需时间在(118*4,118*6)个时钟周期范围内(这个范围其实可以更大),若下一个到来的码为‘0’,则同步头中4个脉冲后的下一个脉冲到来的所需时间在(118*(4+4),118*(6+4))个时钟周期范围内(这个范围也可以更大);
2、结束:计时检测脉冲,若在计时的某118*8个时钟周期内没有2个以上脉冲,则无信息,中断通信。 3、解码:若前一个码元为“1”,则若下一个到来的码为‘1’,则前一个码元的4个脉冲后的下一个脉冲到来的所需时间在(118*4,118*6)个时钟周期范围内(这个范围其实可以更大),若下一个到来的码为‘0’,则前一个码元的4个脉冲后的下一个脉冲到来的所需时间在(118*(4+4),118*(6+4))个时钟周期范围内(这个范围也可以更大)。
若前一个码元为“0”,则若下一个到来的码为‘0’,则前一个码元的4个脉冲后的下一个脉冲到来的所需时间在(118*4,118*6)个时钟周期范围内(这个范围其实可以更大),若下一个到来的码为‘1’,则前一个码元的4个脉冲后的下一个脉冲到来的所需时间在(54,125)个时钟周期范围内(这个范围也可以更大)。
代码如下:
module Manchster_Decoder_png(
clk,
rst,
signal_rv,
demo_db,
decoder_64fc_ena,
wr_en,
start_1,
end_all
);
input clk;
input rst;
input signal_rv;
input decoder_64fc_ena;
output[8:0] demo_db;
output wr_en;
output start_1;
output end_all;
//---
//---------------------------------------------
reg [8:0] demo_db=0;
//-----------------------posedge check--------------
//cnt_pos
reg rv_1;
reg rv_2;
always @(posedge clk or negedge rst)
if(!rst)
begin