You are on page 1of 11

指针处理是 SDH 中重要实现部分 r_msa 是指针解释与速率同步 r_msa.

v 文
件是顶层代码。

r_msa 的功能是处理 AU—PTR,以及分解整个 STM-N 帧,即将 AUG 分解为


VC4。
首先,r_msa 对 AUG 进行消间插,将 AUG 分成 N 个 AU-4 结构,然后处理
这 N 个 AU-4 的 AU 指针,若 AU-PTR 的值连续 8 帧为无效指针值或 AU-PTR 连续 8
帧为 NDF,此时 MSA 上相应的 AU-4 产生 AU-LOP 告警,并使输出的相应的通道
上(VC4)输出为全“1”。若 MSA 连续 3 帧检测出 H1、H2、H3 字节全为 1,则认
输入的信号为全“1”信号,此时 MSA 使信号在输出的相应的 VC4 上输出为全
“1”,并产生相应 AU-4 的 AU-AIS 告警。
1.1. r_msa 一级模块外部接口信号定义
表 24 r_msa 一级模块接口定义
信号名 方 描述

rmst_fp I 输入的 AUG 帧头指示信号
rmst_rxd[15:0] I 复用段接收终端输入的 AUG 并行数据
sys_fp I 系统帧头
sysclk I 系统时钟
rxclk_out I 线路恢复的 155MHz 接收时钟
rst I 全局复位
rlpj_n O 第 n 路 AU 指针解释产生的正调整指示信号 n=[0:15]
rlnj_n O 第 n 路 AU 指针解释产生的负调整指示信号 n=[0:15]
rlndf_n O 第 n 路 AU 指针解释产生的 NDF 调整指示信号 n=[0:15]
au_lop_n O 第 n 路 AU 指针丢失告警指示信号 n=[0:15]
au_ais_n O 第 n 路 AU 告警指示信号 n=[0:15]
rtpj_n O 第 n 路速率匹配 FIFO 产生的正调整指示信号 n=[0:15]
rtnj_n O 第 n 路速率匹配 FIFO 产生的负调整指示信号 n=[0:15]
rtdnf_n O 第 n 路速率匹配 FIFO 产生的 NDF 调整指示信号 n=[0:15]
rmsa_j1_n O 第 n 路 VC4 J1 字节位置指示信号 n=[0:15]
rmsa_spe_n O 第 n 路 VC4 净负荷指示信号 n=[0:15]
rmsa_rxd_n [7:0] O 第 n 路 VC4 并行输出数据 n=[0:15]
1.2. r_msa 一级模块设计描述
图 32 r_msa 一级模块功能框图
r_msa 一级模块由消间插 rmsa_split 模块,指针处理模块 rh1h2_x 模块,速率调
整模块 syr_0 组成。
 消间插 rmsa_split 模块
根据输入的帧头信号开始计数,得到各路信号间插使能,根据间插使
能提取对应通路数据即数据使能。
 指针处理模块 rh1h2_x 模块
通过输入的数据和指针使能信号 得到指针的不同指示信号输出到后面
模块。
 速率调整模块 syr
