在空间相机数据采集应用中,为了满足电路板体积重量以及可扩展性的要求,利用fpga作为主控芯片,控制相机进行数据采集和传输。在数据通信系统中,fpga替代了传统的单片机作为can总线的主控制器,并给出了详细的硬件电路设计方法。在对can协议控制器sja1000进行功能及时序分析后,利用硬件语言对其通信流程进行设计。实践证明,在严格的时序逻辑下,fpga能够控制can总线稳定正确地对相机数据进行收发。
can总线是由iso定义的串行通信总线,主要用于各种过程检测及控制。它是一种多主总线,具有高位速率和高抗电磁干扰性,而且能够检测出传输中产生的任何错误。显著的优点使得can总线成为国际上应用最广泛的现场总线标准之一 。
由于其优良的性能及独特的设计,can总线已被广泛地应用于各种分布式控制系统中。特别是由于can总线具有抗干扰性强、高数据传输率、低成本等优点,在小卫星和微小卫星中得到了越来越广泛的应用。在卫星有效载荷数据控制传输中也会应用,如空间相机数据通信方面。
1 数据通信系统
一般来说,每个can模块能够被分成三个不同的功能块,其结构如图1所示。can总线收发器提供can协议控制器与物理总线之间的接口,控制从can 控制器到总线物理层或相反的逻辑电平信号。它的性能决定了总线接口、总线终端、总线长度和节点数,是影响整个总线网络通信性能的关键因素之一。can控制器执行在can 规范里规定的can协议,它通常用于报文缓冲和验收滤波,对外具有与主控制器和总线收发器的接口。fgpa主控制器负责执行应用的功能,例如对空间ccd相机控制命令的发送、读取图像数据等。它通过对can控制器的编程控制can总线的工作方式、工作状态以及数据的发送和接收。
在本项目的特殊环境要求下,使用fpga作为主控芯片,控制空间相机进行数据采集与传输,并通过can总线进行数据收发。较之传统设计使用的单片机,fpga能够在速度和体积上有更好的适应性。fpga一方面减少了电路板的复杂程度,缩短了实现周期,另一方面是fpga具有丰富的资源、超高的性能和灵活的可编程性[3],提高了整个设备的可靠性,大大增强了电路板设计的灵活性和可扩展性。
2 通信系统接口设计
电路设计如图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总线的接收和发送采用查询方式 。在整个流程实现中,主要是对can控制器sja1000中的寄存器进行读写操作。
3.2 读写流程控制
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的变化(oe0、oe1、dir0分别为定值0、0、1,因此未列出来)。这里为了便于描述,设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;
对于有inout(双向)端口的verilog程序设计,需要注意几点:(1)对于inout端口,要定义一个与之相连的“映像寄存器”。当inout端口作为输出端口时,将两者连通;而当inout端口不作为输出端口时,要给i~t端口赋高阻态来断开与“映像寄存器”的连接。(2)在实例化含inout(双向)端口的模块时,与inout端口相连的只能是一个wire类型的变量。(3)不论是模块设计还是仿真, 由于inout端口兼有输人端口和输出端口的功能,所以必须分别指定当inout端口作为输人端口(输出端口)时,它与其他单元的连接情况和需要完成的操作。
4 实验结果
在fpga中利用verilog编程产生sja1000的片选信号cs,地址锁存信号ale,读写信号rd、wr。这些控制信号共同驱动sja1000进行数据接收发送,同时产生oe0、oe1、dir0、dir1,来控制双向总线收发器。设计选取的是xilinx公司virtex系列的芯片,逻辑开发在ise平台上进行。在fpga的调试阶段,使用xilinx提供的在线逻辑分析仪chipscope pro来在线观察fpga设计内部信号的波形,它比传统的逻辑分析仪更方便。图5就是在线进行数据传送时的波形。
在本文空间相机通信系统的设计中,放弃了传统的基于单片机的方法,而采用以fpga为核心控制单元,代替单片机及其外围芯片电路。通过设计整个空间相机通信系统的硬件电路,并利用verilog硬件语言描述通信流程,快速准确地实现了相机数据的通信功能。在软硬件的联调和验证时,利用chipscope在线逻辑仪功能,方便准确地实现了预期目的。
基于LabVIEW的光伏电源监控系统设计
山东年内将开通首个5G基站、Adobe宣布收购语音应用平台Sayspring
酷派酷玩6C价格849元 10月25日正式开卖
深化合作,神行超充电池落地极狐
欧姆定律是什么
以FPGA为核心控制单元的空间相机通信系统的设计详解
甲地点到乙地点自动往返甲地停止原理图
TD-SCDMA测试出现不顺畅插曲:设备互通出现问题(1)
小米汽车技术发布会:媲美保时捷和特斯拉的小米超级电机
唯捷创芯于科创板上市,首日暴跌36%
贵州大学将举办全国机器人总动员大赛
CW32 搭建VSCODE+GCC交叉编译环境
专家关于高速线路的布线问题解答(三)
UC3842/KA3842芯片如何判断好坏,how to test UC3842
PWM斩波器式交流稳压电源的原理分析
光电鼠标原理及维修
力矩电机控制器故障排除——三相输出不平衡怎么办(II)
ENSPIRE概念车——解读了对未来汽车的一种可能
海外市场再下一城!BL10系列网关全部支持美国Inductive Automation SCADA
是德科技X系列频谱分析仪在测量中需要注意什么