一种基于FPGA的单中断实时数据传输方法技术

技术编号:5272483 阅读:303 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种数据传输方法,特别涉及将多个异步数据源的数据经过基于FPGA的单中断数据传输设备进行缓存,再发送到上位机的一种实时数据传输方法,属于实时信号处理技术领域。该方法首先根据不丢失数据下数据传输条件不等式选择合适的中断周期,然后在FPGA内部创建数据缓冲区,并且创建各数据缓冲区的写状态寄存器,接着根据缓冲区发出的半满和全满信号来产生一个周期性中断信号,上位机通过响应这个周期信号来触发中断服务程序从而完成实时连续传输目的。本发明专利技术方法相比多中断源触发方式,降低了软硬件编程调试的复杂度并且提高了系统的可靠性,由于每次中断产生的数据量大小相对稳定,故数据更便于集中进行批量传输和后处理。

【技术实现步骤摘要】

本专利技术涉及一种数据传输方法,特别涉及将多个异步数据源的数据经过基于FPGA 的单中断数据传输设备进行缓存,再发送到上位机的一种实时数据传输方法,属于实时信 号处理

技术介绍
现代通信系统例如军事通信侦察系统中常需要对各种非合作信号进行迅速搜索、 截获、测量、分析、识别、监视等操作,这对数字信号处理的时间要求非常苛刻,必须采用高 速专用硬件系统来完成任务。FPGA+DSP/MCU/CPU等的高速实时数字信号处理架构在通信、 雷达系统等需要高实时性的数字信号处理系统中很常见。因此,高速数据在FPGA和DSP/ MCU/CPU等这两种模块之间的高效可靠传输就显得尤为重要。FPGA作为一种实现复杂数字 算法逻辑的并行高速硬线逻辑器件,通常会作为一个高速数据源。而DSP/MCU/CPU等作为 一个相对低速但使用灵活的数字信号分析处理设备常处于数据接收端(或称上位机)的位 置。FPGA所产生的数据流的特点分以下几种情况不间断连续数据流、非周期性突发数据 流、周期性突发数据流等,并且各种数据流可能具有不同的数据速率。对于这些速率不同的异步数据源,要完成实时连续数据传输,传统的做法是针对 不同的异步数据源产生多个不同的中断信号给上位机的方法来完成数据的实时连续传输。 但是,基于多中断源的软硬件编程、调试等都比较复杂,并且容易导致系统崩溃等各种系统 稳定性、可靠性问题。
技术实现思路
本专利技术主要针对传统多中断源式实时数据传输方法的软硬件编程调试复杂、可靠 性差的缺点,提出了一种基于FPGA的单中断实时连续数据传输方法,该方法不仅减少了产 生中断的次数,而且使得中断间隔具有固定周期,提高了数据传输的效率,并且简化了设计 的复杂度。基于FPGA的单中断实时数据传输方法,是通过先在FPGA上构建η个与各种异步 数据源相应的数据缓冲区(Β1,Β2,…,Bn),再通过采用合适的单中断源和η个数据缓冲区 的写状态指针来协助完成实时连续数据传输。首先,要在η个异步数据源中选择一个数据 源采用乒乓缓冲的方法建立数据缓冲区;其次,为剩余的η-1个异步数据源建立非乒乓方 式的普通数据缓冲区,同时为η个数据缓冲区建立写状态指针寄存器,其中,非乒乓缓冲区 的写状态指针为当前的写操作地址值,而乒乓缓冲区的状态指针可仅仅用0或1表示正进 行写操作的上/下数据缓冲半区;然后,针对唯一的乒乓缓冲区建立具有周期性特征的单 中断源数据传输触发机制;最后,完成上位机中断服务子程序编程,需要注意的是在上位机 程序中也需要建立一个数据缓冲区的写状态指针存储变量以保存上一次中断时获得的数 据缓冲区写状态指针。不妨假设Bl缓冲区被选中作为乒乓缓冲区,即Bl缓冲区被分为上下两个具有相同存储深度的半区BlL和B1H,并利用其半满和全满信号来产生中断信号。假设Bl数据缓 冲区的写数据速率为Wl字节/秒,并且Bl乒乓缓冲区BlL或BlH的数据存储量为SO字节, 则BlL或BlH缓冲区写满的所需的存储时间Tl为Tl = S1/W1显然,Tl也即中断源的中断周期。而上位机读取完BlL或BlH缓冲区数据所需时 间为Tl' = S1/R其中R为上位机读数据速率,单位同样为字节/秒。如此,则B2缓冲区在Tl时间内所存储的数据量为S2 = W2XT1,W2为写数据速 率;而上位机读取完该数据所需时间为T2’ = S2/R。同理,Bk数据缓冲区(k= 1,2,…, η)在Tl时间内所存储的数据量为Sk = Wk*Tl,上位机读取完所有数据所需时间为Tk’ = Sk/R,其中,k= 1,2,…,η。需要注意的是各个数据缓冲区的大小必须要大于等于其在Tl 时间内数据存储量Sk(k= 1,2,…,η)的2倍。上位机要完全读取Β1,Β2,…,Bn缓冲区在Tl时间内存储的所有数据需要的时间 Ts为Ts = Tl,+Τ2,+…+Τη,= S1/R+S2/R+. · · +Sn/R= (W1+W2+. . . +ffn) X 11/R显然,要保证数据实时连续传输而不丢失数据,需要满足条件Ts < Tl,也即,需要满足条件W1+W2+. . . +Wn < R一种基于FPGA的单中断实时连续数据传输方法,包括以下具体步骤步骤一选择合适的中断周期根据各异步数据源1,2,…,η的写数据速率Wk和上位机的读数据速率R,利用 不丢失数据下实时连续数据传输条件不等式W1+W2+. . . +Wn < R,首先确认系统实现的可行 性。在系统可实现的前提下,再依据FPGA硬件资源的大小及其他限制条件,选择合适的中 断周期Tl,因为各数据缓冲区的总字节数至少为(W1+W2+. . . +ffn) ΧΤ1Χ2。步骤二 创建数据缓冲区根据各异步数据源1,2,…,η的写数据速率Wk和中断周期Tl,确定各个异步数 据源的缓冲区存储量大小为WkX Tl X 2,为这η个异步数据源建立η个数据缓冲区,并确定 其中的某一个数据缓冲区为乒乓缓冲区,不妨假设选Bl为乒乓缓冲区,其缓冲区分成上下 半区BlL和Β1Η,具有半满和全满指示信号,而其它数据缓冲区则为普通数据缓冲区即可。步骤三创建各数据缓冲区的写状态指针寄存器创建各数据缓冲区的写状态指针寄存器时,其中的乒乓缓冲区Bl的写状态指针 值为当前写操作地址最高位的值,其值可能为0或1,而其他数据缓冲区的写状态指针为当 前写操作地址值。步骤四产生周期性中断信号依据乒乓缓冲区Bl的写操作产生的缓冲区半满和全满信号产生与上位机相对应的周期性中断信号,该中断信号发送至上位机即可触发中断服务子程序,从而完成读取 FPGA中各数据缓冲区数据操作。步骤五建立上位机和FPGA中各数据缓冲区(Bi, B2,…,Bn)之间的总线接口。将上位机的读操作指令中包含的读时钟C、读操作地址A及读使能等信号转换为 各数据缓冲区的读时钟C、读使能(E1,E2,-,En)和读地址(A1R,A2R,-,AnR)信号及各 缓冲区的写状态指针寄存器的读地址信号AR等。以读取上述存储空间中的数据。步骤六创建上位机中断服务子程序上位机中断服务子程序工作过程如下上位机中断服务子程序接收到硬件中断信 号后,先做是否要初始化的判断如果系统是刚上电复位或其他形式重置之后,则将FPGA 各缓冲区写地址和上位机的历史写指针寄存器值初始化为其相应的起始地址,否则跳过该 初始化步骤。然后读取各数据缓冲区的当前写状态指针寄存器值,而上位机程序中保存有 上一次中断时存储的各数据缓冲区的写状态指针寄存器值,不妨称为历史写状态指针寄存 器值。中断服务子程序然后利用当前写状态指针和上位机保存的历史写状态指针的一个临 时备份来完成读取FPGA中各数据缓冲区相应地址段的数据,并在历史写状态指针寄存器 值备份之后和上位机读操作之前,把历史写状态指针寄存器值更新为当前写状态指针寄存 器值,以保证下次中断时能够正确读取各缓冲区相应地址段的数据。上位机中断服务子程 序执行读操作完毕后结束,进入等待下次中断状态。步骤七上位机在周期性中断信号的触发下循环调用步骤六中所述中断服务子程 序,即可达到实时连续数据传输目的。有益效果本专利技术方法对比传统多中断源触发方式的数据传输方法,大大降低了软硬件编程 调试的复杂度,由于中断单一从而使得系本文档来自技高网...

