- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
一种空间相机的数据通信系统设计
CAN节点主程序主要包括:作为主控制器的FPGA的初始化、CAN控制器初始化、寄存器状态查询、接收发送报文以及数据处理。在此设计中,由于通信模块对接收数据的实时性要求并不是很高,因此CAN总线的接收和发送采用查询方式[7]。在整个流程实现中,主要是对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在线逻辑仪功能,方便准确地实现了预期目的。
来源:电子技术应用
上一篇:采用FPGA实现医疗影像
下一篇:如何在DS26303
LIU启用ITU-T
G.703
2048kHz同步接口


