《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA的多通道串行数据交换中心的设计
基于FPGA的多通道串行数据交换中心的设计
李 增1,2,吴志勇1,马腾飞1,2,高世杰1
1.中国科学院长春光学精密机械与物理研究所,吉林 长春 130033;2.中国科学院研究生院 北
摘要: 针对靶场光电测量设备子系统互联比较复杂、容易产生时序冲突的缺点,设计了基于FPGA的数据交换中心。实践表明,该系统工作稳定、可靠,解决了多系统之间通信的时序冲突问题,满足了实际工程需求。
Abstract:
Key words :

摘 要:针对靶场光电测量设备子系统互联比较复杂、容易产生时序冲突的缺点,设计了基于FPGA的数据交换中心。实践表明,该系统工作稳定、可靠,解决了多系统之间通信的时序冲突问题,满足了实际工程需求。
关键词: FPGA;串行数据MSP430;交换

  光电经纬仪是一种精密的测角仪器,在靶场中主要用来确定飞行目标的空中位置、运动轨迹并记录其飞行姿态。光电测量设备一般由多个子系统组成,各部分各司其职,使经纬仪完成对目标的高精度测量。而一般各个子系统之间通过信息交换中心进行串行通信。因此,对数据交换中心的设计要求就是要协调各个子系统,不发生时序冲突,并且数据的发送不能抖动太大,以便于其他系统接收数据,使整个系统稳定可靠地工作。
1 系统设计
  数据交换中心主要作用是转发、中继、重组、处理、显示各个系统的数字信号的电子系统。主要以时统终端发送的100 Hz为同步基准,接收各个系统的RS-422格式的数字信号,并根据协议发送各个系统RS-422格式的数字信号。一般是通过专用的芯片完成RS-422与TTL电平信号的转化,数据中心接收和发送TTL格式的数据,通过MSP430完成数据交换,同时根据设计需要还要实现各个子系统的工作状态,即用LED灯作各子系统的工作状态指示。同时,还要求通过RS-232串口与LCD显示屏相连,实现子系统通信内容的显示。设计的数据交换中心的原理图如图1所示。


  系统中的FPGA满足基本的工业级要求,采用Altera公司的EP1C12Q240I7,封装为240-PIN PQFP,温度范围-40 ℃~+80 ℃,主要特性如表1所示。    

  光电跟踪设备一般有多达10个以上的子系统,存在2个以上的子系统同时向数据交换中心发送数据的情况,因此交换中心需采用2种办法避免这种冲突:(1)把系统分为3组,作并行接收,避免了这3组子系统之间的冲突;(2)在同一组内作中断优先级判断,顺序接收,避免同组内子系统之间的冲突。
  MCU采用TI公司生产的MSP430F249,它是超低功耗的16位的单片机系列中的一种,采用RISC精简指令集,外接16MHz时钟,指令周期为62.5 ns,片内含有硬件乘法器,节省了运算时间。它内含一个8通道的12位高性能A/D转换器,最高采样速度可达200 kHz。带有7个捕获/比较积存器的16位 Time_B和带有3个捕获/比较寄存器的16位 Timer_A,该芯片具有60 KB的Flash ROM,2 KB RAM,采用串行在线编程方法,同时还拥有强大的中断处理功能[1]。
  UART采用EXAR公司生产的ST16C654,完成串—并/并—串转换。贴片式封装FPQ64,64 B的缓冲FIFO,支持高达1.5 Mb/s的4个通道的串行数据的双向传输,支持查询,中断工作方式。在本设计中,设置使其工作在中断方式下,数据格式为1个起始位,8个数据位,1个停止位。
2 多通道串行数据的接收
  与数据交换中心相连的子系统一共有11个,定义为通道Com1~Com11,分别连在了4个ST16C654上。每个ST16C654有4通道,每个通道都具有发送和接收的功能,连接4个Com端口,工作在中断模式下,通过上电初始化将其内部的FIFO深度设置为56 B, ST16C654等到接收56 B或56 B的时间(在接收字节数少于56的情况下)产生中断请求信号。根据通信协议,各个系统发送给通信系统的字节均小于56 B。因此,一次中断完全能够将各个系统的数据收完。
  FPGA根据收到的一个或者多个中断信号,首先判断中断源,中断优先级判断如下列代码所示,clk为系统时钟,inital_over为寄存器初始化标志。inta、intb、intc、intd分别表示ST16C654接收4个通道数据产生的中断信号,csa_reg_reg为优先级安排好后对应通道的选通信号(其他标志信号依次类推),如果该标志有效,就开始接收该通道的数据,接收完该路信号,然后判断该路信息的该帧数据的头尾是否正确,在正确的情况下写入相应的RAM地址空间,其RAM控制写模块的主要功能就是根据接收的数据个数,产生相应的脉冲个数,往RAM里写数据的个数和地址空的控制,以便MCU根据相对应各个端口的发送时刻从相应的地址空间中读出数据,组成完成的一帧数据发送出去[2]。
  中断优先级判断部分verilog代码如下:
