一种保持数据传送一致性的方法及系统技术方案

技术编号:19745038 阅读:52 留言:0更新日期:2018-12-12 04:42
本发明专利技术公开了一种保持数据传送一致性的方法及系统,涉及计算机通信技术领域,采用本发明专利技术,需要写入信息时,将数据进行暂存合并,当信息的所有位都完整的获取了后才一次写入缓存;需要读取信息时,仅在CPU第一次读取某条信息时,就从缓存中取出整条信息所有位并暂存,根据总线数据线位宽和特定信息访问地址低位计算出待发送的数据位并送出,期间不会再从缓存中读取,避免信息读写一半造成CPU或FPGA中的信息一半新值,一半老值,实现了保障数据传送一致性;同时,避免了FPGA与CPU之间应答交互造成额外的RAM资源和时间消耗,且对误操作可以自行恢复。

【技术实现步骤摘要】
一种保持数据传送一致性的方法及系统
本专利技术涉及计算机通信
,具体涉及一种保持数据传送一致性的方法及系统。
技术介绍
CPU掌握了设备所有关键信息且长于复杂计算,而FPGA在性能和时间精度上占据优势。故两者常联合处理复杂又高效的事务,如保护倒换。CPU收集计算信息字段写入FPGA的缓存,FPGA定时取出信息;或者FPGA即时解析收到的信息并存入缓存,供CPU按需轮询。在这个过程中,有大量信息在快速交互;且信息在CPU和FPGA的处理是完全独立、互不相干的。其中有些信息位宽较大,比两者之间的传输总线的更宽。此时以总线接口的数据线位宽为单位,按照一定的顺序,从高到低位或者从低到高位,信息被分成一组组字段依序传递,直到一条信息被完整传完。一条信息作为一个完整的单元,每一条的传输都是从头到位传完,才会传送下一条信息。中途总线可能会被抢占、打断去进行更高优先级的信息传送,但回到同一种信息的传送队列时,依然会接上被抢占、打断前还未传完的同一条继续传输完,而不会跳到另一条去。上述传输方式存在以下缺陷:若CPU通过总线往FPGA写入一条信息写了一半,FPGA取样了这条信息,此时FPGA获取到的会是一半老值一半新值;若CPU通过总线从FPGA读取一条信息读到一半,FPGA收到新信息并即时更新了缓存中该条信息,此时CPU获取的也会是一半老值一半新值;以上两种情况信息传递时均会失去一致性,发生错误。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种保持数据传送一致性的方法及系统,在传递大于总线数据线位宽的信息时,保障数据传送一致性。为达到以上目的,本专利技术采取的技术方案是:一种保持数据传送一致性的方法,包括以下步骤:CPU通过总线接口向FPGA写信息时,判断写信息时的片选信号是否有效,若片选信号有效,将从总线接口获取的信息暂存,当完整地获取了信息的所有数据位,才将信息写入FPGA的缓存;若片选信号无效,则不写入;CPU通过总线接口向FPGA读信息时,判断读信息时的片选信号是否有效,若片选信号有效,仅在第一次读取该条信息时,从FPGA的缓存中获取信息的所有数据位并暂存,再根据总线接口的数据线位宽,计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU;若片选信号无效,则不读取该信息。在上述技术方案的基础上,所述判断写信息时的片选信号是否有效,具体包括以下步骤:将写信息时的片选信号设为cs_winfo;判断cs_winfo是否满足:cs_local&(adr_local>=base_winfo)&(adr_local<(base_winfo+sum_wadr));若是,片选信号有效;若否,片选信号无效;其中,cs_local为CPU与FPGA之间总线接口的片选控制信号,adr_local为CPU与FPGA之间总线接口的地址信号,base_winfo为CPU写入FPGA特定信息的地址基址;sum_wadr是CPU写入FPGA特定信息的地址空间的总数。在上述技术方案的基础上,所述判断读信息时的片选信号是否有效,具体包括以下步骤:将读信息时的片选信号设为cs_rinfo;判断cs_rinfo是否满足:cs_local&(adr_local>=base_rinfo)&(adr_local<(base_rinfo+sum_radr));若是,片选信号有效;若否,片选信号无效;其中,cs_local为CPU与FPGA之间总线接口的片选控制信号,adr_local为CPU与FPGA之间总线接口的地址信号,base_rinfo是CPU从FPGA读出特定信息的地址基址;sum_radr是CPU从PGA读出特定信息的地址空间的总数。在上述技术方案的基础上,所述将从总线接口获取的信息暂存,当完整地获取了信息的所有数据位,才将信息写入FPGA的缓存,具体包括以下步骤:CPU向FPGA写信息的地址信号,包括地址高位和地址低位,地址高位为[N-1:k],地址低位为[k-1:0];其中,CPU向FPGA写信息的地址线位宽设为N,总线接口的数据线位宽设为n,信息的位宽设为m;信息需要传递的总次数设为j=m/n+(m%n!=0);地址低位的位宽设为k,k=1og2(j);CPU通过总线接口向FPGA写信息时:地址高位变化时,先将传送次数归零,再将[n*(i+1)-1:n*i]对应的数据位暂存,i为CPU向FPGA写信息的地址信号的低位地址,n为总线接口的数据线位宽;地址高位相同、地址低位变化时,先将传送次数递增1,再将[n*(i+1)-1:n*i]对应的数据位暂存,i为低位地址,n为总线接口的数据线位宽;传送次数递增至j-1时,先完成对应的数据位的暂存,再将暂存的信息的所有数据位写入FPGA的缓存。在上述技术方案的基础上,所述仅在第一次读取该条信息时,从FPGA的缓存中获取信息的所有数据位并暂存,再根据总线接口的数据线位宽计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU,具体包括以下步骤:CPU向FPGA读信息的地址信号,包括地址高位和地址低位,地址高位为[N-1:k],地址低位为[k-1:0];其中,CPU向FPGA读信息的地址线位宽设为N,总线接口的数据线位宽设为n,信息的位宽设为m;信息需要传递的总次数设为j=ceilingdivide(m,n)=m/n+(m%n!=0);地址低位的位宽设为k,k=1og2(j);CPU通过总线接口读取FPGA的信息时,高位变化时,将传送次数归零;地址高位相同、地址低位变化时,将传送次数递增1;传送次数为0时,从FPGA的缓存中获取信息的所有数据位并暂存;根据总线接口的数据线位宽计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU;传送次数递增1时,根据总线接口的数据线位宽计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU。在上述技术方案的基础上,所述根据总线接口的数据线位宽计算出待发送的数据位,具体计算方法为:设CPU向FPGA读信息的地址信号的地址低位为i,待发送的数据位为[n*(i+1)-1:n*i],其中n为总线接口的数据线位宽。本专利技术还公开了一种保持数据传送一致性的系统,包括写信息转换模块和读信息转换模块:所述写信息转换模块用于CPU通过总线接口向FPGA写信息时,判断写信息时的片选信号是否有效,若片选信号有效,将从总线接口获取的信息暂存,当完整地获取了信息的所有数据位,才将信息写入FPGA的缓存;若片选信号无效,则不写入;所述读信息转换模块用于CPU通过总线接口向FPGA读信息时,判断读信息时的片选信号是否有效,若片选信号有效,仅在第一次读取该条信息时,从FPGA的缓存中获取信息的所有数据位并暂存,再根据总线接口的数据线位宽,计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU;若片选信号无效,则不读取该信息。在上述技术方案的基础上,所述写信息转换模块包括:第一片选及地址处理子模块,其用于判断写信息时的片选信号是否有效,并将在片选有效时将总线地址赋值给CPU向FPGA写信息的地址,无效时保持;第一传递次数计算子模块,其用于判断CPU向FPGA写信息的地址信号的地址本文档来自技高网...

