伽利略卫星
汇总表(主码=Mcps,二次码=bps,电文= symbols/s):=RCL100×LRC。
汇总表(主码=Mcps,二次码=bps,电文= symbols/s):
频段/分量 | 主码速率 RC | 主码长度 L | 主码周期 | 二次码(长度) | 二次码速率 | 二次码周期 | 导航电文速率 RD |
---|---|---|---|---|---|---|---|
E1-B(数据) | 1.023 | 4092 | 4 ms | — | — | — | 250 |
E1-C(导频) | 1.023 | 4092 | 4 ms | CS25(25) | 250 | 100 ms | |
E5a-I(数据) | 10.230 | 10230 | 1 ms | CS20(20) | 1000 | 20 ms | 50 |
E5a-Q(导频) | 10.230 | 10230 | 1 ms | CS100(100) | 1000 | 100 ms | — |
E5b-I(数据) | 10.230 | 10230 | 1 ms | CS4(4) | 1000 | 4 ms | 250 |
E5b-Q(导频) | 10.230 | 10230 | 1 ms | CS100(100) | 1000 | 100 ms | — |
E6-B(数据) | 5.115 | — | — | — | — | — | 1000 |
E6-C(导频) | 5.115 | — | — | CS100(100) | =RC/L=RC/L=RC/L(L 未公开) | 100×(L/RC)100×(L/RC)100×(L/RC) | — |
- 为何 E5a-I/E5b-I 也有二次码? ICD 的 Table 14 明确给出:E5a-I 的二次码长度为 20,E5b-I 的二次码长度为 4;对应的分级码周期分别为 20 ms 与 4 ms(主码周期 1 ms,二次码速率因此都是 1000 bps)。
- 二次码指派:E5a-I→CS20¹,E5a-Q→CS100¹⁻⁵⁰,E5b-I→CS4¹,E5b-Q→CS100⁵¹⁻¹⁰⁰,E1-C→CS25¹,E6-C→CS100¹⁻⁵⁰。
长度(L / N)、周期(T)、速率(R) 三者关系。
通用关系(记住这几条就够)
-
速率 ↔ 周期:$ R=\frac{1}{T}$, T=1RT=\frac{1}{R}T=R1
-
主码(Primary)
- 码片速率:RCR_CRC(chips/s)
- 码长:LLL(chips)
- 主码周期:Tprimary=LRCT_{\text{primary}}=\frac{L}{R_C}Tprimary=RCL
-
二次码(Secondary,长度 N 位)
- (二次码按“每个主码周期跳 1 位”)
- 二次码速率:Rsec=RCL=1TprimaryR_{\text{sec}}=\frac{R_C}{L}=\frac{1}{T_{\text{primary}}}Rsec=LRC=Tprimary1(bps)
- 二次码周期:Tsec=NRsec=N⋅LRC=N⋅TprimaryT_{\text{sec}}=\frac{N}{R_{\text{sec}}}=N\cdot\frac{L}{R_C}=N\cdot T_{\text{primary}}Tsec=RsecN=N⋅RCL=N⋅Tprimary
-
导航数据(数传路)
- 符号速率:RDR_DRD(symbols/s)
- 符号周期:TD=1RDT_D=\frac{1}{R_D}TD=RD1
- 每符号包含的码片数:DC=RCRD\displaystyle DC=\frac{R_C}{R_D}DC=RDRC(chips/symbol)
快速代入几个你常用的例子
-
E1(主码 4092,RC=1.023R_C=1.023RC=1.023 Mcps)
- Tprimary=40921.023 × 106≈4T_{\text{primary}}=\frac{4092}{1.023\!\times\!10^6}\approx4Tprimary=1.023×1064092≈4 ms
- E1-C 二次码 CS25:Rsec=1.023 × 1064092=250R_{\text{sec}}=\frac{1.023\!\times\!10^6}{4092}=250Rsec=40921.023×106=250 bps;Tsec=25×4 ms=100 msT_{\text{sec}}=25\times4\text{ ms}=100\text{ ms}Tsec=25×4 ms=100 ms
- E1-B 数据 RD=250R_D=250RD=250 sps:TD=4T_D=4TD=4 ms,DC=1.023 × 106250=4092DC=\frac{1.023\!\times\!10^6}{250}=4092DC=2501.023×106=4092
-
E5(主码 10230,RC=10.23R_C=10.23RC=10.23 Mcps)
- Tprimary=1023010.23 × 106=1T_{\text{primary}}=\frac{10230}{10.23\!\times\!10^6}=1Tprimary=10.23×10610230=1 ms
- E5a-I(50 sps):DC=10.23 × 10650=204,600DC=\frac{10.23\!\times\!10^6}{50}=204{,}600DC=5010.23×106=204,600(=20×主码周期)
- E5b-I(250 sps):DC=10.23 × 106250=40,920DC=\frac{10.23\!\times\!10^6}{250}=40{,}920DC=25010.23×106=40,920(=4×主码周期)
- E5a-Q / E5b-Q 二次码(CS20/CS4):Rsec=1000R_{\text{sec}}=1000Rsec=1000 bps;周期分别 20 ms / 4 ms
-
E6(RC=5.115R_C=5.115RC=5.115 Mcps)
-
E6-B 数据 RD=1000R_D=1000RD=1000 sps:TD=1T_D=1TD=1 ms,DC=5.115 × 1061000=5115DC=\frac{5.115\!\times\!10^6}{1000}=5115DC=10005.115×106=5115
-
E6-C 二次码 CS100:主码长度 LLL 未公开,所以
- Rsec=RCLR_{\text{sec}}=\frac{R_C}{L}Rsec=LRC
- Tprimary=LRCT_{\text{primary}}=\frac{L}{R_C}Tprimary=RCL
- Tsec=100×LRCT_{\text{sec}}=100\times\frac{L}{R_C}Tsec=100×RCL
-
实做时最常用的三个离散式
- 主码索引:code_idx=i mod L\text{code\_idx}=i\bmod Lcode_idx=imodL
- 二次码索引:sec_idx=⌊i/L⌋ mod N\text{sec\_idx}=\big\lfloor i/L\big\rfloor \bmod Nsec_idx=⌊i/L⌋modN
- 数据索引:data_idx=⌊i/DC⌋\text{data\_idx}=\big\lfloor i/DC\big\rfloordata_idx=⌊i/DC⌋
有了这几条,就能从“长度/速率”互推“周期”,并把计数器步进(码片、二次码、数据)对齐到同一芯片时钟下实现。
二次码是按“主码的整周期”为节拍在切换的。主码跑完一圈(L 个芯片)才把二次码推进到下一位;在这一整圈里,二次码保持不变。
用两行公式说清
- 连续时间:二次码索引
k(t)=⌊tTprimary⌋ mod Nsk(t)=\Big\lfloor \dfrac{t}{T_\text{primary}}\Big\rfloor \bmod N_sk(t)=⌊Tprimaryt⌋modNs
其中 Tprimary=L/RCT_\text{primary}=L/R_CTprimary=L/RC(主码周期),NsN_sNs 是二次码长度(位数)。 - 离散芯片时钟:
k[n]=⌊nL⌋ mod Nsk[n]=\Big\lfloor \dfrac{n}{L}\Big\rfloor \bmod N_sk[n]=⌊Ln⌋modNs(n 为芯片计数)
组合:分层码 = 主码 × 二次码
clayer[n]=cprimary(n mod L)×bsecondary (k[n])c_{\text{layer}}[n]=c_{\text{primary}}(n\bmod L)\times b_{\text{secondary}}\!\big(k[n]\big)clayer[n]=cprimary(nmodL)×bsecondary(k[n])
直白举例
- E1-C(导频):RC=1.023R_C=1.023RC=1.023 Mcps,L=4092L=4092L=4092 → 主码周期 Tprimary=4T_\text{primary}=4Tprimary=4 ms;二次码 CS25。
⇒ 二次码在 0–4 ms 用 CS25 的第 0 位,4–8 ms 用第 1 位……到第 24 位后回到第 0 位(总周期 25×4 ms=100 ms)。 - E5a-I(数传):RC=10.23R_C=10.23RC=10.23 Mcps,L=10230L=10230L=10230 → Tprimary=1T_\text{primary}=1Tprimary=1 ms;二次码 CS20。
⇒ 二次码每 1 ms跳一位;20 ms 走完一圈。
(E5a-Q 也是每 1 ms 跳一位,但用 CS100,100 ms 一圈) - E5b-I / E5b-Q:同上,每 1 ms 跳一位;I 用 CS4(4 ms 一圈),Q 用 CS100(100 ms 一圈)。
- E6-C(导频):RC=5.115R_C=5.115RC=5.115 Mcps,但 主码长度 L 未公开,仍按“每 Tprimary=L/RCT_\text{primary}=L/R_CTprimary=L/RC 秒跳一位”;用 CS100(总周期 100×L/RC100\times L/R_C100×L/RC)。
为什么要这样做
- 把整体码周期从“几 ms 的主码”扩展到“几十/上百 ms 的二次码×主码”,降低相关假峰、增强同步鲁棒性。
- 节拍与主码完全对齐,切换只发生在码片边界,不会在一圈内部破坏相关性。
实现怎么写(FPGA/SDR)
// 参数:L=主码长度,Ns=二次码长度
i_chip += 1 // 每个码片+1
code_idx = i_chip % L // 0..L-1
sec_idx = (i_chip / L) % Ns // 每跑完 L 片 → +1
primary = C[code_idx] // 取主码芯片(±1或0/1)
secondary = B[sec_idx] // 取二次码位(±1或0/1)
layer_code = primary * secondary // 无二次码时把 secondary 固定为 +1
和导航数据的关系
数据比特用自己的速率 RDR_DRD 前进:
m[n]=⌊n/DC⌋, DC=RC/RDm[n]=\big\lfloor n/DC\big\rfloor,\;DC=R_C/R_Dm[n]=⌊n/DC⌋,DC=RC/RD。
很多 Galileo 路别让 DC 是 L 的整数倍(比如 E1-B:DC=4092=1×L;E5a-I:DC=204600=20×L;E5b-I:DC=40920=4×L),这样数据边界也与主码/二次码边界对齐,实现更简单、同步更牢靠。
常见坑
- 不能用“固定速率计时器”去推进二次码,要以主码计数器回零为触发;这样不论你实际采样率/码速如何抖动,二次码都与主码严格同相。
- 0/1 与 ±1 的表示要一致:若码仓是 0/1,做异或;若是 ±1,做乘法(0→+1、1→−1 的映射)。
主扩频码(Primary code)到底怎么按 ICD 生成
要点一:两类主码
- LFSR 型 PN 码:由两条 M 序列按同相位 XOR 组合得到(“组合截断”法)。Galileo 的 LFSR 主码就是这样做的。
- 优化(memory)码:直接给出一串已优化的 PN 序列,要存表。E1-B/E1-C 属于这种“memory codes”(十六进制在 Annex C 提供)。
要点二:LFSR 结构与“截断重装载”
- 两个并行移位寄存器:基寄存器1/2,长度 R。每个寄存器有一组反馈抽头 {ai,j}\{a_{i,j}\}{ai,j}。输出主码 = 两条 M 序列的 XOR,两序列无相对移位。
- 为得到所需主码长度 N(如 E5 的 10230 芯片),跑满 N 个芯片后把两个寄存器“重置”为起始值 {si,j}\{s_{i,j}\}{si,j}——这就把无限长 M 序列截断成周期为 N 的主码。
要点三:抽头与起始值的表示(八进制→二进制→向量)
-
ICD 用八进制写反馈抽头与起始值。转换规则:先转成二进制,再从低位到高位编号。
- 反馈抽头向量:位索引 jjj 从 0 开始数到 R,用于 ai,ja_{i,j}ai,j。注意 ai,R=1a_{i,R}=1ai,R=1,ai,0a_{i,0}ai,0 不计入反馈。
- 起始值向量:位索引 jjj 从 1 到 R(和抽头的编号起点不同,这是常见坑)。示例里为了凑满 14 位,最高位补 0。
E5 主码(E5a/E5b)怎么具体生成
-
它们是 LFSR 码,寄存器长度 R=14,各路的**反馈抽头(八进制)**如下(表 15):
- E5a-I:Reg1=40503,Reg2=50661
- E5a-Q:Reg1=40503,Reg2=50661
- E5b-I:Reg1=64021,Reg2=51445
- E5b-Q:Reg1=64021,Reg2=43143
-
基寄存器1的起始值:所有单元都置 1(四路 E5 都一样)。基寄存器2的起始值随“码号/SVID”而变,ICD 在表 16–19 给出(八进制),并附了该主码前 24 个芯片的十六进制校对。
-
实现步骤(伪代码思路)
-
把 Reg1/Reg2 的八进制“抽头”按规则转成二进制抽头向量 a1,j,a2,ja_{1,j},a_{2,j}a1,j,a2,j。
-
Reg1 起始:全 1;Reg2 起始:查表(比如 E5a-I 码号 1 的 Reg2 起始值是 30305(八))。
-
每个芯片时钟:
- 计算 Reg1/Reg2 的反馈位(抽头 XOR);分别右移并将反馈位移入。
- 取两寄存器的输出位(通常取最高位或最低位,按图 10/表 15 的实现口径)做 XOR 得到主码芯片。
-
计满 N=10230 个芯片后,把两个寄存器重装载到起始值(形成“截断”周期)。
-
之后再按“分层码”规则每个主码周期跳一次二次码位(你前面已经掌握)。
-
参考定位:图 10(LFSR 生成器)、图 11(抽头向量示例)、图 12(起始值示例);表 15(E5 抽头)、表 16–19(各路/各码号的 Reg2 起始值)。
E1 主码怎么做
- E1-B / E1-C 主码是优化 memory 码:ICD 直接在 Annex C 给出十六进制序列(50 个成员),你按十六进制装到 ROM/LUT 里顺序读即可。
快速 FAQ
- E5 的寄存器长度 R 是多少? 14,比特位宽在示例里明确到“为凑满 14 位补 0”。
- 为什么要“重置”寄存器? 为把无限长 M 序列“截断”为所需长度 NNN,保证主码周期 = NNN 芯片。
- 二次码怎么叠? 每个主码周期跳 1 位(XOR 或 ±1 乘法),这就是“分层码”。
- SVID / 码号如何对应? 主码按**码号 n(1–36)**分配到 SVID n;二次码分配见表 22(E5a-I→CS20,E5b-I→CS4,E5a-Q/E5b-Q→CS100,E1-C→CS25;E1-B/E6-B N/A)。
LFSR 型 PN 码与优化(memory)码使用场景的区别?
下面这份对比,专讲什么时候用 LFSR 型 PN 码、什么时候用优化(memory)码。
一图流(结论表)
维度 | LFSR 型 PN 码 | 优化(memory)码 |
---|---|---|
生成方式 | 两个(或多个)M 序列按抽头多项式产生并 XOR(可“截断重装载”得到目标长度) | 事先离线优化好的序列,整串存表 |
资源/复杂度 | 几百个门级就能跑(极省 LUT/触发器),几乎不占 RAM | 占 ROM(每条码=长度×1 bit),但运算极简(读表) |
可扩展性 | 改种子/起始值即可生成大量 PRN,长度可很长 | 码数固定;要新增/替换需重新分发码表 |
相关性/谱形 | 由多项式决定;自/互相关与谱形较难全局最优 | 可按目标(低旁瓣、低互相关、特定谱掩模、与他制系统共存)定向优化 |
一致性/复现 | 只要多项式与起始值一致,各家实现一致;无需分发大表 | 需要分发权威码表(ICD/附件);实现时直接照表 |
安全与保密 | 结构型码,可推导;不适合拿“保密/鉴权”做文章 | 可选择不公开码表(如商业/受控服务),便于访问控制 |
典型应用 | 大量 PRN、长码、资源受限的星载/接收机/仿真器 | 需要严格控制互/自相关与频谱,或要与他制系统精确共存 |
在 Galileo 里的用法(你最关心)
- E5a/E5b(四路):主码为 LFSR 组合+截断(寄存器长度 14,码长 10230),导/数传路都叠相应二次码(a-I:CS20,a-Q:CS100,b-I:CS4,b-Q:CS100)。
⇒ 适合逻辑生成(不占 ROM),也可预先展开到 LUT 以简化时序。 - E1-B/E1-C:主码为优化 memory 码(每路 4092 芯片,ICD 附录给十六进制)。
⇒ 直接装 ROM 表最省事,能保证跨厂一致的相关/谱形表现。 - E6-B/E6-C:主码不公开(受控/商业服务),C 路叠 CS100 二次码。
⇒ 做物理层模拟可用“占位长伪码”+正确速率/功分;要闭环跟踪需授权码表。
你该怎么选(发射模拟机角度)
-
目标是标准一致性/快速落地:
- E1:直接读 Annex C 十六进制主码表(memory 码)→ 码 ×(CS25:仅 C 路)× 调制;
- E5:用 LFSR 方案(或离线一次性展开后烧 ROM),再做 AltBOC 组合;
- E6:若无授权主码,用长伪码占位 + CS100(C 路)+ 50/50 功分,满足频谱/结构一致性。
-
资源很紧(FPGA/ASIC):优先选 LFSR 在线生成(E5 天然合适;E1 也可把内存码预展成短循环段或外接串行 ROM)。
-
要可控的相关/谱特性(与 GPS/北斗共存、抗假峰):优先选 memory 码(这也是 E1 选 memory 码的工程动机之一)。
小贴士
- 无论哪类主码,二次码都是“每个主码周期跳 1 位”;二次码速率 = RC/LR_C/LRC/L。
- 做仿真/发射时,统一用 ±1 表示(0→+1,1→−1),主码×二次码×数据一路乘法最干净。
- 只要你的节拍(主码、二次码、数据)对齐,memory 与 LFSR 在空口不可区分;区别只是实现路径与管理方式。
表 16–19中,Start Value 与Initial Sequenc的含义
这两个列名在表 16–19(E5a-I / E5a-Q / E5b-I / E5b-Q 的 LFSR 主码配置表)里含义不一样,作用也不同:
一句话区分
- Start Value:给基寄存器 2(base register 2)的起始装载值(八进制表示)。每跑满 N=10230 个芯片后也要用它重新装载,实现“截断到 N”的主码周期。基寄存器 1 的起始值固定为全 1(所有码相同),所以表里只列寄存器 2。
- Initial Sequence:该主码从 芯片 0 开始的前 24 个芯片,按 Annex C 的“十六进制编码约定”压成 6 个十六进制字符,用来校验你生成器的极性/位序是否正确(相当于一个“黄金前缀”对照值)。
为什么这样设计
- 同一分量的多条 PRN(例如 E5a-I 的 50 条),其反馈多项式相同,靠**Start Value(寄存器2不同)**来区分各条码;
- Initial Sequence给你一个快速自测:把两条 LFSR 按表中多项式与起始值跑起来,主码输出(寄存器1 XOR 寄存器2)从第 0 片开始取 24 片,按 Annex C 的规则(左→右=早→晚;每个 hex=4 芯片;末组不足补 0)转成 hex,应当等于表格里的 Initial Sequence。不一致通常是**位序(MSB/LSB)或极性(0/1↔±1 映射)**弄反了。
实现小抄(你在 HDL/脚本里要注意)
- 寄存器长度 R=14;两个寄存器同相位输出 XOR 得到主码。
- Start Value(八进制)→ 二进制时要按 ICD 的位编号规则展开;寄存器 1 初值=全 1,寄存器 2 初值=表中 Start Value。
- 截断重装载:计满 10230 片后,把两个寄存器装回各自起始值(保证主码周期=10230)。
- 生成正确后,用 **Initial Sequence(24 芯片)**做一次“冒烟测试”,再进入二次码叠加与 AltBOC 组合。
“Initial Sequence”那一列到底是在验证什么、怎么用
下面把它讲透+给你一套可直接照做的校验流程。
它到底是什么
Initial Sequence = 该主码从时间起点(第 0 片)开始的前 24 个码片,用 Annex C 的“4 片→1 个十六进制”的规则压缩成 6 个十六进制符号。
作用:给工程实现做“冒烟测试”。你按表的抽头与起始值把 LFSR 生成器跑起来后,取输出的前 24 个逻辑码片(0/1 表示),按 4 位一组转成 6 个 hex,必须与表中这列一模一样;否则就是你的实现哪里(位序、极性、输出 tap、移位方向或重装载时机)搞错了。
注意:这 24 片只是“正确性指纹”,不是二次码,也不是另一个参数。
它与 “Start Value”的关系
- Start Value(八进制):给 基寄存器2 的起始装载值(基寄存器1固定全 1)。不同 PRN 的区别就靠它。
- Initial Sequence:是由“抽头 + 基寄存器1全1 + 该 PRN 的 Start Value”运行 LFSR后“自然产生”的前 24 片的十六进制表示,用来让你对拍。
Annex C 的“4片→1 hex”规则(你转换时要严格遵守)
- 1 个十六进制符号 = 时间上相邻的4 个码片(左→右 = 早→晚)。
- 组内位权:左边那片是最高位(MSB),右边那片是最低位(LSB)。
- 码片是逻辑 0/1(不是 ±1)。
- 例:
[1 0 1 1]
→ 二进制1011
→ 十六进制 B。 - 10230 这种长度不是 4 的整数倍时,只有最后一组才补 0(但 Initial Sequence 只取前 24 片,不涉及补 0)。
一步步怎么用它来“验码”(强烈建议照这个流程跑一次)
-
装载起始值
- Reg1(基寄存器1):14 位全 1。
- Reg2(基寄存器2):用该 PRN 在表 16/17/18/19 的 **Start Value(八进制)**展开成 14 位二进制后装载。
-
按抽头反馈运行两条 LFSR(图 10 的结构;两条序列无相对移位)。
-
主码输出定义:每个码片时刻输出
c[i]=out_reg1[i]⊕out_reg2[i] c[i] = \text{out\_reg1}[i] \oplus \text{out\_reg2}[i] c[i]=out_reg1[i]⊕out_reg2[i]
(输出 tap 用图 10/表 15 所指的输出位;别随便换“取最低位/最高位”)。
-
抓取前 24 片:得到 c[0..23]c[0..23]c[0..23] 的 0/1 串。
-
4 片分组 → 十六进制:分成 6 组,每组 4 位,按 MSB 在前 转十六进制,得到 6 个 hex 字符。
-
比对:和表中的 Initial Sequence 完全一致即通过。
一个小例子(演示“4 片→1 hex”)
假设生成器吐出的前 8 片是:1 0 1 1 0 1 1 1
- 前 4 片
1 0 1 1
→B
- 后 4 片
0 1 1 1
→7
→ 这 8 片对应的 Initial Sequence 前两位应是 B7。
常见踩坑(Initial Sequence 对不上通常就栽在这里)
- 位序颠倒:把 4 片的 MSB/LSB 顺序反了,或把“左→右=早→晚”搞反。
- 极性不一致:你内部用的是 ±1,转换成 0/1 时没有统一:请固定 +1→0,−1→1(或反过来也行,但生成与转换两端必须一致)。
- 输出位取错:有的实现误把“反馈异或结果”当输出,或取了寄存器的另一端。要按图 10/表 15 规定的输出位。
- 移位方向/反馈抽头解码错:表里的抽头与起始值是八进制,需要按 ICD 的规则展成 14 位向量;同时注意移位方向与抽头位编号。
- 忘了“截断重装载”的时机:虽然 Initial Sequence 只用前 24 片,不到截断点,但你的总体代码里还是要在 N=10230 片时重装载到起始值,形成正确周期。
- 引入了相对移位:两条 LFSR 的相对相位必须为 0(同相位 XOR),任何相位偏移都会把前缀搞乱。
小结(你可以把它当“自检指纹”)
- Start Value 决定“你是哪一条 PRN”。
- Initial Sequence 是那条 PRN 的前 24 片的十六进制指纹,只用于对拍你的 LFSR 实现。
- 一旦通过比对,你的“主码发生器”基本就对了;再叠二次码(每个主码周期跳 1 位)和数据,按 E5 AltBOC 或 E1 CBOC 等体制组合即可。
SVID与Code No还有Code Identifier 的关系
结论(谁对应谁)
-
SVID ↔ 主码 Code No(Primary)
对于 E5a-I、E5a-Q、E5b-I、E5b-Q、E1-B、E1-C:SVID = n 就用主码编号 = n(每路各有 1…50 条主码,系统分配到 1…36 的卫星)。 -
SVID ↔ 二次码 Code Identifier(Secondary)
100-bit 家族按星唯一,4/20/25-bit 家族全星共用:- **E5a-Q:**SVID = n ⇒ 用 CS100n(例:SVID1→CS1001)。
- **E5b-Q:**SVID = n ⇒ 用 CS100(n+50)(例:SVID1→CS10051)。
- **E5a-I:**所有 SVID 都用 CS20(同一条)。
- **E5b-I:**所有 SVID 都用 CS4(同一条)。
- **E1-C:**所有 SVID 都用 CS25(同一条)。
- (E1-B、E6-B 无二次码;E6-C 使用 CS100¹–⁵⁰ 家族)
-
Code Identifier 是什么?
就是二次码的“序列名”,ICD 在表 20/21 里给出每条 CS 码的长度、hex 串(例如 CS4=“E”、CS20=“842E9”、CS25=“380AD90”;CS100ₖ 各有 25 个 hex)。
例子(照着用就行)
-
SVID 1
- 主码:各分量用 Code No = 1。
- 二次码:E5a-I=CS20,E5b-I=CS4,E1-C=CS25,E5a-Q=CS1001,E5b-Q=CS10051。
-
SVID 27
- 主码:各分量用 Code No = 27。
- 二次码:E5a-I=CS20,E5b-I=CS4,E1-C=CS25,E5a-Q=CS10027,E5b-Q=CS10077。
小贴士:ICD 还专门说明了二次码家族与分配规则(100-bit 按主码/按星唯一;4/20/25-bit 全星共用)。
Code No、CS100的个数与SVID个数不一样,这怎么一一对应
“数量不相等”其实是有富余、按规则取前一段来用的设计:
怎么一一对应
-
主码(Primary):每个分量有 50 条主码,但在用的 SVID 只有 1–36。规则是
SVID n → 主码编号 n(1≤n≤36);多出来的 #37–#50 作为储备/未来扩展,不分配给现役星。 -
100 位二次码(CS100):一共给了 100 条,用来覆盖两条 Q 路(每条最多 50 颗星):
- E5a-Q:用 CS100ₙ(SVID n 用 CS100_n_,只用到 1…36;37…50 作为富余)。
- E5b-Q:用 CS100ₙ₊₅₀(SVID n 用 CS100_{n+50},对应 51…86;87…100 为富余)。
-
4/20/25 位二次码:这些是全星共用一条,与 SVID 数量无关:
E5a-I→CS20、E5b-I→CS4、E1-C→CS25(所有 SVID 都用同一条)。
小例子
- SVID 1 → 主码 #1;E5a-Q 用 CS1001,E5b-Q 用 CS10051;E5a-I=CS20、E5b-I=CS4、E1-C=CS25。
- SVID 36 → 主码 #36;E5a-Q=CS10036,E5b-Q=CS10086;其余同上。
结论:“数量不等”不是矛盾,而是为了给两条 Q 路各预留到 50 颗星、并给主码留出 #37–#50 的预备/扩展。现阶段只对 SVID 1–36 做一一对应,剩余的编号是未使用的富余。
更多推荐
所有评论(0)