0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)字信號處理:在硬件平臺上實現(xiàn)算法

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:Noam Levine 和 David ? 2023-06-17 11:49 ? 次閱讀

Noam LevineDavid Skolnick

到目前為止,我們已經(jīng)描述了DSP處理器的物理架構(gòu),解釋了DSP如何提供與傳統(tǒng)模擬電路相比的一些優(yōu)勢,并研究了數(shù)字濾波,展示了DSP的可編程特性如何適用于此類算法?,F(xiàn)在,我們來看看在硬件平臺ADSP-2 EZ-Kit Lite&tm;上實現(xiàn)有限脈沖響應(yīng)(FIR)濾波器算法的過程(在第2100部分中簡要介紹,在ADSP-2181系列匯編代碼中實現(xiàn))。該實現(xiàn)已擴展為處理數(shù)據(jù) I/O 問題。

使用數(shù)字濾波器

DSP的許多架構(gòu)特性,例如執(zhí)行零開銷環(huán)路的能力,以及在單個處理器周期中獲取兩個數(shù)據(jù)值的能力,對于實現(xiàn)此濾波器非常有用。簡要回顧一下,F(xiàn)IR濾波器是一種全零濾波器,它是通過將具有濾波器系數(shù)的輸入數(shù)據(jù)點序列進行卷積來計算的。其控制方程和直接形式表示如圖1所示。

wKgaomSNLSqAb_OTAABd_1Je5-o075.png

圖1.直接形式的FIR濾波器結(jié)構(gòu)。

在此結(jié)構(gòu)中,每個“z–1“框表示輸入數(shù)據(jù)歷史記錄的單個增量,采用 z 變換表示法。將每個連續(xù)延遲的樣本乘以適當?shù)南禂?shù)值 h(m),并將結(jié)果加在一起,生成一個值,表示對應(yīng)于第 n 個輸入樣本的輸出。延遲元件或濾波器抽頭的數(shù)量及其系數(shù)值決定了濾波器的性能。

濾波器結(jié)構(gòu)通過使用DSP進行計算來建議實現(xiàn)此算法所需的物理元素。對于計算本身,每個輸出樣本都需要多次等于濾波器長度的乘法累加運算。

輸入數(shù)據(jù)的延遲塊和系數(shù)值列表需要 DSP 中保留的內(nèi)存區(qū)域來存儲數(shù)據(jù)值和系數(shù)。DSP的增強型哈佛架構(gòu)允許程序員將數(shù)據(jù)存儲在程序存儲器和數(shù)據(jù)存儲器中,從而在每個周期內(nèi)從DSP的內(nèi)部SRAM執(zhí)行兩次同時存儲器訪問。通過數(shù)據(jù)存儲器保存?zhèn)魅氲臉颖荆绦虼鎯ζ鞔鎯ο禂?shù)值,可以在一個周期內(nèi)獲取數(shù)據(jù)值和系數(shù)值以進行計算。

此 DSP 架構(gòu)支持使用循環(huán)緩沖的程序(在第 2 部分和本期后面的部分中簡要討論)。這意味著地址指針只需要在程序開始時初始化,循環(huán)緩沖機制確保指針不會離開其分配的內(nèi)存緩沖區(qū)的邊界 - 這是FIR濾波器代碼中廣泛用于輸入延遲線和系數(shù)的功能。一旦確定了程序的元素,下一步就是開發(fā)DSP源代碼來實現(xiàn)算法。

開發(fā) DSP 軟件

ADSP-2100系列的軟件開發(fā)流程包括以下步驟:架構(gòu)描述、源代碼生成、軟件驗證(調(diào)試)和硬件實現(xiàn)。圖 2 顯示了一個典型的開發(fā)周期。

wKgZomSNLSuAcdpjAAFHWwST9SI506.png

圖2.軟件開發(fā)流程。

