首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于DSP和FPGA的磁浮列车同步485通信方式(2)

基于DSP和FPGA的磁浮列车同步485通信方式(2)

车载无线电控制单元侧DSP与FPGA的数据交换
为了避免占用过多的CPU资源,车载无线电控制单元中DSP从FPGA读数据时不采用查询方式,而采用外部中断来接收数据。将DSP的16bits数据线与FPGA连接,DSP的XINT1也连接到FPGA的I/O管脚。若选用XZCS0AND1作为外部存储器片选信号,则DSP从FPGA读数据的寻址空间范围为0x002000—0x004000,这个地址范围内所读出的数据即为数据线上传送到DSP的定位数据。相对应的硬件连接框图见图5。


由于FPGA传送到DSP的一帧数据为72bits,因此通过16bits数据线传输需要5次才能传送完,每16bits数据到达时产生一次外 部中断。设波特率时钟为512k,假设来自定位单元完整的一帧数据为0x02123456789abcde03,车载无线电单元通过16bits数据线分次转发到DSP的数据则为0x0002、0x1234、0x5678、0x9abc及0xde03。数据及中断信号产生的时序如图6所示。由图6可以看出,每对应移出一次dataout,都会相应地发出一个外部中断信号xint1,DSP一旦接收到外部中断,便在中断服务子程序中从16bits数据线读取信号值。为了完整的接收一帧信号,可在外部中断服务程序中定义一个16级FIFO,当从FIFO的最底层读出的数据为0x02时,便可以判断一帧数据的开始(若在用户数据和校验值中存在0x02,则要进行相应的字符转义),依次接收以下的数据便得到完整的一帧定位信息。
通信双方的原理图
根据以上对同步485实现方法的描述,在ISE中利用ECS工具所描绘的顶层原理图如图7和图8所示。包括测速定位单元同步数据发送和车载无线电控制单元同步数据接收两部分。
图7中,addr_decode为地址译码模块,用于从DSP完整地接收一帧定位信息;tra485data为串行数据及门控信号发送模块。其中,din(15:0)直接来自DSP的16bits数据线;addr(3:0)与DSP的A17~A14地址线相连;clkin及anfin信号由车载无线电控制单元提供。输出的dataout及uefout经过输出缓冲及差分电平转换后送给车载无线电控制单元。
在图8所示的车载无线电控制单元同步数据接收方的原理图中,divide_512k为发送时钟产生模块,产生通信所需的波特率时钟;anf_shift用于产生无线电请求信号;rec485data用于串行接收定位信息并通过dataconvert模块转发到通信控制器。其中,Dataout(15:0)直接通过数据线连到DSP,Xint1则连到DSP的外部中断1。anfout和clkout由输入的晶振频率分频后得到,经输出缓冲及差分电平转换后送给车辆测速定位单元。


结语
在高速磁浮列车特殊的通信环境中,基于RS-485物理层的同步通信方式体现出其抗干扰性强、实时性好、误码率低等优点,且实现原理简单。利用FPGA所实现的通信收发器设计灵活、可靠性高,其功能在实际应用中已得到验证。
继承事业,薪火相传
返回列表