微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 一种用VHDL语言实现的帧同步算法

一种用VHDL语言实现的帧同步算法

时间:07-01 来源:互联网 点击:
在数字通信网中,为了扩大传输容量,提高信道利用率,常常需要把若干个低速数字信号合并成一个高速数字信号,然后通过高速信道传输,数字复接就是实现这种数字信号合并的专门技术。数字复接把低速数字信号合并为高速信号;相反,在收端,要用分接器把发端数字信号分解为原来的支路数字信号。为保证分接器的帧状态相对于复接器的帧状态能获得并保持相位关系,以便正确地实施分接,在合路数字信号中还必须循环插入帧定位信号,因此在合路数字信号中,也就存在以帧为单位的结构,各个数字时隙的位置可以根据帧定位信号加以识别。因此在数字通信网中,帧同步是同步复接设备中最重要的部分,他包括帧同步码的产生和帧同步码的识别,其中接收端的帧同步识别电路的结构对同步性能的影响是主要的。

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;

(2)在校核态,其VHDL语言描述如下

if(clk'event and clk='1')then
case state is
when s1=>if(reg=syn_code)then //校核态
m:=m+1;
if(m=max_m)then
state:=s2;
m:=O;
end if;
else
state:=s0;
m:=0;
end if;

(3)在同步态,其VHDL语言描述如下:

if(clk'event and clk='1')then
case state is
when s2=>if(reg=syn_code)then //同步态
n:=0;
else
n:=n+1;
if(n=max_n)then
state:=s0;
n:=Os
end if
end if

3 系统仿真

假定同步码为110100,帧长为14,前方保护为2帧,后方保护为3帧,输人数据data为:

010 11010001010100 010 11010001010100 1010001010100 01010101010100 11010001010100 10000001010100 10000001010100 10000001010100 10

则输出syn的仿真波形如图2所示。

由图2可以看出,系统刚开始时处于搜索态,当系统捕获到同步码时,即进入校核态;当系统连续2次捕获到同步码时,系统进入同步状态。在同步态,系统只有连续3次丢失帧同步码时才确认失步,重新进入搜索态。在具体应用中,可根据实际需要对程序中的同步码、帧长、前后方保护时间进行调整,使系统处于最佳工作状态。


4 结 语

由于VHDL对设计的描述具有相对独立性,因此设计者可以不懂硬件的结构,只需知道设计的目标。这种设计方法集设计、模拟、综合为一体的设计方法,能有效地缩短电路设计周期,减少可能发生的错误,降低了开发成本,在未来现代数字系统中将会起着越来越重要的作用。用VHDL来进行数字系统设计既方便又简单,还具有良好的可移植性和维护性,代表着现代数字系统设计的走向。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top