一种面向多信息源的FPGA与CPU数据同步装置及方法与流程

文档序号:27908179发布日期:2021-12-11 06:42阅读:112来源:国知局
一种面向多信息源的FPGA与CPU数据同步装置及方法与流程
一种面向多信息源的fpga与cpu数据同步装置及方法
技术领域
1.本发明属于fpga和嵌入式技术领域,具体是一种面向多信息源的fpga与cpu数据同步装置及方法。


背景技术:

2.目前,大多数的嵌入式系统采用fpga+cpu的架构进行设计,fpga与cpu数据同步的方法主要有基于查询的方式和基于中断的方式。基于查询的方式是由cpu周期性地访问fpga内部的数据缓存区,这种方式效率低下,无法实现数据实时同步。基于中断的方式是在fpga的数据发生变化的时候产生中断,cpu接收到中断信号之后再访问fpga内部的数据缓存区,这种方式提高了cpu的工作效率,数据同步的实时性更高。随着嵌入式系统设计越来越复杂,系统需要进行数据采集的信息源也越来越多。传统基于中断的fpga与cpu数据同步方法为每一个信息源配置一个中断管脚,当cpu接收到中断信号之后,访问该中断相对应的数据缓存区,从而实现数据同步。当需要进行数据采集的信息源较多的时候,传统方法存在两方面的问题。一方面,cpu的中断管脚数量有限,当信息源较多时,无法为每一个信息源配置一个中断管脚。另一方面,各个信息源的数据具有突发性、随机性、独立性的特点,造成cpu频繁地进入中断处理程序,降低cpu的效率,容易产生中断丢失。


技术实现要素:

3.本发明针对现有技术的不足,提供了一种面向多信息源的fpga与cpu数据同步装置及方法,应用于多信息源的数据采集系统中,实现fpga与cpu数据同步,解决了传统方法存在的中断管脚数量不足、中断触发过于频繁的问题。
4.本发明一种面向多信息源的fpga与cpu数据同步装置,包括fpga单元和cpu,所述fpga单元与cpu之间通过通信总线进行数据交互,所述fpga单元的某一io管脚与cpu的中断专用管脚相连。
5.所述fpga单元包括n个数据缓存区、变更判决模块、变更标志区间定时汇聚模块、中断清除逻辑、中断寄存计数器、中断屏蔽逻辑、中断信号产生模块和总线接口;数据缓存区用于对各路信息源上报的数据进行缓存;变更判决模块用于对数据缓存区内的数据进行实时判决,当数据发生变化时,产生相应的变更标志;区间定时汇聚模块在时间间隔
ꢀ△
t 内,检测来自n个数据缓存区的变更标志是否有效,如存在一个或多个变更标志有效,则在时间间隔

t 的末尾产生相应的中断标志;中断清除逻辑用于接收cpu发送的中断清除命令,并产生相应的中断清除标志;cpu每完成一次中断处理程序之后,就会通过总线接口发送一次中断清除命令;中断寄存计数器用于对中断标志进行寄存,区间定时汇聚模块每产生一个中断标志,则中断寄存计数器加1,中断清除逻辑每产生一个中断清除标志,则中断寄存计数器减1;
中断屏蔽逻辑用于中断屏蔽控制,cpu在接收到中断信号后,进入到中断服务处理程序,同时通过总线接口发送中断屏蔽命令,此时中断屏蔽信号有效;cpu结束中断服务处理程序后,通过总线接口发送解除中断屏蔽命令,此时中断屏蔽信号无效;中断信号产生模块用于产生符合cpu的时序要求的中断信号,当中断屏蔽信号无效且中断寄存计数器非零时,产生中断信号;总线接口用于实现与cpu进行数据交互的功能,一方面,数据缓存区的数据通过总线接口上报给cpu,另一方面,cpu的命令也可以通过总线接口下发给fpga。
6.本发明另一目的是,提供了一种面向多信息源的fpga与cpu数据同步方法,所述方法包括fpga处理流程和cpu处理流程。
7.所述fpga处理流程包括以下步骤:s101、fpga的数据缓存区将外部信息源的数据缓存下来,对于n个信息源,则配备n个数据缓存区;s102、实时对数据缓存区内的数据进行变更判决,对于有数据变换的缓存区产生相应的变更标志;s103、设定一定的时间间隔,在时间间隔

t 内,若检测到一个或者多个变更标志有效,在时间间隔

