王金戈,秦開(kāi)宇,閻嘯
(電子科技大學(xué) 空天科學(xué)技術(shù)研究院 成都 610054)
模塊化儀器總線技術(shù),從上世紀(jì)60年代推出的GPIB總線,到如今已廣泛使用的VXI和PXI總線技術(shù),隨著桌面PC的PCI總線發(fā)展到PCI-EXPRESS總線,PXI標(biāo)準(zhǔn)也隨之發(fā)展,PXI Express總線就此應(yīng)運(yùn)而生。2005年,PXISA官方組織正式推出的PXI Express的軟硬件標(biāo)準(zhǔn)。通過(guò)在背板使用PCI Express技術(shù),將傳輸帶寬大大提升,同時(shí)保持了和原來(lái)PXI模塊在軟硬件上的兼容性。如此性能的提升,使得PXI Express能夠進(jìn)入到更多以往被專用儀器所統(tǒng)制的一些應(yīng)用領(lǐng)域,如中頻乃至射頻的數(shù)字化儀、每秒高達(dá)幾百幀的圖像采集與存儲(chǔ)、上GHz的數(shù)字化儀和信號(hào)發(fā)生器,數(shù)字通訊協(xié)議的測(cè)試與驗(yàn)證等等。本文的設(shè)計(jì)背景是基于PXIE總線的頻譜分析儀,PXI-E接口采用PEX8311芯片實(shí)現(xiàn),在實(shí)際應(yīng)用中由于需要將DSP作FFT和解調(diào)運(yùn)算處理之后的數(shù)據(jù)傳輸至上位機(jī)軟件顯示,上位機(jī)軟件也會(huì)經(jīng)常向DSP下發(fā)命令、程序或數(shù)據(jù),于是使用在8311本地總線和DSP的HPI口間用FPGA進(jìn)行了橋接設(shè)計(jì),實(shí)現(xiàn)了上位機(jī)軟件對(duì)DSP的高速讀寫(xiě)和程序加載。
由于PXI-E總線是在PCI-E協(xié)議的基礎(chǔ)上,僅僅多了自動(dòng)測(cè)量?jī)x器所特有的星型觸發(fā)總線、鏈狀總線和一些硬件結(jié)構(gòu)規(guī)范。因此,實(shí)現(xiàn)PCI-E總線的方法即可適用于PXI-E總線。目前供選擇的方案主要有兩種:帶有物理層收發(fā)模塊和PXI-E協(xié)議的FPGA實(shí)現(xiàn);橋接芯片方案。
(1)FPGA實(shí) 現(xiàn):如 今,XILINX公 司 的virtex-5或者spartan-6系列的FPGA集成了高速串行收發(fā)器GTP,可以實(shí)現(xiàn)PCI-E物理層的串行收發(fā),并且在購(gòu)買PCI-E的IP核后可以完全以單片F(xiàn)PGA實(shí)現(xiàn)PCIE協(xié)議。
(2)橋接方案:PLX公司的PEX8311芯片可以實(shí)現(xiàn)PCI-EXPRESS到本地總線(Loccal Bus)的橋接,橋接后的邏輯也相對(duì)簡(jiǎn)單。并且比起購(gòu)買XILINX的昂貴IP核來(lái)說(shuō),是一個(gè)低成本的方案。但橋接芯片只能實(shí)現(xiàn)一個(gè)通道,無(wú)法完全發(fā)揮出PXIE高帶寬的優(yōu)勢(shì)。
鑒于第二種方案設(shè)計(jì)成本和難度較低,本文采用了利用PEX8311的橋接方案。圖1給出了硬件實(shí)現(xiàn)結(jié)構(gòu)。
圖1 接口硬件結(jié)構(gòu)
PEX8311是PLX公司一款高性能的PCI-E橋接芯片,用來(lái)實(shí)現(xiàn)PCI-E總線到本地總線的轉(zhuǎn)換,可以單次讀寫(xiě)、連續(xù)讀寫(xiě)或者DMA操作(見(jiàn)圖2)。XC3S1400AN 是XILINX公司的低端FPGA芯片,完成本地總線與HPI總線的橋接。
圖2 PEX8311本地總線DMA寫(xiě)操作
TMS320C 6416的HPI 口是一種數(shù)據(jù)寬度為32bit 的并行端口。通過(guò)HPI口,主機(jī)可以直接對(duì)CPU 的存儲(chǔ)器空間進(jìn)行操作。HPI 口內(nèi)部有3個(gè)寄存器,分別是控制寄存器( HPIC) ,地址寄存器(HPIA) 和數(shù)據(jù)寄存器( HPID) 。這3個(gè)寄存器可以直接被主機(jī)訪問(wèn),主機(jī)每執(zhí)行一次對(duì)CPU 內(nèi)部存儲(chǔ)空間的訪問(wèn)都必須先對(duì)控制寄存器和地址寄存器寫(xiě)入相應(yīng)的值,然后才能對(duì)數(shù)據(jù)寄存器進(jìn)行讀寫(xiě)操作。HPI 口的外部接口是由數(shù)據(jù)總線HD[ 31 :0]以及一部分用于描述和控制HPI 接口的控制信號(hào)組成,主要的控制信號(hào)線有: HCNTL[1:0]:控制HPI 的操作類型;HR/ W:讀/ 寫(xiě)選擇;HRDY:就緒狀態(tài)標(biāo)志;HINT:中斷標(biāo)志,DSP 向主機(jī)提出中斷;HDS1 ,HDS2 ,HCS:數(shù)據(jù)選通輸入,三者配合可用于產(chǎn)生一個(gè)HPI 內(nèi)部選通信號(hào)HSTROBE:HSTROBE = [NOT(HDS1 XOR HDS2) ]OR HCS;
對(duì)于一個(gè)讀寫(xiě)HPI 口的操作,應(yīng)首先使能HCS ,變化HDS1 或HDS2 ,可使HSTROBE 信號(hào)產(chǎn)生一個(gè)下降沿,HPI 口在這個(gè)下降沿采樣控制信號(hào)HCNTL[1:0]和HR/ W,同時(shí)在使能HCS 的同時(shí)扇出HRDY,以使主機(jī)進(jìn)入等待狀態(tài),直到HRDY產(chǎn)生下降沿,表明HPID 已清空,可以接收新的數(shù)據(jù)。此時(shí)HSTROBE 也將產(chǎn)生一個(gè)上升沿,并采樣HD[ 31 : 0]上的數(shù)據(jù)并將其送入HPID。讀時(shí)序如圖3所示。
圖3 讀HPI口時(shí)序圖
對(duì)于通過(guò)HPI接口向TMS320C6416加載程序的具體過(guò)程如下:①設(shè)置Boot mode為HPI方式;② 復(fù)位DSP;③將DSP程序編譯生成的.out文件轉(zhuǎn)換成所需要的文件代碼,加載至DSP對(duì)應(yīng)的存儲(chǔ)空間;④加載完成后主機(jī)向HPIC寄存器的DSPINT位寫(xiě)1,而后DSP便開(kāi)始執(zhí)行程序。
橋接程序主要由FPGA的Verilog代碼配合上層軟件來(lái)完成,本文給出了FPGA程序的設(shè)計(jì)方案和上位機(jī)軟件的大致操作流程。
FPGA中設(shè)計(jì)了兩個(gè)主要的狀態(tài)機(jī),一個(gè)是負(fù)責(zé)操作8311本地總線的讀寫(xiě)時(shí)序狀態(tài)機(jī)(圖4),包括連續(xù)讀寫(xiě)和單次讀寫(xiě);另一個(gè)負(fù)責(zé)操作DSP的HPI口的讀寫(xiě)時(shí)序狀態(tài)機(jī)(圖5),也包括單次讀寫(xiě)和地址自增讀寫(xiě)。上位機(jī)軟件具有3個(gè)不同功能的操作(流程圖見(jiàn)圖6),流程中的數(shù)據(jù)讀寫(xiě)都是基于這兩個(gè)狀態(tài)機(jī)的調(diào)用。其中,上位機(jī)軟件操作完成的第一個(gè)功能是分塊發(fā)送DSP程序至FPGA內(nèi)部block ram,由FPGA將其轉(zhuǎn)發(fā)至DSP內(nèi)部的程序空間,而后FPGA復(fù)位DSP,實(shí)現(xiàn)上層軟件加載DSP程序。第二個(gè)功能是上層軟件收到HPI中斷后,F(xiàn)PGA接受HPI接口的數(shù)據(jù),將其寫(xiě)入FPGA內(nèi)部的FIFO,通過(guò)調(diào)用8311本地總線讀狀態(tài)機(jī)從而完成上層軟件對(duì)DSP的讀操作。第三個(gè)操作是在FPGA接受上層軟件下發(fā)的數(shù)據(jù),經(jīng)8311本地總線將數(shù)據(jù)寫(xiě)入FPGA內(nèi)部的FIFO,再調(diào)用HPI寫(xiě)狀態(tài)機(jī)將FIFO數(shù)據(jù)寫(xiě)入HPI口,從而完成上層對(duì)DSP的寫(xiě)操作。整個(gè)流程均會(huì)使用到這兩個(gè)主狀態(tài)機(jī)進(jìn)行兩端總線的讀寫(xiě)操作,需要通過(guò)不同的上層命令和不同地質(zhì)空間區(qū)分不同功能操作。
圖4 PEX8311本地總線數(shù)據(jù)讀寫(xiě)狀態(tài)機(jī)
圖5 HPI口讀寫(xiě)狀態(tài)機(jī)
圖6 上位機(jī)軟件操作流程圖
因此,為區(qū)分不同的程序功能,在8311的本地總線的地址空間中,人為地做了劃分。地址LA[31:2]=0x400定義為命令寄存器,每次的流程操作上次軟件必須首先寫(xiě)命令寄存器,不同的命令值會(huì)通知FPGA觸發(fā)不同的狀態(tài)機(jī)操作,如兩端總線的讀寫(xiě)操作和DSP復(fù)位操作。地址0x401寄存接下來(lái)需要寫(xiě)入的HPIC的值,地址0x402寄存HPIA的值,地址0x403寄存接下來(lái)的操作需要連續(xù)讀寫(xiě)DSP的數(shù)據(jù)塊大小。地址ox404是上層寫(xiě)DSP的FIFO入口地址,0x405是上層讀DSP的FIFO入口地址。0x0000 ~ 0x03ff留給配置DSP程序的1k的RAM空間,整個(gè)FPGA的程序架構(gòu)見(jiàn)圖7所示。
圖7 FPGA程序架構(gòu)圖
最終,加載了FFT計(jì)算程序的DSP將FFT計(jì)算數(shù)據(jù)經(jīng)本文設(shè)計(jì)的橋接模塊上傳至上層軟件所繪出的譜線截圖見(jiàn)圖8(其中FFT運(yùn)算量為2048點(diǎn),中心頻率為30MHz,分析帶寬為10MHz)??梢?jiàn),設(shè)計(jì)出的橋接模塊實(shí)現(xiàn)了DSP的程序加載運(yùn)行,成功建立起了上位機(jī)軟件經(jīng)PXI-E總線對(duì)DSP的高速數(shù)據(jù)傳輸通道。
圖8 上位機(jī)軟件接收DSP的FFT計(jì)算數(shù)據(jù)所繪譜線圖
本文使用了PEX8311芯片實(shí)現(xiàn)了PXI-E總線到8311本地總線的橋接,再使用FPGA橋接8311本地總線和DSP的HPI總線,設(shè)計(jì)的FPGA程序?qū)崿F(xiàn)了上層軟件對(duì)DSP的程序加載和高速讀寫(xiě)的要求。隨著各種自動(dòng)測(cè)試儀器越來(lái)越多地對(duì)小型化和帶寬提出更高的要求,基于PXI-E總線測(cè)試儀器必將越來(lái)越多地出現(xiàn)在軍用和民用領(lǐng)域中。本設(shè)計(jì)提供的低成本的解決方案和總線橋接思路同樣適用于其他的PXI-E測(cè)試儀器,經(jīng)實(shí)際的項(xiàng)目結(jié)果所驗(yàn)證,能夠以較低成本基本滿足PXI-E測(cè)試儀器小型化,高帶寬的要求。
[1]PXI Express Hardware Specification, PXI System Alliance, 2005.
[2]ExpressLane PEX8311AA PCI Express-to-Generic Local Bus Bridge Data Book, PLX Technology, Dec , 2009.
[3]PEX8311- PCI Express to Generic Local Bus Bridge, PLX Technology, 2005.
[4]TMS320C64x DSP Host Port Interface (HPI) Performance, Texas Instruments, Oct, 2003.
[5]TMS320C6416 FIXED-POINT DIGITAL SIGNAL PROCESSORS, Texas Instruments, 2006.
[6]Implementing the TMS320C64X HPI Boot Process, Texas Instruments, 2004.
[7]Spartan-3AN FPGA Family Data Sheet, Xilinx, Feb, 2007.
[8]卞紅雨.TMS320C6000系列DSP的CPU與外設(shè)[M].北京:清華大學(xué)出版社,2007.