本
文
摘
要
写这篇文章是因为看paper 的时候看到 whitening circle 这个概念,上网搜索资料花了很多时间,因此总结一下。
我 refer 的两篇文档分别是:
建议大家直接下载阅读原始原始文档,但是第一篇比较长,silabs 的文章电路好像有点问题,我献丑总结一下。
简介:
这里的whitening 不同于机器学习,而是一种通过加白噪声来增强蓝牙数据抗干扰能力的方法。这一方法的提出起源于时钟的同步:为了同步发射信号和接受信号的时钟,可以利用数据来对两者的时钟进行微调,而数据中0和1 交替出现频率越大,微调的效率就越高,如果出现长串的0或者1,对准时钟自然就比较困难。那么如果出现连续的0或者1,就可以通过白化算法来生成0和1 尽可能均匀出现的序列。
算法:
基本的电路如下
首先区分几个概念:whitening key, data, whitened data。其中data 就是原始数据,whitening key 就是我们用来做whitening 的序列,得到结果就是whitened data
基本操作很简单:直接用whitening key 和data 做XOR运算,也就是异或、模二余,就可以得到whitened data,用whitened data 来传输数据就可以满足上面提到的优点。而根据XOR 运算的规律,接收方再用whitening key 和whitened data 做一次XOR,就可以得到原始的数据。如下表
比较难懂的就是whitening key 的更新,用一个9位whitening key举例子,最高位叫 Most Significant Bit (MSB),不参与XOR 运算。如果生成多项式是g(x)=x9+x5+1g(x)=x^9+x^5+1 ,更新算法如下:
1, 新的第 9 位由第 0 位和第 5 位XOR 产生;
2,整体右移一位(旧的第 9 位成为新的第 8 位);
3,重复1,2 步骤8次
大家可以用第一个表做检验,其中由1 1111 1111到1 1110 0001已经在上面检验成功了。