一、前言
今天分享的話題是在藍(lán)牙spec5.3中有關(guān)于“白話”和“去白話”這一名詞,做過(guò)這方面研究的相信都有所了解,在BLE中bit stream processing的處理流程就有包含這一過(guò)程,如下圖所示。其最終終目的很簡(jiǎn)單就是為了讓發(fā)視和接收的數(shù)據(jù)不要重復(fù)的出現(xiàn)0和1,降低數(shù)據(jù)的冗余性。例如:0b0000000或0b1111111,那其原理究竟是什么呢,小編頭鐵非要一探究竟!
二、何為白話
“白化”這個(gè)詞最早來(lái)源于信號(hào)處理領(lǐng)域,跟其中最常見(jiàn)的一種噪聲——白噪聲有很大的聯(lián)系。在信號(hào)處理理論中,白噪聲指的是一種在不同頻率都有相同功率的隨機(jī)信號(hào),即其功率譜密度為常數(shù),功率與頻率無(wú)關(guān)。“白噪聲”這個(gè)名字來(lái)源于白光,白光包含了光譜中所有的顏色,其功率譜密度也呈平坦?fàn)睿愃频兀鞍自肼暋边@種噪聲中包含了所有頻率的噪聲,因此被冠上了“白”的稱號(hào)。其他不滿足該功率譜密度特性的噪聲也被稱為有色噪聲,類似于非白光的其他顏色光。
上述關(guān)于白色信號(hào)(白光,白噪聲)的定義是一個(gè)通俗的定義,其嚴(yán)格數(shù)學(xué)定義為:一個(gè)隨機(jī)向量w稱為一個(gè)白色隨機(jī)向量當(dāng)且僅當(dāng)其平均值函數(shù)為0且自相關(guān)函數(shù)為一個(gè)單位矩陣的倍數(shù)。簡(jiǎn)單來(lái)講,就是該信號(hào)的平均值為0,且各個(gè)分量之間互不相關(guān)。
當(dāng)然這些解釋都是網(wǎng)上可以找到的,無(wú)非就是信號(hào)處理的一種手段,在“機(jī)器學(xué)習(xí)”領(lǐng)域中對(duì)數(shù)據(jù)處理經(jīng)常會(huì)用到,但其實(shí)現(xiàn)方式是怎樣的呢?不妨看看下圖,這是spec里的一種算法,從圖中不難理解,是通過(guò)線性反饋移位的方式來(lái)處理數(shù)據(jù),以達(dá)到白話效果。
三、白話代碼實(shí)現(xiàn)方式
那這種算法在代碼里是怎么體現(xiàn)的呢,以下是一些白話處理的相關(guān)sample,希望對(duì)大家理解起來(lái)有幫助:
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位線性移位反饋樣式,并通過(guò)等于(channelNum<1)+?1的值進(jìn)行初始化 ?*?@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++; ????} }
-
藍(lán)牙
+關(guān)注
關(guān)注
114文章
5866瀏覽量
171209 -
代碼
+關(guān)注
關(guān)注
30文章
4825瀏覽量
69043 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8438瀏覽量
133080 -
AIoT
+關(guān)注
關(guān)注
8文章
1418瀏覽量
30951
原文標(biāo)題:whitening
文章出處:【微信號(hào):嵌入式開(kāi)發(fā)AIoT,微信公眾號(hào):嵌入式開(kāi)發(fā)AIoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論