男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
   位置: 機電之家下載站 >> 單片機技術網 >> 單片機開發 >> DSP >> 正文
培訓信息
贊助商
基于VDK的AD系列DSP軟件開發技術
基于VDK的AD系列DSP軟件開發技術
 更新時間:2009-6-5 9:15:14  點擊數:2
【字體: 字體顏色
 :作為AD系列DSP軟件開發環境VisualDSP的一個重要組成部分,VDK特別適合用于開發需要精巧控制代碼的系統。本文介紹了VDK的原理及基于他開發應用系統的優點。最后給出了一個基于VDK開發應用系統的簡單例子。
    關鍵詞:VDK;ADSP軟件設計;VisualDSP;A/D<!--關鍵CH(結束)←--><!--→標題EN(開始)-->


  當前數字信號處理器(DSP)已廣泛應用于圖像處理、智能化儀表、通信、自動控制等許多領域。AD公司是全球通用DSP領域最有影響力的廠家之一, VDK(VisualDSPKernel)是AD公司DSP軟件開發工具VisualDSP的一個重要組成部分,他特別適合用來編寫需要精巧控制代碼的應用程序。某些大型系統可能需要許多算法完成,而每個算法還可能包含許多功能模塊,這要由控制代碼加以組織。處理器日益強大功能的發揮也需要精巧的控制代碼。基于VDK開發的程序中,這些控制碼是由一個叫“內核”的程序管理的,內核常駐在DSP中。
1 VDK的原理
  VDK實際上是一種帶API(Application ProgramInterface)函數庫的實時操作系統內核。下面先對VDK的各個組成部分加以介紹,然后總體描述其工作原理。文中所述的被調用的函數均在API函數庫中。
1.1 線 程
  一個應用程序可以劃分為多個功能模塊,每個模塊可以用一個線程實現,線程之間可以互相通信。線程并不是直接定義的,而是先定義線程類型,再由線程類型例化得到。一個線程類型可以有多個例化,也就是說一個系統中多個線程可以屬于相同的線程類型。線程類型實質上是各空間VDK下線程類的子類,而線程是該子類例化得到的對象。線程類型創建時被分配一個默認的優先級,該優先級可以通過調用函數SetPriority()改變,同一類型的線程具有相同的優先級。每個線程包含5個成員函數:創建函數、初始化函數、運行函數、錯誤處理函數和銷毀函數。創建函數類似于C++中類的構造函數,用于創建一個線程并為他分配資源。銷毀函數類似于C++中類的析構函數,用于銷毀一個線程并釋放其所占資源。包含線程所要完成算法的運行函數是線程的核心部分,類似于C中的main()函數。
1.2 調 度
  調度是一種管理和協調線程的機制,他保證優先級最高的就緒線程能夠最早占用處理器來運行。所謂就緒,就是線程已經具備運行所需的所有數據、參數等資源。調度在具有最高優先級的線程改變時被激發。調度的實現基于一種被稱為就緒隊列的內部數據結構。就緒隊列中的就緒線程先按優先級排隊,然后遵循先進先服務的原則占用處理器,如圖1所示。線程最高優先級為0,是保留的;最低優先級為DSP數據字寬減去2,如32 b DSP為30。具有最低優先級的線程是預定義的IDLE線程,他在就緒隊列為空時自動運行,使得DSP處于低功耗狀態。
1.3 信號
  信號是線程之間進行通信和同步的橋梁。(Semaphore)、事件位和事件(Event and EventBit)、設備標志(Device Flag)。

  信標是應用系統中所有線程都可訪問的全局資源的抽象,VisualDSP2.0中他有2個值:真和假。他的值為真時,表示該資源可用,所有正在等待該信標的線程中優先級最高的那一個進入就緒隊列等候運行;他的值為假時,表示該資源已被占用。線程或者中斷服務程序利用信標所代表的資源完成自己的任務后調用API函數釋放該資源以便其他線程或者中斷服務程序使用。
  事件和事件位是標識系統狀態的信號,用于協調線程的執行。事件位用來指示系統某一要素所處狀態;事件是所有事件位按照指定規則進行布爾操作的結果。任何一個事件位改變都會導致事件的值被重新計算。信標標識系統資源是否可用,而事件位和事件標識線程中的操作主體利用系統資源完成其工作后所處的狀態。線程可以調用PendEvent()等候一個事件發生。
  設備標志是設備驅動與線程之間聯系的紐帶。例如他可以將A/D采樣數據的到來這一事件通知多個等待這些數據的線程,而信標、事件和事件位就不能描述他。由于和設備驅動息息相關,后面將會結合設備驅動對設備標志進行詳細介紹。
