劉 洋,崔迎煒,韓曉紅
(1.沈陽航空航天大學 電子信息工程學院,遼寧 沈陽 110136;2.北京方天長久科技有限公司 北京 100084)
近年來,隨著工業控制技術的發展,在工業控制領域中,對控制系統的功能、靈活性和數據處理能力提出了更高的需求,本文從實際工程應用出發,研究并實現了一種基于CPCI總線的一體化可配置數據處理系統。
本設計利用可配置的現場可編程門陣列[1](FPGA)與具有高可靠性、高密度性的CPCI總線相結合的方法,將眾多數據處理功能集成在同一個嵌入式系統板卡上,實現了系統的一體化、小型化。
本系統主要由上位機管理子系統、遠程監控子系統和數據處理子系統組成,總體結構如圖1所示。

圖1 系統總體結構框圖Fig.1 Structure diagram of the entire system
上位機管理系統主要用于顯示系統工作狀態并提供人機交互界面。遠程監控系統通過光纖連接到距離系統1 km以外的位置,實現系統的遠程監控。數據處理子系統包括CPCI-6020單板計算機和FTC-9110數據處理單板[2]兩部分,CPCI-6020單板計算機用于解釋上位機發送的命令并對數據處理中心進行控制。FTC-9110數據處理單板是數據處理的核心部分,也是文中介紹的重點,其整體實現結構如圖2所示。
FTC-9110數據處理中心以FPGA為硬件處理核心[3],通過內部構建的ADC控制模塊、DAC控制模塊、FLASH模塊、SDRAM存儲模塊、光纖通信模塊、PCI總線模塊實現對外圍設計的A/D數據采集電路、D/A數據輸出電路、FLASH存儲電路、SDRAM數據存儲電路、光纖通信電路以及CPCI總線接口電路的控制,通過與單板計算機的靈活配合,實現對數據的實時處理、高速傳輸。
系統的數據處理主要以FTC-9110為中心,利用單板計算機對FPGA內部構建的各個模塊的靈活控制,實現數據的處理,其數據處理流程如下:
1)利用ADC芯片前端設計的信號調理電路,將輸入的單端模擬信號轉換為差分信號送入芯片的差分輸入端。

圖2 整體實現結構圖Fig.2 Structure diagram of the whole realization
2)ADC芯片對輸入的信號進行采樣,并將采樣所得數字信號傳送至FFT算法模塊。
3)利用FFT算法模塊[4]對采集數據進行頻域分析,分析數據的結果傳送至FIR濾波模塊作為濾波輸入信號,濾波后輸出數據傳送至光纖通信模塊。
4)光纖通信模塊通過高速并串轉換模塊對濾波輸出數據進行8B/10B編碼,將16位的數據轉換為20位的串行數據,輸出速率最高可達1.5 Gbps,然后該高速串行數據進入光電轉換模塊,傳送至遠程監控系統。
5)單板計算機控制PCI9656工作在DMA傳輸模式,通過PCI總線模塊和SDRAM存儲模塊將DAC輸入數據寫入SDRAM芯片。
6)讀取SDRAM芯片數據傳送至DAC控制模塊,DAC芯片對輸入數據進行數模轉換,并通過后端設計的調理電路,使信號最終以電壓形式輸出。
硬件設計將重點介紹DAC電路及控制模塊、PCI接口控制模塊、光纖通信電路及控制模塊的設計。
DAC電路由D/A轉換電路和信號調理電路兩部分組成。D/A轉換電路采用了ADI公司的電流輸出型芯片AD9717[5],在芯片輸出后端設計的調理電路,將電流輸出轉換為電壓信號輸出。
FPGA通過SPI接口對DAC內部寄存器進行配置,控制其工作方式。為了方便對內部寄存器配置,FPGA內部設計了相應的寄存器,上位機可以通過對相應的寄存器設置進而改變內部寄存器的值。
SPI接口由串行時鐘 (SCLK)、 串行數據輸入/輸出(SDIO)、芯片選擇(CSB)3個配置引腳組成,配置時序如圖3所示。

