基于FPGA嵌入式的多比特自相關器設計
FLASH芯片 用于保存NiosⅡ中運行的程序代碼和FPGA中的配置數據。在SoPC Builder中定制NiosⅡ系統時集成了CFI(通用FLASH接口)控制器。這樣就可以很方便地使用FLASH芯片;SDRAM通常用于需要大量易失性存儲器且成本要求高的的應用系統。SDRAM比較便宜,但需要實現刷新操作、行列管理、不同延遲和命令序列等邏輯。NiosⅡ系統中集成的SDRAM芯片接口能夠處理所有的SDRAM協議要求,使SDRAM的使用方便。
CLOCK時鐘模塊,通過FPGA內部自帶的數字鎖相環將開發板上的晶振(50 MHz)提供的信號分別提供給NiosⅡ處理器和外部的SDRAM作為時鐘。
Interface在該設計中為了方便地驗證算法的正確,采用JTAG_UART接口實現PC和NiosⅡ系統之間的串行通信,通過在程序中調用相關驅動函數傳輸數據,可以在集成開發環境IDE的Console窗口中觀察到運行數據。
A/D轉換器采用串行12位A/D轉換器ADS7822,其最高采樣率位75 KS/s,將它設置為掛接在AVALON總線上的從設備,通過NiosⅡ操作系統發起詢問傳輸獲取數據。
鍵盤 用于用戶輸入信息給處理器。
在FPGA中有著豐富的存儲器資源,對于驗證的試驗板,AItera公司提供的CycloneⅡ系列FPGA芯片EP2C20F484C8含有18 752個LE(Logic elements,邏輯單元),52個嵌入式RAM模塊,35個18×18乘法器模塊,4個數字鎖相環,完全能實現中小規模的數字信號處理運算,在FPGA中的整體算法框圖如圖3所示。
2 外圍處理邏輯的設計與實現
2.1 “乒乓”RAM的設計與實現
為了保持數據處理的連續性,這里采用“乒乓”RAM數據緩沖模式,即兩組功能能相互切換且長度相同的RAM。它的工作原理是:其中一組RAM在進行儲存操作時;另一組RAM進行讀取操作,并且讀取和存儲的速率相同,當進行存儲操作的RAM存儲滿,進行讀取操作的RAM被清空時兩者被外部控制邏輯功能互換,這樣可以使兩組RAM能連續不斷地對A/D采集數據進行緩沖處理。如圖4所示。
為了提高自相關計算的處理速度,每一組RAM均含有兩個完全相同的RAM。在存儲時存儲相同的數據;在讀取數據時其中一個RAM輸入地址碼從0開始依次讀取數據形成序列x(n),另一個RAM在輸入地址碼加上k后讀取數據形成序列x(n-k),然后將兩列數列送人乘法器中進行運算完成自相關運算。這樣雖然犧牲了FPGA中的存儲空間,但是較之于單RAM分時讀取數據的操作方式,提高了運算速率(減少2個總線讀取周期)。如圖5所示。
從式(4)可以看出:存儲器輸出的第一個數據為第一個記錄數據往后延遲k個記錄數據。這樣就會出現一個問題:在RAM中記錄的所有數據不能都用于自相關計算,當RAM1_2讀取到倒數第N-1-k個數據時,RAM1_1的數據已經讀取完畢,再進行計算均為無效數據(見表1)。
評論