1.4 中斷服務程序
  VDK的中斷服務程序必須用匯編語言編寫而且應該比較短小,完成釋放信標、改變事件位、激活設備驅動、與線程交換數據等工作,而所有的計算應該在線程域完成。中斷可以調用API函數被允許或禁止。
1.5 設備驅動
  基于VDK的應用程序可以分解為2個域:線程域和中斷域。圖2所示線程域中對線程進行管理的機制稱為軟件調度,也就是前文所述的調度,由內核完成;中斷域中對中斷進行管理的機制稱為硬件調度,由DSP硬件(中斷控制器)完成。硬件調度和軟件調度是并行的,但中斷發生時硬件調度搶先發生,這時軟件調度和線程的優先級是無意義的。

  眾所周知,操作系統是將鍵盤、顯示器、打印機和通信端口作為擴充文件來處理的,而這種處理是通過設備驅動程序實現的。作為一種操作系統內核,VDK也對外部設備進行抽象,可以調用API函數對他們進行打開和關閉、同步讀和同步寫以及控制。設備驅動是線程域和中斷域之間溝通的橋梁,也是VDK應用程序與外部環境通信的接口。其代碼既不在線程中也不在中斷服務程序中,而是一個獨立的函數,他也不直接被內核和中斷控制器調度。設備標志是與設備驅動相關聯的信號。一個設備標志為真時,就表示與該標志對應的設備準備好,所有等待該設備標志的線程進入就緒隊列。
1.6 API
  API(Application Programming Interface)是存放應用程序可以調用的函數和宏的庫。API函數庫為VDK提供基本的服務:中斷處理、調度管理、線程管理、信標管理、事件和事件位以及設備標志的傳遞等。
    VDK總體工作原理可以用圖3描述。

  VDK應用程序以線程域和中斷域為主體,以信號為紐帶,以設備驅動作為與外部環境進行通信的接口,以調度為線程和中斷的管理和協調機制來完成復雜的控制功能。
2 使用VDK開發應用程序的優點
  使用VDK開發AD系列DSP應用程序具有以下優點:
  (1)開發周期比手寫控制代碼要短得多 代碼自27動生成、文件模板和設備驅動的標準接口,使軟件開發者可以專注于算法和控制流程的設計,而不是程序執行的細節。
  (2)調試方便 程序執行過程中發生的線程切換、信號的等待和公布(post)等重要事件可用圖形和圖表直觀地表示出來。
  (3)碼的可移植性和可重用性 VDK提供了硬件的抽象層,用戶可以用高級語言(C或C++)進行同硬件平臺無關的編程,生成的代碼可以移植到AD公司所有的DSP核中。許多繁瑣的數據讀寫等基本工作可以直接調用API函數而無需自己編寫。
  (4)項目管理方便 采用基于線程的編程方式,可以把應用程序分解成許多獨立的模塊進行編寫和調試,為項目管理提供了極大的方便。
3  

    VDK非常適合用于構造需要精巧控制代碼的系統,這些系統中許多事件往往是隨機發生的。針對實際的應用系統,我們首先要進行深入分析,建立系統模型,從中抽象出所要創建的線程類型、信號、設備驅動、中斷服務程序等,然后就可以著手在VDK環境下編寫應用程序了。值得一提的是系統參數、線程類型、信號及其參數、設備驅動、中斷服務程序等均可在Project窗口中的Kernel頁直接手動定義,VDK會自動生成內核文件存儲他們,非常方便。

參考文獻

[1] VisualDSP++Kernel(VDK)User′s Guide.AD,2002.
[2] 蘇濤,等.高性能數字信號處理器與高速實時信號處理[M].西安:西安電子科技大學出版社,2000.
<!--插入廣告JS代碼-->
  • 上一篇: 基于DSP的簡單、經濟、實用的無功補償器的設計
  • 下一篇: 基于DSP的雙處理器電容器保護
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 辽宁省| 大连市| 牙克石市| 高州市| 长海县| 凤冈县| 尉犁县| 蚌埠市| 武宣县| 沂水县| 石屏县| 天长市| 广昌县| 神池县| 左贡县| 辉县市| 荣成市| 乌苏市| 云梦县| 伽师县| 建昌县| 镇平县| 桓台县| 栖霞市| 招远市| 五河县| 梅河口市| 南漳县| 吉水县| 寻乌县| 兴和县| 高邑县| 海晏县| 宣恩县| 出国| 招远市| 武宁县| 都匀市| 神农架林区| 古田县| 盈江县|