吳 杰
(中國(guó)電子科技集團(tuán)公司第二十研究所,陜西 西安 710068)
DSP在航空、航天、雷達(dá)和通信領(lǐng)域有著廣泛的應(yīng)用,是航空、航天計(jì)算機(jī)和各數(shù)據(jù)處理系統(tǒng)的重要組成部分之一。但DSP在空間環(huán)境中對(duì)單粒子翻轉(zhuǎn)、單粒子功能中斷較敏感?;贔PGA的DSP檢測(cè)系統(tǒng)可在輻射環(huán)境條件下對(duì)DSP器件各功能模塊和電參數(shù)進(jìn)行檢測(cè)。
整套檢測(cè)系統(tǒng)硬件如圖1所示,包括DSP測(cè)試板、安捷倫電源、PC機(jī)以及連接器等。DSP測(cè)試板作為檢測(cè)系統(tǒng)的核心部分,主要完成以下功能:
(1)與PC機(jī)界面通信;
(2)與被測(cè)DSP器件通信;
(3)存儲(chǔ)、檢測(cè)、判決被測(cè)DSP的狀態(tài)。
DSP測(cè)試板分子母板結(jié)構(gòu)具體組成如圖2、圖3所示。
圖1 DSP測(cè)試系統(tǒng)組成
測(cè)試母板的核心是FPGA,選用XILINX公司生產(chǎn)的Virtex-5系列XC5VSX95芯片,主要任務(wù)是DSP接口電路設(shè)計(jì)、網(wǎng)絡(luò)芯片通信接口設(shè)計(jì)、邏輯判斷,以及大量數(shù)據(jù)存儲(chǔ)單元。搭建初步的設(shè)計(jì)模塊,考慮其邏輯資源占用量占器件總資源的70%以下為宜。V5X95所含的Block RAM為8 784 kb,且留有一定測(cè)試余量。用戶可定義的I/O達(dá)640個(gè),可配置320對(duì)LVDS,邏輯資源包括14 720個(gè)Slices,能夠滿足系統(tǒng)設(shè)計(jì)的要求。同時(shí)XC5VSX95分為-12,-11,-10三個(gè)等級(jí),內(nèi)部時(shí)鐘最高可達(dá)500 MHz,450 MHz,400 MHz。等級(jí)越高性能越好,相應(yīng)成本也越高。這里選用-11等級(jí),外部包括A/D,D/A,RS 422,W5100,SRAM等資源,測(cè)試母板的供電電源與子板的相互獨(dú)立。母板和子板通過高密度高速連接器相連。
圖2 DSP測(cè)試板母板組成圖
圖3 測(cè)試平臺(tái)子板設(shè)計(jì)圖
子板主要由4片DSP器件和外圍電路組成,使用浮點(diǎn)DSP SMJ320C6701,最高時(shí)鐘頻率為167 MHz,它采用超長(zhǎng)指令字(VLIW) 體系結(jié)構(gòu),每個(gè)周期可執(zhí)行8條32位寬的指令。C6701片內(nèi)包含64 kB的數(shù)據(jù)存儲(chǔ)器和64 kB的程序存儲(chǔ)器,總計(jì)1 Mbit的片內(nèi)RAM。2個(gè)同步串口,32位的外部存儲(chǔ)器接口,外部存儲(chǔ)器接口可用于SDRAM,RAM,ROM引導(dǎo)等。每個(gè) DSP器件的電源和外圍電路相互獨(dú)立,各DSP電源的接口電壓和內(nèi)核電壓以及模擬電源也單獨(dú)分開。電源由外部電源模塊提供。
DSP器件均支持FLASH加載,遠(yuǎn)程JTAG加載以及HPI加載功能,且能夠支持DSP程序在片外SRAM運(yùn)行。
DSP檢測(cè)板的核心部分為母板上的FPGA,主要完成與PC機(jī)界面通信,與被測(cè)DSP器件通信,存儲(chǔ)、檢測(cè)、判決被測(cè)DSP的狀態(tài)功能。子板主要為被測(cè)DSP器件提供基本的運(yùn)行環(huán)境,主要完成DSP程序的HPI加載、寄存器檢測(cè)、I/O接口檢測(cè)、指令集檢測(cè)、外部中斷檢測(cè)、浮點(diǎn)運(yùn)算檢測(cè)。本文著重介紹母板FPGA設(shè)計(jì)。FPGA處理流程如圖4所示。
圖4 FPGA處理流程圖
本設(shè)計(jì)采用的網(wǎng)絡(luò)通信芯片為W5100。W5100 是一款多功能的單片網(wǎng)絡(luò)接口芯片,內(nèi)部集成有10/100 Mbps以太網(wǎng)控制器,使用W5100 可以實(shí)現(xiàn)沒有操作系統(tǒng)的Internet 連接。W5100 內(nèi)部集成了全硬件的TCP/IP 協(xié)議棧、以太網(wǎng)介質(zhì)傳輸層(MAC)和物理層(PHY)。W5100 內(nèi)部還集成有16 kB 存儲(chǔ)器用于數(shù)據(jù)傳輸。使用W5100 不需要考慮以太網(wǎng)的控制,只需進(jìn)行簡(jiǎn)單的端口(Socket)編程。W5100 提供3 種接口:直接并行總線、間接并行總線和SPI 總線。W5100 與MCU 接口非常簡(jiǎn)單,就像訪問外部存儲(chǔ)器一樣。以太網(wǎng)傳輸框圖如圖5所示。
W5100芯片的特點(diǎn):
(1)支持硬件化TCP/IP 協(xié)議;
(2)內(nèi)嵌10BaseT/100BaseTX 以太網(wǎng)物理層;
(3)支持自動(dòng)通信握手(全雙工和半雙工);
(4)支持4 個(gè)獨(dú)立端口同時(shí)運(yùn)行;
(5)內(nèi)部16 kB 存儲(chǔ)器用于數(shù)據(jù)發(fā)送/接收緩存;
(6)3.3 V 工作電壓,I/O 口可承受5 V 電壓;
(7)80 腳 LQFP 小型封裝。
圖5 以太網(wǎng)傳輸框圖
以太網(wǎng)數(shù)據(jù)傳輸
(1)PC機(jī)->W(wǎng)5100->FPGA過程
PC機(jī)->W(wǎng)5100
PC機(jī)用VC++開發(fā)的Sever軟件發(fā)送數(shù)據(jù)包至W5100,F(xiàn)PGA讀取W5100接收緩存區(qū)的數(shù)據(jù)(W5100去除包頭包尾等信息的數(shù)據(jù))。其中,PC機(jī)作為發(fā)送方,W5100作為接收方,收發(fā)雙方采用TCP/IP協(xié)議。W5100的RECV寄存器作為接收緩存區(qū)數(shù)據(jù)是否被讀取完成的標(biāo)志,讀取完成,W5100可以接收PC機(jī)發(fā)送的新數(shù)據(jù),未讀取完成PC機(jī)處于等待狀態(tài)(此過程由TCP/IP協(xié)議控制)。
W5100->FPGA
W5100接收緩存區(qū)有數(shù)據(jù)時(shí),產(chǎn)生INT#中斷,并將RECV寄存器置1。FPGA檢測(cè)到INT#中斷標(biāo)志后,根據(jù)W5100接收緩存起始地址和數(shù)據(jù)長(zhǎng)度信息寄存器的值,讀取W5100緩存區(qū)數(shù)據(jù),讀取完成后FPGA將RECV寄存器置0。RECV寄存器置為0時(shí),W5100可以接收PC機(jī)發(fā)送的新數(shù)據(jù),覆蓋接收緩存區(qū)。
(2)FPGA->W(wǎng)5100->PC機(jī)
FPGA->W(wǎng)5100
FPAG向W5100起始地址寄存器寫入發(fā)送數(shù)據(jù)起始地址,向發(fā)送數(shù)據(jù)長(zhǎng)度寄存器寫入要發(fā)送的數(shù)據(jù)長(zhǎng)度。FPGA發(fā)送一批數(shù)據(jù)至W5100發(fā)送數(shù)據(jù)緩存區(qū),W5100完成發(fā)送后產(chǎn)生INT#中斷,并且SEND_OK寄存器置1,F(xiàn)PGA檢測(cè)到INT#中斷信號(hào),讀取SEND_OK寄存器值,若為1,則繼續(xù)向W5100發(fā)送一批數(shù)據(jù);若為0,則FPGA處于等待狀態(tài)。
W5100->PC機(jī)
W5100根據(jù)發(fā)送起始地址寄存器和發(fā)送數(shù)據(jù)長(zhǎng)度寄存器向PC機(jī)發(fā)送數(shù)據(jù)(采用TCP/IP協(xié)議),發(fā)送完成后產(chǎn)生中斷并且將SEND_OK寄存器置為1。
錯(cuò)誤檢測(cè)模塊的目的是檢測(cè)DSP內(nèi)部存儲(chǔ)器和各功能模塊。其輸入信號(hào)有:PC機(jī)下行控制信號(hào)及數(shù)據(jù),存儲(chǔ)模塊數(shù)據(jù),通過HPI口輸入的DSP內(nèi)部存儲(chǔ)器上行數(shù)據(jù),功能測(cè)試模塊的上行數(shù)據(jù);輸出信號(hào)有:上傳給PC機(jī)的數(shù)據(jù),HPI口控制及輸出數(shù)據(jù),功能測(cè)試模塊的下行數(shù)據(jù),DSP復(fù)位控制信號(hào)。模塊如圖6所示。
圖6 錯(cuò)誤檢測(cè)模塊
TMS320C6701的HPI接口是一個(gè)16 bit寬的并行端口。主機(jī)(host)對(duì)CPU地址空間的訪問通過DMA控制器實(shí)現(xiàn)。HPI接口的訪問主要通過三個(gè)專用寄存器來實(shí)現(xiàn),它們分別是HPI控制寄存器(HPIC)、HPI地址寄存器(HPIA)和HPI數(shù)據(jù)寄存器(HPID)。由于DSP本身為32位結(jié)構(gòu),因此HPI與CPU之間的數(shù)據(jù)交換是32 bit,但DSP只提供了16 bit的外部接口,因此主機(jī)訪問實(shí)際上是通過兩次連續(xù)的16 bit傳輸組合而成32 bit。
在FPGA中設(shè)計(jì)實(shí)現(xiàn)的HPI接口模塊如圖7所示,其讀寫時(shí)序如圖8、圖9所示。
圖7 HPI接口模塊
圖8 HPI接口讀時(shí)序
圖9 HPI接口寫時(shí)序
為了降低由測(cè)試系統(tǒng)其他不確定因素,在測(cè)試C6701芯片時(shí),其擴(kuò)展的外部存儲(chǔ)器均由FPGA來實(shí)現(xiàn),即EMIF接口電路均與FPGA相連,在FPGA內(nèi)部分別實(shí)現(xiàn)其接口邏輯。這樣不僅便于測(cè)試,還增強(qiáng)了測(cè)試系統(tǒng)的擴(kuò)展性。
在FPGA內(nèi)部可以采用雙端口RAM或者FIFO配合一定的控制邏輯實(shí)現(xiàn),其功能框圖如圖10所示,其讀寫時(shí)序如圖11、圖12所示。
圖10 EMIF接口功能框圖
圖11 EMIF讀操作
圖12 EMIF寫操作
McBSP的結(jié)構(gòu)如圖13所示。McBSP可分為數(shù)據(jù)通道和控制通道兩部分。數(shù)據(jù)發(fā)送引腳(DX)和數(shù)據(jù)接收引腳(DR)分別負(fù)責(zé)數(shù)據(jù)的發(fā)送和接收,發(fā)送時(shí)鐘引腳(CLKX)、接收時(shí)鐘引腳(CLKR)、發(fā)送幀同步引腳(FSX)和接收幀同步引腳(FSR)提供串行時(shí)鐘和控制信號(hào)。CPU和DMA控制器通過外設(shè)總線與McBSP通訊。當(dāng)發(fā)送數(shù)據(jù)時(shí),CPU和DMA將數(shù)據(jù)寫入數(shù)據(jù)發(fā)送寄存器(DXR1,DXR2),接著復(fù)制到發(fā)送移位寄存器(XSR1,XSR2),通過發(fā)送移位寄存器輸出至DX引腳。當(dāng)接收數(shù)據(jù)時(shí),DR引腳接收到的數(shù)據(jù)先移位到接收移位寄存器(RSR1,RSR2),接著復(fù)制到接收緩沖寄存器(RBR1,RBR2),RBR再將數(shù)據(jù)復(fù)制到數(shù)據(jù)接收寄存器(DRR1,DRR2)中,并通過串口事件通知CPU或DMA讀取數(shù)據(jù)。這種多極緩沖方式使得片內(nèi)數(shù)據(jù)通訊和串行數(shù)據(jù)通訊能夠同時(shí)進(jìn)行。
圖13 McBSP結(jié)構(gòu)框圖
C6701內(nèi)部與McBSP配置相關(guān)的特殊功能寄存器主要有:串口控制寄存器(SPCR )、接收控制寄存器(RCR)、發(fā)送控制寄存器(XCR)、采樣率發(fā)生器寄存器(SRGR )、多通道控制寄存器(MCR)、接收通道使能寄存器(RCER)、發(fā)送通道使能寄存器(XCER)、管腳控制寄存器(PCR),見表1所列。
表1 McBSP控制寄存器
FPGA里的McBSP模塊是與DSP的McBSP接口通信的模塊,McBSP模塊能夠通過設(shè)置參數(shù)改變波特率、可設(shè)置校驗(yàn)類型(奇校驗(yàn)、偶校驗(yàn)和無校驗(yàn)),還可設(shè)置endian(最高位在前還是最低位在前)。如圖14所示,rxclkidv是對(duì)clk的分頻系數(shù),對(duì)時(shí)鐘clk分頻后得到的時(shí)鐘頻率是波特率的16倍,這樣做的目的是對(duì)接收到的串口數(shù)據(jù)進(jìn)行多次采樣,取中間的穩(wěn)定值。ver_mod選擇校驗(yàn)類型,當(dāng)輸入‘00’時(shí),傳輸無校驗(yàn);當(dāng)輸入‘01時(shí)’,傳輸選擇奇校驗(yàn);當(dāng)輸入‘10’時(shí),傳輸選擇偶校驗(yàn)。rx為串行數(shù)據(jù)接收口。當(dāng)rxready口輸出一個(gè)高脈沖時(shí),表示rxdat[7:0]輸出一個(gè)有效的8位數(shù)據(jù)。命名以tx開頭的接口表示意義與rx開頭的接口類似,區(qū)別僅在于rx表示接收,tx表示發(fā)送。McBSP如圖14所示。
圖15是對(duì)串口接收數(shù)據(jù)進(jìn)行的仿真,參數(shù)設(shè)置條件為:時(shí)鐘clk頻率為160 MHz,波特率為2 Mbps。rx為串口接收的串行數(shù)據(jù),在rxready出現(xiàn)高脈沖時(shí),接收到并行數(shù)據(jù)rxdat為‘00101001’,串口接收的數(shù)據(jù)正確。
圖14 McBSP模塊
圖15 McBSP接收數(shù)據(jù)仿真
為保證檢測(cè)系統(tǒng)平臺(tái)的可靠性和可測(cè)性,需要設(shè)計(jì)平臺(tái)的自檢功能。包括FPGA和DSP的接口自檢。啟動(dòng)串口接口自檢,F(xiàn)PGA和上位機(jī)之間有2個(gè)RS 422。自檢時(shí),RS 422在邏輯內(nèi)部設(shè)置為外環(huán),直接環(huán)回驗(yàn)證串口是否正常工作。
串口自檢完成后,設(shè)置網(wǎng)口自檢,在FPGA內(nèi)部將接收數(shù)據(jù)直接環(huán)回,測(cè)試網(wǎng)口是否工作正常。
完成與上位機(jī)的接口自檢后,開始進(jìn)行DSP接口自檢。通過HPI接口設(shè)置接口自檢寄存器(DSP程序內(nèi)部需要支持自檢設(shè)置),分別完成EMIF,McBSP0和McBSP01的自檢。
為了提高檢測(cè)系統(tǒng)平臺(tái)的可靠性以及可測(cè)性,需要增加如下設(shè)計(jì):
(1)復(fù)位系統(tǒng)設(shè)計(jì)
復(fù)位系統(tǒng)支持板上按鍵復(fù)位,遠(yuǎn)程復(fù)位以及上位機(jī)下發(fā)指令復(fù)位。FPGA內(nèi)部進(jìn)行復(fù)位時(shí),要判斷DCM/PLL的locked鎖定狀態(tài),對(duì)失鎖計(jì)數(shù)。同時(shí)增加復(fù)位的過濾毛刺功能,防止異常復(fù)位。
(2)測(cè)試寄存器設(shè)計(jì)
FPGA內(nèi)部需要增加測(cè)試寄存器,監(jiān)測(cè)FPGA內(nèi)部可能出現(xiàn)的異常狀態(tài),并且能夠在上位機(jī)發(fā)送查詢指令后,將所有的狀態(tài)數(shù)據(jù)返還給上位機(jī),見表2所列。
表2 測(cè)試寄存器定義
為保證檢測(cè)系統(tǒng)平臺(tái)對(duì)RAM測(cè)試的可靠性和覆蓋率,采用通用的MBIST設(shè)計(jì)與MarchC算法,測(cè)試步驟如下:
地址0→地址N:Write 0x55
地址0→地址N:Read 0x55 – Write 0xAA
地址0→地址N:Read 0xAA – Write 0x55
地址N→地址0:Read 0x55 – Write 0xAA
地址N→地址0:Read 0xAA – Write 0x55
地址N→地址0:Read 0xAA – Write 0x55
地址N→地址0:Read 0x55
0x55和0xAA的二進(jìn)制碼互補(bǔ),且0,1交互,有利于全部覆蓋。
MBIST功能在FPGA內(nèi)部實(shí)現(xiàn),結(jié)構(gòu)如圖16所示。
圖16 MBIST模塊框圖
FPGA內(nèi)部設(shè)計(jì)MBIST控制模塊,實(shí)現(xiàn)地址,數(shù)據(jù),控制信號(hào)產(chǎn)生,參考數(shù)據(jù)存儲(chǔ)在BLOCK RAM中,通過狀態(tài)機(jī)控制對(duì)DSP內(nèi)部RAM的讀寫,將DSP返回?cái)?shù)據(jù)和參考數(shù)據(jù)做比較,輸出比較結(jié)果,上報(bào)給上位機(jī)。
DSP檢測(cè)系統(tǒng)上位機(jī)界面如圖17、圖18所示。通過上位機(jī)界面加載測(cè)試數(shù)據(jù),網(wǎng)口下發(fā)測(cè)試數(shù)據(jù)和控制指令到母板,接收到指令后母板FPGA 通過與DSP的HPI接口完成自檢。通過母板的網(wǎng)口,上位機(jī)可以檢測(cè)到回傳的測(cè)試數(shù)據(jù),并進(jìn)行比對(duì)。試驗(yàn)表明系統(tǒng)測(cè)試功能正常。
圖17 DSP檢測(cè)系統(tǒng)上位機(jī)界面
圖18 測(cè)試數(shù)據(jù)
本文設(shè)計(jì)的DSP檢測(cè)系統(tǒng)利用FPGA接口設(shè)計(jì)靈活、邏輯判斷能力強(qiáng),數(shù)據(jù)存儲(chǔ)單元容量大的特點(diǎn),將各檢測(cè)功能集成到同一芯片上,降低了設(shè)計(jì)難度,縮短了開發(fā)周期,系統(tǒng)可擴(kuò)展性強(qiáng),集成度高,便于攜帶,具備遠(yuǎn)距離操作能力。同時(shí)也為其他檢測(cè)系統(tǒng)的設(shè)計(jì)提供了參考。
[1] VERILOG.數(shù)字系統(tǒng)設(shè)計(jì)教程 [M].北京:北京航空航天大學(xué)出版社,2010:8.
[2] 高級(jí)FPGA設(shè)計(jì)結(jié)構(gòu)、實(shí)現(xiàn)和優(yōu)化 [M]. 北京:機(jī)械工業(yè)出版社,2012.
[3] XILINX.FPGA開發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2010:3.
[4] XC5VSX95 date sheet[Z].美國(guó):賽靈思,2012.
[5] W5100 date sheet[Z].韓國(guó):WIZnet,2008.
[6]唐文龍,田茂,吳志強(qiáng),等.基于SoC FPGA異步通信接口的實(shí)現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2015,5(12):38-39.
[7]倪震明.基于FPGA的多路隔離信號(hào)存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2017,7(5):50-52.
[8]鄭超,王雪梅,倪文波.基于FPGA和DSP的超聲波檢測(cè)系統(tǒng)設(shè)計(jì)[J].中國(guó)測(cè)試,2010,36(6):53-56.