【技术保护点】
1.一种保持数据传送一致性的方法,其特征在于,包括以下步骤:CPU通过总线接口向FPGA写信息时,判断写信息时的片选信号是否有效,若片选信号有效,将从总线接口获取的信息暂存,当完整地获取了信息的所有数据位,才将信息写入FPGA的缓存;若片选信号无效,则不写入;CPU通过总线接口向FPGA读信息时,判断读信息时的片选信号是否有效,若片选信号有效,仅在第一次读取该条信息时,从FPGA的缓存中获取信息的所有数据位并暂存,再根据总线接口的数据线位宽,计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU;若片选信号无效,则不读取该信息。

【技术特征摘要】
1.一种保持数据传送一致性的方法,其特征在于,包括以下步骤:CPU通过总线接口向FPGA写信息时,判断写信息时的片选信号是否有效,若片选信号有效,将从总线接口获取的信息暂存,当完整地获取了信息的所有数据位,才将信息写入FPGA的缓存;若片选信号无效,则不写入;CPU通过总线接口向FPGA读信息时,判断读信息时的片选信号是否有效,若片选信号有效,仅在第一次读取该条信息时,从FPGA的缓存中获取信息的所有数据位并暂存,再根据总线接口的数据线位宽,计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU;若片选信号无效,则不读取该信息。2.如权利要求1所述的一种保持数据传送一致性的方法,其特征在于:所述判断写信息时的片选信号是否有效,具体包括以下步骤:将写信息时的片选信号设为cs_winfo;判断cs_winfo是否满足:cs_local&(adr_local>=base_winfo)&(adr_local<(base_winfo+sum_wadr));若是,片选信号有效;若否,片选信号无效;其中,cs_local为CPU与FPGA之间总线接口的片选控制信号,adr_local为CPU与FPGA之间总线接口的地址信号,base_winfo为CPU写入FPGA特定信息的地址基址;sum_wadr是CPU写入FPGA特定信息的地址空间的总数。3.如权利要求1所述的一种保持数据传送一致性的方法,其特征在于:所述判断读信息时的片选信号是否有效,具体包括以下步骤:将读信息时的片选信号设为cs_rinfo;判断cs_rinfo是否满足:cs_local&(adr_local>=base_rinfo)&(adr_local<(base_rinfo+sum_radr));若是,片选信号有效;若否,片选信号无效;其中,cs_local为CPU与FPGA之间总线接口的片选控制信号,adr_local为CPU与FPGA之间总线接口的地址信号,base_rinfo是CPU从FPGA读出特定信息的地址基址;sum_radr是CPU从PGA读出特定信息的地址空间的总数。4.如权利要求1所述的一种保持数据传送一致性的方法,其特征在于:所述将从总线接口获取的信息暂存,当完整地获取了信息的所有数据位,才将信息写入FPGA的缓存,具体包括以下步骤:CPU向FPGA写信息的地址信号,包括地址高位和地址低位,地址高位为[N-1:k],地址低位为[k-1:0];其中,CPU向FPGA写信息的地址线位宽设为N,总线接口的数据线位宽设为n,信息的位宽设为m;信息需要传递的总次数设为j=m/n+(m%n!=0);地址低位的位宽设为k,k=1og2(j);CPU通过总线接口向FPGA写信息时:地址高位变化时,先将传送次数归零,再将[n*(i+1)-1:n*i]对应的数据位暂存,i为CPU向FPGA写信息的地址信号的低位地址,n为总线接口的数据线位宽;地址高位相同、地址低位变化时,先将传送次数递增1,再将[n*(i+1)-1:n*i]对应的数据位暂存,i为低位地址,n为总线接口的数据线位宽;传送次数递增至j-1时,先完成对应的数据位的暂存,再将暂存的信息的所有数据位写入FPGA的缓存。5.如权利要求1所述的一种保持数据传送一致性的方法,其特征在于:所述仅在第一次读取该条信息时,从FPGA的缓存中获取信息的所有数据位并暂存,再根据总线接口的数据线位宽计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU,具体包括以下步骤:CPU向FPGA读信息的地址信号,包括地址高位和地址低位,地址高位为[N-1:k],地址低位为[k-1:0];其中,CPU向FPGA读信息的地址线位宽设为N,总线接口的数据线位宽设为n,信息的位宽设为m;信息需要传递的总次数设为j=ceilingdivide(m,n)=m/n+(m%n!=0);地址低位的位宽设为k,k=1og2(j);CPU通过总线接口读取FPGA的信息时,高位变化时,将传送次数归零;地址高位相同、地址低位变化时,将传送次数递增1;传送次数为0时,从FPGA的缓存中获取信息的所有数据位并暂存;根据总线接口的数据线位宽计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU;传送次数递增1时,根据总线接口的数据线位宽计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU。6.如权利要求5所述的一种保持数据传送一致性的方法,其特征在于:所述根据总线接口的数据线位宽计算出待发送的数据位,具体计算方法为:设CPU向FPGA读信息的地址信号的地址低位为i,待发送的数据位为[n*(i+1)-1:n*i],其中n为总线接口的数据线位宽。7.一种保持数据传送一致性的系统,其特征在于,包括写信息转换模块和读信息转换模块:所述写信息转换模块用于CPU通过总线接口向FPGA写信息时,判断写信息时的片选信号是否有效,若片选信号有效,将从总线接口获取的信息暂存,当完整地获取了信息的所有数据位,才将信息写入FPGA的缓存;若片选信号无效,则不写入;所述读信息转换模块用于CPU通过总线接口向FPGA读信息时,判断读信息时的片选信号是否有效,若片选信号有效,仅在第一次读取该条信息时,从FPGA的缓存中获取信息的所有数据位并暂存,再根据总线接口的数据线位宽,计算出待发送的数据位,并将待发送的数据位通过总线接口发送至CPU;若片选信号无效,则不读取该信息。8.如权利要求7所述的一种保持数据传送一致性的系统,其特征在于:所述写信息转换模块包括:第一片选及地址处理子模...

【专利技术属性】
技术研发人员:贺昀彦
申请(专利权)人:烽火通信科技股份有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1