摘要:介紹了一種利用USB2.0接口芯片ISP1581并配合FPGA芯片EP1K30T144和DSP芯片TMS320F206實(shí)現(xiàn)無線數(shù)傳接收設(shè)備中數(shù)據(jù)接收存儲的方法。這種方法具有接口簡單、使用方便等特點(diǎn)。
數(shù)據(jù)接收存儲技術(shù)革新是信號采集處理領(lǐng)域內(nèi)的一個重要課題。利用這種技術(shù),可以把信號的實(shí)時采集和精確處理在時間上分為兩個階段,有利于獲得令人更滿意的處理結(jié)果。在無線數(shù)傳接收設(shè)備中應(yīng)用數(shù)據(jù)接收存儲方法時,除了要滿足數(shù)據(jù)傳輸速率和差錯控制方面的要求外,還需要考慮如何使設(shè)備易于攜帶、接口簡單、使用方便。
傳統(tǒng)外設(shè)接口技術(shù)不但數(shù)據(jù)傳輸速率較低,獨(dú)占中斷、I/O地址、DMA通道等計算機(jī)系統(tǒng)關(guān)鍵資源,容易造成資源沖突問題,而且使用時繁雜的安裝配置手續(xù)也給終端用戶帶來了諸多不便。近年來,USB接口技術(shù)迅速發(fā)展,新型計算機(jī)紛紛對其提供支持。USB2.0是USB技術(shù)發(fā)展的最新成果,利用USB2.0接口技術(shù)開發(fā)計算機(jī)外設(shè),不但可以借用其差錯控制機(jī)制[1][6]減輕開發(fā)人員的負(fù)擔(dān)、獲得高速數(shù)據(jù)傳輸能力(480Mb/s),而且可以實(shí)現(xiàn)便捷的機(jī)箱外即插即用特性,方便終端用戶的使用。
1 無線數(shù)傳接設(shè)備總體構(gòu)成
無線數(shù)傳接收設(shè)備是某靶場測量系統(tǒng)的一個重要組成部分。如圖1所示,該設(shè)備由遙測接收機(jī)利用天線接收經(jīng)過調(diào)制的無線電波信號,解調(diào)后形成傳輸速率為4Mb/s的RS-422電平差分串行數(shù)據(jù)流。以幀同步字打頭的有效數(shù)據(jù)幀周期性地出現(xiàn)在這些串行數(shù)據(jù)中。數(shù)據(jù)轉(zhuǎn)存系統(tǒng)從中提取出有效的數(shù)據(jù)幀,并在幀同步字后插入利用GPS接收機(jī)生成的本地時間信息,用于記錄該幀數(shù)據(jù)被接收到的時間,然后送給主機(jī)硬件保存。
在無線數(shù)傳接收設(shè)備中,數(shù)據(jù)轉(zhuǎn)存系統(tǒng)是實(shí)現(xiàn)數(shù)據(jù)接收存儲的關(guān)鍵子系統(tǒng)。下面將詳細(xì)介紹該系統(tǒng)的硬件實(shí)現(xiàn)及工作過程。
2 數(shù)據(jù)轉(zhuǎn)存系統(tǒng)基本構(gòu)成及硬件實(shí)現(xiàn)
數(shù)據(jù)轉(zhuǎn)存系統(tǒng)主要由FPGA模塊、DSP模塊、USB2.0接口芯片構(gòu)成,各個模塊之間的相互關(guān)系如圖2所示示。圖中,4Mb/s的串行數(shù)據(jù)輸入信號SDI已由RS-422差分電平轉(zhuǎn)換為CMOS電平。為突出重點(diǎn),不太重要的信號連線未在圖中繪出。下面分別介紹這幾個模塊的主要功能。
2.1 FPGA模塊實(shí)現(xiàn)及春功能
FPGA模塊在Altera公司ACEX系列的EP1K30TI144-2芯片中實(shí)現(xiàn)。其中主要的功能子模塊有:位同步邏輯、幀同步邏輯、授時時鐘和譯碼邏輯。位同步邏輯主要由數(shù)字鎖相環(huán)構(gòu)成,用于從串行數(shù)據(jù)輸入信號SDI中恢復(fù)出位時鐘信號。幀同步邏輯從位同步邏輯的輸出信號提取幀同步脈沖。兩者為DSP利用其同步串行口接收串行數(shù)據(jù)作好準(zhǔn)備。這樣,利用一對差分信號線就可以接收同步串行數(shù)據(jù),簡化了印制電路板的外部接口。授時時鐘在DSP和GSP接收機(jī)的協(xié)助下生成精度為0.1ms的授時信息。譯碼邏輯用于實(shí)現(xiàn)系統(tǒng)互聯(lián)。
2.2 DSP模塊實(shí)現(xiàn)及其功能
DSP模塊是數(shù)據(jù)轉(zhuǎn)存系統(tǒng)的主控模塊,在T1公司16位定點(diǎn)DSP芯片TMS320F206[4]中實(shí)現(xiàn)。在DSP的外部數(shù)據(jù)空間還配置了32KX16的高速SRAM,可以緩存80余幀數(shù)據(jù),用于提高系統(tǒng)的差錯控制能力。DSP利用同步串行口接收FPGA送來的同步串行數(shù)據(jù),利用異步串口接收GPS接收機(jī)送來時間信息(用于初始化FPGA授時時鐘),利用外部總線接口訪問FPGA授時時鐘、外部SRAM、ISP1581的片內(nèi)寄存器??梢钥闯鯠SP模塊主要用于完成數(shù)據(jù)幀的接收、重組以及轉(zhuǎn)存調(diào)度等任務(wù)。
ISP1581芯片是Philips公司推出的高速USB2.0設(shè)備控制器,實(shí)現(xiàn)了USB2.0/1.1物理層、協(xié)議層,完全符合USB2.0規(guī)范,即支持高速(480Mb/s)操作,又支持全速(12Mb/s)操作。ISP1581沒有內(nèi)嵌微處理器,但對微處理器操作了靈活的接口。在上電時,通過配置BUS——CONF、DAO、MODE1、MODE0、DA1引腳電平可以適應(yīng)絕大多數(shù)的微處理器接口類型。例如,通過BUS_CONF/DA0引腳,總線配置可以選擇普通處理器模塊(Generic Phocessor mode)中分割總線模式(Split Bus Mode);在普通處理器模式下,通過MODE0/DA1引腳可以選擇讀寫選通為8051風(fēng)格或者M(jìn)otorola風(fēng)格。
在數(shù)據(jù)轉(zhuǎn)存系統(tǒng)中,ISP1581用于處理主機(jī)的高速數(shù)據(jù)傳輸。它工作在普通處理器接口模式下,采用8051風(fēng)格的讀寫選通信號,由DSP芯片TMS320F206控制。兩者在選定工作方式下的信號連線如圖3所示,圖中未畫出的信號引腳可以懸空,供電引腳的連接方式在參考資料[2]第46頁有簡明描述。在FPGA譯碼邏輯的作用下,ISP1581的片內(nèi)寄存器被映射在DSP的片外數(shù)據(jù)空間中。DSP通過8位地址線選擇要訪問的寄存器,在讀寫選通信號的控制下,利用16位數(shù)據(jù)線與選定的寄存器交換數(shù)據(jù)。在訪問ISP1581單字節(jié)寄存器時,數(shù)據(jù)總線高字節(jié)內(nèi)容無關(guān)緊要。ISP1581通過中斷引腳INT向DSP報告發(fā)生的總線事件,利用D+、D-引腳完成與主機(jī)的數(shù)據(jù)交換。
3 數(shù)據(jù)轉(zhuǎn)存系統(tǒng)的工作過程
系統(tǒng)加電后,當(dāng)FPGA配置過程結(jié)束時,如果有串行數(shù)據(jù)輸入,位同步邏輯和幀同步邏輯便啟動同步過程。同時,DSP片內(nèi)FLASH中復(fù)位中斷服務(wù)程序c_int0()[4]被立即執(zhí)行,在建立好C語言的工作環(huán)境下,它會調(diào)用主函數(shù)main()。在main()中,需要安排好一系列有先后順序的初始化工作。其中,ISP1581的初始化過程比較復(fù)雜,需要考慮設(shè)備采用的供電方式(這里為自供電[6]方式)、插接主機(jī)和系統(tǒng)上電的先后次序,并需要與USB總線枚舉[1][6]過程相結(jié)合。
在FPGA中的位同步邏輯和幀同步邏輯均進(jìn)入同步狀態(tài),且DSP主控模塊配合主機(jī)完成初始化任務(wù)后,即可啟動數(shù)據(jù)的傳輸過程。下面介紹一下ISP1581的初始化過程及DSP控制的數(shù)據(jù)幀的接收機(jī)轉(zhuǎn)存流程。
3.1 ISP1581的初始化
在初始化過程中,首先需要設(shè)置影響ISP1581自身工作方式的一些寄存器,然后與主機(jī)端USB系統(tǒng)配合進(jìn)行,應(yīng)答來自主機(jī)端的設(shè)備請求。當(dāng)數(shù)據(jù)轉(zhuǎn)存系統(tǒng)板作為USB 2.0設(shè)備通過連接器連到主機(jī)USB根集線器上的一個端口時,主機(jī)便可檢測到這一連接,接著給該端口加電,檢測設(shè)備并激活該端口,向USB設(shè)備發(fā)送復(fù)位信號。設(shè)備收到這一復(fù)位信號后,即進(jìn)入缺省狀態(tài),此后就能夠通過缺省通信通道響應(yīng)主機(jī)端送來的設(shè)備請求。主機(jī)通過描述符請求(GET_DESCRIPTOR)獲得設(shè)備端的詳細(xì)信息,通過設(shè)置地址請求(SET_ADDRESS)設(shè)置設(shè)備地址,通過設(shè)置配置請求(SET_CONFIGURATION)選定合適的設(shè)備配置。在設(shè)備成功響應(yīng)了這些設(shè)備請求之后,就可以與主機(jī)通信了。
在響應(yīng)主機(jī)請求的過程中,DSP需要配置ISP1581的端點(diǎn)以實(shí)現(xiàn)不同類型的傳輸通道。根據(jù)數(shù)據(jù)傳輸速率的要求,除了缺省的控制通道外,系統(tǒng)中實(shí)現(xiàn)了一個批傳輸(bulk)[1]類型的輸入通道。這樣,ISP1581就可以像FIFO一樣方便地從數(shù)據(jù)轉(zhuǎn)存系統(tǒng)向主機(jī)傳輸數(shù)據(jù),而且具有差錯控制能力,簡化了設(shè)備端軟件設(shè)計的復(fù)雜性。
3.2 數(shù)據(jù)幀的接收轉(zhuǎn)存過程
系統(tǒng)正常工作時,需要與主機(jī)端程序相互配合。主要端需要開發(fā)者實(shí)現(xiàn)的程序包括設(shè)備驅(qū)動程序和應(yīng)用程序。在Windows 2000操作系統(tǒng)下,USB設(shè)備驅(qū)動程序?yàn)閃DM模型的驅(qū)動程序,開發(fā)環(huán)境DriverStudio為WDM型驅(qū)動程序提供了框架結(jié)構(gòu),使得驅(qū)動開發(fā)變得非常容易(參見參考文獻(xiàn)[5]第八、九、十章)。驅(qū)動程序接收應(yīng)用程序的請求,利用USB總線驅(qū)動程序(US-BD)和主機(jī)控制器驅(qū)動程序(HCD)通過主機(jī)控制器安排USB總線事務(wù),設(shè)備端則根據(jù)這些事務(wù)調(diào)度相應(yīng)的數(shù)據(jù)幀的傳輸。關(guān)于主機(jī)端口如何安排總線事務(wù)可以查閱參考文獻(xiàn)[1]。以下著重介紹設(shè)備端數(shù)據(jù)的調(diào)度過程。
數(shù)據(jù)幀的接收轉(zhuǎn)存過程主要由DSP負(fù)責(zé),DSP在外部SRAM中建立了一個數(shù)據(jù)幀的隊列,如圖4所示。系統(tǒng)主要工作在中斷驅(qū)動模式下,與同步串行口相關(guān)的中斷服務(wù)程序負(fù)責(zé)建立隊列的尾部,對應(yīng)于ISP1581中斷引腳INT的中斷服務(wù)程序負(fù)責(zé)建立隊列的頭部。
當(dāng)以幀同步字打頭的一幀數(shù)據(jù)以串行位流的形式到來時,F(xiàn)PGA產(chǎn)生的幀同步脈沖可以直接啟動DSP同步串行口接收數(shù)據(jù),該同步脈沖同時以中斷方式通知DSP為一幀數(shù)據(jù)的接收做好準(zhǔn)備。DSP接到通知后,首先檢查外部SRAM中是否有足夠的空間容納一幀數(shù)據(jù)。如果沒有空間,則丟棄當(dāng)前數(shù)據(jù)幀(根據(jù)設(shè)計,這種情況是很少見的);如果有空間,則為當(dāng)前數(shù)據(jù)幀保留足夠的空間。接著在幀起始位置填寫幀步字,讀取授時時鐘的當(dāng)前值并填寫在幀同步字后。這樣,一個新的數(shù)據(jù)幀(圖4中數(shù)據(jù)幀F(xiàn)_N)就建立了,但是并沒有加入到隊列中,而是要等待來自同步串行口的后繼數(shù)據(jù)嵌入該幀中后再加入到隊列中。
同步串行口的接收緩沖區(qū)在接收到若干字(由初始化時的設(shè)置決定)后,會向DSP提出中斷請求。在中斷服務(wù)程序中,DSP讀取接收緩沖區(qū)中的內(nèi)容,并將其填入上述新開辟的幀F(xiàn)_N中。在一幀數(shù)據(jù)接收完畢后,就將該幀添加到隊列的尾部,表示該幀數(shù)據(jù)已經(jīng)準(zhǔn)備好(圖4中數(shù)據(jù)幀F(xiàn)_R),可以通過ISP1581送給主機(jī)硬件保存。
DSP在查詢到隊列中有已經(jīng)準(zhǔn)備好的數(shù)據(jù)幀存在時,就設(shè)置ISP1581的端點(diǎn)索引寄存器(Endpoint Index Register)使其指向初始化時配置的批傳輸輸入端點(diǎn),然后將隊列首幀數(shù)據(jù)通過ISP1581的數(shù)據(jù)端口寄存器(Data Port Register)填寫在端點(diǎn)緩沖區(qū)中。在端點(diǎn)緩沖區(qū)被填滿后,它就自動生效。在不能填滿端點(diǎn)緩沖區(qū)的情況下,可以通過設(shè)置控制功能寄存器(Control Function Register)的VENDP位[2]強(qiáng)制該端點(diǎn)緩沖區(qū)生效。端點(diǎn)緩沖區(qū)生效后,在USB總線上下一IN令牌到來時,該端點(diǎn)緩沖區(qū)中的數(shù)據(jù)就通過USB總線傳輸?shù)街鳈C(jī)中。主機(jī)成功接收到數(shù)據(jù)后,會給ISP1581以ACK應(yīng)答。能夠通過INT引腳報告給DSP,DSP就可以繼續(xù)往端點(diǎn)中填寫該幀其余數(shù)據(jù)。
在隊列首幀數(shù)據(jù)被成功轉(zhuǎn)移到主機(jī)后,DSP就丟棄首幀數(shù)據(jù)。如果隊列在還有數(shù)據(jù)幀,則將次首幀作為首幀,繼續(xù)前述傳輸過程;如果沒有要傳輸?shù)臄?shù)據(jù)幀,則為隊列首幀指針Head_Ptr賦空值(NULL),等待新的數(shù)據(jù)幀的到來。
USB2.0是計算機(jī)外設(shè)接口技術(shù)發(fā)展的最新成功,具有廣闊的應(yīng)用前景。本文介紹了Philips公司USB2.0接口芯片ISP1581在無線數(shù)據(jù)接收設(shè)備中的應(yīng)用。高性能、便攜化的無線數(shù)據(jù)傳接收設(shè)備。其在靶場實(shí)彈試驗(yàn)中受到了用戶的好評。
評論
查看更多