一、前言
今天分享的話題是在藍(lán)牙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ù),以達(dá)到白話效果。
三、白話代碼實現(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的值進(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)注
115文章
5976瀏覽量
172717 -
代碼
+關(guān)注
關(guān)注
30文章
4880瀏覽量
69995 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8481瀏覽量
133855 -
AIoT
+關(guān)注
關(guān)注
8文章
1463瀏覽量
31827
原文標(biāo)題:whitening
文章出處:【微信號:嵌入式開發(fā)AIoT,微信公眾號:嵌入式開發(fā)AIoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
關(guān)于藍(lán)牙和wifi的學(xué)習(xí)資料
如何去實現(xiàn)一種基于藍(lán)牙4.0的設(shè)備通信系統(tǒng)?
你聽過藍(lán)牙的知識產(chǎn)權(quán)嗎?關(guān)于藍(lán)牙的知識產(chǎn)權(quán)你了解多少?
【原創(chuàng)視頻】白話講解ADC&剖析影響ADC結(jié)果關(guān)鍵因素-2
如何去實現(xiàn)一種基于藍(lán)牙與STM32的智能家居監(jiān)測系統(tǒng)設(shè)計呢
講述關(guān)于藍(lán)牙的基礎(chǔ)知識和藍(lán)牙模塊的選型介紹
HarmonyOS關(guān)于藍(lán)牙的相關(guān)資料下載
關(guān)于藍(lán)牙技術(shù)的詳細(xì)講述
藍(lán)牙5.0 core spec研究藍(lán)牙技術(shù)必備資料
關(guān)于藍(lán)牙的一些小知識你知道哪些
關(guān)于藍(lán)牙模塊的簡易小車(基于51單片機)

評論