多路實(shí)時(shí)數字音頻系統中的PCI通信

發(fā)布時(shí)間:2010-6-28 10:29    發(fā)布者:zealot
1 引言

多路實(shí)時(shí)數字音頻系統采用TI公司的TMS320C5402數字信號處理芯片來(lái)實(shí)現,由于該系列芯片采用了改進(jìn)的哈佛結構,擁有專(zhuān)用的硬件乘法器和專(zhuān)為數字信號處理而設計的指令系統,快速的指令周期和良好的多DSP并行運行特性,使得DSP芯片非常適合于實(shí)時(shí)數字信號處理,廣泛應用于無(wú)線(xiàn)通信、語(yǔ)音識別、工業(yè)控制、自動(dòng)化儀器等領(lǐng)域。該系統用TMS320C5402芯片外接一個(gè)2X4路的A/D芯片Maxl25CEAX實(shí)現對多路數字音頻的實(shí)時(shí)處理,然后將處理數據通過(guò)PCI2040傳送到PC機進(jìn)行后繼處理并保存,或從PC機接受命令進(jìn)行相應操作,實(shí)現PC機和DSP之間的數據傳送,需要DSP程序、應用程序、驅動(dòng)程序三者相互協(xié)調工作。

2 WindOWS管理體系

Win98體系結構支持4種基本程序:管理程序、win32應用程序、winl6應用程序和DOS應用程序,每種程序在不同的執行環(huán)境中運行。(1)管理程序在Ring0層(核心態(tài))中的保護模式下運行,所以能訪(fǎng)問(wèn)和控制實(shí)際硬件環(huán)境,管理程序是在實(shí)際機器上,而不是在虛擬機上運行,在所有構成win98的組件中,只有VMM和驅動(dòng)程序在管理程序的環(huán)境中執行,可以直接對硬件進(jìn)行操作。(2)Win32應用程序和Winl6應用程序都在Ring3層(用戶(hù)態(tài))的保護模式下運行,Win32應用程序可以訪(fǎng)問(wèn)4GB的虛擬內存,而Winl6應用程序只能訪(fǎng)問(wèn)16MB的虛擬內存。(3)DOS應用程序運行在V86模式下,它也運行在Ring3層的訪(fǎng)問(wèn)級別上,硬件訪(fǎng)問(wèn)和中斷被隱藏和虛擬,該系統編寫(xiě)的是32位應用程序,它運行在虛擬環(huán)境之下,它對I/o端口的查詢(xún),對一個(gè)內存映射的外圍設備的查詢(xún)以及可能導致傳送到虛擬機之外的操作都會(huì )被Windows捕獲,所以其本身并不能直接訪(fǎng)問(wèn)硬件和系統數據,而需要通過(guò)驅動(dòng)程序來(lái)完成。

即插即用(PnP)是微軟公司為了使新的硬件設備更加方便使用而采取的一種策略,PnP設備能夠自身識別、自動(dòng)提出資源要求,并且可以在運行時(shí)接受資源分配。該系統開(kāi)發(fā)中的PCI總線(xiàn)就是即插即用的。在即插即用的系統中的配置管理是由配置管理器來(lái)控制。配置管理器使用設備節點(diǎn)、設備節點(diǎn)樹(shù)、注冊表來(lái)保持數據;配置管理器由枚舉器、仲裁器、設備安裝器、設備驅動(dòng)器4個(gè)主要軟件來(lái)工作;配置管理器的工作流程如圖1所示。


3 設備內存映射方法

盡管驅動(dòng)程序運行在核心層,但它所見(jiàn)的是平面內存,只能用線(xiàn)性地址進(jìn)行訪(fǎng)問(wèn)。所有驅動(dòng)程序對內存的訪(fǎng)問(wèn)都必須經(jīng)過(guò)頁(yè)表將線(xiàn)性地址轉換成物理地址。因此,驅動(dòng)程序在訪(fǎng)問(wèn)一個(gè)特殊的內存映射硬件之前,必須先配置頁(yè)表,保證設備的物理地址與一個(gè)線(xiàn)性地址相聯(lián)系。這個(gè)線(xiàn)性地址可以用作指針。驅動(dòng)程序不能控制頁(yè)表,它必須調用虛擬機管理器提供的服務(wù)。