架構(gòu)說明:首先,用戶創(chuàng)建運行算法的硬件系統(tǒng)的軟件描述。系統(tǒng)描述文件包括系統(tǒng)中的所有可用內(nèi)存和任何內(nèi)存映射的外設(shè)。以下是使用ADSP-2181 EZ-Kit Lite的此過程示例。

源代碼生成:從理論到實踐,這一步——將算法思想轉(zhuǎn)化為在DSP上運行的代碼——通常是過程中最耗時的步驟。有幾種方法可以生成源代碼。一些程序員更喜歡用高級語言(如 C)編寫算法;其他人更喜歡使用處理器的本機匯編語言。對于程序員來說,C 語言的實現(xiàn)可能更快,但編譯的 DSP 代碼由于沒有充分利用處理器的架構(gòu)而缺乏效率。

匯編代碼通過充分利用處理器的設(shè)計,可以產(chǎn)生高效的實現(xiàn)。但是程序員需要熟悉處理器的本機匯編語言。最有效的方法是將C語言與系統(tǒng)的時間關(guān)鍵型數(shù)學(xué)密集型部分的匯編代碼相結(jié)合。在任何情況下,程序員都必須了解處理器的系統(tǒng)約束和外設(shè)細節(jié)。本文中的FIR濾波器系統(tǒng)示例使用ADSP-2100系列的本機匯編語言。

軟件驗證(“調(diào)試”): 此階段使用稱為模擬器的軟件工具測試代碼生成的結(jié)果,以檢查程序的邏輯流并驗證算法是否按預(yù)期執(zhí)行。模擬器是DSP處理器的模型,它a)提供對所有存儲器位置和處理器寄存器的可見性,b)允許用戶連續(xù)運行DSP代碼或一次運行一條指令,c)可以模擬向處理器饋送數(shù)據(jù)的外部設(shè)備。

硬件實現(xiàn):在這里,代碼在真正的DSP上運行,通常分幾個階段:a)在EZ-Kit Lite等評估平臺上試用;b) 在線仿真,以及 c) 生產(chǎn) ROM 生成。試用提供程序操作的快速通過/不通過確定;此技術(shù)是本文中使用的實現(xiàn)方法。在線仿真監(jiān)控系統(tǒng)中的軟件調(diào)試,其中EZ-ICE等工具可以?控制目標平臺上的處理器操作。所有調(diào)試完成后,可以生成最終代碼的引導(dǎo)ROM;它用作最終的生產(chǎn)實現(xiàn)。

使用ADSP-2181 EZ-Kit Lite

我們的開發(fā)周期示例介紹了整個過程,使用ADSP-2181 EZ-Kit Lite(開發(fā)包ADDS-21xx- EZLITE)作為濾波器算法的目標硬件。EZ-Kit Lite是一款低成本演示和開發(fā)平臺,由一個33 MHz ADSP-2181處理器、一個AD1847立體聲音頻編解碼器和一個插座式EPROM組成,后者包含用于通過RS-232連接將新算法下載到DSP的監(jiān)控代碼(圖3)。

wKgaomSNLSyASRywAABfpzEzh24670.png

圖3.EZ-Kit Lite 板的布局。

要完成架構(gòu)描述階段,需要知道DSP可用的存儲器和存儲器映射外設(shè)。程序員將此信息存儲在系統(tǒng)描述文件中,以便開發(fā)工具軟件可以為目標系統(tǒng)生成適當?shù)拇a。EZ-Kit Lite不需要DSP外部的存儲器,因為片上可用存儲器由ADSP-16的程序存儲器(PM)SRAM的384,2181個位置和數(shù)據(jù)存儲器(DM)SRAM的16,352個位置組成。(用于系統(tǒng)控制寄存器的 32 個 DM 位置不可用于工作代碼)。有關(guān)ADSP-2181、EZ-Kit Lite架構(gòu)和相關(guān)主題的更多信息,請參見本文末尾提到的文本。

