用SP061A實現(xiàn)心電數(shù)據(jù)的FFT與壓縮
發(fā)布時間:2008/5/27 0:00:00 訪問次數(shù):464
    
    
     摘要:在sp061a單片機(jī)上實現(xiàn)對ecc信號的fft、濾波和壓縮。合理組織sp061a的硬件資源,并采取數(shù)據(jù)分段長度可選、避開高頻分量的計算和簡易的數(shù)據(jù)壓縮算法,使存儲開銷、運算速度和精度滿足實用要求。
     關(guān)鍵詞:ecc數(shù)據(jù) sp061a fft 濾波 壓縮 在遠(yuǎn)程心電監(jiān)護(hù)系統(tǒng)中,心電信號采集器是實現(xiàn)心電信號的現(xiàn)場采集、存儲和傳輸?shù)闹匾K端設(shè)備。對采集器的基本要求之一是:及時對采集到的心電信號進(jìn)行濾波和壓縮等預(yù)處理,以減少存儲器占用量和數(shù)據(jù)遠(yuǎn)程傳輸?shù)筋^端服務(wù)器的開銷。為降低成本,這些任務(wù)一般采用單片機(jī)完成。然而,限于單片機(jī)的資源、運算能力和運行速度,許多壓縮算法,如周期壓縮法、小波變換壓縮法和神經(jīng)網(wǎng)絡(luò)方法等無法使用,一些缺乏快速算法的頻域變換法也很難達(dá)到實用的程度[3]。高性價比的心電信號采集器的研制一直是一個熱點問題。 通過研究fft(快速傅立葉變換)的算法結(jié)構(gòu)和心電信號的特點發(fā)現(xiàn),采用分段fft,保留分析心電波形需要的諧波成分,巧妙地組織單片機(jī)的片內(nèi)ram資源,可使數(shù)據(jù)運算量和ram開銷大大減少,能實現(xiàn)數(shù)據(jù)濾波和壓縮,且能達(dá)到實時采集與處理所需的運算速度。 sp061a是凌陽科技公司研制的一款16位超低功耗單片機(jī)[1],片內(nèi)有2k字ram、10位a/d轉(zhuǎn)換器,cpu時鐘高達(dá)49.152mhz,且價格低廉,還特別具有一套精簡、高效的指令系統(tǒng)和類似于dsp的硬件內(nèi)積運算功能。這些特點很適合心電信號的采集和處理。圖1是作者研發(fā)的心電信號采集器中有關(guān)硬件的組成框圖:多路ecg模擬信號送sp061a進(jìn)行a/d轉(zhuǎn)換,轉(zhuǎn)換數(shù)據(jù)送nvram dsl265w暫存;待采集完成后,由sp061a進(jìn)行fft和濾波、壓縮;壓縮結(jié)果送回dsl265w,再適時通過電話線或計算機(jī)網(wǎng)絡(luò)送到監(jiān)護(hù)中心處理、診斷。 本文僅討論用sp061a實現(xiàn)fft[2]、低通濾波與壓縮。設(shè)對心電信號的采樣率為500次/秒,數(shù)據(jù)精度為10位。1 數(shù)據(jù)分段算法 設(shè)采集到的原始數(shù)據(jù)存于片外ram中,將這些數(shù)據(jù)分為若干段,逐段讀入片內(nèi)進(jìn)行fft。各段的變換結(jié)果及時送回片外ram中保存。 按照fft的要求,段中包含的數(shù)據(jù)個數(shù)必須為2n,n為fft變換的層數(shù)?紤]到sp061a片內(nèi)ram為2k字,此處取n=9或n=10,即段中數(shù)據(jù)為512或1024,以保證ram夠用。顯然,段頭和段尾的數(shù)據(jù)大小相等時,以該段作為一個周期而無限重復(fù)的波形將無跳躍點。經(jīng)過“fft變換到頻域”→“丟棄高頻成分”→“ifft(快速傅立葉反變換,在頭端pc上進(jìn)行)”一系列操作而重建的時域波形,段與段之間的結(jié)合點將是連續(xù)的。但實際上,按上述分段幾乎不能做到段頭和段尾的數(shù)據(jù)大小相等。取兩種段長的目的就是提供兩種可能的選擇——選擇首尾數(shù)據(jù)之差較小的段作fft。盡管如此,段首尾數(shù)據(jù)之差仍存在,經(jīng)處理、復(fù)原后的波形在段的結(jié)合部位仍將有間斷點。而采用加窗、延拓等辦法在單片機(jī)上又難以實現(xiàn)。解決問題的策略為:分段時,各段間的數(shù)據(jù)首、尾各覆蓋10個數(shù)據(jù)。頭端pc在完成重建后,應(yīng)將首、尾各5個數(shù)據(jù)丟棄。2 時域數(shù)據(jù)的整序與加載 分段后,將該段加載到sp061a的ram中,以實施fft。原始數(shù)據(jù)以采集的時間先后順序存放,加載時則應(yīng)“整序”,即改變數(shù)據(jù)的先后順序,以保證變換后的頻域數(shù)據(jù)為正序。 設(shè)rs為指向片外ram的、待加載的段內(nèi)數(shù)據(jù)的偏移地址,rs=o…2n-1;rd為指向片內(nèi)ram的、待寫入數(shù)據(jù)的偏移地址,如圖2。將rs按n位二進(jìn)制逐位高低互換就得到只rdo例如,當(dāng)n=9時,若rs為011001011b,則rd為110100110b。為加快計算速度,將n=9時及,的值制表存于flashrom,供整序時查詢。當(dāng)n=10時,取rs的b0~b9位查表獲得rd,再將rs的b10位傳送到rd,的b15位,最后將rd循環(huán)左移1位。 fft變換是復(fù)數(shù)運算。在將原始數(shù)據(jù)加載到片內(nèi)ram的同時,應(yīng)把實數(shù)轉(zhuǎn)換為復(fù)數(shù),即令虛部為0。于是,一個原始數(shù)據(jù)加載到ram中要占用2個字。復(fù)數(shù)的存儲格式為:實部字存于低地址,虛部字存于相鄰的高地址,F(xiàn)在考察ram需要量。n=9時,段長為512個數(shù)據(jù),加載到ram中要占用512×2=1024字;n=10時,段長為1024個數(shù)據(jù),全部加載將占用1024×2=2048字,超過片內(nèi)ram的可用容量。此時,將數(shù)據(jù)分為兩部分,先將第一部分加載到ram作fft,得到中間結(jié)果,再將第二部分加載、變換,最后相加合成。3 fft變換及低通濾波 fft將時域序列{χ[i],i∈0…2n}變換為頻域序列{f[i],i∈0…2n}。為了實現(xiàn)低通濾波,僅須保留{f[i]}中≤75hz的頻率分量。當(dāng)n=9時,應(yīng)保留{f[i]}中的前77個低頻分量;當(dāng)n=10時,則應(yīng)保留{f[i]}中的前154個低頻分量。這也同時減少了計算量,加快了計算速度;存放周轉(zhuǎn)量所需的片內(nèi)ram也能得到保證。 為敘述簡便,以n=3為例,研究fft的計算結(jié)構(gòu),如圖3所示。 圖3中,w[k]是復(fù)因子,w[k]=cos[(2kπ)/n ]+jsin[(2kπ)/n],k=0…2n-1
    
    
     摘要:在sp061a單片機(jī)上實現(xiàn)對ecc信號的fft、濾波和壓縮。合理組織sp061a的硬件資源,并采取數(shù)據(jù)分段長度可選、避開高頻分量的計算和簡易的數(shù)據(jù)壓縮算法,使存儲開銷、運算速度和精度滿足實用要求。
     關(guān)鍵詞:ecc數(shù)據(jù) sp061a fft 濾波 壓縮 在遠(yuǎn)程心電監(jiān)護(hù)系統(tǒng)中,心電信號采集器是實現(xiàn)心電信號的現(xiàn)場采集、存儲和傳輸?shù)闹匾K端設(shè)備。對采集器的基本要求之一是:及時對采集到的心電信號進(jìn)行濾波和壓縮等預(yù)處理,以減少存儲器占用量和數(shù)據(jù)遠(yuǎn)程傳輸?shù)筋^端服務(wù)器的開銷。為降低成本,這些任務(wù)一般采用單片機(jī)完成。然而,限于單片機(jī)的資源、運算能力和運行速度,許多壓縮算法,如周期壓縮法、小波變換壓縮法和神經(jīng)網(wǎng)絡(luò)方法等無法使用,一些缺乏快速算法的頻域變換法也很難達(dá)到實用的程度[3]。高性價比的心電信號采集器的研制一直是一個熱點問題。 通過研究fft(快速傅立葉變換)的算法結(jié)構(gòu)和心電信號的特點發(fā)現(xiàn),采用分段fft,保留分析心電波形需要的諧波成分,巧妙地組織單片機(jī)的片內(nèi)ram資源,可使數(shù)據(jù)運算量和ram開銷大大減少,能實現(xiàn)數(shù)據(jù)濾波和壓縮,且能達(dá)到實時采集與處理所需的運算速度。 sp061a是凌陽科技公司研制的一款16位超低功耗單片機(jī)[1],片內(nèi)有2k字ram、10位a/d轉(zhuǎn)換器,cpu時鐘高達(dá)49.152mhz,且價格低廉,還特別具有一套精簡、高效的指令系統(tǒng)和類似于dsp的硬件內(nèi)積運算功能。這些特點很適合心電信號的采集和處理。圖1是作者研發(fā)的心電信號采集器中有關(guān)硬件的組成框圖:多路ecg模擬信號送sp061a進(jìn)行a/d轉(zhuǎn)換,轉(zhuǎn)換數(shù)據(jù)送nvram dsl265w暫存;待采集完成后,由sp061a進(jìn)行fft和濾波、壓縮;壓縮結(jié)果送回dsl265w,再適時通過電話線或計算機(jī)網(wǎng)絡(luò)送到監(jiān)護(hù)中心處理、診斷。 本文僅討論用sp061a實現(xiàn)fft[2]、低通濾波與壓縮。設(shè)對心電信號的采樣率為500次/秒,數(shù)據(jù)精度為10位。1 數(shù)據(jù)分段算法 設(shè)采集到的原始數(shù)據(jù)存于片外ram中,將這些數(shù)據(jù)分為若干段,逐段讀入片內(nèi)進(jìn)行fft。各段的變換結(jié)果及時送回片外ram中保存。 按照fft的要求,段中包含的數(shù)據(jù)個數(shù)必須為2n,n為fft變換的層數(shù)?紤]到sp061a片內(nèi)ram為2k字,此處取n=9或n=10,即段中數(shù)據(jù)為512或1024,以保證ram夠用。顯然,段頭和段尾的數(shù)據(jù)大小相等時,以該段作為一個周期而無限重復(fù)的波形將無跳躍點。經(jīng)過“fft變換到頻域”→“丟棄高頻成分”→“ifft(快速傅立葉反變換,在頭端pc上進(jìn)行)”一系列操作而重建的時域波形,段與段之間的結(jié)合點將是連續(xù)的。但實際上,按上述分段幾乎不能做到段頭和段尾的數(shù)據(jù)大小相等。取兩種段長的目的就是提供兩種可能的選擇——選擇首尾數(shù)據(jù)之差較小的段作fft。盡管如此,段首尾數(shù)據(jù)之差仍存在,經(jīng)處理、復(fù)原后的波形在段的結(jié)合部位仍將有間斷點。而采用加窗、延拓等辦法在單片機(jī)上又難以實現(xiàn)。解決問題的策略為:分段時,各段間的數(shù)據(jù)首、尾各覆蓋10個數(shù)據(jù)。頭端pc在完成重建后,應(yīng)將首、尾各5個數(shù)據(jù)丟棄。2 時域數(shù)據(jù)的整序與加載 分段后,將該段加載到sp061a的ram中,以實施fft。原始數(shù)據(jù)以采集的時間先后順序存放,加載時則應(yīng)“整序”,即改變數(shù)據(jù)的先后順序,以保證變換后的頻域數(shù)據(jù)為正序。 設(shè)rs為指向片外ram的、待加載的段內(nèi)數(shù)據(jù)的偏移地址,rs=o…2n-1;rd為指向片內(nèi)ram的、待寫入數(shù)據(jù)的偏移地址,如圖2。將rs按n位二進(jìn)制逐位高低互換就得到只rdo例如,當(dāng)n=9時,若rs為011001011b,則rd為110100110b。為加快計算速度,將n=9時及,的值制表存于flashrom,供整序時查詢。當(dāng)n=10時,取rs的b0~b9位查表獲得rd,再將rs的b10位傳送到rd,的b15位,最后將rd循環(huán)左移1位。 fft變換是復(fù)數(shù)運算。在將原始數(shù)據(jù)加載到片內(nèi)ram的同時,應(yīng)把實數(shù)轉(zhuǎn)換為復(fù)數(shù),即令虛部為0。于是,一個原始數(shù)據(jù)加載到ram中要占用2個字。復(fù)數(shù)的存儲格式為:實部字存于低地址,虛部字存于相鄰的高地址,F(xiàn)在考察ram需要量。n=9時,段長為512個數(shù)據(jù),加載到ram中要占用512×2=1024字;n=10時,段長為1024個數(shù)據(jù),全部加載將占用1024×2=2048字,超過片內(nèi)ram的可用容量。此時,將數(shù)據(jù)分為兩部分,先將第一部分加載到ram作fft,得到中間結(jié)果,再將第二部分加載、變換,最后相加合成。3 fft變換及低通濾波 fft將時域序列{χ[i],i∈0…2n}變換為頻域序列{f[i],i∈0…2n}。為了實現(xiàn)低通濾波,僅須保留{f[i]}中≤75hz的頻率分量。當(dāng)n=9時,應(yīng)保留{f[i]}中的前77個低頻分量;當(dāng)n=10時,則應(yīng)保留{f[i]}中的前154個低頻分量。這也同時減少了計算量,加快了計算速度;存放周轉(zhuǎn)量所需的片內(nèi)ram也能得到保證。 為敘述簡便,以n=3為例,研究fft的計算結(jié)構(gòu),如圖3所示。 圖3中,w[k]是復(fù)因子,w[k]=cos[(2kπ)/n ]+jsin[(2kπ)/n],k=0…2n-1
上一篇:新一代Mifare射頻基站IC
上一篇:單片機(jī)C語言
熱門點擊
- 單片機(jī)多字節(jié)BCD碼加法減法
- PCF8563 I2C實時時鐘/日歷芯片在8
- P89C51RD2的Boot ROM與ISP
- DVB-C信道解調(diào)解碼芯片GX1001的設(shè)計
- C51絕對地址訪問
- 測試PIC單片機(jī)如何省電
- C8051與SRAM的高速接口
- 指針類型和存儲區(qū)的關(guān)系詳解
- 帶VCC輸入引腳的硅序列碼芯片DS2411及
- 電壓驅(qū)動型脈寬調(diào)制器TL494
推薦技術(shù)資料
- AMOLED顯示驅(qū)動芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計
- GB300 超級芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究