基于PCI總線通用DSP信號(hào)處理系統(tǒng)的設(shè)計(jì)方案
1 引言
本文引用地址:http://m.butianyuan.cn/article/257384.htm1.1 DSP簡(jiǎn)介及基本特點(diǎn)
數(shù)字信號(hào)的處理離不開算法和實(shí)現(xiàn)手段。數(shù)字信號(hào)處理器(digital signal processor簡(jiǎn)稱DSP)。是在模擬信號(hào)變換成數(shù)字信號(hào)以后進(jìn)行高速實(shí)時(shí)處理的專用處理器,是實(shí)現(xiàn)實(shí)時(shí)數(shù)字信號(hào)處理的有力工具。DSP目前廣泛應(yīng)用于模式識(shí)別,數(shù)字通信,信號(hào)處理,工業(yè)控制等領(lǐng)域。TI公司的TMS320C54X系列DSP有著以下的特點(diǎn):采用先進(jìn)的修正增強(qiáng)型哈佛結(jié)構(gòu),片內(nèi)共有8條總線(1條程序存儲(chǔ)器總線,3條數(shù)據(jù)存儲(chǔ)器總線和4條地址總線);高度并行和帶有專用硬件邏輯的CPU設(shè)計(jì);高度專業(yè)化的指令系統(tǒng);模塊化結(jié)構(gòu)設(shè)計(jì);能降低功耗和提高抗輻射能力的新的靜電設(shè)計(jì)方法。因此它能高速實(shí)時(shí)以及靈活地應(yīng)用于圖像處理、語言處理、頻譜分析、數(shù)字濾波、實(shí)時(shí)控制 等各個(gè)領(lǐng)域。TMS320VC5402是54X系列中應(yīng)用比較廣泛的一種芯片,它有著豐富的接口資源,是一種集數(shù)據(jù)處理和通信功能于一體的高速微處理器。其操作速率為40~100MIPS。
1.2 PCI局部總線的性能和特點(diǎn)
PCI總線是一種不依附于某個(gè)具體處理器的局部總線。從結(jié)構(gòu)上看,PCI是在CPU和原來的系統(tǒng)總線之間插入的一級(jí)總線,具體由一個(gè)橋接電路實(shí)現(xiàn)對(duì)這一層的管理,并實(shí)現(xiàn)上下之間的接口以協(xié)調(diào)數(shù)據(jù)的傳送。管理器提供了信號(hào)緩沖,使之能支持10種外設(shè),并能在高時(shí)鐘頻率下保持高性能。PCI總線也支持總線主控技術(shù),允許智能設(shè)備在需要時(shí)取得總線控制權(quán)以加速數(shù)據(jù)傳送。
2信號(hào)處理系統(tǒng)的功能構(gòu)成
通用信號(hào)處理系統(tǒng)一般分為數(shù)據(jù)采集、數(shù)據(jù)處理和數(shù)據(jù)管理3個(gè)部分(圖1)。采集部分可以采用通用的數(shù)據(jù)采集卡,數(shù)據(jù)管理部分則必須用 PC機(jī)才能完成。在信號(hào)處理系統(tǒng)中,最費(fèi)時(shí)間,也即影響信號(hào)處理系統(tǒng)的實(shí)時(shí)性的瓶頸是數(shù)據(jù)的處理部分。數(shù)據(jù)的處理通常采用微機(jī)軟件的方法, 但完全由PC機(jī)處理有個(gè)缺點(diǎn),就是信號(hào)處理需要的運(yùn)算主要是數(shù)字運(yùn)算,因相對(duì)于通用CPU(GPP)來說,它是采用馮·諾依曼存儲(chǔ)器結(jié)構(gòu),并不適用于數(shù)字信號(hào)的運(yùn)算,不僅會(huì)造成處理速度慢,而且占用CPU時(shí)間過多,直接影響了PC機(jī)對(duì)數(shù)據(jù)的管理。因此,我們提出用另一種方法把信號(hào)處理部分從微機(jī)軟件中分離出來,交給DSP處理,然后把DSP處理好的數(shù)據(jù)再傳給PC機(jī)管理。該系統(tǒng)的功能構(gòu)成如圖1所示。這樣不僅可以做到信號(hào)處理和數(shù)據(jù)管理并行進(jìn)行,而且充分利用DSP對(duì)數(shù)字信號(hào)處理高速,并行的優(yōu)勢(shì),提高了信號(hào)處理系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性。在對(duì)信號(hào)作連續(xù)的流水處理時(shí),其性能優(yōu)勢(shì)更能得以體現(xiàn),同時(shí)這也是一個(gè)廉價(jià)的產(chǎn)品,有著很高的性能價(jià)格比。
3 信號(hào)處理部分的硬件構(gòu)成
信號(hào)處理部分接口電路的結(jié)構(gòu)如圖2所示。信號(hào)處理程序保存在主機(jī)中,在上電以后,自舉加載到DSP中,并由固化在DSP的ROM中的 BOOTLOADER來完成。
主要的處理流程是:信號(hào)采集卡把模擬的信息轉(zhuǎn)化為數(shù)字的信息,進(jìn)入PC機(jī);由PC機(jī)通過PCI接口把數(shù)字的信息傳輸?shù)紻SP,保存在SRAM中; DSP從SRAM中讀取數(shù)據(jù),對(duì)信號(hào)進(jìn)行處理;然后,把處理后的數(shù)據(jù)再?gòu)腜CI接口傳回PC機(jī),交給數(shù)據(jù)管理部分處理。
3.1 PCI接口
為了管理數(shù)據(jù)和尋址、接口控制、仲裁以及系統(tǒng)運(yùn)行,PCI接口對(duì)單個(gè)目標(biāo)設(shè)備需要至少47個(gè)引腳,對(duì)主控設(shè)備最少需要49個(gè)引腳。圖3給出了按功能組劃分的引腳,左邊的為必需引腳,右邊的為可選引腳。圖中的信號(hào)的方向是對(duì)主控設(shè)備/ 目標(biāo)設(shè)備的組合而言??傄_數(shù)120條(包含電源、地、保留引腳等)。PCI的總線寬度有32位和64位。在本系統(tǒng)中,設(shè)備是32位,沒有作64位擴(kuò)展。
由于PCI總線時(shí)鐘高達(dá)33MHz,信號(hào)線應(yīng)按微波傳輸線對(duì)待,再加上接口邏輯本身的復(fù)雜性,設(shè)計(jì)難度很大。實(shí)現(xiàn)接口的辦法:(1)用可編程邏輯器件EPLD或FPGA和用EPLD或FPGA實(shí)現(xiàn)。PCI接口的優(yōu)點(diǎn)在于其靈活的可編程性。首先PCI接口可以依據(jù)插卡功能進(jìn)行最優(yōu)化,而不必實(shí)現(xiàn)所有的PCI功能,這樣可以節(jié)約系統(tǒng)的邏輯資源;其次可以將PCI插卡上的其他用戶邏輯與PCI接口邏輯集成在一個(gè)芯片上,實(shí)現(xiàn)緊湊的系統(tǒng)設(shè)計(jì);再者當(dāng)系統(tǒng)升級(jí)時(shí),只需對(duì)可編程器件重新進(jìn)行邏輯設(shè)計(jì)而無需更新PCB版圖。(2)用專用PCI接口芯片實(shí)現(xiàn)。專用PCI接口芯片可以實(shí)現(xiàn)完整的PCI主控模塊和目標(biāo)模塊接口功能,將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對(duì)簡(jiǎn)單的用戶接口。廠商對(duì)PCI總線接口進(jìn)行了嚴(yán)格的測(cè)試,用戶只要設(shè)計(jì)轉(zhuǎn)換后的總線接口即可。從某種意義上講,PCI接口完成的是PCI總線和插卡上的從屬處理器之間的消息傳遞。
由于以上原因,再考慮到系統(tǒng)開發(fā)的成本和周期,用專用接口芯片來實(shí)現(xiàn)PCI總線的接口較理想。接口芯片選用的是TI公司的PCI2040。PCI2040 是專門用來和54X或6X橋接的芯片,可以實(shí)現(xiàn)與TMS320VC5402的無縫接口 ;可以對(duì)端口進(jìn)行訪問讀寫。PCI2040提供了一個(gè)由PCI總線至插卡總線的直通通路(pass-thru)。PCI2040通過這些數(shù)據(jù)通路將復(fù)雜的PCI接口轉(zhuǎn)換為相對(duì)簡(jiǎn)單的插卡總線接口。在本系統(tǒng)中,DSP中的資源映射到PC機(jī)的內(nèi)存D9008000~D9008FFF和D9000000~ D9007FFF,中斷請(qǐng)求為11。
PCI2040通過HPI接口與DSP通信,通信流程如下:PCI總線向PCI2040讀寫數(shù)據(jù),PCI2040會(huì)根據(jù)這些命令在HPI口上發(fā)起相應(yīng)的要求,這個(gè)通信過程可以通過編程首先初始化HPI控制寄存器HPIC以及主機(jī)地址寄存器HPIA,然后再?gòu)闹鳈C(jī)數(shù)據(jù)寄存器HPID中讀/寫數(shù)據(jù)來完成。具體的接口電路如圖4所示:一塊PCI2040最多可以掛接4片 DSP,以用于多DSP系統(tǒng)。
3.2 擴(kuò)展空間
對(duì)信號(hào)處理系統(tǒng)來講,DSP芯片所帶的資源常常不能滿足要求。這包括兩個(gè)方面,一是程序空間,二是數(shù)據(jù)空間。對(duì)程序空間,可以選擇不同的自舉方式,充分利用PC機(jī)的資源。對(duì)數(shù)據(jù)空間有下面幾種解決方法:(1)選擇資源多的芯片,但這會(huì)引起成本的上升;(2)改進(jìn)算法,邊讀取數(shù)據(jù)邊處理;(3)用一個(gè)鎖存器保存高位地址,自己擴(kuò)展數(shù)據(jù)空間。這 里采用的方法是在用算法進(jìn)行邊讀數(shù)據(jù)邊處理的同時(shí),用SRAM對(duì)數(shù)據(jù)空間進(jìn)行了擴(kuò)展??紤]到時(shí)序關(guān)系,以及TMS320VC5402只能與異步的存儲(chǔ)器連接等因素。選用了TPS73HD318。它是 3.3V,1M×16大小的靜態(tài)RAM,高低位字節(jié)可選,其讀寫速度達(dá)到12ns,能夠與DSP的讀寫速度相匹配,無須另加接口時(shí)序。對(duì)于等待時(shí)間的產(chǎn)生,可以用軟件的方法,對(duì)等待狀態(tài)寄存器(SWWSR)進(jìn)行設(shè)置。而產(chǎn)生的時(shí)延在調(diào)試時(shí)可以對(duì)DSP的時(shí)延寄存器進(jìn)行設(shè)置, 以達(dá)到最大速度。硬件接口如圖5所示。
4 DSP系統(tǒng)的自舉
所謂自舉(Bootload),就是在上電時(shí)從外部加載并執(zhí)行用戶的程序代碼。加載的途徑有:(1)從一個(gè)外部的EPROM或FLASH加載;(2)從主機(jī)通過HPI總線、并行I/O口、任何一個(gè)串行口、用戶定義的地址熱自舉等方式加載。因?yàn)樾盘?hào)處理的程序一般都比較大,為了保證這個(gè)信號(hào)處理系統(tǒng)的通用性和可移植性,需把程序保存在主機(jī)中,用HPI總線自舉。HPI是一個(gè)8位的并行口,PC機(jī)和'5402通過共享的片內(nèi)存儲(chǔ)器交換信息。選用HPI自舉方式,需要把HINT和INT2引腳連在一起。復(fù)位時(shí),Bootload使HINT置位,從而使 INT2置位。BootloaD讀出中斷標(biāo)志寄存器(IFR)的bit2位后,即能從HPI口進(jìn)行自舉。與別的54X系列一個(gè)很重要的不同是:5402要檢查數(shù)據(jù)存儲(chǔ)器的OX7FH位以決定程序的入口地址,用戶程序也要在復(fù)位完成后才能加載到HPI的RAM中。
5 驅(qū)動(dòng)程序
因?yàn)镻CI2040擴(kuò)展了配置空間,所以,要通過 HPI口實(shí)現(xiàn)與DSP的通信,需要驅(qū)動(dòng)程序。如果直接使用DDK來編寫PCI設(shè)備的驅(qū)動(dòng)程序,需要大量的Windows底層的知識(shí),難度比較大。因此可以使用別的驅(qū)動(dòng)程序的編寫工具,如Vtools和 WinDrive。我們選用了WinDrive 。Jungo公司的WinDrive與其他驅(qū)動(dòng)程序開發(fā)工具的最大不同是它可以在編程者不太了解Windows內(nèi)核的情況下編寫驅(qū)動(dòng)程序。這樣,可以把精力主要放在功能的實(shí)行上,同時(shí)用WinDrive寫成的驅(qū)動(dòng)程序只需作很少的修改就能很方便地適用于各種操作系統(tǒng),如Win dows 9x, Window 2000,Windows NT以及Linux等。編寫過程如下:(1)用WinDrive 的Drive Wiz ard 工具查找所要編寫驅(qū)動(dòng)程序的PCI卡,并用CREATING INF FILE 產(chǎn)生INF 文件,然后添加新硬件;(2)對(duì)PCI卡上的配置寄存器,I/O空間,內(nèi)存范圍,中斷,片內(nèi)寄存器進(jìn)行設(shè)置;(3)生成源代碼,對(duì)它進(jìn)行功能添加,主要是實(shí)現(xiàn)對(duì)DSP 片內(nèi)SRAM的訪問。
評(píng)論