可用的系統(tǒng)資源信息記錄在系統(tǒng)描述文件中,供ADSP-2100系列開發(fā)工具使用。系統(tǒng)描述文件具有.SYS擴展名。以下列表顯示了系統(tǒng)描述文件 [EZKIT_LT.SYS]:

.系統(tǒng)EZ_LITE; /* 為這個系統(tǒng)命名 */

.adsp2181; /* 指定處理器 */

.mmap0; /* 指定系統(tǒng)引導(dǎo),并且 */,

/* PM 位置 0 在內(nèi)部存儲器中 */

.seg/PM/RAM/ABS=0/code/data int_pm[16384];

.seg/DM/RAM/ABS=0 int_dm[16352];

.endsys; /* 結(jié)束描述 */

該列表將 PM 的 16,384 個位置聲明為 RAM,從地址 0 開始,以便將代碼段和數(shù)據(jù)值都放置在那里。還聲明了 16,352 個可用位置的數(shù)據(jù)存儲器作為 RAM,從地址 0 開始。由于這些處理器使用具有兩個不同內(nèi)存空間的哈佛體系結(jié)構(gòu),因此 PM 地址 0 不同于 DM 地址 0。ADSP-2181 EZ-Kit Lite的編解碼器使用串行端口連接到DSP,該串行端口未在系統(tǒng)描述文件中聲明。要使系統(tǒng)描述文件可用于其他軟件工具,系統(tǒng)組裝器實用程序 BLD21 會將.SYS文件轉(zhuǎn)換為體系結(jié)構(gòu)或 。呵呵,文件。系統(tǒng)構(gòu)建器的輸出是一個名為 EZKIT_LT 的文件。哎呀。

編寫完代碼后,下一步是生成可執(zhí)行文件,即將代碼轉(zhuǎn)換為DSP可以執(zhí)行的指令。第一個組裝DSP代碼。這會將程序文件轉(zhuǎn)換為其他開發(fā)工具可以處理的格式。匯編還會檢查代碼是否存在語法錯誤。接下來,使用體系結(jié)構(gòu)文件中聲明的可用內(nèi)存鏈接代碼以生成 DSP 可執(zhí)行文件。鏈接器將源代碼中的所有代碼和數(shù)據(jù)放入內(nèi)存空間;輸出是一個DSP可執(zhí)行文件,可以下載到EZ-Kit Lite板。

生成過濾器代碼

本系列的第 2 部分 [模擬對話 31-2,第 14 頁,圖 6] 介紹了 FIR 濾波器的小型匯編代碼列表。在這里,該代碼被增強以包含一些特定于 EZ-Kit Lite 的功能,特別是編解碼器初始化和數(shù)據(jù) I/O。核心濾波器算法元素(乘法累加、使用循環(huán)緩沖區(qū)對數(shù)據(jù)和系數(shù)進行數(shù)據(jù)尋址,以及對零開銷循環(huán)效率的依賴)不會改變。

輸入數(shù)據(jù)將使用板載AD1847編解碼器進行采樣,該編解碼器具有可編程采樣速率、輸入增益、輸出衰減、輸入選擇和輸入混頻功能。其可編程特性使系統(tǒng)具有靈活性,但它也增加了編程任務(wù),以便為DSP系統(tǒng)初始化它。

訪問數(shù)據(jù)

在本例中,編解碼器的一系列控制字(將在列表第一部分中的程序開頭定義)將初始化編解碼器,使其具有8 kHz采樣率,每個輸入通道上的增益值適中。由于AD1847是可編程的,用戶通常會重復(fù)使用接口和初始化代碼段,僅更改不同應(yīng)用的特定寄存器值。此示例會將特定的篩選器段添加到 EZ-Kit Lite 軟件中找到的現(xiàn)有代碼段。

