伽罗华域
伽罗华(法国,1811~1832)才华横溢,可惜在21岁时早早死于情场决斗。他证明了:对于给定的一个素数次不可约方程能判断出它是否能根式求解。
Bluetooth在bit streaming过程中计算Sync word,HEC,FEC及data whitening时使用到了伽罗华域中的计算规则来处理比特流,本文就收集到的信息做个总结。
一个元素个数有限的域称为有限域,或者伽罗华域(Galoisfield)
- 有限域中元素的个数为一个素数,记为GF(p),其中p为素数;
一个大于1的整数,如果它的正因数只有1和它本身,就叫做素数,否则就叫做合数
有限域中运算满足
– 交换律:a+b = b+a, a·b = b·a
– 结合律:(a+b)+c = a+(b+c), a·(b·c) = (a·b)·c
– 和分配律:a·(b+c) = a·b+a·c将GF(p)延伸为一个含有$p^m$个元素的域,称为GF(p)的扩展域,表示为GF($p^m$),m是一个非零正整数。
注意:GF(p)是GF($p^m$)的子集。
二进制域GF(2)是扩展域GF($2^m$)的一个子域,类似于实数域是复数域的一个子域一样。除了数字0和1之外,在扩展域中还有特殊的元素,用一个新的符号a表示。GF($2^m$)中任何非0元素都可由a的幂次表示。
有限元素的集合GF($2^m$),只能含有$2^m$个元素,并且对乘法封闭,其约束条件为$a^{(2^m−1)}$+1=0
• 根据这个多项式限制条件,任何幂次等于或超过$2^m-1$的域元素都可降阶为下述幂次小于$2^m-1$的元素:
这样,GF($2^m$)的元素可表示为:
扩展域$GF(2^m)$中的加法
• 在$GF(2^m)$中,将每个非0域元素用多项式$a_i(x)$表示,其系数至少有一个不为0。对于i=0,1, 2,…,$2^m-2$,有:
• 先看m=3,有限域表示为$GF(2^3)$,下表为上式描述的基本元素(Primitive Element) ${x^0,x^1,x^2}$映射为7个元素{$a_i$}和一个0元素。表中的各行是二进制数字序列,代表上式中的系数$a_{i,0}、a_{i,1}、a_{i,2}$的取值。
_ | $x^0$ | $x^1$ | $x^2$ |
---|---|---|---|
0 | 0 | 0 | 0 |
$a^0$ | 1 | 0 | 0 |
$a^1$ | 0 | 1 | 0 |
$a^2$ | 0 | 0 | 1 |
$a^3$ | 1 | 1 | 0 |
$a^4$ | 0 | 1 | 1 |
$a^5$ | 1 | 1 | 1 |
$a^6$ | 1 | 0 | 1 |
$a^7$ | 1 | 0 | 0 |
多项式$f(x)=1+x+x^3$ 为GF($2^3$)的元素与基本元素之间的映射。
有限域中两个元素的加法定义为两个多项式中同幂次项系数 进行模2加,即
$a^i+a^j=(a_{i,0}+a_{j,0}) + (a_{i,1}+a_{j,1})x + … + (a_{i,m-1}+a_{j,m-1})x^{m-1}$
• 有限域的本原多项式。本原多项式定义了域GF($2^m$), 一个多项式是本原多项式的充要条件:
一个m阶的不可约多项 式f(x),如果f(x)整除$x^n+1$的最小正整数n满足$n=2^m-1$,则该多项式是本原的。
关于多项式在伽罗华域的求根
以$p(x) = 1 + x + x^3$ 为例,多项式的幂次为m=3,所以由p(x)所定义的域中包含了$2^m=2^3=8$个元素。求解p(x)的根就是指找到x 使p(x)=0。由高斯的基本代数学理论我们知道,对于幂次为m的多项式必然有m个根。对于这个例子,p(x)=0有3个根,由于这3个根不可能位于与p(x)系数相同的有限域中,而是位于扩展域GF($2^3$)中。
用扩展域的元素 a来定义多项式p(x)的根,可写成如下形式:p(a)=0
即 $1+a+a^3=0$,在该多项式两边都加上 1 + a, 就可以得到$a^3=1+a$ 这意味着$a^3$可以表示为更低阶a项的加权和。
类似地有:
$a^4$=a$a^3$=a(1+a)=a+$a^2$
$a^5$=a$a^4$=a(a+$a^2$)=$a^2$+$a^3$=1+a+$a^2$
$a^6$=a$a^5$=a(1+a+$a^2$)=a+$a^2$+$a^3$=1+$a^2$
$a^7$=a$a^6$=a(1+$a^2$)=a+$a^3$=1=$a^0$
所以,有限域GF($2^3$)的8个元素为 ${0,a^0,a^1,a^2,a^3,a^4,a^5,a^6}$
这8个元素中哪些是p(x)=0的3个根呢?我们可通过枚举 找到!
p($a^0$)=1, $a^0$不是
p($a^1$)=1+a+$a^3$=0, $a^1$是
p($a^2$)=1+$a^2$+$a^6$=1+$a^0$=0, $a^2$是
p($a^3$)=1+$a^3$+$a^9$=1+$a^3$+$a^2$=1+$a^5$=$a^4$, $a^3$不是
p($a^4$)=1+$a^4$+$a^12$=1+$a^4$+$a^5$=1+$a^0$=0, $a^4$是
同理可计算p($a^5$)、p($a^6$)都不等于0,所以p(x)=1+x+$x^3$的 3个根是a, $a^2$, $a^4$
主要参考文献有
FEC的介绍
存在主义咖啡馆
- 如果你和你想做的事情不在同一个频道,你就会浪费很多精力。等你有机会做你想做的事情的时候,你可能已经没有力气或时间了。
- 每一天都有很多人想要让你把你的时间和精力花在他们身上。比如你收到的邮件。如果你打算参加所有活动,参与每次促销,享用每一顿不请自来的服务,你就没有空闲时间了。这还只是邮件而已。再想想那些想通过电视、网络、餐厅、旅游地等等来吸引你注意力的人。你很快就发现,自己在做大家都在做的事,或者别人想让你做的事。
- 为什么人们把那么多时间花在准备工作上,而不是直接去做自己想做的事。部分原因就在于我们每天暴露在大量营销信息中,如果不谨慎点儿,我们肯定会把自己的幸福和满足寄托在某样产品或是服务上。最后我们会陷入财务困境,必须不断去做事情去挣钱,尽管那些事情不是我们真正想做的。
BT Codec 总结
开发BT audio,经常被各种BT music 断音,跳音等等问题而困扰,大部分都是因为codec出问题或是bt受干扰而throughput不够。
针对BT music使用到的codec,这篇文章有做一些总结。Understanding Bluetooth codecs
测试之道
Google认为tester是为了帮助RD提高生产效率的,并不是为了把关什么软件质量,只有RD才能真正把关质量。
由于公司是IC 设计公司,所有的软件定义都是为IC 服务,软件开发时程也是紧跟硬件的时程。SW RD的产出有很大一部分时候需要靠QA来帮忙做测试抓问题,而不是RD自己把code写的铜墙铁壁,没有漏洞。。反过来说,对RD也是一个很大的考验,如何在短时间内高质量完成自己的部分,而且不over design。
通信相关的文章收集
IQ调制:http://blog.chinaaet.com/molf/p/29748
通信介绍:https://zhuanlan.zhihu.com/p/23612006
https://www.cnblogs.com/shaoyou/p/4822222.html
https://en.wikipedia.org/wiki/File:Fourier_series_and_transform.gif
https://en.wikipedia.org/wiki/File:Fourier_series_square_wave_circles_animation.gif
https://en.wikipedia.org/wiki/File:Fourier_series_sawtooth_wave_circles_animation.gif
蓝牙基带介绍
对于任何一门知识体系,一定有一个最小基本单位,基本概念,其他的概念或是规矩都是基于这几个基本的东西在玩花样。对于这个很基本的分析问题的方法,混沌大学的李善友老师还起来一个非常高大上的名字叫做“唯一性原理”,有点故弄玄虚,其实叫啥无所谓,面对同样一份原始数据,如果你有相关的知识,你就能将数据切的更细,那就能看到更多东西。
先列举下Baseband的几个基本单位:
1. Piconet
跟其他网络技术一样,蓝牙也有自己的网络。网上把这个单词翻译成微网。在蓝牙设备没有跟其他蓝牙设备连线的时候,它自己属于一个piconet。当有连线后,piconet里有两种角色:master 和 slave。发起连线的一方是master,被连接的一方是slave。slave会以master的时钟为参照,以625us为时间单位,与master进行数据收发。每一个piconet里,一个master最多有7个slave。
2. Mode
这里的Mode其实对应的是Modem,数据编码不同,那Modem就不同,传输数据的速度也不同。
2.1 Basic Rate:最基本的一种模式,采用BPSK,传输速率是 1Mb/s。
2.2 Enhanced Data Rate:增强模式,传输速率是 2Mb/s (π/4-DQPSK)或 3Mb/s(8DPSK),这种模式有两种编码。
3. BT clock
Clock是蓝牙通信最最基础的一个概念,clock定义了通信的时空范围,定义了这个Piconet时空的坐标系,只有在同一个坐标系里,网络内的各个角色才能相互了解对方的时间线,才知道什么时候发包,什么时候收包。
BT clock是个28bit的计数器,每tick一次是312.5us,所以总共有 (2^28 -1)个tick,算一下大约是(2^28-1)*312.5us/10^6/3600 = 23.3个小时后clock会翻转。
针对clock有几个概念也要知道下:
CLK0, 312.5us,是一个tick
CLK1, 625us, 是一个slot
CLK2, 1.25ms, 是一个frame(做一次TX 和 RX)
CLK12, 1.28s.
Clock的精确度要求为 +/-250ppm 和 +/-20ppm
4. BT 地址
蓝牙地址有48bit,需要跟IEEE去购买。
LAP中有64个:0x9E8B00-0x9E8B3F是用来做inquiry的。0x9E8B000 是用来做 General inquiry,余下的63个是用来做Dedicate inquiry。当保留LAP被使用的时候,UAP会是0x00,Default Check Initialization。
5. Access Code
所有的蓝牙数据包都以access code为开头,所有的access code是从LAP生出来的。access code是为了告诉对方,数据包来了,该做准备了,而接收方也可以根据access code来确定这包数据是不是属于自己的。
device access code (DAC)
channel access code (CAC)
Inquiry access code (IAC)IAC 又分为 GIAC 和 DIAC
6. Physical Channel(信道)
蓝牙有79个信道,每个信道2M
Spec总共有定义如下5种channel
Basic piconet physical channel
Adapted piconet physical channel
Page scan physical channel
Inquiry scan physical channel
Synchronization scan physical channel
6.1 Basic piconet physical channel
在建立连线后,Slave会以Mater的clock为准。Master和Slave以一个slot为单位进行Tx和Rx,Master在clock为偶数时发包,Slave在clock为偶数时收包,如下面的两张图。
为了处理time sliping,定义uncertainty window来增加Rx的时候收到包的几率,Slave可以加大自己的Rx时间uncertainty window来提高收到包的几率。
如果在250ms内等不到Master的包,那Slave就只能认为是短线了。
6.2 Adapted piconet phycial channel
用到的channel个数可能会少于79个,不过至少会是20个。
6.4 Page scan phycial channel
在Paging的时候,Master会发送paging message(就是ID packets),这个时候的跳频速度是 3200 hops/s,在Tx的slot内会打两次包,在Rx的Slot内也会收两次Slave的回应。
Slave在收到Master的paging messagse后的625us会回一个slave reponse packet。Master在收到这个reponse packet的后面的那个Tx slock再发一个master page reponse packet。
6.5 Inquiry Scan Physical channel
在Inquiry的时候,Master会一直发送inquiry mesasge,带上GIAC 或 DIAC。
7. HOP Seletion (跳频)
据说跳频的理论模型还是个演员发明的。
7.1 Selection Kernel