摘 要:針對(duì)靶場(chǎng)光電測(cè)量設(shè)備子系統(tǒng)互聯(lián)比較復(fù)雜,、容易產(chǎn)生時(shí)序沖突的缺點(diǎn),,設(shè)計(jì)了基于FPGA的數(shù)據(jù)交換中心。實(shí)踐表明,,該系統(tǒng)工作穩(wěn)定,、可靠,解決了多系統(tǒng)之間通信的時(shí)序沖突問題,,滿足了實(shí)際工程需求,。
關(guān)鍵詞: FPGA,;串行數(shù)據(jù);MSP430,;交換
光電經(jīng)緯儀是一種精密的測(cè)角儀器,,在靶場(chǎng)中主要用來確定飛行目標(biāo)的空中位置、運(yùn)動(dòng)軌跡并記錄其飛行姿態(tài),。光電測(cè)量設(shè)備一般由多個(gè)子系統(tǒng)組成,,各部分各司其職,使經(jīng)緯儀完成對(duì)目標(biāo)的高精度測(cè)量,。而一般各個(gè)子系統(tǒng)之間通過信息交換中心進(jìn)行串行通信,。因此,對(duì)數(shù)據(jù)交換中心的設(shè)計(jì)要求就是要協(xié)調(diào)各個(gè)子系統(tǒng),,不發(fā)生時(shí)序沖突,,并且數(shù)據(jù)的發(fā)送不能抖動(dòng)太大,以便于其他系統(tǒng)接收數(shù)據(jù),,使整個(gè)系統(tǒng)穩(wěn)定可靠地工作,。
1 系統(tǒng)設(shè)計(jì)
數(shù)據(jù)交換中心主要作用是轉(zhuǎn)發(fā)、中繼,、重組,、處理、顯示各個(gè)系統(tǒng)的數(shù)字信號(hào)的電子系統(tǒng),。主要以時(shí)統(tǒng)終端發(fā)送的100 Hz為同步基準(zhǔn),,接收各個(gè)系統(tǒng)的RS-422格式的數(shù)字信號(hào),并根據(jù)協(xié)議發(fā)送各個(gè)系統(tǒng)RS-422格式的數(shù)字信號(hào),。一般是通過專用的芯片完成RS-422與TTL電平信號(hào)的轉(zhuǎn)化,,數(shù)據(jù)中心接收和發(fā)送TTL格式的數(shù)據(jù),通過MSP430完成數(shù)據(jù)交換,,同時(shí)根據(jù)設(shè)計(jì)需要還要實(shí)現(xiàn)各個(gè)子系統(tǒng)的工作狀態(tài),,即用LED燈作各子系統(tǒng)的工作狀態(tài)指示。同時(shí),,還要求通過RS-232串口與LCD顯示屏相連,,實(shí)現(xiàn)子系統(tǒng)通信內(nèi)容的顯示。設(shè)計(jì)的數(shù)據(jù)交換中心的原理圖如圖1所示,。
系統(tǒng)中的FPGA滿足基本的工業(yè)級(jí)要求,,采用Altera公司的EP1C12Q240I7,封裝為240-PIN PQFP,,溫度范圍-40 ℃~+80 ℃,主要特性如表1所示,。
光電跟蹤設(shè)備一般有多達(dá)10個(gè)以上的子系統(tǒng),存在2個(gè)以上的子系統(tǒng)同時(shí)向數(shù)據(jù)交換中心發(fā)送數(shù)據(jù)的情況,,因此交換中心需采用2種辦法避免這種沖突:(1)把系統(tǒng)分為3組,,作并行接收,,避免了這3組子系統(tǒng)之間的沖突;(2)在同一組內(nèi)作中斷優(yōu)先級(jí)判斷,順序接收,,避免同組內(nèi)子系統(tǒng)之間的沖突,。
MCU采用TI公司生產(chǎn)的MSP430F249,它是超低功耗的16位的單片機(jī)系列中的一種,,采用RISC精簡(jiǎn)指令集,,外接16MHz時(shí)鐘,指令周期為62.5 ns,,片內(nèi)含有硬件乘法器,,節(jié)省了運(yùn)算時(shí)間。它內(nèi)含一個(gè)8通道的12位高性能A/D轉(zhuǎn)換器,,最高采樣速度可達(dá)200 kHz,。帶有7個(gè)捕獲/比較積存器的16位 Time_B和帶有3個(gè)捕獲/比較寄存器的16位 Timer_A,該芯片具有60 KB的Flash ROM,,2 KB RAM,,采用串行在線編程方法,同時(shí)還擁有強(qiáng)大的中斷處理功能[1],。
UART采用EXAR公司生產(chǎn)的ST16C654,,完成串—并/并—串轉(zhuǎn)換。貼片式封裝FPQ64,,64 B的緩沖FIFO,支持高達(dá)1.5 Mb/s的4個(gè)通道的串行數(shù)據(jù)的雙向傳輸,,支持查詢,,中斷工作方式。在本設(shè)計(jì)中,,設(shè)置使其工作在中斷方式下,,數(shù)據(jù)格式為1個(gè)起始位,8個(gè)數(shù)據(jù)位,,1個(gè)停止位,。
2 多通道串行數(shù)據(jù)的接收
與數(shù)據(jù)交換中心相連的子系統(tǒng)一共有11個(gè),定義為通道Com1~Com11,分別連在了4個(gè)ST16C654上,。每個(gè)ST16C654有4通道,,每個(gè)通道都具有發(fā)送和接收的功能,連接4個(gè)Com端口,工作在中斷模式下,通過上電初始化將其內(nèi)部的FIFO深度設(shè)置為56 B, ST16C654等到接收56 B或56 B的時(shí)間(在接收字節(jié)數(shù)少于56的情況下)產(chǎn)生中斷請(qǐng)求信號(hào)。根據(jù)通信協(xié)議,各個(gè)系統(tǒng)發(fā)送給通信系統(tǒng)的字節(jié)均小于56 B,。因此,一次中斷完全能夠?qū)⒏鱾€(gè)系統(tǒng)的數(shù)據(jù)收完,。
FPGA根據(jù)收到的一個(gè)或者多個(gè)中斷信號(hào),首先判斷中斷源,,中斷優(yōu)先級(jí)判斷如下列代碼所示,,clk為系統(tǒng)時(shí)鐘,,inital_over為寄存器初始化標(biāo)志。inta,、intb,、intc、intd分別表示ST16C654接收4個(gè)通道數(shù)據(jù)產(chǎn)生的中斷信號(hào),,csa_reg_reg為優(yōu)先級(jí)安排好后對(duì)應(yīng)通道的選通信號(hào)(其他標(biāo)志信號(hào)依次類推),,如果該標(biāo)志有效,就開始接收該通道的數(shù)據(jù),,接收完該路信號(hào),,然后判斷該路信息的該幀數(shù)據(jù)的頭尾是否正確,在正確的情況下寫入相應(yīng)的RAM地址空間,其RAM控制寫模塊的主要功能就是根據(jù)接收的數(shù)據(jù)個(gè)數(shù),,產(chǎn)生相應(yīng)的脈沖個(gè)數(shù),,往RAM里寫數(shù)據(jù)的個(gè)數(shù)和地址空的控制,以便MCU根據(jù)相對(duì)應(yīng)各個(gè)端口的發(fā)送時(shí)刻從相應(yīng)的地址空間中讀出數(shù)據(jù),組成完成的一幀數(shù)據(jù)發(fā)送出去[2],。
中斷優(yōu)先級(jí)判斷部分verilog代碼如下:
always@(posedge clk)
begin
if(inital_over) //inital_over==1 表示正在初//始化系統(tǒng)
begin
rd_over<=1'b0; //數(shù)據(jù)讀完結(jié)束標(biāo)志
csa_reg_reg<=1'b1;
csb_reg_reg<=1'b1;
csc_reg_reg<=1'b1;
csd_reg_reg<=1'b1;
end
else if(!int_UART) //捕獲到int_UART654中斷標(biāo)
//志,,為4個(gè)通道中斷標(biāo)志的或
begin
if(!rd_over)
begin
rd_over<=1'b1;
csa_reg_reg<=!inta; // 通道A的優(yōu)先級(jí)別最高
csb_reg_reg<=!intb|inta; //級(jí)別從到到低依次為//A,B,C,D
csc_reg_reg<=!intc|inta|intb; //改變表達(dá)式可以
//改便優(yōu)先級(jí)別
csd_reg_reg<=!intd|inta|intb|intc;
end
end
在產(chǎn)生選通信號(hào)的同時(shí),還要產(chǎn)生UART的FIFO的讀脈沖和RAM的寫地址,,從而把相應(yīng)通道的數(shù)據(jù)讀出[3],,如圖2所示,當(dāng)同時(shí)出現(xiàn)4個(gè)中斷時(shí),,先選通csa_reg,同時(shí)產(chǎn)生FIFO的讀信號(hào)IOR(56+1個(gè)脈沖信號(hào),,UART芯片的FIFO 容量設(shè)置為56個(gè),保證其讀空,,同時(shí)程序在IOR的基礎(chǔ)上產(chǎn)生56個(gè)字?jǐn)?shù)據(jù)的寫地址,。便于對(duì)相應(yīng)的RAM地址空間進(jìn)行寫操作)。
3 多通道串行數(shù)據(jù)的發(fā)送
數(shù)據(jù)的發(fā)送主要在MCU內(nèi)完成,,為了保證各個(gè)系統(tǒng)可靠地進(jìn)行數(shù)據(jù)傳輸,,需要事先安排好發(fā)送時(shí)序,即以100 Hz的同步信號(hào)為基準(zhǔn),,安排好各個(gè)子系統(tǒng)發(fā)送數(shù)據(jù)的時(shí)間段,。即在10 ms之內(nèi)根據(jù)各個(gè)通道發(fā)送數(shù)據(jù)的多少,定義發(fā)送時(shí)刻(以100 Hz同步信號(hào)開始,,到通信系統(tǒng)開始給某個(gè)系統(tǒng)發(fā)送數(shù)據(jù)為止,,定時(shí)器所計(jì)的時(shí)間)[4]。如圖3為COM1的接收,、發(fā)送時(shí)序,。
MSP430F249的定時(shí)器工作在連續(xù)計(jì)數(shù)模式下,其工作原理是首先設(shè)置中斷的計(jì)數(shù)值,由于2個(gè)計(jì)數(shù)器都為16進(jìn)制,,計(jì)數(shù)范圍0x0000~0xFFFF,,根據(jù)其工作原理,當(dāng)計(jì)數(shù)器啟動(dòng)后開始計(jì)數(shù),,達(dá)到預(yù)先設(shè)置的計(jì)數(shù)值后產(chǎn)生中斷,,計(jì)數(shù)器的工作頻率可以選擇,系統(tǒng)中采用的技術(shù)頻率是ACLK的4分頻,,即4 MHz,。按工作原理,最高能夠產(chǎn)生10個(gè)中斷,,為了產(chǎn)生11個(gè)中斷,,在第6個(gè)中斷的基礎(chǔ)上,把計(jì)數(shù)器的值加上特定值變?yōu)榱硗庖粋€(gè)中斷的計(jì)數(shù)值,,計(jì)數(shù)器重新開始計(jì)數(shù)后,,在原有的基礎(chǔ)上開始計(jì)數(shù),產(chǎn)生第7個(gè)中斷,,從而形成11個(gè)中斷信號(hào),,啟動(dòng)11個(gè)端口的發(fā)送,主程序根據(jù)協(xié)議從相應(yīng)的地址空間讀取數(shù)據(jù),,打包組成符合系統(tǒng)要求的信息發(fā)送出去[5],。
MCU除了根據(jù)發(fā)送時(shí)刻,利用定時(shí)器計(jì)數(shù)產(chǎn)生11個(gè)中斷信號(hào)外,,還要完成系統(tǒng)上電的初始化,,ST16C654的初始化,LCD的顯示屏的初始化,,以及在主程序內(nèi)利用系統(tǒng)空閑時(shí)間從FPGA的RAM中讀取數(shù)據(jù),,把各個(gè)子系統(tǒng)發(fā)送、接收的數(shù)據(jù)顯示出來,。 響應(yīng)按鍵信息,最終不斷地刷屏,、顯示信息,。程序流程圖如圖4所示。
數(shù)據(jù)交換中心的LCD顯示采用北京藍(lán)海微芯科技發(fā)展有限公司生產(chǎn)的LJD-ZN-3200K智能顯示終端,,5.7 英寸的顯示尺寸,,分辨率為320×240,單色顯示,,單電源5 V DC供電,,接口類型RS232,通信格式:數(shù)據(jù)包頭(F0 5A) + 命令類型+命令字+ 數(shù)據(jù)包尾(5A F0),命令類型用不同的字節(jié)表示不同的命令,,使用前應(yīng)首先通過PC串口把要顯示的漢字字庫下載到顯示終端[6],,然后連接到數(shù)據(jù)交換中心的RS-232接口上,通過MSP430F249完成對(duì)其顯示格式,、背光控制,、波特率的設(shè)置。最后在MCU的主程序中完成對(duì)各個(gè)通道接收,、發(fā)送數(shù)據(jù)的顯示[7],。
利用MSP430設(shè)計(jì)了基于FPGA的數(shù)據(jù)交換中心系統(tǒng),合理地安排了各個(gè)系統(tǒng)數(shù)據(jù)的接收中斷時(shí)序,。采用定時(shí)器產(chǎn)生各個(gè)系統(tǒng)的發(fā)送時(shí)序,,避免了多個(gè)系統(tǒng)之間交換數(shù)據(jù)時(shí)產(chǎn)生的系統(tǒng)沖突,并且采用LCD顯示屏實(shí)時(shí)顯示了各子系統(tǒng)的傳輸信息,,替代了以往基于PC104的設(shè)計(jì),,降低了系統(tǒng)成本,滿足了實(shí)際需求,。
參考文獻(xiàn)
[1] 沈建華,,楊艷琴,翟驍曙.MSP430系列16位超低功耗單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2004:82-103.
[2] 段吉海, 黃偉智. 基于CPLD/FPGA的數(shù)字通信系統(tǒng)建模與設(shè)計(jì)[M]. 北京: 電子工業(yè)出版社,2004:78-96.
[3] 王強(qiáng),文豐,,任勇峰.基于FPGA的高速實(shí)時(shí)數(shù)據(jù)存儲(chǔ)系統(tǒng)[J]. 儀表技術(shù)與傳感器,,2009(1):50-52.
[4] 秦龍.MSP430彈片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社, 2006:135-141.
[5] 王少卿,汪仁煌.低功耗MSP430單片機(jī)在3V與5V混合系統(tǒng)中的邏輯接口技術(shù).電子技術(shù)應(yīng)用,2003,29(3):324-327.
[6] 北京藍(lán)海微芯科技發(fā)展有限公司.智能終端使用手冊(cè)LJD -ZN-3200K.2007.
[7] http://focus.ti.com/lit/ds/symlink/msp430f249.pdf.2008.