一、前言
今天分享的話題是在藍牙spec5.3中有關(guān)于“白話”和“去白話”這一名詞,做過這方面研究的相信都有所了解,在BLE中bit stream processing的處理流程就有包含這一過程,如下圖所示。其最終終目的很簡單就是為了讓發(fā)視和接收的數(shù)據(jù)不要重復(fù)的出現(xiàn)0和1,降低數(shù)據(jù)的冗余性。例如:0b0000000或0b1111111,那其原理究竟是什么呢,小編頭鐵非要一探究竟!

二、何為白話
“白化”這個詞最早來源于信號處理領(lǐng)域,跟其中最常見的一種噪聲——白噪聲有很大的聯(lián)系。在信號處理理論中,白噪聲指的是一種在不同頻率都有相同功率的隨機信號,即其功率譜密度為常數(shù),功率與頻率無關(guān)。“白噪聲”這個名字來源于白光,白光包含了光譜中所有的顏色,其功率譜密度也呈平坦?fàn)睿愃频兀鞍自肼暋边@種噪聲中包含了所有頻率的噪聲,因此被冠上了“白”的稱號。其他不滿足該功率譜密度特性的噪聲也被稱為有色噪聲,類似于非白光的其他顏色光。
上述關(guān)于白色信號(白光,白噪聲)的定義是一個通俗的定義,其嚴(yán)格數(shù)學(xué)定義為:一個隨機向量w稱為一個白色隨機向量當(dāng)且僅當(dāng)其平均值函數(shù)為0且自相關(guān)函數(shù)為一個單位矩陣的倍數(shù)。簡單來講,就是該信號的平均值為0,且各個分量之間互不相關(guān)。
當(dāng)然這些解釋都是網(wǎng)上可以找到的,無非就是信號處理的一種手段,在“機器學(xué)習(xí)”領(lǐng)域中對數(shù)據(jù)處理經(jīng)常會用到,但其實現(xiàn)方式是怎樣的呢?不妨看看下圖,這是spec里的一種算法,從圖中不難理解,是通過線性反饋移位的方式來處理數(shù)據(jù),以達到白話效果。
三、白話代碼實現(xiàn)方式
那這種算法在代碼里是怎么體現(xiàn)的呢,以下是一些白話處理的相關(guān)sample,希望對大家理解起來有幫助:
sample1




#includeDatawhitening.h staticunint8_tWhiteningKeyMSB=0x01; staticunint8_tWhiteningKeyLSB=0xFF; voidRadioComputeWhitening(uint8_t*buffer,uint16_tbufferSize) { uint8_ti=0; uint16_tj=0; uint8_tWhiteningKeyMSBPrevious=0; for(j=0;j>5)&0x01); WhiteningKeyLSB=((WhiteningKeyLSB>>1)&0xFF)|((WhiteningKeyMSBPrevious<7)?&?0x80); ??} ?} }
sample2
uint8_tswapBits(uint8_ta)
{
uint8_tv=0;
if(a&0x80)
v|=0x01;
if(a&0x40)
v|=0x02;
if(a&0x20)
v|=0x04;
if(a&0x10)
v|=0x08;
if(a&0x08)
v|=0x10;
if(a&0x04)
v|=0x20;
if(a&0x02)
v|=0x40;
if(a&0x01)
v|=0x80;
returnv;
}
/**
*@briefImplementswhiteningwithLFSR
*@note
*@paramdata:locationofthedatatobewhiten
*len:datalength
*whitenCoeff:whiteningcoefficient
*它是一種7位線性移位反饋樣式,并通過等于(channelNum<1)+?1的值進行初始化
?*?@retval
?*/
void?bleWhiten(uint8_t?*data,?uint8_t?len,?uint8_t?whitenCoeff)
{
????uint8_t?m;
????while?(len--)
????{
????????for?(m?=?1;?m;?m?<<=?1)
????????{
????????????if?(whitenCoeff?&?0x80)
????????????{
????????????????whitenCoeff?^=?0x11;
????????????????(*data)?^=?m;
????????????}
????????????whitenCoeff?<<=?1;
????????}
????????printf("0x%x?
?",?*data);
????????data++;
????}
}
-
藍牙
+關(guān)注
關(guān)注
119文章
6315瀏覽量
178773 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73999 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8554瀏覽量
136978 -
AIoT
+關(guān)注
關(guān)注
8文章
1643瀏覽量
34129
原文標(biāo)題:whitening
文章出處:【微信號:嵌入式開發(fā)AIoT,微信公眾號:嵌入式開發(fā)AIoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
你聽過藍牙的知識產(chǎn)權(quán)嗎?關(guān)于藍牙的知識產(chǎn)權(quán)你了解多少?
【原創(chuàng)視頻】白話講解ADC&剖析影響ADC結(jié)果關(guān)鍵因素-2
如何去實現(xiàn)一種基于藍牙與STM32的智能家居監(jiān)測系統(tǒng)設(shè)計呢
講述關(guān)于藍牙的基礎(chǔ)知識和藍牙模塊的選型介紹
HarmonyOS關(guān)于藍牙的相關(guān)資料下載
關(guān)于藍牙技術(shù)的詳細講述
關(guān)于藍牙的一些小知識你知道哪些
關(guān)于藍牙模塊的簡易小車(基于51單片機)
藍牙5.1和5.3有什么區(qū)別?
進迭播客 |「RISC-V 圓桌白話錄」首期正式上線!
關(guān)于藍牙spec5.3中“白話”和“去白話
評論