将输入的线路时钟数据转换成系统时钟域。
1.3. rmsa_split 二级模块详细设计
1.3.1. rmsa_split 二级模块功能描述
图 33 rmsa_split 二级模块功能框图
根据输入的帧头信号开始计数,得到各路信号间插使能,根据间插使能提
取对应通路数据和数据使能。
1.3.2. rmsa_split 二级模块接口信号定义
表 25 rmsa_split 二级模块接口定义
信号名 方向 描述
rmst_fp I 输入的 AUG 帧头指示信号
rmst_rxd[15:0] I 复用段接收终端输入的 AUG 并行数据
au_row_cnt[3:0] O 行计数器 0-8
au_line_cnt[8:0] O 列计数器 0-269
h1_slot_n O 第 N 路 H1 时隙指示信号 N=0:15
h2_slot_n O 第 N 路 H2 时隙指示信号 N=0:15
au_en_n O 第 N 路 AU-4 有效数据使能 N=0:15
au_d_n[7:0] O 第 N 路 AU-4 数据 N=0:15
1.3.3. rmsa_split 二级模块内部信号描述
表 26 rmsa_split 二级模块内部信号描述
信号名 类型 描述
split_cnt[2:0] reg 消间插计数器
au_line_cnt[8:0] reg 列计数器
au_row_cnt[3:0] reg 行计数器
1.3.4. rmsa_split 二级模块时序图
图 34 rmsa_split 二级模块时序图
split_cnt 信号说明:
信号名 条件
split_cnt rmst_fp
=0 1
+1 0
au_line_cnt 信号说明:
信号名 条件
au_line_cnt rmst_fp split_cnt au_line_cnt
=9 1 X X
=0 NULL 7 269
+1 NULL 7 NULL
au_row_cnt 信号说明:
信号名 条件
au_row_cnt rmst_fp split_cnt au_line_cnt au_row_cnt
=0 1 0 0 0
=0 0 7 269 8
+1 NULL 7 269 NULL
条件
信号名
split_cnt au_line_cnt au_row_cnt
h1_slot_0 0 0 3
h1_slot_1 1 0 3
h1_slot_2 2 0 3
h1_slot_3 3 0 3
h1_slot_4 4 0 3
h1_slot_5 5 0 3
h1_slot_6 6 0 3
h1_slot_7 7 0 3
h2_slot_0 0 3 3
h2_slot_1 1 3 3
h2_slot_2 2 3 3
h2_slot_3 3 3 3
h2_slot_4 4 3 3
h2_slot_5 5 3 3
h2_slot_6 6 3 3
h2_slot_7 7 3 3
au_en_0 0 >=9 X
0 X 3
au_en_1 1 >=9 X
1 X 3
au_en_2 2 >=9 X
2 X 3
au_en_3 3 >=9 X
3 X 3
au_en_4 4 >=9 X
4 X 3
au_en_5 5 >=9 X
5 X 3
au_en_6 6 >=9 X
6 X 3
au_en_7 7 >=9 X
7 X 3
1.4. rh1h2 二级模块详细设计
1.4.1. rh1h2 二级模块功能描述

图 35 rh1h2 二级模块功能框图
根据输入信号处理指针信号,同时产生告警指示。
1.4.2. rh1h2 二级模块接口信号定义
表 27 rh1h2 二级模块接口定义
信号名 方向 描述
au_row_cnt[3:0] I 行计数器 0-8
au_line_cnt[8:0] I 列计数器 0-269
h1_slot_n I 第 N 路 H1 时隙指示信号 N=0:15
h2_slot_n I 第 N 路 H2 时隙指示信号 N=0:15
au_en_n I 第 N 路 AU-4 有效数据使能 N=0:15
au_d_n[7:0] I 第 N 路 AU-4 数据 N=0:15
rlpj_n O 第 n 路 AU 指针解释产生的正调整指示信号 n=[0:15]
rlnj_n O 第 n 路 AU 指针解释产生的负调整指示信号 n=[0:15]
rlndf_n O 第 n 路 AU 指针解释产生的 NDF 调整指示信号 n=[0:15]
au_lop_n O 第 n 路 AU 指针丢失告警指示信号 n=[0:15]
au_ais_n O 第 n 路 AU 告警指示信号 n=[0:15]
c1j1_n O C1J1 位置指示信号
spe_n O 有效数据区间指示信号
1.4.3. rh1h2 二级模块内部信号描述
表 28 rh1h2 二级模块内部信号描述
信号名 类型 描述
au_ptr[15:0] reg 当前帧指针寄存器
point_data_en reg 当前帧指针寄存器使能
h1h2_one reg 当前指针值全 1 指示
ndf reg 当前指针值 au_ptr [15:12]bits 多数同 1001
offset_in_range reg 当前指针值在正常区间
ss reg AU-4指示
point_large_change reg 当前指针值与上一帧指针值不同指示
point_reg[15:0] reg 上一帧指针寄存器
inc_num reg 当前指针与上一指针值对应bits异或后1的个数
dec_num reg 当前指针与上一指针值对应bits异或后1的个数
point_reg reg 指针使能延时
ndf_enalbe reg NDF有效
inc_ind reg 指针正调整
dec_ind reg 指针负调整
norm0 reg 前1帧指针状态
norm1 reg 前2帧指针状态
pointe_jump reg 上一帧指针值比较结果
point_cur_stu wire 当前指针状态
1.4.4. AU_PTR 状态机描述
1、au_ptr 状态机简要描述
根据指针内容取得不同指示信号,通过指示信号实现指针同步处理
2、状态名:current_state、next_state
3、状态描述
表 29 s_decode 状态机状态描述
状态名 描述
AU_AIS AIS 状态
AU_NORM 正常工作状态
AU_LOP 帧丢失状态
4、状态迁移图