t 的末尾产生一个中断标志,若没有检测到变更标志有效,则继续等到变更标志有效;s104、对产生的中断标志进行寄存,每产生一个中断标志,中断寄存计数器加1;s105、若中断屏蔽信号无效且中断寄存计数器的值非零,则产生中断信号,若中断屏蔽信号有效,则中断信号生成进程被挂起,等待中断屏蔽信号无效;s106、fpga接收到cpu中断屏蔽命令,中断屏蔽信号变为有效,等待cpu完成中断处理程序;s107、fpga接收到中断清除命令之后,中断清除逻辑生成中断清除标志,中断寄存计数器减1,清除当前中断;s108、fpga接收到解除中断屏蔽命令之后,中断屏蔽逻辑输出的中断屏蔽信号变为无效状态。
8.所述cpu处理流程包括以下步骤:s201、cpu接收到中断信号之后,通过通信总线发送中断屏蔽命令,禁止fpga在中断处理服务程序期间产生中断信号;s202、cpu进入中断服务程序,通过通信总线读取n个数据缓存区中的数据,实现fpga与cpu数据同步;s203、cpu结束中断处理服务程序之后,向fpga发送中断清除命令;s204、向fpga发送解除中断屏蔽命令。
9.本发明同步装置将来自多个信息源的变更标志进行区间定时汇聚,将每个区间内的多个变更标志合并成单个中断标志,解决了多信息源情况下fpga与cpu数据同步存在的问题。本发明同步方法相对传统方法,减少了cpu的中断管脚数量,减少了中断信号产生的次数,提高了cpu的效率,确保中断信号不丢失,进而保证了数据的完整性。
附图说明
10.图1为本发明fpga与cpu数据同步装置的示意图;图2为本发明fpga与cpu数据同步方法的fpga处理流程图;图3为本发明fpga与cpu数据同步方法的cpu处理流程图;图4为实施例中信息源数据变化时刻以及各变更标志和中断标志出现的时刻示意图。
具体实施方式
11.下面结合实施例和附图对本发明内容作进一步说明,但不是对本发明的限定。
实施例
12.一种面向多信息源的fpga与cpu数据同步装置,如图1所示,包括fpga单元和cpu,fpga单元与cpu之间通过通信总线进行数据交互,fpga单元的某一io管脚与cpu的中断专用管脚相连;fpga单元包括n个数据缓存区、变更判决模块、变更标志区间定时汇聚模块、中断清除逻辑、中断寄存计数器、中断屏蔽逻辑、中断信号产生模块和总线接口逻辑;总线接口用于实现与cpu进行数据交互的功能,一方面,数据缓存区的数据通过总线接口上报给cpu,另一方面,cpu的命令也可以通过总线接口下发给fpga。
13.本实施例,假设信息源的数量n=5,设定时间间隔,假设在间隔内信息源1、信息源2、信息源3、信息源5的数据发生变化,且发生变化的时刻如图4所示,假设当前中断寄存计数器的值为0。
14.本发明面向多信息源的fpga与cpu数据同步方法,包括fpga处理流程和cpu处理流程。fpga处理流程,如图2所示,具体步骤如下:s101、fpga的数据缓存区将外部信息源的数据缓存下来,对于5个信息源,则配备5个数据缓存区;s102、实时对数据缓存区内的数据进行变更判决,对于有数据变换的缓存区产生相应的变更标志,在时间间隔内信息源1、信息源2、信息源3、信息源5的数据发生变化,则变更标志1在信息源1的数据变化时刻有效,变更标志2在信息源2的数据变化时刻有效,变更标志3在信息源3的数据变化时刻有效,变更标志5在信息源5的数据变化时刻有效。信息源4的数据在时间间隔内无变化,则变更标志4无效,如图4所示;s103、在时间间隔内,检测到4个变更标志有效,则在时间间隔内的末尾产生一个中断标志;s104、对产生的中断标志进行寄存,每产生一个中断标志,中断寄存计数器加1,中断寄存计数器的值变为1,表示有1个中断信号需要生成并处理;s105、cpu尚未进入中断服务程序,中断屏蔽信号无效,且中断寄存计数器的值为1,是非零的值,则中断信号产生模块产生符合cpu的时序要求的中断信号;s106、fpga接收到cpu中断屏蔽命令,中断屏蔽信号变为有效,等待cpu完成中断处理程序;s107、fpga接收到中断清除命令之后,中断清除逻辑生成中断清除标志,中断寄存
计数器减1,清除当前中断,中断寄存计数器的值变为0,表示当前无中断信号需要生成;s108、fpga接收到解除中断屏蔽命令之后,中断屏蔽逻辑输出的中断屏蔽信号变为无效状态。
15.cpu处理流程,如图3所示,具体步骤如下:s201、cpu接收到中断信号之后,通过通信总线发送中断屏蔽命令,禁止fpga在中断处理服务程序期间产生中断信号;s202、cpu进入中断服务程序,通过通信总线读取5个数据缓存区中的数据,实现fpga与cpu数据同步;s203、cpu结束中断处理服务程序之后,向fpga发送中断清除命令;s204、向fpga发送解除中断屏蔽命令。
16.本发明数据同步方法,将多个信息源的数据变更标志采用区间定时汇聚成一个中断源,从而减少cpu中断管脚数量的占用,减少cpu进入中断的次数,提高cpu工作效率。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1