基于DSP與PC機(jī)的PCI總線高速數(shù)據(jù)傳輸
TMS320C6713是TI公司在TMS320C6711的基礎(chǔ)上推出的C6000系列新一代浮點(diǎn)DSP芯片,它是目前為止C6000系列DSP芯片中性能最高的一種。TMS320C6713可在255MHz的時(shí)鐘頻率下實(shí)現(xiàn)1800MIPS/1350MFLOPS的定點(diǎn)和浮點(diǎn)運(yùn)算,因而可極大地滿足通信、雷達(dá)、數(shù)字電視等高科技領(lǐng)域?qū)π盘?hào)處理實(shí)時(shí)性的要求。同時(shí)其主機(jī)口(HPI)可靈活地和PCI總線控制器相連接。而PC機(jī)則可通過PCI總線控制器直接訪問TMS320C6713的存儲(chǔ)空間和外圍設(shè)備,從而實(shí)現(xiàn)PC機(jī)與TMS320C6713之間的高速數(shù)據(jù)傳輸。
在TMS320C6713 DSP與PC機(jī)實(shí)現(xiàn)高速數(shù)據(jù)傳輸?shù)姆桨钢?,可選用PLX公司的PCI9052作為兩者之間的接口;同時(shí)選用PLX公司的NM93CS46作為加載PCI9052配置信息的串行EEPROM;而用TI公司的SN74CBTD3384作為 PCI9052與TMS320C6713HPI之間的電平轉(zhuǎn)換芯片。
1 TMS320C6713的HPI簡介
1.1 TMS320C6713 HPI的接口信號(hào)
TMS320C6713的HPI是一個(gè)16位寬的并行端口。主機(jī)(上位機(jī))掌管著該端口的主控權(quán),可通過HPI直接訪問TMS320C6713的存儲(chǔ)空間和外圍設(shè)備。表1給出了TMS320C6713HPI接口信號(hào)的基本特征。下面對它們的具體工作方式進(jìn)行說明:
HD[15:0]:可以用作數(shù)據(jù)和地址的共用總線,通過HD[15:0]傳送的數(shù)據(jù)包括控制寄存器的設(shè)置值、初始化的訪問地址以及要傳輸?shù)臄?shù)據(jù)。
HCNTL[1:0]:用于控制當(dāng)前訪問的是HPI的哪一個(gè)寄存器,該信號(hào)同時(shí)還提供了一個(gè)對HPI數(shù)據(jù)寄存器(HPID)進(jìn)行地址自增的訪問方式。在該方式下,主機(jī)會(huì)連續(xù)地訪問一個(gè)線性存儲(chǔ)區(qū)域,而無需反復(fù)向HPIA寫入需要的地址。表2給出了HCNTL[1:0]控制信號(hào)的功能。
HHWIL信號(hào):用于表明并區(qū)分HD[15:0]上傳輸?shù)氖牵常参粩?shù)據(jù)中的高16位還是低16位。由于TMS320C6713芯片結(jié)構(gòu)決定了它與主機(jī)間所有的數(shù)據(jù)交換都是32位,而HPI端口為16位,所以每次數(shù)據(jù)訪問都需要進(jìn)行兩次存取,而由HPI自動(dòng)將HD[15:0]上連續(xù)的兩個(gè)16位數(shù)據(jù)合成32位,當(dāng)然,也可以用其進(jìn)行反向分解。
HAS信號(hào):用于復(fù)用地址數(shù)據(jù)總線的主機(jī)。它可使HCNTL、HHWIL和HR/W信號(hào)在一個(gè)存取周期中快速地實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換。對于地址數(shù)據(jù)復(fù)用的總線來說,也可以為數(shù)據(jù)/地址的切換留出更多的時(shí)間。
HCS、HDS1和HDS2信號(hào):這三種信號(hào)可在片內(nèi)組合為一個(gè)低有效的HSTROBE信號(hào),如圖1所示。其作用是,在讀取時(shí),在HSTROBE信號(hào)的下降沿鎖存輸入的HPI控制信號(hào),包括HHWIL、HR/W和HC-NTL[1:0];而在寫入時(shí),其下降沿和讀取時(shí)作用相同,其上升沿則鎖存寫入的數(shù)據(jù)。
HRDY信號(hào):用于表明HPI是否已準(zhǔn)備好傳輸數(shù)據(jù),其作用是在接口時(shí)序上插入等待狀態(tài)。如果前一次HPI的訪問尚未完成,那么當(dāng)前訪問的第一個(gè)半字的存取需要等待,此時(shí),HPI會(huì)置HRDY信號(hào)為高。
表1 HPI接口信號(hào)描述
信 號(hào) 管 腳 號(hào) 管 腳 數(shù) 信 號(hào) 功 能
HD[15:1] 從低到高依次為147、152、155、154、156、159、161、164、165、166、167、168、172、173、174 16 數(shù)據(jù)/地址總線
HCNTL[1:0] 從低到高依次是146、144 2 HPI訪問類型控制
HHWIL 139 1 確認(rèn)半字(16位)輸入
HAS 135 1 對復(fù)用地址數(shù)據(jù)總線的主機(jī)區(qū)分地址和數(shù)據(jù)
HR/W 143 1 讀/寫選擇
HCS 145 1 輸入數(shù)據(jù)選通
HDS1/HDS2 從低到高依次是152、151 2 輸入數(shù)據(jù)選通
HRDY 140 1 訪問HPI狀態(tài)準(zhǔn)備好
HINT 139 1 向主機(jī)發(fā)出的中斷信號(hào)
表2 HCNTL[1:0]控制信號(hào)的功能
HCNTL1 HCNTL0 功 能
0 0 主機(jī)可以對HPI的控制寄存器HPIC進(jìn)行讀寫
0 1 主機(jī)可以對HPI地址寄存器HPIA的進(jìn)行讀寫
1 0 主機(jī)可以對HPID的數(shù)據(jù)寄存器進(jìn)行讀寫操作,此時(shí)HPIA采用以字為單位的地址自增方式
1 1 主機(jī)可以對HPID的數(shù)據(jù)寄存器進(jìn)行讀寫操作,但此時(shí)HPIA不受影響
1.2 TMS320C6713 HPI的控制寄存器
在TMS320C6713 HPI中,可利用三個(gè)寄存器來完成主設(shè)備和CPU的通信,它們是HPI數(shù)據(jù)寄存器(HPID)、HPI地址寄存器(HPIA)和HPI控制寄存器(HPIC)。主機(jī)可對這三個(gè)寄存器進(jìn)行讀寫,而CPU只能對HPIC進(jìn)行訪問。HPID中存放的是主機(jī)從存儲(chǔ)空間中讀取的數(shù)據(jù),或者是主機(jī)向TMS320C6713的存儲(chǔ)空間中寫入的數(shù)據(jù)。HPIA中存放的是主機(jī)訪問TMS320C6713存儲(chǔ)空間的地址,其最低兩位固定為零。HPIC中存放的是TMS320C6713的控制信息,其高16位和低16位內(nèi)容相同。
主機(jī)對HPI進(jìn)行訪問的次序?yàn)椋撼跏蓟疕PIC、初始化HPIA、從HPID寄存器中讀取或向其寫入數(shù)據(jù)。在初始化HPIC時(shí),HWOB位的設(shè)置是關(guān)鍵,它決定著高16位與低16位的傳輸次序。
2 PCI9052與TMS320C6713HPI的接口
PCI9052是PLX公司繼PCI9050之后推出的用于低成本適配器的總線目標(biāo)接口芯片。它支持PCI2.1協(xié)議規(guī)范,在33MHz的總線時(shí)鐘頻率下,其峰值傳輸速度可達(dá)132MB/s,因而可大大改善數(shù)據(jù)傳輸中的瓶頸問題。同時(shí)它還具有方便靈活的開發(fā)特點(diǎn),正是這些特點(diǎn)使其在PCI從模式接口卡的設(shè)計(jì)中得到了廣泛的應(yīng)用。
表3給出了PCI9052與TMS320C6713HPI接口信號(hào)的基本特征。下面是對它們具體工作方式的一些說明:
LAD[31:0]:利用該信號(hào)可通過設(shè)置LASIBRD局部地址空間總線區(qū)域描述寄存器的總線寬度位來調(diào)整總線寬度,當(dāng)LASIBRD[23:22]=00時(shí),采用LAD[7:0]8位寬度,當(dāng)LASIBRD[23:22]=01時(shí),采用LAD[15:0](16位),當(dāng)LASIBRD[23:22]=10時(shí),采用LAD[31:0](32位)。
LBE[3:0]字節(jié)使能信號(hào)是在總線寬度的基礎(chǔ)上編碼的。對于32位總線,LBE[3:0]表示哪一個(gè)字節(jié)被選中:LBE0對應(yīng)[7:0],LBE1對應(yīng)[15:8],LBE2對應(yīng)[23:16],LBE3對應(yīng)[31:24];而對于16位總線,LBE0對應(yīng)[7:0],LBE1對應(yīng)地址的第1位,LBE2不用,LBE3對應(yīng)[15:8];對于8位總線,LBE0對應(yīng)地址的第0位,LBE1對應(yīng)地址的第1位,LBE2和LBE3不用。
CS1和CS2分別帶有與之對應(yīng)的片選基地址寄存器(CSIBASE)。CSIBASE?0?為片選使能位,其中CSIBASE[27:1]為片選空間位。從片選空間位的第1位向第27位掃描時(shí),遇到第1個(gè)“1”即決定了片選空間的大小,其余位則為片選空間的基地址。
LINT1和LINT2可通過中斷控制/狀態(tài)寄存器INCSR的中斷使能位INCSR[6]進(jìn)行使能,同時(shí)可設(shè)置其它相關(guān)信息。
表3 PCI9052與TMS320C6713的接口信號(hào)描述
信 號(hào) 管 腳 號(hào) 管腳數(shù) 信 號(hào) 功 能
LAD[31:0] 從低到高依次為91、90、89、88、87、86、85、84、83、82、79、78、77、76、75、74、73、72、71、70、69、62、61、60、59、58、57、56、55、54、53、52 32 數(shù)據(jù)總線
LW/R 127 1 為“1”時(shí)寫,為“0”時(shí)讀
LA[27:1] 從低到高依次是92、93、94、95、96、97、98、100、101、102、105、106、107、108、109、110、111、112、113、114、115、116、117、118、119、122 27 地址總線,傳輸28位線性地址的高26位
LBE[3:0] 從低到高依次是46、47、48、49 4 字節(jié)使能信號(hào),表示當(dāng)前總線傳輸中哪一個(gè)字節(jié)被選中
LRDY 128 1 在局部總線讀數(shù)據(jù)或可接受寫數(shù)據(jù)
ADS 123 1 表明可用地址和一次新的總線存取的起始
CS1、CS2 130、131 2 片選信號(hào)
RD 126 1 通用寫
WR 125 1 通用讀
LINT1,LINT2 137、136 2 局部中斷輸入
3 與 PC的高速數(shù)據(jù)傳輸
TMS320C6713HPI與PCI9052的具體連線如圖2所示。
實(shí)際上,在具體電路設(shè)計(jì)時(shí),整個(gè)方案的實(shí)現(xiàn)除了需要TMS320C6713和PCI9052外,還需要有SN74CBTD3384和NM93CS46。由于TMS320C6713的I/O是在3.3V電壓下工作,而PCI9052在5V電壓下工作,所以TMS320C6713與PCI9052之間必須采用SN74CBTD3384進(jìn)行電平轉(zhuǎn)換。SN74CBTD3384是TI公司生產(chǎn)的10位總線轉(zhuǎn)換器,它的輸入、輸出引腳一一對應(yīng),并分別排列在芯片的兩側(cè)封裝。圖2中共選用了三片SN74CBTD3384。NM93CS46是PLX公司生產(chǎn)的串行EEPROM存儲(chǔ)器,用于加載PCI9052配置信息。其中按一定順序存放著設(shè)備號(hào)(DID)、供應(yīng)商代號(hào)(VID)、子設(shè)備號(hào)(SDID)、子供應(yīng)商代號(hào)(SVID)、PCI總線與局部總線之間的地址空間映射關(guān)系、片選地址、控制位、狀態(tài)位及其它雜項(xiàng)配置等。上電時(shí),PCI總線的RST信號(hào)有效,同時(shí)PCI9052輸出局部復(fù)位信號(hào)LRESET,并檢查NM93CS46是否有效。若有效,且第一個(gè)16位字不是FFFFh,那么PCI9050將根據(jù)串行EEPROM的值來設(shè)置內(nèi)部寄存器,否則采用默認(rèn)值。
考慮到TMS320C6713HPI與PCI9052間的時(shí)序配合問題,通常在連線過程中,還必須注意下列幾個(gè)問題:
(1)由于PC機(jī)中數(shù)據(jù)與地址總線是復(fù)用的,所以PCI9052的MODE引腳應(yīng)接地,而PCI9052中局部數(shù)據(jù)與地址總線是非復(fù)用的,所以TMS320C6713的HAS引腳應(yīng)接高電平。
(2)由于 TMS320C6713的HR/W信號(hào)與PCI9052的W/ R信號(hào)極性相反,因此必須通過非門進(jìn)行連接。
(3)由于TMS320C6713與PCI9052分別工作在不同的時(shí)鐘頻率下,所以TMS320C6713的HRDY信號(hào)輸出必須通過D觸發(fā)器的同步后才能送入邏輯電路,以供PCI9052的LRDY信號(hào)使用。
(4)LRDY信號(hào)的邏輯表達(dá)式為:LRDY=RD.WR+(CS1+ADS+HRDY),因此,只有RD或WR有效,且CS、ADS、HRDY也有效時(shí),LRDY才能有效。
另外,要保證TMS320C6713 HPI與PCI9052的穩(wěn)定協(xié)調(diào)工作,除了要設(shè)計(jì)合理的硬件電路外?還必須對PCI9052的內(nèi)部寄存器進(jìn)行準(zhǔn)確配置。關(guān)于PCI9052內(nèi)部寄存器的具體配置方法,可以參考PLX公司的用戶手冊,這里不再贅述。
筆者已將該方案應(yīng)用于某電力系統(tǒng)精確故障定位及錄波裝置中。其中,由TMS320C6713 DSP芯片構(gòu)成的高速數(shù)據(jù)采集卡用來控制電力系統(tǒng)中各電參數(shù)的采集、存儲(chǔ)與故障判斷。當(dāng)其HPI被設(shè)置為帶地址自增的讀方式時(shí),可在一次故障記錄結(jié)束后,由PC機(jī)將存儲(chǔ)在TMS320C6713外擴(kuò)SDRAM中的大量數(shù)據(jù)一次性讀入。讀入的數(shù)據(jù)可用來計(jì)算故障發(fā)生的精確位置,分析系統(tǒng)中各電參數(shù)的變化情況,同時(shí)記錄各繼電保護(hù)裝置的動(dòng)作情況。
4 結(jié)束語
該方案不僅有效地解決了TMS320C6713 DSP芯片與PC機(jī)間數(shù)據(jù)傳輸?shù)钠款i問題,而且簡化了硬件設(shè)計(jì)。同時(shí)由于它支持即插即用技術(shù)。因此,由DSP構(gòu)成的高速數(shù)據(jù)采集卡具有良好的可移植性。