此接口代碼聲明內(nèi)存中用于數(shù)據(jù) I/O 的兩個區(qū)域:“tx_buf”(用于從編解碼器傳輸出的數(shù)據(jù))和“rx_buf”(用于接收傳入數(shù)據(jù))。這些內(nèi)存區(qū)域或緩沖區(qū)中的每一個都包含三個元素:控制或狀態(tài)字、左通道數(shù)據(jù)和右通道數(shù)據(jù)。對于每個采樣周期,DSP 將從編解碼器接收狀態(tài)字、左通道數(shù)據(jù)和右通道數(shù)據(jù)。在每個采樣周期,DSP必須向編解碼器提供發(fā)射控制字、左聲道數(shù)據(jù)和右聲道數(shù)據(jù)。在此應(yīng)用程序中,發(fā)送到編解碼器的控制信息不會更改,因此傳輸數(shù)據(jù)緩沖區(qū)中的第一個單詞將保持原樣。我們假設(shè)源是使用右聲道的單聲道麥克風(fēng)(無需擔心左聲道輸入數(shù)據(jù))。

使用EZ-Kit Lite軟件中的I / O shell程序,我們只需要參與標有“input_samples”的代碼部分。當從準備處理的編解碼器接收到新數(shù)據(jù)時,將訪問此部分代碼。如果只需要正確的通道數(shù)據(jù),我們需要讀取位于數(shù)據(jù)存儲器中位置rx_buf + 2的數(shù)據(jù),并將其放入數(shù)據(jù)寄存器中以饋入濾波器程序。

來自編解碼器的數(shù)據(jù)需要使用ADSP-2181的循環(huán)緩沖功能通過輸入延遲線饋入濾波器算法。輸入延遲塊的長度由濾波器使用的系數(shù)數(shù)決定。由于數(shù)據(jù)緩沖區(qū)是循環(huán)的,因此緩沖區(qū)中最早的數(shù)據(jù)值將位于上次訪問篩選器后指針指向的任何位置(圖 4)。同樣,每次通過濾波器始終以相同的順序訪問的系數(shù)也放置在程序存儲器的循環(huán)緩沖區(qū)中。

wKgZomSNLS2AX50oAACOh5VBNuU668.png

圖4.對篩選數(shù)據(jù)使用循環(huán)緩沖區(qū)的示例 輸入。

算法代碼

要對接收到的數(shù)據(jù)進行操作,只需進行少量修改即可使用上一期中發(fā)布的代碼部分。為了實現(xiàn)這個過濾器,我們需要使用乘法/累加(MAC)計算單元和數(shù)據(jù)地址生成器。

ADSP-2181的MAC將結(jié)果存儲在40位寄存器中(32個2位字的乘積為16位,8位允許總和擴展而不會溢出)。這允許中間篩選器值根據(jù)需要增長和收縮,而不會損壞數(shù)據(jù)。使用的代碼段是通用的(即,可用于任何長度的過濾器);因此,MAC的額外輸出位允許運行具有未知數(shù)據(jù)的任意過濾器,而不必擔心丟失數(shù)據(jù)。

為了實現(xiàn)FIR濾波器,對濾波器在每個數(shù)據(jù)點上的所有抽頭重復(fù)乘法/累加操作。為此(并為下一個數(shù)據(jù)點做好準備),MAC 指令以循環(huán)的形式編寫。ADSP-21xx的零開銷環(huán)路功能允許在指定數(shù)量的計數(shù)內(nèi)重復(fù)MAC指令,而無需編程干預(yù)。計數(shù)器設(shè)置為抽頭數(shù)減一,循環(huán)機制自動減少每個循環(huán)操作的計數(shù)器。將循環(huán)計數(shù)器設(shè)置為“taps–1”可確保數(shù)據(jù)指針在執(zhí)行完成后最終位于正確的位置,并允許最終 MAC 操作包括舍入。由于AD1847為16位編解碼器,因此具有舍入功能的MAC可提供四舍五入到最接近的16位值的統(tǒng)計無偏結(jié)果。此最終結(jié)果將寫入編解碼器。

