基于FPGA嵌入式的多比特自相關(guān)器設計
從表1中可以看出:在存儲器中存儲的N個(gè)數值中僅有N-1-k個(gè)數據進(jìn)行了自相關(guān)運算,超出這個(gè)范圍的數據應視為無(wú)效數據被舍棄。因此如果N的長(cháng)度過(guò)短或者k的數值過(guò)大,存儲器中的數據將有相當一部分數據被舍棄,并且隨著(zhù)k值的增加被舍棄的數據量將在整個(gè)存儲數據量中的比例越來(lái)越大;但是由于信號的自相關(guān)性隨著(zhù)延遲k增加而降低,在做自相關(guān)運算時(shí)一般采用較小的k值。為此,如果采用較大的RAM存儲器和較小的k值,在一組存儲數據中舍棄的數據其實(shí)是占比例很小的。例如在k=3的情況下,即延時(shí)為3個(gè)A/D轉換周期,CyclmleⅡFPGA中存儲器的最大存儲長(cháng)度為65 536個(gè)8 b存儲單元,舍棄記錄數據為3個(gè)8 b,舍棄數據量?jì)H占存儲數據量的0.004%,在自相關(guān)處理時(shí)是能夠接受的。如圖6所示。
2.2 累加器及1/N相乘單元實(shí)現:
如果使用2的N階次冪數據用作自相關(guān)計算,在二進(jìn)制下可以通過(guò)向右移位N個(gè)bit位實(shí)現除法功能。在設計中采用了2×16個(gè)采樣數據組成的數組完成自相關(guān)計算,其算法具體流程圖如圖7所示。
3 微處理器的設計實(shí)現
嵌入式微處理器的設計包括3個(gè)部分:利用SoPCBuilder定制的軟核CPU,在Quartus II環(huán)境下設計的電路和Nios II編程。
Nios II的軟件編程主要基于嵌入式操作系統μC/OS-Ⅱ。μC/OS-Ⅱ是一個(gè)完整的、可移植、固化和剪裁的占先式實(shí)時(shí)多任務(wù)核(Kernel)。從1992年發(fā)布至今,μC/OS-II已經(jīng)有上百個(gè)的商業(yè)應用案例,在40多種處理器上成功移植。其中Altera提供對μC/OS-II的完整支持,非常容易使用。
μC/OS―II提供以下系統服務(wù):任務(wù)管理(Task Management);事件標志(Event Flag);消息傳遞(Mes-sage Passing);內存管理(Memory Management);信號量(Semaphores);時(shí)間管理(Time Management)。在應用程序中,用戶(hù)可以方便地使用這些系統調用實(shí)現目標功能。
在該設計中,建立了一個(gè)主任務(wù)和兩個(gè)子任務(wù)(任務(wù)1,任務(wù)2):主任務(wù)主要是負責啟動(dòng)子任務(wù);任務(wù)1主要負責數據的采集和采集數據的存儲,任務(wù)2主要負責調用存儲器中存儲的采集數據控制外圍計算模塊進(jìn)行自相關(guān)計算??傮w軟件算法流程圖如圖8所示。圖9為由SoPC實(shí)現的Nios II處理器圖。
在Nios II系統中,首先,通過(guò)main()主函數調用OSTaskCreateExt()函數創(chuàng )建任務(wù)1,即數據采集任務(wù)。
由于A(yíng)D7822作為AVALON的從外設掛接在了AVALON總線(xiàn)上,通過(guò)在任務(wù)1中通過(guò)調用IORD_16DIRECT()端口查詢(xún)函數實(shí)時(shí)發(fā)起A從端口傳輸啟動(dòng)AD7822,獲取采集數據,然后使能外圍RAM的wren端口存儲。當存儲到該設計中存儲器長(cháng)度的數據以后,通過(guò)“尾觸發(fā)”方式啟動(dòng)任務(wù)2,即自相關(guān)計算任務(wù),并且調用延遲函數OSTimeDlyHMSM(),交出CPU的使用權。程序要點(diǎn)如下:
在任務(wù)2中,首先關(guān)閉兩個(gè)存儲器的寫(xiě)入使能,使之只能讀出數據;然后輸出相應的兩個(gè)地址碼:兩個(gè)地址碼之間有相對k的延時(shí),并且同時(shí)使能18×18乘法器,累加器及1/N相乘單元,當循環(huán)完成后,自動(dòng)刪除任務(wù)2,交CPU使用權給數據采集任務(wù)。程序要點(diǎn)如下:
4 結 語(yǔ)
首先,該設計采用嵌入式操作系統實(shí)時(shí)控制外圍運算邏輯電路的方式。實(shí)現了多乘加的DSP運算,由于嵌入式操作系統的靈活性和廣泛的可移植性,使得該設計的可讀性和移植性增強;其次,本設計采用天生并行結構的FPGA處理器完成多乘加運算,有利于提高運算速度和處理的穩定度;再次,將必要的外設作為AVALON總線(xiàn)器件,采用總線(xiàn)查詢(xún)傳輸的方式進(jìn)行訪(fǎng)問(wèn),不必在嵌入式操作系統中過(guò)多的考慮底層硬件的驅動(dòng)和時(shí)序,這樣提高電路的穩定性且也增強了程序的通用性。
評論