1 相關算法的分析及系統(tǒng)總體設計
1.1 相關算法
隨機信號x(t)的自相關函數(shù)Rx(t1,t2)是其在時域特性的平均度量,它反應同一隨機噪聲x(t)在不同時刻t1和t2取值的相關程度,其定義為:
對于各態(tài)遍歷的平穩(wěn)隨機噪聲,其統(tǒng)計特征量與時間起點無關。令t1=t,t2=t-τ,則Rx(t1,tz)=Rx(t,t-r),簡記為Rx(τ):
在連續(xù)域中自相關函數(shù)可以用積分表示為:
在離散域中自相關函數(shù)的表現(xiàn)為數(shù)字累加和,即:
式中:N為累加平均的次數(shù);k為延時序號。因為在FPGA等數(shù)字器件中自相關計算都是建立在數(shù)字離散域基礎上的。其中x(n)與x(n-k)時間的相隔即式(2)中τ的值為采樣時間間隔△t乘以延時數(shù)k,τ=△tk,在數(shù)字離散處理系統(tǒng)中τ的取值只能為△t的整數(shù)倍。根據(jù)數(shù)字相關量化噪聲導致的SNR的退化比的定義:
D=模擬相關的SNR/數(shù)字相關的SNR (5)
數(shù)字相關的SNR=6.02n+1.76(dB),
n=A/D轉(zhuǎn)換器的量化位數(shù) (6)
從上式可見,在保持模擬相關的SNR參數(shù)不變的情況下,有效地提高A/D轉(zhuǎn)換器的量化位數(shù)可以很好地減小SNR的退化比。
該設計的基本算法思想是:首先將A/D(Analogeto Digital)轉(zhuǎn)化得到的數(shù)字信號通過“乒乓”RAM進行緩沖,然后將數(shù)據(jù)送人乘法器中進行乘法運算,計算得到x(n)與x(n-k)的乘積,將N次乘積送入累加器相加得到以后,乘以1/N或者除以N即可得到式(4)。其具體流程圖如圖1所示。
1.2 總體實現(xiàn)思路
相關算法整體設計思路如圖2所示。
FLASH芯片 用于保存NiosⅡ中運行的程序代碼和FPGA中的配置數(shù)據(jù)。在SoPC Builder中定制NiosⅡ系統(tǒng)時集成了CFI(通用FLASH接口)控制器。這樣就可以很方便地使用FLASH芯片;SDRAM通常用于需要大量易失性存儲器且成本要求高的的應用系統(tǒng)。SDRAM比較便宜,但需要實現(xiàn)刷新操作、行列管理、不同延遲和命令序列等邏輯。NiosⅡ系統(tǒng)中集成的SDRAM芯片接口能夠處理所有的SDRAM協(xié)議要求,使SDRAM的使用方便。
CLOCK時鐘模塊,通過FPGA內(nèi)部自帶的數(shù)字鎖相環(huán)將開發(fā)板上的晶振(50 MHz)提供的信號分別提供給NiosⅡ處理器和外部的SDRAM作為時鐘。
Interface在該設計中為了方便地驗證算法的正確,采用JTAG_UART接口實現(xiàn)PC和NiosⅡ系統(tǒng)之間的串行通信,通過在程序中調(diào)用相關驅(qū)動函數(shù)傳輸數(shù)據(jù),可以在集成開發(fā)環(huán)境IDE的Console窗口中觀察到運行數(shù)據(jù)。
A/D轉(zhuǎn)換器采用串行12位A/D轉(zhuǎn)換器ADS7822,其最高采樣率位75 KS/s,將它設置為掛接在AVALON總線上的從設備,通過NiosⅡ操作系統(tǒng)發(fā)起詢問傳輸獲取數(shù)據(jù)。
鍵盤 用于用戶輸入信息給處理器。
在FPGA中有著豐富的存儲器資源,對于驗證的試驗板,AItera公司提供的CycloneⅡ系列FPGA芯片EP2C20F484C8含有18 752個LE(Logic elements,邏輯單元),52個嵌入式RAM模塊,35個18×18乘法器模塊,4個數(shù)字鎖相環(huán),完全能實現(xiàn)中小規(guī)模的數(shù)字信號處理運算,在FPGA中的整體算法框圖如圖3所示。
2 外圍處理邏輯的設計與實現(xiàn)
2.1 “乒乓”RAM的設計與實現(xiàn)
為了保持數(shù)據(jù)處理的連續(xù)性,這里采用“乒乓”RAM數(shù)據(jù)緩沖模式,即兩組功能能相互切換且長度相同的RAM。它的工作原理是:其中一組RAM在進行儲存操作時;另一組RAM進行讀取操作,并且讀取和存儲的速率相同,當進行存儲操作的RAM存儲滿,進行讀取操作的RAM被清空時兩者被外部控制邏輯功能互換,這樣可以使兩組RAM能連續(xù)不斷地對A/D采集數(shù)據(jù)進行緩沖處理。如圖4所示。
為了提高自相關計算的處理速度,每一組RAM均含有兩個完全相同的RAM。在存儲時存儲相同的數(shù)據(jù);在讀取數(shù)據(jù)時其中一個RAM輸入地址碼從0開始依次讀取數(shù)據(jù)形成序列x(n),另一個RAM在輸入地址碼加上k后讀取數(shù)據(jù)形成序列x(n-k),然后將兩列數(shù)列送人乘法器中進行運算完成自相關運算。這樣雖然犧牲了FPGA中的存儲空間,但是較之于單RAM分時讀取數(shù)據(jù)的操作方式,提高了運算速率(減少2個總線讀取周期)。如圖5所示。
從式(4)可以看出:存儲器輸出的第一個數(shù)據(jù)為第一個記錄數(shù)據(jù)往后延遲k個記錄數(shù)據(jù)。這樣就會出現(xiàn)一個問題:在RAM中記錄的所有數(shù)據(jù)不能都用于自相關計算,當RAM1_2讀取到倒數(shù)第N-1-k個數(shù)據(jù)時,RAM1_1的數(shù)據(jù)已經(jīng)讀取完畢,再進行計算均為無效數(shù)據(jù)(見表1)。
從表1中可以看出:在存儲器中存儲的N個數(shù)值中僅有N-1-k個數(shù)據(jù)進行了自相關運算,超出這個范圍的數(shù)據(jù)應視為無效數(shù)據(jù)被舍棄。因此如果N的長度過短或者k的數(shù)值過大,存儲器中的數(shù)據(jù)將有相當一部分數(shù)據(jù)被舍棄,并且隨著k值的增加被舍棄的數(shù)據(jù)量將在整個存儲數(shù)據(jù)量中的比例越來越大;但是由于信號的自相關性隨著延遲k增加而降低,在做自相關運算時一般采用較小的k值。為此,如果采用較大的RAM存儲器和較小的k值,在一組存儲數(shù)據(jù)中舍棄的數(shù)據(jù)其實是占比例很小的。例如在k=3的情況下,即延時為3個A/D轉(zhuǎn)換周期,CyclmleⅡFPGA中存儲器的最大存儲長度為65 536個8 b存儲單元,舍棄記錄數(shù)據(jù)為3個8 b,舍棄數(shù)據(jù)量僅占存儲數(shù)據(jù)量的0.004%,在自相關處理時是能夠接受的。如圖6所示。
2.2 累加器及1/N相乘單元實現(xiàn):
如果使用2的N階次冪數(shù)據(jù)用作自相關計算,在二進制下可以通過向右移位N個bit位實現(xiàn)除法功能。在設計中采用了2×16個采樣數(shù)據(jù)組成的數(shù)組完成自相關計算,其算法具體流程圖如圖7所示。
3 微處理器的設計實現(xiàn)
嵌入式微處理器的設計包括3個部分:利用SoPCBuilder定制的軟核CPU,在Quartus II環(huán)境下設計的電路和Nios II編程。
Nios II的軟件編程主要基于嵌入式操作系統(tǒng)μC/OS-Ⅱ。μC/OS-Ⅱ是一個完整的、可移植、固化和剪裁的占先式實時多任務核(Kernel)。從1992年發(fā)布至今,μC/OS-II已經(jīng)有上百個的商業(yè)應用案例,在40多種處理器上成功移植。其中Altera提供對μC/OS-II的完整支持,非常容易使用。
μC/OS—II提供以下系統(tǒng)服務:任務管理(Task Management);事件標志(Event Flag);消息傳遞(Mes-sage Passing);內(nèi)存管理(Memory Management);信號量(Semaphores);時間管理(Time Management)。在應用程序中,用戶可以方便地使用這些系統(tǒng)調(diào)用實現(xiàn)目標功能。
在該設計中,建立了一個主任務和兩個子任務(任務1,任務2):主任務主要是負責啟動子任務;任務1主要負責數(shù)據(jù)的采集和采集數(shù)據(jù)的存儲,任務2主要負責調(diào)用存儲器中存儲的采集數(shù)據(jù)控制外圍計算模塊進行自相關計算??傮w軟件算法流程圖如圖8所示。圖9為由SoPC實現(xiàn)的Nios II處理器圖。
在Nios II系統(tǒng)中,首先,通過main()主函數(shù)調(diào)用OSTaskCreateExt()函數(shù)創(chuàng)建任務1,即數(shù)據(jù)采集任務。
由于AD7822作為AVALON的從外設掛接在了AVALON總線上,通過在任務1中通過調(diào)用IORD_16DIRECT()端口查詢函數(shù)實時發(fā)起A從端口傳輸啟動AD7822,獲取采集數(shù)據(jù),然后使能外圍RAM的wren端口存儲。當存儲到該設計中存儲器長度的數(shù)據(jù)以后,通過“尾觸發(fā)”方式啟動任務2,即自相關計算任務,并且調(diào)用延遲函數(shù)OSTimeDlyHMSM(),交出CPU的使用權。程序要點如下:
在任務2中,首先關閉兩個存儲器的寫入使能,使之只能讀出數(shù)據(jù);然后輸出相應的兩個地址碼:兩個地址碼之間有相對k的延時,并且同時使能18×18乘法器,累加器及1/N相乘單元,當循環(huán)完成后,自動刪除任務2,交CPU使用權給數(shù)據(jù)采集任務。程序要點如下:
4 結 語
首先,該設計采用嵌入式操作系統(tǒng)實時控制外圍運算邏輯電路的方式。實現(xiàn)了多乘加的DSP運算,由于嵌入式操作系統(tǒng)的靈活性和廣泛的可移植性,使得該設計的可讀性和移植性增強;其次,本設計采用天生并行結構的FPGA處理器完成多乘加運算,有利于提高運算速度和處理的穩(wěn)定度;再次,將必要的外設作為AVALON總線器件,采用總線查詢傳輸?shù)姆绞竭M行訪問,不必在嵌入式操作系統(tǒng)中過多的考慮底層硬件的驅(qū)動和時序,這樣提高電路的穩(wěn)定性且也增強了程序的通用性。
北京2022年10月18日 /美通社/ -- 10月14日,國際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報告》,報告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...
關鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心經(jīng)過幾十年發(fā)展,嵌入式技術已經(jīng)用在了我們生活中的方方面面,但是嵌入式始終都帶有小眾,專業(yè)性強的屬性,讓很多非嵌入式領域的同學望而卻步。近十幾年的發(fā)展,物聯(lián)網(wǎng)覆蓋了越來越多領域,包括了家居,商業(yè),工業(yè),農(nóng)業(yè)等領域,不僅吸引...
關鍵字: 嵌入式 物聯(lián)網(wǎng) 技術