always@(posedge clk)
begin
if(inital_over)         //inital_over==1 表示正在初//始化系统 
begin
rd_over<=1'b0;                 //数据读完结束标志
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中断标
                 //志,为4个通道中断标志的或

begin
if(!rd_over)
begin
rd_over<=1'b1;
csa_reg_reg<=!inta;        // 通道A的优先级别最高
csb_reg_reg<=!intb|inta;     //级别从到到低依次为//A,B,C,D
csc_reg_reg<=!intc|inta|intb;    //改变表达式可以
                       //改便优先级别
csd_reg_reg<=!intd|inta|intb|intc;
end
end
  在产生选通信号的同时,还要产生UART的FIFO的读脉冲和RAM的写地址,从而把相应通道的数据读出[3],如图2所示,当同时出现4个中断时,先选通csa_reg,同时产生FIFO的读信号IOR(56+1个脉冲信号,UART芯片的FIFO 容量设置为56个,保证其读空,同时程序在IOR的基础上产生56个字数据的写地址。便于对相应的RAM地址空间进行写操作)。

3 多通道串行数据的发送
   数据的发送主要在MCU内完成,为了保证各个系统可靠地进行数据传输,需要事先安排好发送时序,即以100 Hz的同步信号为基准,安排好各个子系统发送数据的时间段。即在10 ms之内根据各个通道发送数据的多少,定义发送时刻(以100 Hz同步信号开始,到通信系统开始给某个系统发送数据为止,定时器所计的时间)[4]。如图3为COM1的接收、发送时序。

  MSP430F249的定时器工作在连续计数模式下,其工作原理是首先设置中断的计数值,由于2个计数器都为16进制,计数范围0x0000~0xFFFF,根据其工作原理,当计数器启动后开始计数,达到预先设置的计数值后产生中断,计数器的工作频率可以选择,系统中采用的技术频率是ACLK的4分频,即4 MHz。按工作原理,最高能够产生10个中断,为了产生11个中断,在第6个中断的基础上,把计数器的值加上特定值变为另外一个中断的计数值,计数器重新开始计数后,在原有的基础上开始计数,产生第7个中断,从而形成11个中断信号,启动11个端口的发送,主程序根据协议从相应的地址空间读取数据,打包组成符合系统要求的信息发送出去[5]。
  MCU除了根据发送时刻,利用定时器计数产生11个中断信号外,还要完成系统上电的初始化,ST16C654的初始化,LCD的显示屏的初始化,以及在主程序内利用系统空闲时间从FPGA的RAM中读取数据,把各个子系统发送、接收的数据显示出来。 响应按键信息,最终不断地刷屏、显示信息。程序流程图如图4所示。


数据交换中心的LCD显示采用北京蓝海微芯科技发展有限公司生产的LJD-ZN-3200K智能显示终端,5.7 英寸的显示尺寸,分辨率为320×240,单色显示,单电源5 V DC供电,接口类型RS232,通信格式:数据包头(F0 5A) + 命令类型+命令字+ 数据包尾(5A F0),命令类型用不同的字节表示不同的命令,使用前应首先通过PC串口把要显示的汉字字库下载到显示终端[6],然后连接到数据交换中心的RS-232接口上,通过MSP430F249完成对其显示格式、背光控制、波特率的设置。最后在MCU的主程序中完成对各个通道接收、发送数据的显示[7]。
  利用MSP430设计了基于FPGA的数据交换中心系统,合理地安排了各个系统数据的接收中断时序。采用定时器产生各个系统的发送时序,避免了多个系统之间交换数据时产生的系统冲突,并且采用LCD显示屏实时显示了各子系统的传输信息,替代了以往基于PC104的设计,降低了系统成本,满足了实际需求。
参考文献
[1] 沈建华,杨艳琴,翟骁曙.MSP430系列16位超低功耗单片机原理与应用[M].北京:清华大学出版社,2004:82-103.
[2] 段吉海, 黄伟智. 基于CPLD/FPGA的数字通信系统建模与设计[M]. 北京: 电子工业出版社,2004:78-96.
[3] 王强,文丰,任勇峰.基于FPGA的高速实时数据存储系统[J]. 仪表技术与传感器,2009(1):50-52.
[4] 秦龙.MSP430弹片机C语言应用程序设计实例精讲[M].北京:电子工业出版社, 2006:135-141.
[5] 王少卿,汪仁煌.低功耗MSP430单片机在3V与5V混合系统中的逻辑接口技术.电子技术应用,2003,29(3):324-327.
[6] 北京蓝海微芯科技发展有限公司.智能终端使用手册LJD -ZN-3200K.2007.
[7] http://focus.ti.com/lit/ds/symlink/msp430f249.pdf.2008.
 

此内容为AET网站原创,未经授权禁止转载。