空间相机在数据通信系统应用

时间:2011-08-26

  摘  要: 在空间相机数据采集应用中,为了满足电路板体积重量以及可扩展性的要求,利用FPGA作为主控芯片,控制相机进行数据采集和传输。在数据通信系统中,FPGA替代了传统的单片机作为CAN总线的主控制器,并给出了详细的硬件电路设计方法。在对CAN协议控制器SJA1000进行功能及时序分析后,利用硬件语言对其通信流程进行设计。

  CAN总线是由ISO定义的串行通信总线,主要用于各种过程检测及控制。它是一种多主总线,具有高位速率和高抗电磁干扰性,而且能够检测出传输中产生的任何错误。显着的优点使得CAN总线成为国际上应用广泛的现场总线标准之一 .

  CAN是控制器局域网络的简称,是由研发和生产汽车电子产品着称的德国BOSCH公司开发了的,并终成为国际标准(ISO118?8)。是国际上应用广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境

  由于其优良的性能及独特的设计,CAN总线已被广泛地应用于各种分布式控制系统中。特别是由于CAN总线具有抗干扰性强、高数据传输率、低成本等优点,在小卫星和微小卫星中得到了越来越广泛的应用。在卫星有效载荷数据控制传输中也会应用,如空间相机数据通信方面。

  1 数据通信系统

  数据通信系统计算机网络中,数据通信系统的任务是:把数据源计算机所产生的数据迅速、可靠、准确地传输到数据宿(目的)计算机或专用外设。从计算机网络技术的组成部分来看,一个完整的数据通信系统,一般有以下几个部分组成:数据终端设备,通信控制器,通信信道,信号变换器。

  一般来说,每个CAN模块能够被分成三个不同的功能块,其结构如图1所示[2].CAN总线收发器提供CAN协议控制器与物理总线之间的接口,控制从CAN 控制器到总线物理层或相反的逻辑电平信号。它的性能决定了总线接口、总线终端、总线长度和节点数,是影响整个总线网络通信性能的关键因素之一。CAN控制器执行在CAN 规范里规定的CAN协议,它通常用于报文缓冲和验收滤波,对外具有与主控制器和总线收发器的接口。

  在本项目的特殊环境要求下,使用FPGA作为主控芯片,控制空间相机进行数据采集与传输,并通过CAN总线进行数据收发。较之传统设计使用的单片机,FPGA能够在速度和体积上有更好的适应性。FPGA一方面减少了电路板的复杂程度,缩短了实现周期,另一方面是FPGA具有丰富的资源、超高的性能和灵活的可编程性[3],提高了整个设备的可靠性,大大增强了电路板设计的灵活性和可扩展性。

  2 通信系统接口设计

  通信接口是指中央处理器和标准通信子系统之间的接口。 如:RS232接口。RS232接口就是串口,电脑机箱后方的9芯插座,旁边一般有 "|O|O|" 样标识。

  计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口,使不同 的设备可以方便地连接起来进行通讯。

  电路设计如图2所示。SJA1000的AD0~AD7地址数据复用端口、ALE地址锁存端口、读使能信号RD、写使能信号WR、片选CS端口, 均通过双向总线收发器74ALVC164245与FPGA的I/O口相连[4].这是因为FPGA的3.3 V的LVTTL电平不支持SJA1000的5 V TTL电平,所以利用双向总线收发器实现两器件信号的电平转换。SJA1000的中断输出信号INT连入FPGA,这样CAN通信就可以采用中断或查询两种方式。RST端口的电路实现SJA1000的上电自动复位功能。MODE模式选择端接+5 V,设置SJA1000控制器为Intel模式。SJA1000的时钟晶振采用16 MHz,频率调整电容取15 pF.设计中CAN总线的终端电阻取120Ω[5].CAN 驱动器PCA82C250的RS脚为工作模式选择位,接地工作于高速模式,接高工作于待机模式。系统通过电阻R将芯片设定于斜率控制模式, 电阻值为47 kΩ,这时CAN总线应工作于低速模式,可提高CAN总线抵抗射频干扰的能力。在这种情况下,可直接使用非屏蔽双绞线作为总线[6].

  在接口设计中,有几点需要注意:(1)SJA1000的INT端口是开漏输出,所以在使用时应该加上拉电阻,不然电平一直为低,无法实现中断方式。(2)电平信号AD0~AD7必须按顺序连接在总线收发器74ALVC164245的一个8位端口上,不可分开。

  3 通信系统软件设计

  3.1 系统流程设计

  CAN总线通信模块的控制主要包括三大部分:CAN总线节点初始化、报文发送和报文接收。主流程如图3所示。

  CAN节点主程序主要包括:作为主控制器的FPGA的初始化、CAN控制器初始化、寄存器状态查询、接收发送报文以及数据处理。在此设计中,由于通信模块对接收数据的实时性要求并不是很高,因此CAN总线的接收和发送采用查询方式[7].在整个流程实现中,主要是对CAN控制器SJA1000中的寄存器进行读写操作。

  3.2 读写流程控制

  SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。它是Philips半导体公司PCA82C200 CAN 控制器(BasicCAN)的替代产品,而且它增加了一种新的操作模式--PeliCAN,这种模式支持具有很多新特性的CAN 2.0B协议。

  SJA1000 的数据和地址信号为时分复用,而FPGA 中不存在地址的概念,因此在读写寄存器时,要把SJA1000 中的寄存器地址当作数据写入。所以在系统的顶层模块设计中,将设计一个读写子模块来专门产生对CAN寄存器进行读写控制的时序,而主模块则只对通信流程进行描述。读写时序的状态机流程图如图4所示。在IDLE状态,对接口信号进行初始化,其中地址锁存信号ALE为低电平、写信号WR 为高电平、读信号RD为高电平、片选信号CS 为高电平、地址数据复用总线ADDR为高阻态、writeover和readover为低电平(writeover为高电平表示一个写时序的完成, readover为高电平表示一个读时序的完成) .另外对于主模块的控制信号start和iswr,当start为低电平时继续在IDLE状态循环,反之则进入写地址状态Address0、Address1.然后根据iswr信号是高电平或低电平而进入写数据进程或读数据进程。读写数据过程均由两个状态完成,分别是RD0、RD1、WR0、WR1.当一个完整的读或写操作完成时,进入IDLE状态。每一个状态描述了ALE、WR、RD、CS、DIR1、ADDR的变化。这里为了便于描述,设1为高电平,0为低电平,对以上几个信号在各个状态的值进行说明,将信号组{ALE、WR、RD、CS、DIR1}设为CtrS.

  FPGA的时钟为5 MHz,用以上状态机来实现SJA1000 寄存器的读写,在设计中每个状态占用的时间是一个周期,即200 ns.按照SJA1000 接口读写时序参数可知[8],片选信号必须在读写信号有效之前变为有效,并且读信号有效时存储数据总线上的数据。如此,设计的时序符合时序参数要求。其他的时序设计都要严格按照时序参数表来设计。

  在编写读写模块时,需注意双向总线的编写技巧。双向口在顶层定义,否则模块综合时容易出错。

  3.3 INOUT双向端口

  芯片外部引脚很多都使用inout类型的,目的是节省管脚,即一个端口同时做输入和输出。inout 在具体实现上一般用三态门来实现。三态门的第三个状态就是高阻"Z". 当inout端口不输出时,将三态门置为高阻。这样信号就不会因为两端同时输出而出错了。本设计中地址数据复用的ADDR为8位双向端口,使用时可以写为:

  inout ADDR;

  wire [7:0] ADDR;

  wire [7:0] input_of_ADDR;

  wire [7:0] output_of_ADDR;

  wire en;

  assign ADDR =  (en==1)?output_of_ADDR:8'hzz ;

  assign input_of_ADDR  = ADDR;

  可见,此时input_of_ADDR和output_of_ADDR就可以当作普通信号使用了。对于双向端口的测试用例如下:

  wire [7:0] ADDR;

  reg link;

  reg [7:0] data_in_t;

  assign ADDR=link?data_in_t:8'hzz;

  需要注意几点:(1)对于inout端口,要定义一个与之相连的"映像寄存器".当inout端口作为输出端口时,将两者连通;而当inout端口不作为输出端口时,要给i~t端口赋高阻态来断开与"映像寄存器"的连接。(2)在实例化含inout(双向)端口的模块时,与inout端口相连的只能是一个wire类型的变量。(3)不论是模块设计还是仿真, 由于inout端口兼有输人端口和输出端口的功能,所以必须分别指定当inout端口作为输人端口(输出端口)时,它与其他单元的连接情况和需要完成的操作。

  4 实验结果

  FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

  Verilog HDL是目前应用为广泛的硬件描述语言。Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。   Verilog HDL适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述。   Verilog HDL进行设计的优点是其工艺无关性。这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。

  在FPGA中利用Verilog编程产生SJA1000的片选信号CS,地址锁存信号ALE,读写信号RD、WR.这些控制信号共同驱动SJA1000进行数据接收发送,同时产生OE0、OE1、DIR0、DIR1,来控制双向总线收发器。设计选取的是Xilinx公司Virtex系列的芯片,逻辑开发在ISE平台上进行。在FPGA的调试阶段,使用Xilinx提供的在线逻辑分析仪ChipScope pro来在线观察FPGA设计内部信号的波形,它比传统的逻辑分析仪更方便。图5就是在线进行数据传送时的波形。

  在本文空间相机通信系统的设计中,放弃了传统的基于单片机的方法,而采用以FPGA为控制单元,代替单片机及其外围芯片电路。通过设计整个空间相机通信系统的硬件电路,并利用Verilog硬件语言描述通信流程,快速准确地实现了相机数据的通信功能。


  
上一篇:一种基于AVS标准熵解码器的实现
下一篇:解析CMOS伪差分E类射频功率放大器设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料