图 36au_ptr 状态迁移图
5. 状态迁移描述
表 30 au_ptr 状态机状态迁移描述
当前状态 跳转条件 下一状态
AU_AIS ndf_enable|3xnorm_point AU_NORM
8xinv_point AU_LOP
AU_NORM 3xais_ind AU_AIS
3xinv_point |8xndf_enable AU_LOP
AU_LOP 3xnorm_point AU_NORM
3xais_ind AU_AIS
1.4.5. rh1h2 二级模块时序图 0ns 100ns 200ns 300ns

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

rxout _clk

au_d_n[7: 0] H1 H2

h1_slot _n

h2_slot _n

au_ptr[ 15: 0] xxxx xxh1 h1h2

point _dat a_en

h1h2_one

ndf

offset _in_range

ss

point_large_change

point_reg[ 15:0] point 0 point1

inc_num inc-num

dec_num dec-num

point_cur_st u

point_reg

pointe_jump

norm0

norm1

ndf_enalbe

inc_ind

dec_ind

point_enable

inv_point _cnt num_x0

ndf_cnt num_x1

ais_cnt num_x2

图 37rh1h2 二级模块时序图
au_ptr 信号:
信号名 条件
au_ptr h1_slot h2_slot
{ au_d ,au_ptr[7:0] } 1 X
{ au_ptr[15:8],au_d X 1
}
point_data_en 信号:
信号名 条件
point_data_en h2_slot
1 1
h1h2_one 信号:
信号名 条件
h1h2_one point_data_en
= & au_ptr 1
ndf 信号:
信号名 条件
ndf point_data_en
= (au_ptr[15]^0+ au_ptr[14]^1+ au_ptr[13]^1+ au_ptr[12]^0)>2 1
offset_in_range 信号:
信号名 条件
offset_in_range point_data_en
= au_ptr[9:0] <783 1
ss 信号:
信号名 条件
ss point_data_en
= au_ptr[11:10]==10 1
point_large_change 信号:
信号名 条件
point_large_change point_data_en
= point_reg[9:0] != au_ptr[9:0] 1
point_reg 信号:
信号名 条件
point_reg point_data_en
= au_ptr 1
inc_num 信号:
信号名 条件
inc_num point_data_en
=au_ptr[9]^point_reg[9]+au_ptr[7]^point_reg[7]+au_ptr[5]^point_reg[5]+ 1
au_ptr[3]^point_reg[3]+au_ptr[1]^point_reg[1]
dec_num 信号:
信号名 条件
dec_num point_data_en
=au_ptr[8]^point_reg[8]+au_ptr[6]^point_reg[6]+ au_ptr[4] 1
^point_reg[4]+au_ptr[2]^point_reg[2]+ au_ptr[0]^point_reg[0]
point_reg 信号:
信号名 条件
point_reg point_data_en
=1 1
ndf_enalbe 信号:
信号名 条件
ndf_enalbe point_reg ss ndf offset_in_range
=1 1 1 1 1
inc_ind 信号:
信号名 条件
inc_ind current_state ss ndf inc_num dec_num no_justify_3 point_reg
=1 AU_NORM 1 0 >2 <3 1 1
dec_ind 信号:
信号名 条件
dec_ind current_state ss ndf inc_num dec_num no_justify_3 point_reg
=1 AU_NORM 1 0 <3 >2 1 1
point_enable 信号:
信号名 条件
point_enable point_data_en
=1 1
inv_point_cnt 信号:
信号名 条件
inv_poi point_ point_large_change ndf_enable inc_ind dec_ind offset_in_range
nt_cnt enalbe
+1 1 1 0 X
+1 1 X 1 X X 0
ndf_cnt 信号:
信号名 条件
ndf_cnt point_enalbe ndf_enalbe
+1 1 1
=0 1 0
ais_cnt 信号:
信号名 条件
ais_cnt point_enalbe h1h2_one
+1 1 1
=0 1 0
norm0 信号:
信号名 条件
norm0 point_reg
Ss& offset_in_range&! Ndf&! h1h2_one 1
norm1 信号:
信号名 条件
norm1 point_reg
= norm0 1
pointe_jump 信号:
信号名 条件
pointe_jump point_reg
= point_large_change 1

