基于FPGA与ARM的遥测数据网络化采集

2011-11-15 23:56:18来源: 现代电子技术
   

摘要:现有的遥测接收机为PCI接口,需安装在工控机上使用,为实现设备小型化、便携化,设计实现了小型网络接口遥测解调模块,可配合带有网口的计算机使用。采用FPGA进行遥测数据的帧同步与IRIG—B时码解调,将接收到的遥测数据添加时码后发送给ARM处理器中的Linux系统,并编写Linux 2.6下的FPGA驱动程序,实现FPGA数据的读取,然后通过网卡以TCP/IP格式发给主机,主机实现数据存储与显示。
关键词:FPGA;帧同步;ARM;遥测数据;网络化;Linux

    以太网接口通信速度快,传输可靠,使用和配置方便,对于20 Mb/s以下的码速率,100 Mb/s的网卡可以进行不丢包转发,采用TCP包格式还可使设备小型化,便于数据的转发,因此有必要扩展设备的以太网功能。

1 整体模块设计
1.1 系统设计
    系统设计框图如图1所示。其中,采编器或接收机解调输出的PCM信号及时钟输入到FPGA中进行帧同步,IRIG—B码信息也送到FPGA中进行解调,得到时间信息。数据与时间一起存入SRAM乒乓缓冲区中,达到一定大小后,FPGA向ARM处理器发器中断,ARM中运行的Linux系统,将数据取走,进行TCP/IP打包,发送给接收计算机。

a.JPG


    在设备开始工作前,需要在计算机端进行参数设置,计算机TCP/IP包将参数发送给ARM处理器,由ARM处理器转发给FPGA。帧同步器的设计中,码速率为100b/s~10Mb/s,帧长为4~4 096Word,帧同步码组为4~32,ARM网卡为100Mb/s。
1.2 硬件实现
    PCB采用6层结构,相邻布线层,水平垂直交叉,电路层与电源层单独分开,提供良好的电磁兼容特性。
1.2.1 FPGA
    FPGA选择EP1C12,为实现乒乓缓冲结构,采用SRAM为IS61LV25616。输入信号使用SMA线缆连接,在传输过程中会引入衰减,信号输入输出易出现阻抗不匹配的情况,选用AD8556构成射随器,对输入信号进行匹配,同时也增大模拟源的输出能力。
1.2.2 ARM
    在此采用S3C2440,内核为ARM920T,最高频率为400 MHz,带MMU支持操作系统。内存采用2×32 MB的SDRAM,存储采用128 MB NAND FLASH,网卡采用DM9000A。
1.2.3 ARM与FPGA的接口连接
    这里采用总线接口,将FPGA作为一个存储设备挂在ARM的存储器总线上,如图2所示。

b.JPG


    FPGA在ARM中起始地址为0x18000000,以4 B对齐,占用0x80个地址,地址范围为0x18000000~Ox1800007C,中断为EINT0。
    在FPGA内部采用读/写指针来模拟FIFO,用一个地址来读取FPGA数据,其余地址用于配置帧同步器与模拟源的参数。

2 帧同步与B码解调
    FPGA完成PCM数据的帧同步和解调B码,写入到乒乓SRAM缓冲区中,实现如图3所示。

c.JPG


2.1 帧同步模块
    帧同步器根据帧同步码组的相关性和周期性,经过相关运算将同步码从PCM串行流中识别出来,原理框图如图4所示。

d.JPG


    PCM数据按时钟进行串/并转换,与本地帧同步码进行同或运算后再与上屏蔽位,由全加网络将相关运算结果按位相加统计结果中1的个数,大于门限值则表示可能接收到了帧同步码。
    为避免虚警和漏检,使帧同步器稳定可靠工作,采用搜索、校核、锁定三态逻辑。
    系统开始时处于搜索态,符合相关器输出,由搜索态转入校核态。在预期检测窗口内没有帧码,从校核返回到搜索态。连续通过校核数α,进入锁定态。为避免帧同步码的漏检,连续漏检超过保护帧数β,帧同步才返回搜索态,否则保持在锁定态,帧脉冲由本地产生。
2.2 IRIG—B码解调
    IRIG时间序列码是一种串行码,共有3种码元,如图5所示。

e.JPG


    P码元是位置码元,连续2个P码为一帧的开始,第1个P码元定义为P0,第2个P码元为秒脉冲pps,上升沿为该秒的准时刻,时间信息以BCD码依次分布在其后的码元中。解调时先进行pps的提取,再进行秒、分、时、天的信息提取,其流程如图6所示。

