新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA嵌入式的多比特自相關器設計

        基于FPGA嵌入式的多比特自相關器設計

        作者: 時間:2009-11-11 來源:網絡 收藏

        從表1中可以看出:在存儲器中存儲的N個數值中僅有N-1-k個數據進行了自相關運算,超出這個范圍的數據應視為無效數據被舍棄。因此如果N的長度過短或者k的數值過大,存儲器中的數據將有相當一部分數據被舍棄,并且隨著k值的增加被舍棄的數據量將在整個存儲數據量中的比例越來越大;但是由于信號的自相關性隨著延遲k增加而降低,在做自相關運算時一般采用較小的k值。為此,如果采用較大的RAM存儲器和較小的k值,在一組存儲數據中舍棄的數據其實是占比例很小的。例如在k=3的情況下,即延時為3個A/D轉換周期,CyclmleⅡ中存儲器的最大存儲長度為65 536個8 b存儲單元,舍棄記錄數據為3個8 b,舍棄數據量僅占存儲數據量的0.004%,在自相關處理時是能夠接受的。如圖6所示。
        2.2 累加器及1/N相乘單元實現:
        如果使用2的N階次冪數據用作自相關計算,在二進制下可以通過向右移位N個bit位實現除法功能。在設計中采用了2×16個采樣數據組成的數組完成自相關計算,其算法具體流程圖如圖7所示。

        3 微處理器的設計實現
        微處理器的設計包括3個部分:利用SoPCBuilder定制的軟核CPU,在Quartus II環境下設計的電路和Nios II編程。
        Nios II的軟件編程主要基于操作系統μC/OS-Ⅱ。μC/OS-Ⅱ是一個完整的、可移植、固化和剪裁的占先式實時多任務核(Kernel)。從1992年發布至今,μC/OS-II已經有上百個的商業應用案例,在40多種處理器上成功移植。其中Altera提供對μC/OS-II的完整支持,非常容易使用。
        μC/OS―II提供以下系統服務:任務管理(Task Management);事件標志(Event Flag);消息傳遞(Mes-sage Passing);內存管理(Memory Management);信號量(Semaphores);時間管理(Time Management)。在應用程序中,用戶可以方便地使用這些系統調用實現目標功能。
        在該設計中,建立了一個主任務和兩個子任務(任務1,任務2):主任務主要是負責啟動子任務;任務1主要負責數據的采集和采集數據的存儲,任務2主要負責調用存儲器中存儲的采集數據控制外圍計算模塊進行自相關計算。總體軟件算法流程圖如圖8所示。圖9為由SoPC實現的Nios II處理器圖。

        在Nios II系統中,首先,通過main()主函數調用OSTaskCreateExt()函數創建任務1,即數據采集任務。
        由于AD7822作為AVALON的從外設掛接在了AVALON總線上,通過在任務1中通過調用IORD_16DIRECT()端口查詢函數實時發起A從端口傳輸啟動AD7822,獲取采集數據,然后使能外圍RAM的wren端口存儲。當存儲到該設計中存儲器長度的數據以后,通過“尾觸發”方式啟動任務2,即自相關計算任務,并且調用延遲函數OSTimeDlyHMSM(),交出CPU的使用權。程序要點如下:


        在任務2中,首先關閉兩個存儲器的寫入使能,使之只能讀出數據;然后輸出相應的兩個地址碼:兩個地址碼之間有相對k的延時,并且同時使能18×18乘法器,累加器及1/N相乘單元,當循環完成后,自動刪除任務2,交CPU使用權給數據采集任務。程序要點如下:



        4 結 語
        首先,該設計采用操作系統實時控制外圍運算邏輯電路的方式。實現了多乘加的DSP運算,由于嵌入式操作系統的靈活性和廣泛的可移植性,使得該設計的可讀性和移植性增強;其次,本設計采用天生并行結構的處理器完成多乘加運算,有利于提高運算速度和處理的穩定度;再次,將必要的外設作為AVALON總線器件,采用總線查詢傳輸的方式進行訪問,不必在嵌入式操作系統中過多的考慮底層硬件的驅動和時序,這樣提高電路的穩定性且也增強了程序的通用性。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        關鍵詞: FPGA 嵌入式 比特

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 伊春市| 法库县| 海林市| 屯门区| 商都县| 隆安县| 丘北县| 青田县| 铅山县| 江安县| 长宁区| 定日县| 邻水| 宜阳县| 梁山县| 临湘市| 莒南县| 长春市| 娱乐| 大渡口区| 尼勒克县| 海城市| 贵德县| 玉龙| 邛崃市| 沭阳县| 永清县| 紫金县| 花莲县| 夏津县| 剑川县| 大城县| 新泰市| 玛曲县| 望都县| 伊金霍洛旗| 镇坪县| 东乡| 台中县| 科技| 肥东县|