3xnorm_point 信号:
信号名 条件
3xnorm_poi point point_cur norm norm pointe_ju point_large_chang
nt _reg _stu 0 1 mp e
=1 1 1 1 1 0 0

图 38 rh1h2 二级模块时序图
时序说明:本模块主要功能用于产生 c1j1 和 spe 信号,当有负调整的情况
下在 au_line_cnt==6&au_row_cnt==3 时将 spe 信号置 1,au_line_cnt==269 时清
零,当有正调整情况下 au_line_cnt==12&au_row_cnt==3 时将 spe 信号置
1,au_line_cnt==269 时清零,当有 NDF 时先根据 NDF 指针值和 num_au 信号得
到一个 NDF 数据有效信号 ndf_valid 同时将 spe 信号置高(au_line_cnt==269 时清
零),ndf_valid 由 NDF 信号清零,或者 ndf_valid& au_line_cnt==9 使 spe 有效。
c1j1 根据计算得到的指针值和 num_au 相比较得到,如果当前 au_ptr 是 782
同时 dec_ind 有效则 c1j1 取 au_line_cnt==6&au_row_cnt==3。
1.5. syr_n 二级模块详细设计
1.5.1. syr_n 二级模块功能描述

图 39syr_n 二级模块结构框图
本模块用于速率调整从线路时钟域到系统时钟域的转换
1.5.2. syr_n 二级模块接口信号定义
表 31 syr_n 一级模块接口定义
信号名 方向 描述
rxclk_out I 线路时钟
sysclk I 系统时钟
c1j1_n I 从 AU-4 取得的 vc4 帧头信号
spe_n I Au-4 中 VC4 净负荷指示
sys_fp I 系统帧头
au_en_n I AU 数据使能
au_d_n[7:0] I AU 数据
rtpj_0 O 速率匹配 FIFO 产生的正调整指示信号
rtnj_0 O 速率匹配 FIFO 产生的负调整指示信号
rtndf_0 O 速率匹配 FIFO 产生的 NDF 调整指示信号
rmsa_c1j1_n O VC4 J1 字节位置指示信号
rmsa_spe_n O VC4 净负荷指示信号
rmsa_rxd_n[7:0] O VC4 并行输出数据
1.5.3. syr_n 二级模块时序图
0ns 100ns 200ns 300ns

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

rxclk_out

c1j1_n

spe_n

au_d_n[7:0] d0 d1 dn

rdusedw[4:0] 1 2 n 28

rd_per

sys_fp

fifo_rd

word_cnt[8:0] 0 1 9 ..........

row_cnt3:0[] 0

clk_cnt[2:0] 0 7 0 7 0 7 0 7 0 7

rtpj_0

rtnj_0

rtndf_0

rmsa_rxd_n[7:0] d0 d1

rmsa_c1j1_n

sysclk

rmsa_spe_n

图 40syr_n 二级模块时序图
时序说明:系统时钟根据输入帧头 FP 生成 SDH 帧格式,获取数据和指针时隙信
号。输入数据在线路测时钟和数据使能有效下将数据和 J1 信号一并写于 FIFO 中,
FIFO 大小设置为 32*9,当 FIFO 中有 16 个数据时才允许开始读取数据;当数据
大于等于 16+9+3 时输出负调整指示信号,当数据小于 16-9-3 时输出正调整信号.
本次不产生 NDF 信号如果数据超过一定范围数据以 6*8 为单位操作丢掉 3*8 个.
不能丢掉 CIJI。NDF 同时通过输入的 CIJI 判断得到各指示值。

You might also like