《M序列扩频编码程序Verilog代码设计实现》


第二节:扩频编码

内容:

1. 理解直扩频的方式;

2. 设计基于m序列扩频编码程序;

2.1直扩频DSSS

所谓的直扩本质上就是将2个信号叠加,将原始信号(窄带信号)和载波信号(带宽缴款的信号)叠加,获得新的信号(带宽展宽)。

如果信号用序列表示的化,扩频可以表示位如下的公式:

forum.jpg

序列数


forum.jpg

频道扩展S信道

2.2信道编码ECC

设计采用分组码的编码方式,并且采用汉明码,汉明码叫做HMM(7-4)码,具体定义如下:

forum.jpg

HMM7-4

2.3数据结构

通信数据在传输的时候以一定的数据单位进行传输,数据单位对应就是我们的数据结构,常见的数据结构有包和帧,以包为例,数据结构定义如下:

forum.jpg

数据结构定义

2.4扩频编码经典案例

forum.jpg

扩频编码

2.4.1程序设计

1. m_seq_gen以及dss_tz_code设计实现:

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

m_seq_gen

默认N=5,采用5阶,任何一组m序列

m_seq_gen

PCML默认K=3,量化精度默认为3

assign tz = s_seq ^ m_seq;

always @(*)

if(flag_s_seq && flag_m_seq )

if(tz )

3’b001;//+1

else

3’b111;//-1

else

3’b000;//-1

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

1. s_seq_gen设计实现

①通信同步:

任何通信都需要同步,采用一种同步机制使得通信双方保持数据的一致性,在这里采用一种握手方式同步。

②包定义:

设计采用包作为通信的数据结构,一个包包含默认512比特的信息,采用并且采用汉明码,包和包之间附加一个分隔符:

7bit分隔符:512比特信息 + 384监督位

forum.jpg

设计架构

flag_s_seq<=1;

s_seq<= info;

always @(poeddge clk_c)

case(cnt)

0:D3<=info;

1:D4<=info;

2: D5<=info;

3: D6<=info;

endcase

if(cnt==2)

info_rdy<=0;

///////////////////////////////////////////////////////////////////////////////////////////////////////////

flag_s_seq<=1;

always @(poeddge clk_c)

case(cnt)

0: s_seq <=D0;

1: s_seq <=D1;

2: D s_seq <=D2;

endcase

if( cnt ==2)

if(hmm_cnt ==127)

hmm_cnt <=0;

else

hmm_cnt <= hmm_cnt+1;

if(cnt==1)

if(hmm_cnt!=127)

info_rdy<=1;

else

info_rdy<=0;