1 引言
DSP+PCI數(shù)字信號處理方案可利用PC的強大功能實現(xiàn)對DSP的操作控制、數(shù)據(jù)分析和操作監(jiān)視等。DSP+PCI方案能充分滿足數(shù)字圖像、語音處理、高速實時數(shù)據(jù)處理等領域的應用,為DSP系統(tǒng)的低成本實現(xiàn)提供了解決方案。
2 TS101S型DSP介紹
本系統(tǒng)采用美國Analog Device公司的
高性能TIGER SHARC 101S(簡稱TS101S)作為主處理器。TS101S處理器劫持32bit和64bit浮點,以及8、16、32和64bit定點處理。它的靜態(tài)超量結構使其每周期能執(zhí)行多達4條指令,進行24個16bit定點運算和6個浮點運行。其內部有3條相互獨立的128bit寬數(shù)據(jù)總線,每條連接3個2Mbit內部存儲塊中的一個,提供4字節(jié)的數(shù)據(jù)、指令、I/O訪問和14.4Gbyte/s的內部存儲帶寬。以300MHz時鐘運行時,其內核指令周期為3.3ns。在發(fā)揮其單指令多數(shù)據(jù)特點后,TS101S每秒可以進行了24億次40bitMAC運算或6億次80bitMAC運算。以300MHz時鐘運行時,完成1024點復數(shù)FFT(基2)僅需32.78μs,1024點輸入50抽頭FIR需91.67μs。TS101S有強大的鏈路口傳輸功能,每個鏈路口傳輸速度達到250Mbyte/s??偟逆溌窋?shù)據(jù)率達1Gbyte/s(4個鏈路口),超過了外部口的傳輸速率(800Mbyte/s)。
3 PCI介紹
PCI(Peripheral Component Interconnect)總線是一種不依附于某個具體處理器的高性能局部總線,因此開發(fā)PCI設備可獨立于處理器,具體由一個橋接電路(PCI橋)實現(xiàn)對這一層的管理,并實現(xiàn)上下之間的接口數(shù)據(jù)傳送。可以把PCI橋描述為實現(xiàn)通用總線與PCI總線的地址映射、協(xié)議轉換、數(shù)據(jù)緩存等功能的邏輯接口。
3.1 PCI橋的實現(xiàn)
開發(fā)者可以根據(jù)PCI總線規(guī)范所定義的電氣特性、時序要求來進行接口設計。一種方式是使用可編程邏輯器件(FPGA/CPLD)根據(jù)實際需要的功能來設計,這種方式的成本低、靈活性高,但需要對PCI總線協(xié)議有充分的掌握,或者需要生產可編程邏輯器件的廠商提供PCI接口功能模塊。由于PCI總線的規(guī)范較復雜,一般用戶都會選擇專用的PCI接口電路,無需詳細理解底層的PCI總線協(xié)議,而只理解到應用層即可。因此,本文介紹的系統(tǒng)采用后一種方案,PCI接口電路采用現(xiàn)在市場上使用較普通的PLX公司的PCI9054。
3.2 PCI9054
PCI9054采用先進的PLX數(shù)據(jù)流水線結構技術,是32位、33MHz的PCI總線主I/O加速器,符合PCI本地總線規(guī)范2.2版,有M、C、J三種模式。針對不同的處理器及局總線特性可選,盡量減少中間邏輯;具有可選的串行E2PROM接口,本地總線時鐘可和PCI時鐘異步。PCI9054內部有6種可編程的FIFO,以實現(xiàn)零等待突發(fā)傳輸及本地總線和PCI總線之間的異步操作,支持主模式、從模式、DMA傳輸方式,功能強大,可應用于適配卡和嵌入式系統(tǒng)。
4 DSP+PCI應用實例
DSP+PCI數(shù)字信號處理系統(tǒng)的組成如圖1所示。模塊信號先輸入模/數(shù)轉換器,然后經過由CPLD鎖存數(shù)據(jù)到DSP1,經鏈路口到DSP2,數(shù)據(jù)處理完后再通過PCI9054把數(shù)據(jù)傳到PC。此外CPLD還作為PCI9054與TS101S的接口邏輯轉換。采用PCI9054與單個TS101S之間放置雙口RAM作為緩存的接口方式。DSP采用EPROM加載方案。
本系統(tǒng)的特點是以盡量簡單的方式來實現(xiàn)系統(tǒng)功能,因此采用了DSP間鏈路的口互連方式,這樣一來,每對鏈路口互連僅需10條信號線,而采用總線互連方式時需超過100條信號線,可大大簡化PCB板的復雜度。二個DSP間保留2個鏈路通道,總數(shù)據(jù)速率可達500Mbyte/s。路口互連是ADSP系統(tǒng)的特有功能,也是ADSP處理器能以低成本組成多片高性能信號處理機的主要原因。
4.1 TS101S與PCI9054的接口
由于TS101S沒有專門的PCI接口,而PCI9054也僅在M模式下才能實現(xiàn)與MPC850或Power QUICC等Motrola電路的無縫連接,因此,T
S101S與PCI9054之間需要可編程邏輯器件進行邏輯轉換。出于對研制周期的考慮,采用一種較為簡便的通信方式:在DSP與PCI橋間插入一個雙口RAM,雙口RAM一端的地址數(shù)據(jù)線接ISI101S,另一端的地址數(shù)據(jù)線接PCI9054。通過雙口RAM轉換數(shù)據(jù),并作為公共訪問緩沖區(qū)。這樣,PCI橋與DSP之間的訪問成為間接,可以大大削彈對PCI的時序要求,DSP與PCI之間只需少量的信號通過CPLD來實現(xiàn)邏輯轉換,而無需總線仲裁,這種方式的時序簡單,控制信號較少,DSP與CPLD編程簡單,應用更為方便。雙口RAM的型號為IDT70261,容量為16k×16bit。
PCI9054的工作方式為從模式,驅動方為PC,數(shù)字信號處理機作為LOCAL端的主機,中間由公用的雙口RAM進行讀寫操作。在時序上,只需幾個簡單的控制信號進行握手即可實現(xiàn)雙向數(shù)據(jù)傳輸。由PC主動發(fā)出讀寫命令,可根據(jù)需要實現(xiàn)單字節(jié)讀寫,在大多數(shù)系統(tǒng)中,這種方式已經滿足要求。具體的接口電路如圖2所示。
PIC9054局部總線側的信號功能如下所述。
LHOLD:總線請求信號,由PCI9054驅動,高電平有效,有效時表明其正在使用本地總線。
LHOLDA:總線請求應答,由LOCAL端設備驅動,在LHOLD有效后一個周期有效,直至LHOLD無效后才無效,以向PCI9054表明LOCAL端未占用總線。
ADS:地址閾門信號,低電平有效,表明一個總線訪問周期的開始,第一個時鐘有效,持續(xù)一個LCLK,此后地址線有效。
USERo:用戶輸出信號,由PCI9054驅動,引入CPLD,作為DSP的外部中斷請求。
USERi:用戶輸入信號,由外部設備驅動,PCI9054可查詢到外部設備發(fā)出的信號。
LW/R:讀寫信號,由PCI9054驅動。
READY:從模式下為輸入信號,當一個訪問周期結束時,LOCAL端的設備要向PCI9054發(fā)出READY信號,表明完成本次訪問,可開始下一輪訪問。
4.2 系統(tǒng)工作方式
由于本系統(tǒng)采用RAM緩沖方式,因此PCI9054和DSP間只需握手信號即可。通過DSP的外部中斷IRQ和標志引腳FLAG,以及PCI9054的用戶輸入/輸出USERi/USERo相互配合實現(xiàn)握手,可實現(xiàn)基本的單字節(jié)讀寫,如果需要更復雜的功能,可以加上控制字來實現(xiàn)。地址映射是雙口RAM的數(shù)據(jù)寬度為16位,PCI9054地址的LA1-LA14分別接RAM的ADD0-ADD13,PCI映射空間的偏移地址為0-7FFEH,偶地址有效。LA15引入CPLD后可作為雙口RAM的片選信號。
建立通訊的過程是PCI9054發(fā)送LHOLD信號,CPLD返回LHOLDA信號;PCI9054發(fā)出ADS信號,表示一次讀寫操作開始,此時CPLD鎖存讀寫信號LW/R,并轉換為RAM的R/W或OE信號;CPLD給PCI9054發(fā)送READY無效信號,使其保持等待狀態(tài)。
信號握手的實現(xiàn)過程是:
PCI9054向RAM寫數(shù)據(jù)→PCI9054通過USER0發(fā)出握手請求到CPLD→CPLD向DSP的IRQ發(fā)出中斷信號→DSP響應中斷→DSP讀RAM數(shù)據(jù)。DSP向RAM寫數(shù)據(jù)→DSP通過FLAG發(fā)出握手請求到CPLD→CPLD向PCI9054的USERi發(fā)出中斷信號→PCI9054查詢到中斷→PCI9054或RAM數(shù)據(jù)。時序如圖3所示。
CPLD的程序如下:
Library IEEE;
Use IEEE.STD_LOGIC_1164.all;
Use IEEE.STD_LOGIC_unsigned.all;
Use IEEE.std_logic_arith.all;
ENTITY PCI IS
PORT(
ADS:IN STD_LOGIC;
LCLK:IN STD_LOGI
C;
LWR:IN STD_LOGIC;
LHOLD:IN STD_LOGIC;
LHOLDA:OUT STD_LOGIC;
READY:OUT STD_LOGIC;
OE:OUT STD_LOGIC;
RW:OUT STD_LOGIC);
END PCI;
ARCHITECTURE PCI_arch OF PCI IS
SIGNAL signal_0:STD_LOGIC;
BEGIN
PROCESS(LCLK)
BEGIN
IF LCLK'EVENT AND LCLK='1'THEN
IF LHOLD='1'THEN
IF ADS='0'THEN
Signal_0<='1';
ELSIF ADS='1'THEN
Signal_0<='0';
END IF;
END IF;
END IF;
IF LCLK'EVENT AND LCLK='1'THEN
IF LHOLD='1'THEN
IF LWR='0'THEN
OE<='0';
RW<='1';
ELSIF LWR='1'THEN
OE<='1';
RW<='0';
END IF;
END IF; END IF;
IF LCLK'EVENT AND LCLK='0'THEN
IF LHOLD='1'THEN
IF signal_0='1'THEN
READY<='0';
ELSIF signal_0='0'THEN
READY<='1';
END IF;
END IF;
END IF;
END PROCESS;
PROCESS(LCLK,LHOLD)
BEGIN
IF LCLK'EVENT AND LCLK='0'THEN
IF LHOLD='1'THEN
LHOLDA<='1';
ELSIF LHOLD='0'THEN
LHOLDA<='0';
END IF;
END IF;
END PROCESS;
END PCI_arch;
5 結束語
本文介紹的DSP與PCI總線的接 接方案靈活簡單,減小了布板的復雜度,簡化了PCI總線要求的時序,縮短了開發(fā)周期。采用該方案設計的數(shù)據(jù)處理系統(tǒng)工作穩(wěn)定,已應用在低頻信號檢測領域中。