劉 洋,崔迎煒,韓曉紅
(1.沈陽(yáng)航空航天大學(xué) 電子信息工程學(xué)院,遼寧 沈陽(yáng) 110136;2.北京方天長(zhǎng)久科技有限公司 北京 100084)
近年來(lái),隨著工業(yè)控制技術(shù)的發(fā)展,在工業(yè)控制領(lǐng)域中,對(duì)控制系統(tǒng)的功能、靈活性和數(shù)據(jù)處理能力提出了更高的需求,本文從實(shí)際工程應(yīng)用出發(fā),研究并實(shí)現(xiàn)了一種基于CPCI總線(xiàn)的一體化可配置數(shù)據(jù)處理系統(tǒng)。
本設(shè)計(jì)利用可配置的現(xiàn)場(chǎng)可編程門(mén)陣列[1](FPGA)與具有高可靠性、高密度性的CPCI總線(xiàn)相結(jié)合的方法,將眾多數(shù)據(jù)處理功能集成在同一個(gè)嵌入式系統(tǒng)板卡上,實(shí)現(xiàn)了系統(tǒng)的一體化、小型化。
本系統(tǒng)主要由上位機(jī)管理子系統(tǒng)、遠(yuǎn)程監(jiān)控子系統(tǒng)和數(shù)據(jù)處理子系統(tǒng)組成,總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖Fig.1 Structure diagram of the entire system
上位機(jī)管理系統(tǒng)主要用于顯示系統(tǒng)工作狀態(tài)并提供人機(jī)交互界面。遠(yuǎn)程監(jiān)控系統(tǒng)通過(guò)光纖連接到距離系統(tǒng)1 km以外的位置,實(shí)現(xiàn)系統(tǒng)的遠(yuǎn)程監(jiān)控。數(shù)據(jù)處理子系統(tǒng)包括CPCI-6020單板計(jì)算機(jī)和FTC-9110數(shù)據(jù)處理單板[2]兩部分,CPCI-6020單板計(jì)算機(jī)用于解釋上位機(jī)發(fā)送的命令并對(duì)數(shù)據(jù)處理中心進(jìn)行控制。FTC-9110數(shù)據(jù)處理單板是數(shù)據(jù)處理的核心部分,也是文中介紹的重點(diǎn),其整體實(shí)現(xiàn)結(jié)構(gòu)如圖2所示。
FTC-9110數(shù)據(jù)處理中心以FPGA為硬件處理核心[3],通過(guò)內(nèi)部構(gòu)建的ADC控制模塊、DAC控制模塊、FLASH模塊、SDRAM存儲(chǔ)模塊、光纖通信模塊、PCI總線(xiàn)模塊實(shí)現(xiàn)對(duì)外圍設(shè)計(jì)的A/D數(shù)據(jù)采集電路、D/A數(shù)據(jù)輸出電路、FLASH存儲(chǔ)電路、SDRAM數(shù)據(jù)存儲(chǔ)電路、光纖通信電路以及CPCI總線(xiàn)接口電路的控制,通過(guò)與單板計(jì)算機(jī)的靈活配合,實(shí)現(xiàn)對(duì)數(shù)據(jù)的實(shí)時(shí)處理、高速傳輸。
系統(tǒng)的數(shù)據(jù)處理主要以FTC-9110為中心,利用單板計(jì)算機(jī)對(duì)FPGA內(nèi)部構(gòu)建的各個(gè)模塊的靈活控制,實(shí)現(xiàn)數(shù)據(jù)的處理,其數(shù)據(jù)處理流程如下:
1)利用ADC芯片前端設(shè)計(jì)的信號(hào)調(diào)理電路,將輸入的單端模擬信號(hào)轉(zhuǎn)換為差分信號(hào)送入芯片的差分輸入端。
圖2 整體實(shí)現(xiàn)結(jié)構(gòu)圖Fig.2 Structure diagram of the whole realization
2)ADC芯片對(duì)輸入的信號(hào)進(jìn)行采樣,并將采樣所得數(shù)字信號(hào)傳送至FFT算法模塊。
3)利用FFT算法模塊[4]對(duì)采集數(shù)據(jù)進(jìn)行頻域分析,分析數(shù)據(jù)的結(jié)果傳送至FIR濾波模塊作為濾波輸入信號(hào),濾波后輸出數(shù)據(jù)傳送至光纖通信模塊。
4)光纖通信模塊通過(guò)高速并串轉(zhuǎn)換模塊對(duì)濾波輸出數(shù)據(jù)進(jìn)行8B/10B編碼,將16位的數(shù)據(jù)轉(zhuǎn)換為20位的串行數(shù)據(jù),輸出速率最高可達(dá)1.5 Gbps,然后該高速串行數(shù)據(jù)進(jìn)入光電轉(zhuǎn)換模塊,傳送至遠(yuǎn)程監(jiān)控系統(tǒng)。
5)單板計(jì)算機(jī)控制PCI9656工作在DMA傳輸模式,通過(guò)PCI總線(xiàn)模塊和SDRAM存儲(chǔ)模塊將DAC輸入數(shù)據(jù)寫(xiě)入SDRAM芯片。
6)讀取SDRAM芯片數(shù)據(jù)傳送至DAC控制模塊,DAC芯片對(duì)輸入數(shù)據(jù)進(jìn)行數(shù)模轉(zhuǎn)換,并通過(guò)后端設(shè)計(jì)的調(diào)理電路,使信號(hào)最終以電壓形式輸出。
硬件設(shè)計(jì)將重點(diǎn)介紹DAC電路及控制模塊、PCI接口控制模塊、光纖通信電路及控制模塊的設(shè)計(jì)。
DAC電路由D/A轉(zhuǎn)換電路和信號(hào)調(diào)理電路兩部分組成。D/A轉(zhuǎn)換電路采用了ADI公司的電流輸出型芯片AD9717[5],在芯片輸出后端設(shè)計(jì)的調(diào)理電路,將電流輸出轉(zhuǎn)換為電壓信號(hào)輸出。
FPGA通過(guò)SPI接口對(duì)DAC內(nèi)部寄存器進(jìn)行配置,控制其工作方式。為了方便對(duì)內(nèi)部寄存器配置,F(xiàn)PGA內(nèi)部設(shè)計(jì)了相應(yīng)的寄存器,上位機(jī)可以通過(guò)對(duì)相應(yīng)的寄存器設(shè)置進(jìn)而改變內(nèi)部寄存器的值。
SPI接口由串行時(shí)鐘 (SCLK)、 串行數(shù)據(jù)輸入/輸出(SDIO)、芯片選擇(CSB)3個(gè)配置引腳組成,配置時(shí)序如圖3所示。
圖3 SPI接口配置時(shí)序圖Fig.3 SPIinterface configuration timing diagram
SPI接口配置時(shí)序由指令周期和數(shù)據(jù)周期兩部分組成,發(fā)送的前8個(gè)數(shù)據(jù) (R/W、N1N0、A4-A0) 為指令周期,R/W為數(shù)據(jù)讀寫(xiě)控制位,N1N0為數(shù)據(jù)字節(jié)個(gè)數(shù)控制位,A4-A0為數(shù)據(jù)地址控制位。指令周期發(fā)送結(jié)束后是數(shù)據(jù)周期,數(shù)據(jù)方向由R/W決定,數(shù)據(jù)量由N1N0決定,寫(xiě)數(shù)據(jù)在SCLK上升沿有效,讀數(shù)據(jù)在SCLK下降沿有效。本模塊設(shè)計(jì)的關(guān)鍵代碼如下:
always@ (ADDR or DATA or STATE)begin
case(STATE)
IDLE:begin
//R/W,N1N0,ADDRESS, DATA
DATA_REG<={1'b0,2'b0,ADDR,DATA};
CS <=1'b1;
SCLK <=1'b0;
SDO <=1'b0;
CNT <=4'b0;
STATE <=S1; end
S1:begin
CS <=1'b0;
SCLK<=1'b0;
SDO <=DATA_REG[15];
STATE<=S2; end
S2:begin
if(CNT<=4'd15) begin
SCLK <=1'b1;
DATA_REG<=DATA_REG<<1;
CNT <=CNT+1'b1;
STATE <=S1;end
else begin
CS <=1'b1;
STATE <=IDLE; end
end
endcase end
PCI橋芯片主要用于解釋單板計(jì)算機(jī)發(fā)送的指令,實(shí)現(xiàn)相互間數(shù)據(jù)通信。本系統(tǒng)采用PLX公司的PCI9656芯片,工作在C模式下,局部總線(xiàn)[6]時(shí)序如圖4所示。
圖4 PCI9656局部總線(xiàn)時(shí)序圖Fig.4 PCI9656 local bus timing diagram
其 中 LHOLD、BLAST、LA[31:2]、ADS、LW/R 等 信 號(hào) 由PCI9656 驅(qū)動(dòng),LHOLDA、LBE[3:0]、READY 信號(hào)由 FPGA 驅(qū)動(dòng)。通過(guò)模塊內(nèi)部設(shè)計(jì)的狀態(tài)機(jī)實(shí)現(xiàn)對(duì)局部總線(xiàn)的控制,具體實(shí)現(xiàn)過(guò)程如圖5所示。
圖5 狀態(tài)轉(zhuǎn)換圖Fig.5 State transition diagrams
1)IDLE狀態(tài) 系統(tǒng)上電或復(fù)位后,處于IDLE狀態(tài)。在IDLE狀態(tài)時(shí),F(xiàn)PGA監(jiān)測(cè)LHOLD信號(hào),當(dāng)單板計(jì)算機(jī)訪(fǎng)問(wèn)FPGA時(shí),LHOLD信號(hào)變?yōu)楦唠娖?。FPGA監(jiān)測(cè)到該高電平后,立即使LHOLDA信號(hào)為高電平,轉(zhuǎn)入ADDR_S狀態(tài)。
2)ADDR_S狀態(tài) 在此狀態(tài)下,F(xiàn)PGA監(jiān)測(cè)ADS信號(hào),當(dāng)ADS信號(hào)變?yōu)榈碗娖?,地址信?hào)LA[31:2]有效,同時(shí)對(duì)輸入的讀寫(xiě)信號(hào)進(jìn)行判斷,若為讀操作,轉(zhuǎn)入READ狀態(tài),若為寫(xiě)操作,轉(zhuǎn)入WRITE狀態(tài)。
3)WRITE狀態(tài) FPGA控制READY信號(hào)為低電平,以使總線(xiàn)上的數(shù)據(jù)有效,F(xiàn)PGA可以控制LBE[3:0]信號(hào),以對(duì)傳輸?shù)臄?shù)據(jù)字節(jié)進(jìn)行選取。并監(jiān)測(cè)BLAST信號(hào),當(dāng)監(jiān)測(cè)到BLAST信號(hào)為低電平時(shí),表示傳輸最后一個(gè)數(shù)據(jù),轉(zhuǎn)入THE_END狀態(tài)。
4)READ狀態(tài) 同WRITE狀態(tài)相似。
5)THE_END狀態(tài) 數(shù)據(jù)傳輸結(jié)束,F(xiàn)PGA監(jiān)測(cè)BLAST信號(hào)變?yōu)楦唠娖酵瑫r(shí)將READY信號(hào)變?yōu)楦唠娖?。?dāng)LHOLD信號(hào)變?yōu)榈碗娖胶螅琇HOLDA信號(hào)變?yōu)榈碗娖?,轉(zhuǎn)入IDLE狀態(tài),等待下一次傳輸。
本設(shè)計(jì)中的光纖通信電路由并串轉(zhuǎn)換電路和光傳輸電路組成。并串轉(zhuǎn)換電路采用了TI公司的TLK1501芯片,通過(guò)內(nèi)部的8B/10B編碼,將16位并行數(shù)據(jù)分成2個(gè) 8位數(shù)據(jù)進(jìn)行編碼,編碼后的數(shù)據(jù)為20位,再通過(guò)并串轉(zhuǎn)換發(fā)送出去;光傳輸電路采用FINISAR公司推出的FTLF1321S1MTL光模塊,將串行數(shù)據(jù)進(jìn)行光電轉(zhuǎn)換輸出。
光纖通信模塊內(nèi)部有一個(gè)狀態(tài)機(jī),上電或復(fù)位后,處于IDLE狀態(tài)。模塊對(duì)傳送標(biāo)志信號(hào)(TX_FLAG)監(jiān)測(cè),如果有傳送標(biāo)志(TX_FLAG=1),轉(zhuǎn)入TX_READY狀態(tài)。在正常傳送數(shù)據(jù)前,需要對(duì)芯片進(jìn)行同步操作,模塊控制信號(hào)TXEN、TX-ER為 00,連續(xù)發(fā)送 3個(gè)空閑碼,使 TLK1501進(jìn)入同步模式,狀態(tài)機(jī)轉(zhuǎn)入TX_S狀態(tài)。在TX_S狀態(tài)下,如果發(fā)送有效數(shù)據(jù),模塊控制TX-EN、TX-ER為10,進(jìn)行數(shù)據(jù)的正常發(fā)送,發(fā)送數(shù)據(jù)結(jié)束后,轉(zhuǎn)入IDLE狀態(tài),等待下一次傳輸。在接收數(shù)據(jù)時(shí),模塊監(jiān)測(cè)RX-DV,RX-ER信號(hào),如果RX-DV,RX-ER為10,正常接收數(shù)據(jù)。模塊設(shè)計(jì)的關(guān)鍵代碼如下:
case(STATE)
IDLE:begin
if(TX_FLAG==1)
STATE<=TX_READY;
else
STATE<=IDLE;end
TX_READY:begin
if(CNT<=2’d2) begin
STATE<=TX_READY;
TX_EN<=1’b0;
TX_ER<=1’b0;
CNT<=CNT+1’b1; end
else
STATE<=TX_S; end
TX_S:begin
if(DATA_DELAY==DATA) begin
CNT<=2’d0;
TX_EN<=1’b0;
TX_ER<=1’b0;
STATE<=IDLE;end
else begin
TX_EN<=1’b1;
TX_ER<=1’b0;
TXD<=DATA;
STATE<=TX_S;end
end
endcase
本文通過(guò)對(duì)多種功能接口電路進(jìn)行研究分析,最終實(shí)現(xiàn)了在同一塊嵌入式板卡上集成光纖通信、A/D、D/A、CPCI總線(xiàn)、SDRAM存儲(chǔ)、FLASH存儲(chǔ)等功能。系統(tǒng)以FPGA芯片為處理核心,利用模塊化的思想進(jìn)行設(shè)計(jì),使系統(tǒng)方便擴(kuò)展、易于維護(hù)和升級(jí)。經(jīng)過(guò)長(zhǎng)期的工程實(shí)踐驗(yàn)證,本系統(tǒng)運(yùn)行可靠穩(wěn)定,能夠?qū)崿F(xiàn)在復(fù)雜工業(yè)控制系統(tǒng)中對(duì)數(shù)據(jù)靈活控制、實(shí)時(shí)處理和高效傳輸。
[1]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2009.
[2]徐欣,孫廣富,盧啟中.基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)[M].國(guó)防工業(yè)大學(xué),2003.
[3]劉福奇.FPGA嵌入式項(xiàng)目開(kāi)發(fā)應(yīng)用實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2009.
[4]Sasalon I T,Perez-pascual A,Valls J.Area-efficient FPGA-based FFT processor[J].Electronics Letters, 2003,39(19):1369-1370.
[5]Analog Devices Inc.AD9717:DUAL,14-bit low power degitalto-analog converters[EB/OL].(2009-03).http://www.analog.com/static/imported-files/data_sheets/AD9714_9715_9716_9717.pdf.
[6]李貴山,陳金鵬.PCI局部總線(xiàn)及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003.