為了獲得最佳代碼執(zhí)行,每個指令周期都應(yīng)執(zhí)行有意義的數(shù)學(xué)計算。ADSP-21xxs通過多功能指令實現(xiàn)這一點:處理器可以在同一指令周期內(nèi)執(zhí)行多種功能。對于FIR濾波器代碼,每個乘法累加(MAC)操作可以與兩個數(shù)據(jù)訪問并行執(zhí)行,一個來自數(shù)據(jù)存儲器,一個來自程序存儲器。此功能意味著在每次循環(huán)迭代中都會執(zhí)行 MAC 操作。同時,正在獲取下一個數(shù)據(jù)值和系數(shù),并且計數(shù)器會自動遞減。所有這些都不會浪費時間維護循環(huán)。

當為每個輸入數(shù)據(jù)樣本執(zhí)行濾波器代碼時,MAC環(huán)路的輸出將被寫入輸出數(shù)據(jù)緩沖區(qū),tx_buf。雖然該程序僅處理單通道輸入數(shù)據(jù),但結(jié)果將通過寫入內(nèi)存緩沖區(qū)地址 tx_buf+1 和 tx_buf+2 寫出到兩個通道。

最終的源代碼列表顯示在第 15 頁。過濾器算法本身列在“中斷服務(wù)例程”下。其余代碼用于編解碼器和 DSP 初始化以及中斷服務(wù)例程定義。這些主題將在本系列的后續(xù)部分中探討。

The EZ-Kit Lite

EZ-Kit Lite隨附的基于Windows的監(jiān)控軟件可以將可執(zhí)行文件加載到EZ-Kit Lite板上的ADSP-2181中。這是通過下拉的“加載”菜單選擇“下載用戶程序并轉(zhuǎn)到”來完成的(圖5)。這會將濾波器程序下載到ADSP-2181并開始程序執(zhí)行。

wKgaomSNLS6ATS6uAANO6t4k7sc284.png

圖5.EZ-Kit 精簡版下載菜單。

本文的目的是概述從算法描述到可在硬件開發(fā)平臺上運行的 DSP 可執(zhí)行程序的步驟。引入的問題包括軟件開發(fā)流程、架構(gòu)描述、源代碼生成、數(shù)據(jù) I/O 和 EZ-Kit Lite 硬件平臺。

與每個主題相關(guān)的許多細節(jié)級別,這篇簡短的文章無法公正地對待。更多信息可在以下參考資料中找到。本系列將繼續(xù)在此應(yīng)用程序的基礎(chǔ)上構(gòu)建其他主題。下一篇文章將通過處理器中斷結(jié)構(gòu)更詳細地研究數(shù)據(jù)輸入/輸出 (I/O) 問題,并討論簡單濾波器算法的其他功能。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19044

    瀏覽量

    228489
  • dsp
    dsp
    +關(guān)注

    關(guān)注

    552

    文章

    7920

    瀏覽量

    347641
  • 濾波器
    +關(guān)注

    關(guān)注

    159

    文章

    7670

    瀏覽量

    177210
