当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于FPGA与ARM的遥测数据网络化采集

摘要:现有的遥测接收机为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打包,发送给接收计算机。


    在设备开始工作前,需要在计算机端进行参数设置,计算机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所示。


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

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

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


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


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


    时钟频率为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,如下:   
[!--empirenews.page--]
    当用户程序读FPGA设备时,数据还未准备好,此时驱动程序应该阻塞该进程,将其置入睡眠状态直到条件满足。此时需要初始化一个等待队列头,对读进程的休眠和唤醒时使用:
   
    在卸载函数中,删除一个cdev,完成字符设备的注销,然后释放设备编号:
   
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中的物理地址,定义如下宏:
   
    使用ioremap()对FPGA的I/O内存资源进行映射,把物理内存地址映射为一个内核指针:

    数据交换采用中断,需先设置硬件中断方式,然后向系统注册中断函数,实现如下:

    FPGA连接在ARM的EINT0上,isr_fpga为中断处理函数指针。当关闭FPGA设备时,需释放I/O内存,释放中断:
   
3.2.2 驱动程序控制接口Ioctl
    Ioctl用来设置FPGA中帧同步器和模拟源的参数,部分设置命令如表1所示。


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


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

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Arm CPU正在从根本上推动AI变革,并造福地球。Arm架构是未来AI计算的基石。​

关键字: ARM AI

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片
关闭
关闭