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