新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于PCI總線的DSP數據運算平臺設計

        基于PCI總線的DSP數據運算平臺設計

        作者:清華大學自動化系 黃迅 時間:2001-06-15 來源: 收藏

        隨著DSP的性能不斷提高,其應用領域也不斷擴大。由于DSP的硬件結構對于數字信號處理特別適用,同時,PCI總線的高帶寬,動態配置,大的地址空間等諸多特點,使得在PCPCI總線完全取代ISA總線已經是大勢所趨,目前新一代的主板上面已經幾乎不提供ISA槽。為了科學研究以及實際應用的需要,我們開發了基于PCI總線的DSP數據運算系統,主機程序通過PCI總線與DSP交換數據,可以提供高速實時的數據運算能力。系統可以廣泛的應用在語音處理,數字加密,圖像處理,多路數據流復用等實際應用中。

        本文引用地址:http://www.104case.com/article/2846.htm

        基于PCI總線的DSP數據運算平臺整個的運作流程是這樣的:PC端運行服務器程序,與DSP上運行的客戶機程序通過PCI總線進行數據交換,通信由程序中設計的信號燈或者硬件中斷。PC端的服務器程序通過PCI總線有訪問整個DSP內部的存儲器內容的能力,將所需要運算的數據送給DSP運算,設置信號燈,當DSP運算完成后則取消信號燈或者中斷主機,主機將運算完的數據取回。所需要解決的問題主要有:

        * PCI接口芯片的選擇;

        * PCIDSP的接口設計;

        *DSP系統的自舉裝入(BootLoad);

        * 主機與DSP通信驅動軟件的編制。

        目前PCI接口卡的設計一般有兩種方法,第一種是基于將PCI接口完全集成到ASIC中,這樣做的好處是集成度高,量產的生產成本低,直接用成熟的IP核,但是對于普通的開發者來說購買現成的PCI控制器的IP的價格昂貴,難以接受。當然也可以自己根據PCI協議在FPGA中實現PCI總線接口控制器,但是由于PCI總線協議自身的復雜性,要想在短期內做到操作穩定,難度很大。所以一般開發PCI接口卡的時候都使用現成的PCI接口芯片。目前市場上面的PCI接口芯片有不同公司的多種型號產品,不同的產品價位相差很大,而且功能與使用的復雜性也有很大不同。我們在設計前,要廣泛的調研,根據項目需求選擇合適的PCI接口芯片來設計系統,就會事半功倍。

        目前市場上常見的有AMCCPLXCYPRESS等公司的橋芯片,各個型號的PCI接口芯片的比較如表1所示:

        綜合項目需求,成本以及開發難易等幾個問題來考慮,選擇了PLX9030芯片作為本設計的PCI運算板的接口芯片。

        TMS320VC5402TI公司的5000平臺中力推的一款芯片,主頻可達100MHz,批量價格僅5美元,片上資源有40ALU17×17乘法器,4K×16ROM16K×16bitSARAM8位擴展主機接口(HPI),6DMA控制器,兩個多通道帶緩存串口(MCBSP),兩個16位定時器。稱得上價格低廉,性能優異,在嵌入式領域,無線設備,數字運算等領域得到了廣泛的應用。

        VC5402的引腳大多數有內部的斯密特觸發器以及上拉電阻,對于設計者來說外部電路設計相對簡單,不用作特別的處理,但是中斷源輸入必須從外部接上拉電阻。

        DSP與主機的數據交互是PCI運算平臺的設計關鍵。主機可以通過VC5402的主機接口中的三個HPI寄存器訪問DSP芯片內16KDRAM。三個HPI寄存器的具體定義如下:

        * HPIAHPI地址寄存器,存放當前所訪問的DSP的內存地址;

        * HPICHPI控制寄存器,包括HPI的控制與狀態位;

        * HPIDHPI數據寄存器,當前HPIA所在地址的數據;

        主機要讀取DSP中某個地址的數據時,首先向HPIA中送入所需訪問的地址,然后讀取HPID的內容即可;同樣,主機要向DSP中某個地址寫入數據的話,首先向HPIA中送入所需訪問的地址,然后將數據寫入HPID就可以了。

        HPI寄存器由HDS1HDS2地址線選擇,結合HRWHAS只要很少的邏輯就可與主機接口。主機通過PCI總線接口芯片訪問DSP,只需要做一些有效電平的轉換即可。單個VC5402PLX9030接口芯片通過HPI連接的示意圖如圖1所示。

        圖中PLD內部的VHDL的核心部分代碼如下:

        hcs <=not lad7;

        has <='1';

        hds1 <=wr;

        hds2 <=rd;

        hrw <=not lwr;

        hcntl0 <=lad6;

        hcntl1 <=lad5;

        hbil <=lad4;

        讀者可以從這段代碼看出,PLD主要的功能僅僅是地址譯碼以及電平的轉換。

        由于一般的PCI接口芯片都提供了大量的局部端地址線(ladLocal Address and Data),所以多片DSP與主機接口也是很容易實現的,只要用PCI接口芯片的不同的局部端地址線來選通不同的DSP。多個VC5402PLX9030接口芯片通過HPI連接的示意圖如圖2所示。

        所謂自舉,就是系統上電后程序指針自動跳到程序起始處開始執行。

        VC5402內部4KROM只有在量產的時候做掩膜才是經濟上可行的,而且用戶程序一旦超過4K,就必須將程序存在外部掉電非易失的器件里面,如EEPROMFlash或者通過主機下載程序。VC5402上電后調用片內ROM里面出廠時已經固化的BootLoad程序,從外部讀入用戶程序然后執行之。下文介紹兩種常用的的系統自舉裝入的方法。

        由于主機通過HPI口可以訪問DSP的片內SRAM資源,故而也可以在系統上電的時刻將程序由主機載入DSP,具體做法與第三節所講的主機與DSP通信流程相同。在硬件上需要將DSPINT2HPI的中斷輸出HINT直接相連以選中HPI自舉模式。HPI方式簡單方便,不必外接掉電非易失的器件,對于基于主機的DSP信號處理板不失為一種理想的自舉裝入方式。

        在非基于主機的DSP系統中,或者當程序的二進制代碼大小超過DSP的片內的SRAM的容量的時候,這時候只能選擇將程序固化外部掉電非易失的器件中。由于Flash(閃速存儲器)容量大,價格便宜,可以在線編程以動態的更新數據,一般選擇Flash作為固化程序的器件。由于Flash的種類很多,在選擇Flash的時候可根據系統工作電壓,容量,在線編程的難易等幾個指標來選擇器件。

        如果直接通過DDK來訪問PCI設備,對于硬件開發者來說需要了解大量的Windows底層的知識,不利于項目的快速進展,而對于專業的軟件開發者來說,又不熟悉具體的硬件系統,對于驅動程序的操作對象不了解。為了解決這個問題,PLX公司專門推出了軟件開發包(SDK),利用這個工具能夠方便快速的開發出基于PLXPCI接口芯片設備的Windows驅動程序。利用PLX SDK開發設備驅動程序,不需要熟悉操作系統的內核知識,整個驅動程序中的所有API應用程序接口函數都是工作在用戶態下的,通過與SDKPLXSDK.DLLPLX.SYS文件的交互來達到驅動硬件的目的。

        PCI設備的驅動程序的流程為:

        * 列舉設備;

        * 找到所需設備;

        * 列舉該設備所有資源;

        * 鎖定設備資源;

        * 訪問設備資源;

        * 解鎖設備資源,釋放設備。

        PLX SDK用API函數來實現以上的功能,通過下面一個簡單的程序就可以訪問DSP片內SRAM,并且介紹一些常用函數的使用。

        1.列舉設備,找到所有使用PLX接口芯片的設備。

        2.選擇設備,根據設備號選中欲操作的設備。

        device.BusNumber

        =MINUS_ONE_LONG;

        device.SlotNumber

        =MINUS_ONE_LONG;

        device.DeviceId

        =MINUS_ONE_LONG;

        device.VendorId

        =MINUS_ONE_LONG;

        device.SerialNumber[0]='

        主站蜘蛛池模板: 承德县| 芷江| 社会| 安西县| 大英县| 安泽县| 长寿区| 德昌县| 黑水县| 象州县| 延安市| 成都市| 福清市| 望都县| 西宁市| 松阳县| 商南县| 洪雅县| 双牌县| 积石山| 宝丰县| 曲水县| 文水县| 茌平县| 双柏县| 宁晋县| 醴陵市| 宜宾县| 哈巴河县| 东源县| 商洛市| 广灵县| 青浦区| 江阴市| 盐城市| 安图县| 大港区| 巴马| 重庆市| 应城市| 孙吴县|