《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的多通道串行數(shù)據(jù)交換中心的設(shè)計(jì)
基于FPGA的多通道串行數(shù)據(jù)交換中心的設(shè)計(jì)
李 增1,2,吳志勇1,馬騰飛1,2,高世杰1
1.中國(guó)科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,吉林 長(zhǎng)春 130033;2.中國(guó)科學(xué)院研究生院 北
摘要: 針對(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í)序沖突問(wèn)題,滿足了實(shí)際工程需求。
Abstract:
Key words :

摘 要:針對(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í)序沖突問(wèn)題,滿足了實(shí)際工程需求。
關(guān)鍵詞: FPGA;串行數(shù)據(jù);MSP430;交換

  光電經(jīng)緯儀是一種精密的測(cè)角儀器,在靶場(chǎng)中主要用來(lái)確定飛行目標(biāo)的空中位置、運(yùn)動(dòng)軌跡并記錄其飛行姿態(tài)。光電測(cè)量設(shè)備一般由多個(gè)子系統(tǒng)組成,各部分各司其職,使經(jīng)緯儀完成對(duì)目標(biāo)的高精度測(cè)量。而一般各個(gè)子系統(tǒng)之間通過(guò)信息交換中心進(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)。一般是通過(guò)專用的芯片完成RS-422與TTL電平信號(hào)的轉(zhuǎn)化,數(shù)據(jù)中心接收和發(fā)送TTL格式的數(shù)據(jù),通過(guò)MSP430完成數(shù)據(jù)交換,同時(shí)根據(jù)設(shè)計(jì)需要還要實(shí)現(xiàn)各個(gè)子系統(tǒng)的工作狀態(tài),即用LED燈作各子系統(tǒng)的工作狀態(tài)指示。同時(shí),還要求通過(guò)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端口,工作在中斷模式下,通過(guò)上電初始化將其內(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)志有效,就開(kāi)始接收該通道的數(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)開(kāi)始,到通信系統(tǒng)開(kāi)始給某個(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)后開(kāi)始計(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ù)器重新開(kāi)始計(jì)數(shù)后,在原有的基礎(chǔ)上開(kāi)始計(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ù)顯示出來(lái)。 響應(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)首先通過(guò)PC串口把要顯示的漢字字庫(kù)下載到顯示終端[6],然后連接到數(shù)據(jù)交換中心的RS-232接口上,通過(guò)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ǔ)言應(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.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。