历史上的今天
返回首页

历史上的今天

今天是:2025年07月29日(星期二)

正在发生

2020年07月29日 | 基于FPGA与ARM进行遥测数据网络转发的流程剖析

2020-07-29 来源:elecfans

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


1 整体模块设计

1.1 系统设计

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

基于FPGA与ARM进行遥测数据网络转发的流程剖析

在设备开始工作前,需要在计算机端进行参数设置,计算机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进行遥测数据网络转发的流程剖析

FPGA在ARM中起始地址为0x18000000,以4 B对齐,占用0x80个地址,地址范围为0x18000000~Ox1800007C,中断为EINT0。


在FPGA内部采用读/写指针来模拟FIFO,用一个地址来读取FPGA数据,其余地址用于配置帧同步器与模拟源的参数。


2 帧同步与B码解调

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

基于FPGA与ARM进行遥测数据网络转发的流程剖析

2.1 帧同步模块

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

基于FPGA与ARM进行遥测数据网络转发的流程剖析

PCM数据按时钟进行串/并转换,与本地帧同步码进行同或运算后再与上屏蔽位,由全加网络将相关运算结果按位相加统计结果中1的个数,大于门限值则表示可能接收到了帧同步码。


为避免虚警和漏检,使帧同步器稳定可靠工作,采用搜索、校核、锁定三态逻辑。

系统开始时处于搜索态,符合相关器输出,由搜索态转入校核态。在预期检测窗口内没有帧码,从校核返回到搜索态。连续通过校核数α,进入锁定态。为避免帧同步码的漏检,连续漏检超过保护帧数β,帧同步才返回搜索态,否则保持在锁定态,帧脉冲由本地产生。


2.2 IRIG—B码解调

IRIG时间序列码是一种串行码,共有3种码元,如图5所示。

基于FPGA与ARM进行遥测数据网络转发的流程剖析

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

基于FPGA与ARM进行遥测数据网络转发的流程剖析

时钟频率为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,如下:

基于FPGA与ARM进行遥测数据网络转发的流程剖析

当用户程序读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中的物理地址,定义如下宏:

基于FPGA与ARM进行遥测数据网络转发的流程剖析

使用ioremap()对FPGA的I/O内存资源进行映射,把物理内存地址映射为一个内核指针:

基于FPGA与ARM进行遥测数据网络转发的流程剖析

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

基于FPGA与ARM进行遥测数据网络转发的流程剖析

FPGA连接在ARM的EINT0上,isr_fpga为中断处理函数指针。当关闭FPGA设备时,需释放I/O内存,释放中断:


3.2.2 驱动程序控制接口Ioctl

Ioctl用来设置FPGA中帧同步器和模拟源的参数,部分设置命令如表1所示。

基于FPGA与ARM进行遥测数据网络转发的流程剖析

在此,采用统一的命令码方式,包含幻数、序数、传输方向、数据长度,使用宏_IO(),_IOR(),_IOW()和IOWR()辅助生成,如命令0设置如下:

基于FPGA与ARM进行遥测数据网络转发的流程剖析

在Ioctl中,采用switeh(cmd)来实现对FPGA参数的设置及FPGA状态的读取。


3.2.3 中断函数及读函数

当FPGA产生中断时,根据缓冲区的大小,中断函数循环对FPGA映射后的地址读取数据。ARM与FPGA接口为16位,使用inw读取,数据存放在驱动程序的缓冲区中:

基于FPGA与ARM进行遥测数据网络转发的流程剖析

应用程序读取数据时,调用read函数,参数buffer为用户空间缓冲区的指针,利用copy_to_user函数将数据从内核空间拷贝到用户空间,当设备中暂时没有数据时,读进程应当被休眠:

flag为一个标志位,当flag被中断函数设置为1时表示设备中有数据,此时读进程可被换醒。


3.2.4 用户程序及测试

设备驱动实现后,需编写相应的用户程序来进行测试驱动程序和实现数据的网络转发。在用户程序中,读/写FPGA设备使用与普通文件一样的操作函数。移植Linux时配置好网卡的地址,然后使用Socket编程实现数据的TCP/IP转发,用遥测软件接收到的数据测试如图7所示。

基于FPGA与ARM进行遥测数据网络转发的流程剖析

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


4 结语

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

推荐阅读

史海拾趣

Hantronix公司的发展小趣事

随着全球对环保问题的日益关注,HANBIT Electronics积极响应,将绿色生产纳入公司发展战略。2020年,公司投资建立了绿色生产线,采用环保材料和清洁能源进行生产,实现了生产过程中的节能减排。同时,公司还推出了多款环保型电子产品,满足消费者对绿色、低碳生活的需求。这一举措不仅提升了公司的品牌形象,也为其在可持续发展的道路上赢得了更多机遇。