對老式非即插即用設備,只要給出設備內存的物理地址和字節長(cháng)度,獲取一般在硬件上手動(dòng)設置,然后調用MapPhysToLinear()函數獲取此物理地址的線(xiàn)性地址,就可進(jìn)行訪(fǎng)問(wèn)。

對即插即用設備,其物理地址可以通過(guò)調用函數CM_Get_Alloc_Log_Conf()獲取,但因為在Windows運行期間,即插即用的物理地址可能改變,而MapPhys-ToLinear()函數返回的線(xiàn)性地址所對應的物理地址不變,這樣就會(huì )造成訪(fǎng)問(wèn)錯誤。對于物理地址可變的動(dòng)態(tài)配置設備,驅動(dòng)程序必須將內存映射過(guò)程分成3步。

(1)使用PageReserve()函數,分配一塊線(xiàn)性地址空間。此空間并不和具體的物理地址相關(guān)聯(lián),僅是線(xiàn)性地址的頁(yè)表進(jìn)入項。

(2)使用PageCommitPhys()函數,將線(xiàn)性地址映射到設備的物理地址,此時(shí)對線(xiàn)性地址的操作就是在相應的物理地址之上操作。

(3)使用LinPageLock()函數,阻止虛擬內存管理器將這些頁(yè)交換到磁盤(pán)空間,以保證在硬件中斷期間,這些地址都是有效的。

當設備卸載時(shí),驅動(dòng)程序可以調用LinPageUnLock(),PageDecommit(),PageFree()來(lái)解除設備的內存映射,這里每一個(gè)調用都是上述3步調用的反過(guò)程。

4 PCI配置寄存器訪(fǎng)問(wèn)

根據PCI總線(xiàn)規范要求,任何PCI設備都必須提供256字節的配置空間,用來(lái)完成對設備的安裝、配置、引導和設備再定位等功能。在該系統中要求將HPI控制標志和狀態(tài)寄存器以及HPI控制空間映射到PC機內存,所以必須對PCI2040配置寄存中的命令寄存器進(jìn)行修改,從而實(shí)現設備內存映射。這需要通過(guò)32位配置地址端口(占用IO地址OxOcf8~OxOcfb)和32位配置數據端口(占用IO地址OxOcfc~OxOcff)訪(fǎng)問(wèn)PCI配置寄存器。其中位于0xcf8的IO端口的寄存器相當于一個(gè)地址寄存器,位于0xcfc端口的寄存器相當于數據寄存器。配置數據端口中存放著(zhù)配置地址端口中的配置地址所指向的內存的內容。配置地址端口寄存器各位的意義見(jiàn)表1。


因為PCI設備的總線(xiàn)號和PCI2040的功能號一般為0,所以只需變化設備號來(lái)尋找硬件的位置。圖2是基于Vtoolsd使用VC++6.0具體對PCI配置寄存器的訪(fǎng)問(wèn)程序框圖。


5 HPI(Host Port Interface)寄存器介紹

PCI2040橋控制器可方便實(shí)現一個(gè)PCI插槽與4片C54x或C6x系列的DSP之間的通信,它提供了兩種數據傳輸的方式:一是通過(guò)HPI口傳輸,另一種是通過(guò)GPBUS總線(xiàn)傳輸。其中GPBUS總線(xiàn)傳輸方式比較簡(jiǎn)單但傳輸速率低,通過(guò)HPI口的傳輸可以實(shí)現高速的數據通信,所以在該系統中采用了HPI口傳輸的通信方式。Win98先獲取HPI寄存器的物理地址進(jìn)行映射,然后用映射得到的線(xiàn)性地址就可以對HPI口進(jìn)行訪(fǎng)問(wèn)。

(1)HPI控制寄存器(HPIC)?梢员籔C機和DSP訪(fǎng)問(wèn),它是一個(gè)16位的寄存器,其高8位和低8位表示的意義相同,低8位所表示的意義見(jiàn)表2。

(2)HPI地址寄存器(HPIA)。只可由PC機訪(fǎng)問(wèn),寄存器中保存了當前要訪(fǎng)問(wèn)的DSP的片內存儲器地址,它們可以被PC機映射,其映射空間大小為2K。