圖3 SPI接口配置時序圖Fig.3 SPIinterface configuration timing diagram
SPI接口配置時序由指令周期和數據周期兩部分組成,發送的前8個數據 (R/W、N1N0、A4-A0) 為指令周期,R/W為數據讀寫控制位,N1N0為數據字節個數控制位,A4-A0為數據地址控制位。指令周期發送結束后是數據周期,數據方向由R/W決定,數據量由N1N0決定,寫數據在SCLK上升沿有效,讀數據在SCLK下降沿有效。本模塊設計的關鍵代碼如下:
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橋芯片主要用于解釋單板計算機發送的指令,實現相互間數據通信。本系統采用PLX公司的PCI9656芯片,工作在C模式下,局部總線[6]時序如圖4所示。

圖4 PCI9656局部總線時序圖Fig.4 PCI9656 local bus timing diagram
其 中 LHOLD、BLAST、LA[31:2]、ADS、LW/R 等 信 號 由PCI9656 驅動,LHOLDA、LBE[3:0]、READY 信號由 FPGA 驅動。通過模塊內部設計的狀態機實現對局部總線的控制,具體實現過程如圖5所示。

圖5 狀態轉換圖Fig.5 State transition diagrams
1)IDLE狀態 系統上電或復位后,處于IDLE狀態。在IDLE狀態時,FPGA監測LHOLD信號,當單板計算機訪問FPGA時,LHOLD信號變為高電平。FPGA監測到該高電平后,立即使LHOLDA信號為高電平,轉入ADDR_S狀態。
2)ADDR_S狀態 在此狀態下,FPGA監測ADS信號,當ADS信號變為低電平,地址信號LA[31:2]有效,同時對輸入的讀寫信號進行判斷,若為讀操作,轉入READ狀態,若為寫操作,轉入WRITE狀態。
3)WRITE狀態 FPGA控制READY信號為低電平,以使總線上的數據有效,FPGA可以控制LBE[3:0]信號,以對傳輸的數據字節進行選取。并監測BLAST信號,當監測到BLAST信號為低電平時,表示傳輸最后一個數據,轉入THE_END狀態。
4)READ狀態 同WRITE狀態相似。
5)THE_END狀態 數據傳輸結束,FPGA監測BLAST信號變為高電平同時將READY信號變為高電平。當LHOLD信號變為低電平后,LHOLDA信號變為低電平,轉入IDLE狀態,等待下一次傳輸。
本設計中的光纖通信電路由并串轉換電路和光傳輸電路組成。并串轉換電路采用了TI公司的TLK1501芯片,通過內部的8B/10B編碼,將16位并行數據分成2個 8位數據進行編碼,編碼后的數據為20位,再通過并串轉換發送出去;光傳輸電路采用FINISAR公司推出的FTLF1321S1MTL光模塊,將串行數據進行光電轉換輸出。
光纖通信模塊內部有一個狀態機,上電或復位后,處于IDLE狀態。模塊對傳送標志信號(TX_FLAG)監測,如果有傳送標志(TX_FLAG=1),轉入TX_READY狀態。在正常傳送數據前,需要對芯片進行同步操作,模塊控制信號TXEN、TX-ER為 00,連續發送 3個空閑碼,使 TLK1501進入同步模式,狀態機轉入TX_S狀態。在TX_S狀態下,如果發送有效數據,模塊控制TX-EN、TX-ER為10,進行數據的正常發送,發送數據結束后,轉入IDLE狀態,等待下一次傳輸。在接收數據時,模塊監測RX-DV,RX-ER信號,如果RX-DV,RX-ER為10,正常接收數據。模塊設計的關鍵代碼如下:
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
本文通過對多種功能接口電路進行研究分析,最終實現了在同一塊嵌入式板卡上集成光纖通信、A/D、D/A、CPCI總線、SDRAM存儲、FLASH存儲等功能。系統以FPGA芯片為處理核心,利用模塊化的思想進行設計,使系統方便擴展、易于維護和升級。經過長期的工程實踐驗證,本系統運行可靠穩定,能夠實現在復雜工業控制系統中對數據靈活控制、實時處理和高效傳輸。
[1]夏宇聞.Verilog數字系統設計教程[M].北京:北京航空航天大學出版社,2009.
[2]徐欣,孫廣富,盧啟中.基于FPGA的嵌入式系統設計[M].國防工業大學,2003.
[3]劉福奇.FPGA嵌入式項目開發應用實戰[M].北京:電子工業出版社,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局部總線及其應用[M].西安:西安電子科技大學出版社,2003.