收藏 人收藏

    評論

    相關(guān)推薦

    [共享] 數(shù)字信號處理及其MATLAB實現(xiàn)

    內(nèi)容簡介 本書就數(shù)字信號處理的基本理論、算法及MATLAB實現(xiàn)進行系統(tǒng)的論述。全書共7章,前兩章簡要介紹了離散時間信號與系統(tǒng)及Z變換,第3、
    發(fā)表于 07-09 09:31

    C語言實現(xiàn)數(shù)字信號處理算法

    C語言實現(xiàn)數(shù)字信號處理算法
    發(fā)表于 08-16 23:17

    數(shù)字信號處理理論、算法實現(xiàn)

    系統(tǒng)介紹數(shù)字信號處理理論、相應(yīng)的算法,以及實現(xiàn)這些算法的軟件和硬件
    發(fā)表于 05-04 21:29

    如何去使用數(shù)字信號處理算法

    文章背景一直想學(xué)習(xí)一下數(shù)字信號處理算法,而不是每次遇到數(shù)據(jù)處理就求平均,求最值,看容差,做滑動窗。。。數(shù)字信號處理算法已經(jīng)很成熟了,但網(wǎng)上大
    發(fā)表于 08-09 08:23

    數(shù)字信號處理—理論、算法實現(xiàn)

    與解調(diào)、反卷積、SVD、獨立分量分析及同太民濾波等)、平穩(wěn)隨機信號的基本概念、經(jīng)典功率譜估計、參數(shù)模型功率譜估計、數(shù)字信號處理中的有限字長問題及數(shù)字信號
    發(fā)表于 09-19 08:01

    數(shù)字信號處理的FPGA實現(xiàn)

    FPGA正在掀起一場數(shù)字信號處理的變革。本書旨在講解前端數(shù)字信號處理算法的高效實現(xiàn)。首先概述了當前的FPGA技術(shù)、器件以及用于設(shè)計最先進DS
    發(fā)表于 09-19 06:38

    數(shù)字信號處理

    數(shù)字信號處理 數(shù)字濾波器是指完成信號濾波處理功能的,用有限精度算法
    發(fā)表于 02-09 11:42 ?73次下載

    數(shù)字信號處理-理論算法實現(xiàn)

    本內(nèi)容提供了數(shù)字信號處理-理論算法實現(xiàn) 電子書,歡迎大家下載學(xué)習(xí)
    發(fā)表于 07-22 11:34 ?0次下載
    <b class='flag-5'>數(shù)字信號</b><b class='flag-5'>處理</b>-理論<b class='flag-5'>算法</b>與<b class='flag-5'>實現(xiàn)</b>

    數(shù)字信號處理硬件實現(xiàn)

    數(shù)字信號處理知識介紹 并介紹如何通過硬件實現(xiàn)
    發(fā)表于 12-28 14:19 ?1次下載

    數(shù)字信號處理算法程序

    數(shù)字信號處理算法程序,又需要的朋友可以下來看看。
    發(fā)表于 01-19 16:16 ?4次下載

    基于FPGA的數(shù)字信號處理算法研究與高效實現(xiàn)

    基于FPGA的數(shù)字信號處理算法研究與高效實現(xiàn)
    發(fā)表于 08-29 23:20 ?41次下載

    詳解數(shù)字信號處理的軟硬件實現(xiàn)

    詳解數(shù)字信號處理的量化效應(yīng)、軟件實現(xiàn)硬件實現(xiàn)
    發(fā)表于 07-07 14:57 ?0次下載
    詳解<b class='flag-5'>數(shù)字信號</b><b class='flag-5'>處理</b>的軟<b class='flag-5'>硬件</b><b class='flag-5'>實現(xiàn)</b>

    如何使用FPGA實現(xiàn)數(shù)字信號處理算法的研究

    處理能力的現(xiàn)場可編程門陣列(FPGA)成本、性能、體積等方面都顯示出了優(yōu)勢。本文以此為背景,研究了基于FPGA的快速傅立葉變換、數(shù)字濾波、相關(guān)運算等數(shù)字信號
    發(fā)表于 02-01 16:11 ?17次下載
    如何使用FPGA<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>數(shù)字信號</b><b class='flag-5'>處理算法</b>的研究

    數(shù)字信號處理——理論、算法實現(xiàn)

    數(shù)字信號處理——理論、算法實現(xiàn)說明。
    發(fā)表于 04-26 09:17 ?41次下載

    數(shù)字信號處理器概論

    作為數(shù)字信號處理的一個實際任務(wù)就是要求能夠快速、高效、實時完成處理任務(wù),這就要通過通用或?qū)S玫?b class='flag-5'>數(shù)字信號處理器來完成。因此,
    的頭像 發(fā)表于 08-07 16:58 ?3650次閱讀