(3)HPI數據寄存器(HPID)。只可由PC機訪(fǎng)問(wèn),它的值隨HPIA變化而變化,它保存HPIA中地址所指向的DSP內存數據的值。通過(guò)對它的讀寫(xiě),可以訪(fǎng)問(wèn)相應的DSP內存的值,也可以設置成自增方式。這樣,每對它讀寫(xiě)一次,HPIA的數據就自動(dòng)加1,HPID相應保存內存中下一個(gè)16位數據。

6 驅動(dòng)、應用及DSP程序的設計

6.1 總體設計思想

為實(shí)現應用程序和DSP程序在工作中的同步問(wèn)題,將在DSP與PC機映射的內存區間建立了一個(gè)公共標志數據區,用來(lái)傳送DSP和PC機的工作狀態(tài)和控制字。設有以下幾個(gè)公共標志數據區:

(1)DSP狀態(tài)字(16位)。用來(lái)標識數據在傳送中DSP的工作狀態(tài)和命令(命令由DSP和PC機約定)。

(2)PC機狀態(tài)字(16位)。用來(lái)標識數據傳送中PC機的工作狀態(tài)和命令。

(3)數據起始位置字(16位)。用來(lái)標識數據傳送中,數據存放的起始位置。

(4)數據長(cháng)度字(16位)。用來(lái)標識存放數據的長(cháng)度。

(5)頻率設置字(16位)。用來(lái)控制輸入輸出頻率。

(6)保留字空間。用于以后擴展。

DSP與PC機之間采用中斷的通信方式,每次中斷發(fā)送之前,都先訪(fǎng)問(wèn)以上的這些控制字,這樣就為PC機和DSP之間通信的協(xié)調帶來(lái)了很多的方便。整體設計框圖如圖3。


6.2 應用程序設計

應用程序要調用驅動(dòng)程序來(lái)完成兩件事,一是獲取DSP采集的數據,二是將自己的數據發(fā)送給DSP。應用程序整體功能框架如圖4。


應用程序只需通過(guò)CreateFile()函數來(lái)加載驅動(dòng)程序,加載成功之后,應用程序就可以通過(guò)調用Devi-ceIoControl()函數與驅動(dòng)程序通信。

6.3 驅動(dòng)程序設計

驅動(dòng)程序在系統中起紐帶作用,它響應DSP中斷,并向DSP發(fā)送中斷,傳送或讀取數據給應用程序。

6.3.1 響應DSP硬件中斷

Vtoolsd提供中斷類(lèi),可以方便地完成對中斷的響應工作。其硬件中斷信號處理函數如下:
BOOL MyHwInt::OnSharedHardwareInt(VMHANDLE hVM)
{

//清除DSP上的中斷寄存器,加人中斷處理代碼。

//讀取公共數據區的數據,按要求進(jìn)程操作。

sendPhysicalEOI0; //完成中斷服務(wù),打開(kāi)中斷,
//準備接受下一次中斷。

return FALSE; //因為中斷號是共享的,

//此時(shí)必須返回FALSE。
}

6.3.2 與應用程序通信

在Vtoolsd中使用VDevice類(lèi)中的OnW32Devi-ceIoControl()函數響應應用程序發(fā)送的消息。同時(shí)驅動(dòng)程序通過(guò)異步調用函數VWIN32 -QueueUserApc()向應用程序傳送數據。驅動(dòng)程序運行過(guò)程框架如圖5,其中虛線(xiàn)框的工作由DSP程序或應用程序完成。


6.4 DSP程序設計

DSP程序實(shí)現多路數字音頻信號實(shí)時(shí)處理,通過(guò)對定時(shí)器和Maxl25CEAX芯片的設置,實(shí)現采樣率可以變化的多路輸入輸出,通過(guò)向PC機發(fā)送中斷和響應中斷,實(shí)現PC機保存數據和實(shí)時(shí)處理數據。DSP在內存中開(kāi)設兩個(gè)數據區,數據存放在兩個(gè)數據區中交替進(jìn)行。DSP的運行框架如圖6。


7 結束語(yǔ)

多路數字音頻系統已經(jīng)調試通過(guò),并成功地在盲源信號實(shí)時(shí)分離系統中獲得應用。利用TMS320C54x系列DSP的實(shí)時(shí)信號處理能力,實(shí)現PC機與DSP通信在多路實(shí)時(shí)數字音頻系統、智能機器人等領(lǐng)域中有廣闊的應用前景。
本文地址:http://selenalain.com/thread-13828-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页