AZM [Arizona Microtek, Inc]公司的发展小趣事

随着电子行业的快速发展,AZM公司意识到只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了对研发的投入,积极引进高端人才,建立了完善的研发体系。通过持续的技术创新,AZM公司成功推出了一系列具有领先水平的微电子产品,不仅提升了公司的市场竞争力,也为整个电子行业的发展做出了贡献。

FUJI公司的发展小趣事

为了进一步提升公司的国际竞争力,AZM公司开始实施国际化战略。公司积极寻求与国际知名企业的合作机会,通过技术合作、市场合作等方式,共同开拓全球市场。同时,AZM公司还在海外设立了研发中心和生产基地,以便更好地了解当地市场需求和技术发展趋势,实现全球布局和资源整合。

请注意,这些故事是基于假设和推测构建的,并非AZM公司的真实发展历程。如果需要了解AZM公司的具体发展历程和故事,建议查阅该公司的官方网站、新闻报道或相关文献资料。

Enovation Controls LLC公司的发展小趣事

随着市场规模的扩大,AZM公司面临着供应链管理和成本控制的挑战。为了确保产品质量和交货期的稳定性,公司加强了与供应商的合作与沟通,建立了严格的供应商评价体系。同时,公司还通过优化生产流程、提高生产效率、降低原材料消耗等方式,有效控制了成本,提升了盈利能力。

台湾唯圣(GW)公司的发展小趣事
电路设计应遵循相关的行业标准和安全规范,确保各元器件的选型、布局和连接方式合理可靠。
Fenfa Electronics Ltd公司的发展小趣事

Fenfa Electronics Ltd公司自创立之初,就深知技术创新的重要性。在公司成立初期,面对市场上激烈的竞争,Fenfa团队决定投入大量资源于研发领域。经过数年的不懈努力,公司成功研发出一款具有革命性的电子产品,该产品以其高效能、低能耗和出色的用户体验迅速在市场上崭露头角。这一技术创新的突破,为Fenfa Electronics Ltd公司赢得了市场的认可,也为公司后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

ADS的EQN功能怎么用,等噪声圆、增益圆

在仿真LNA时,遇到这样的一个问题,要看噪声系数圆,要输入这样公式:circleData=ns_circle(NFmin[indx]+{0,0.1,0.2},NFmin[indx],Spot[indx],Rn[indx]/50,51)…

查看全部问答>

如何不自动加载驱动!!!!!!!!!!!!!!!!!!!!!!

是这样的,WINCE起来后,总是会加载BTD.DLL这个蓝牙驱动,请教一下能不能在我需要蓝牙通信的时候才加载这个驱动呀!…

查看全部问答>

WINCE 设备调试过程中,MFC视图的OnDraw函数中 一段代码总是过不去

WINCE 设备调试过程中,MFC视图的OnDraw函数中 一段代码总是过不去 仔细检查发现 并无问题  但就是过不去 当我 用 Messagebox一步步调试一 遍就可以进去了 然后去掉MESSAGEBOX程序可以顺利通过了 这样的问题已经碰到几次了 &n ...…

查看全部问答>

新手学ARM,求二手天祥TX_2440A开发板一套

新手学ARM,求二手天祥TX_2440A开发板一套,价格嘛,希望多多优惠。…

查看全部问答>

开关电源测试方案

 开关电源因其效率高,体积小而被电子企业广泛应用,以下是自己在工作中总结出来的测试方法和测试项目,在电源设计时若能充分考虑到这些方面,那么其产品将会被越来越多的客户所使用。现在的电子产品对电源的要求有所提高,大部分是关心其稳定 ...…

查看全部问答>

MX53 Industrial Embedded WinCE7 System, Yuanying

To be one of technical leader company, in past few year Yuanying Tech always focus on embedded system solution offering, from low end to high end. Our platform including MX25, MX28, MX35 and MX51. From Nov of last year, Yuanying ...…

查看全部问答>

F2812中断优先级的设置 (转载)

F2812中断优先级的设置 作者:embededt…    文章来源:embededtony    点击数: 103    更新时间:2011-4-20     原以 ...…

查看全部问答>

2014深圳制汇节圆满结束

历时两天的全球Maker的盛宴“2014深圳制汇节”于4月7日圆满落下帷幕。英蓓特公司在展会上展出了一系列新产品,其中BB-Black中国版、Atmel SAMAD3-Xplained A5评估板、基于Freescale i.MX6 Solo处理器的开发板RIoTboard和CooCox及其外设产 ...…

查看全部问答>

ZIGBEE网络时钟同步

我是用CC2530搭的网 我需要在ZIGBEE网络中插入PTP协议 不知道这个PTP协议是要怎样插入到ZIGBEE网络中  求指导…

查看全部问答>