【技术保护点】
一种基于FPGA的单中断实时数据传输方法,其特征在于包括以下具体步骤:步骤一:选择合适的中断周期根据各异步数据源1,2,…,n的写数据速率Wk和上位机的读数据速率R,利用不丢失数据下实时连续数据传输条件不等式W1+W2+...+Wn<R,首先确认系统实现的可行性,在系统可实现的前提下,再依据FPGA硬件资源的大小及其他限制条件,选择合适的中断周期T1,因为各数据缓冲区的总字节数至少为(W1+W2+...+Wn)×T1×2;步骤二:创建数据缓冲区根据各异步数据源1,2,…,n的写数据速率Wk和中断周期T1,确定各个异步数据源的缓冲区存储量大小为Wk×T1×2,为这n个异步数据源建立n个数据缓冲区,并确定其中的某一个数据缓冲区为乒乓缓冲区,不妨假设选B1为乒乓缓冲区,其缓冲区分成上下半区B1L和B1H,具有半满和全满指示信号,而其它数据缓冲区则为普通数据缓冲区即可;步骤三:创建各数据缓冲区的写状态指针寄存器创建各数据缓冲区的写状态指针寄存器时,其中的乒乓缓冲区B1的写状态指针值为当前写操作地址最高位的值,其值可能为0或1,而其他数据缓冲区的写状态指针为当前写操作地址值;步骤四:产生周期性中断信号依据乒乓缓冲区B1的写操作产生的缓冲区半满和全满信号产生与上位机相对应的周期性中断信号,该中断信号发送至上位机即可触发中断服务子程序,从而完成读取FPGA中各数据缓冲区数据操作;步骤五:建立上位机和FPGA中各数据缓冲区(B1,B2,…,Bn)之间的总线接口;将上位机的读操作指令中包含的读时钟C、读操作地址A及读使能等信号转换为各数据缓冲区的读时钟C、读使能(E1,E2,…,En)和读地址(A1R,A2R,…,AnR)信号及各缓冲区的写状态指针寄存器的读地址信号AR等,以读取上述存储空间中的数据;步骤六:创建上位机中断服务子程序上位机中断服务子程序工作过程如下:上位机中断服务子程序接收到硬件中断信号后,先做是否要初始化的判断:如果系统是刚上电复位或其他形式重置之后,则将FPGA各缓冲区写地址和上位机的历史写指针寄存器值初始化为其相应的起始地址,否则跳过该初始化步骤,然后读取各数据缓冲区的当前写状态指针寄存器值,而上位机程序中保存有上一次中断时存储的各数据缓冲区的写状态指针寄存器值,不妨称为历史写状态指针寄存器值,中断服务子程序然后利用当前写状态指针和上位机保存的历史写状态指针的一个临时备份来完成读取FPGA中各数据缓冲区相应...

【技术特征摘要】

【专利技术属性】
技术研发人员:安建平周荣花孙磊杨淼
申请(专利权)人:北京理工大学
类型:发明
国别省市:11[中国|北京]

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

1