首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于VHDL帧同步算法设计-1

基于VHDL帧同步算法设计-1

    数字通信网中,帧同步是同步复接设备中最重要的部分,他包括帧同步码的产生和帧同步码的识别,其中接收端的帧同步识别电路的结构对同步性能的影响是主要的。



1 工作原理



实现帧同步的基本方法是在发送端预先规定的时隙,即帧同步码时隙,插入一组特殊码型的帧同步码组。在接收端利用同步码的自相关性确定帧的同步位置。帧同步码组可以是集中插入的,也可以是分散插入的。对于分散的帧同步码插入方式,其工作原理与集中插入方式相类似,下面就以集中插入帧同步码为例来说明帧同步的工作原理。



帧同步过程有搜索态、校核态和同步态。其状态转换图如图1所示。
















搜索态 在数据接收的起始时刻或帧未同步时,帧同步进入搜索态。在数据流中寻找帧同步码(111lOlOOOO);当数据流与帧同步码相同时,表明已搜索到一个同步帧头;可启动进入帧同步的校核状态。



校核态 为了防止信号中出现虚假同步;找到第1组同步码后跳过1帧长度必须再次确认帧同步码。若连续经过M帧同步码确认均同步正确,则系统立即转入同步状态;否则存在假同步;返回搜索态。由首次搜索到帧同步头到进入同步态的M帧时叫后方保护时间。



同步态 帧同步处于同步状态时;若连续N帧帧同步正确则仍保持在同步状态。考虑到接收的数据流帧同步码可能受外界干扰而存在误码,在同步状态中只有连续N帧丢失同步码才进入失步状态,并返回搜索态。其中N帧时叫前方保护时间。由于有前方保护时间,在接收过程中虽然出现某帧同步码误码,但系统并不会立即进入失步状态。由此可减少因误码而进入失步状态的可能性。



2 帧同步实现



我们VHDL语言实现了帧同步的设计,设计程序如下:



首先对相关参数进行定义:



Type State_type Is (S0,S1,S2);

//系统状态(搜索态、校核态、同步态)

Constant Syn_code:bit_vector:=〞110100〞; //帧同步码

Constant Syn_code_length:integer:=6; //帧同步码长度

Constant Max_m:integer:=2; //前方保护帧数

Constant Max_n:integer:=3; //后方保护帧数

Variable M:integer Range 0 To Max_m:=0;

//连续获取同步码数

Variable N:integer Range 0 To Max_n:=0;

//连续丢失同步码数

Variable Reg:bit_vector(Syn_code_length Downto 1);

//移位寄存器

Variable State:state_type:=S0; //初始状态



其次,把接收到的数据送人移位寄存器,并对送人的数据同步码检测。当系统处于不同状态时,其状态转换如下:



(1)在搜索态,其VHDL语言描述如下:



If(Clk"Event And Clk=''1'')Then

Case State Is

When So=>If(Reg=Syn_code)Then //搜索态

State:=Sl;

M:=1,

Else

M:=0;

End If;
返回列表