f.JPG


    时钟频率为1 MHz,用计数器对输入信号的脉宽进行计数。8 ms,5 ms,2 ms脉宽计数为8 000,5 000,2 000。输入B码的脉宽会混有干扰,晶振时钟也存在一定的误差,计数器的计时判别应浮动一个范围,设置门限为脉宽的85%~115%,当满足一定范围的数值时,分别输出P码,0码,1码信号。
    FPGA中的时码产生“天:时:分:秒:毫秒:微秒”信息。解调出B码时,FPGA更新内部时间,B码中不含毫秒与微秒信息,由FPGA根据秒脉冲信息的准时刻来生成。

3 FPGA驱动程序开发
    在Linux中,所有的硬件设备都像常规文件一样进行打开、关闭和读/写。把FPGA当作字符设备进行设计,驱动由设备加载与卸载,以及文件操作file_operation结构体中成员函数组成。
3.1 加载与卸栽设备驱动
    FPGA设备驱动程序初始化流程为动态获得主设备号、字符设备注册和申请中断;卸载流程为注销设备,释放设备编号。
    定义一个设备结构体来表示FPGA,如下:   
g.JPG
    当用户程序读FPGA设备时,数据还未准备好,此时驱动程序应该阻塞该进程,将其置入睡眠状态直到条件满足。此时需要初始化一个等待队列头,对读进程的休眠和唤醒时使用:
    j.JPG
    在卸载函数中,删除一个cdev,完成字符设备的注销,然后释放设备编号:
    k.JPG
3.2 文件接口操作
    Linux为所有的设备文件都提供了统一的操作函数,FPGA设备驱动。file_operations包含打开函fpga_open、读函数fpga_read、设置参数函数fpga_ioctl和关闭设备函数fpga_release。
3.2.1 打开与关闭FPGA设备
    在打开设备与关闭设备时会调用open函数与release函数,在open函数中,要对设备进行I/O内存资源映射及中断申请。
    设备驱动程序中,需通过内存管理单元MMU将设备的虚拟地址映射到物理地址。根据FPGA在S3C2440中的物理地址,定义如下宏:
    l.JPG
    使用ioremap()对FPGA的I/O内存资源进行映射,把物理内存地址映射为一个内核指针:
m.JPG
    数据交换采用中断,需先设置硬件中断方式,然后向系统注册中断函数,实现如下:
h.jpg
    FPGA连接在ARM的EINT0上,isr_fpga为中断处理函数指针。当关闭FPGA设备时,需释放I/O内存,释放中断:
   
3.2.2 驱动程序控制接口Ioctl
    Ioctl用来设置FPGA中帧同步器和模拟源的参数,部分设置命令如表1所示。

o.JPG


    在此,采用统一的命令码方式,包含幻数、序数、传输方向、数据长度,使用宏_IO(),_IOR(),_IOW()和IOWR()辅助生成,如命令0设置如下:
    p.JPG
    在Ioctl中,采用switeh(cmd)来实现对FPGA参数的设置及FPGA状态的读取。
3.2.3 中断函数及读函数
    当FPGA产生中断时,根据缓冲区的大小,中断函数循环对FPGA映射后的地址读取数据。ARM与FPGA接口为16位,使用inw读取,数据存放在驱动程序的缓冲区中:
    q.JPG
    应用程序读取数据时,调用read函数,参数buffer为用户空间缓冲区的指针,利用copy_to_user函数将数据从内核空间拷贝到用户空间,当设备中暂时没有数据时,读进程应当被休眠:
    
    flag为一个标志位,当flag被中断函数设置为1时表示设备中有数据,此时读进程可被换醒。
3.2.4 用户程序及测试
    设备驱动实现后,需编写相应的用户程序来进行测试驱动程序和实现数据的网络转发。在用户程序中,读/写FPGA设备使用与普通文件一样的操作函数。移植Linux时配置好网卡的地址,然后使用Socket编程实现数据的TCP/IP转发,用遥测软件接收到的数据测试如图7所示。

u.JPG


    通过测试可以看到,同步码FDB18450被正确识别,IRIG-B解码为当前时间。

4 结语
    在此,基于FPGA与ARM进行遥测数据的帧同步遥测数据的网络转发,充分地利用了FPGA与ARM各自的特点,它可使FPGA+ARM在数据接收处理中得到广泛应用。

关键字:遥测数据  ARM  FPGA

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/1115/article_2708.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
遥测数据
ARM
FPGA

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved