《一种基于FPGA的单中断实时数据传输方法.pdf》由会员分享,可在线阅读,更多相关《一种基于FPGA的单中断实时数据传输方法.pdf(8页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN102004711A43申请公布日20110406CN102004711ACN102004711A21申请号201010547869X22申请日20101117G06F13/3820060171申请人北京理工大学地址100081北京市海淀区中关村南大街5号72发明人安建平周荣花孙磊杨淼54发明名称一种基于FPGA的单中断实时数据传输方法57摘要本发明涉及一种数据传输方法,特别涉及将多个异步数据源的数据经过基于FPGA的单中断数据传输设备进行缓存,再发送到上位机的一种实时数据传输方法,属于实时信号处理技术领域。该方法首先根据不丢失数据下数据传输条件不等式选择合适的中断周期,然后。
2、在FPGA内部创建数据缓冲区,并且创建各数据缓冲区的写状态寄存器,接着根据缓冲区发出的半满和全满信号来产生一个周期性中断信号,上位机通过响应这个周期信号来触发中断服务程序从而完成实时连续传输目的。本发明方法相比多中断源触发方式,降低了软硬件编程调试的复杂度并且提高了系统的可靠性,由于每次中断产生的数据量大小相对稳定,故数据更便于集中进行批量传输和后处理。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书4页附图2页CN102004724A1/1页21一种基于FPGA的单中断实时数据传输方法,其特征在于包括以下具体步骤步骤一选择合适的中断周期根据各异步数据源1,2。
3、,N的写数据速率WK和上位机的读数据速率R,利用不丢失数据下实时连续数据传输条件不等式W1W2WNR,首先确认系统实现的可行性,在系统可实现的前提下,再依据FPGA硬件资源的大小及其他限制条件,选择合适的中断周期T1,因为各数据缓冲区的总字节数至少为W1W2WNT12;步骤二创建数据缓冲区根据各异步数据源1,2,N的写数据速率WK和中断周期T1,确定各个异步数据源的缓冲区存储量大小为WKT12,为这N个异步数据源建立N个数据缓冲区,并确定其中的某一个数据缓冲区为乒乓缓冲区,不妨假设选B1为乒乓缓冲区,其缓冲区分成上下半区B1L和B1H,具有半满和全满指示信号,而其它数据缓冲区则为普通数据缓冲区。
4、即可;步骤三创建各数据缓冲区的写状态指针寄存器创建各数据缓冲区的写状态指针寄存器时,其中的乒乓缓冲区B1的写状态指针值为当前写操作地址最高位的值,其值可能为0或1,而其他数据缓冲区的写状态指针为当前写操作地址值;步骤四产生周期性中断信号依据乒乓缓冲区B1的写操作产生的缓冲区半满和全满信号产生与上位机相对应的周期性中断信号,该中断信号发送至上位机即可触发中断服务子程序,从而完成读取FPGA中各数据缓冲区数据操作;步骤五建立上位机和FPGA中各数据缓冲区B1,B2,BN之间的总线接口;将上位机的读操作指令中包含的读时钟C、读操作地址A及读使能等信号转换为各数据缓冲区的读时钟C、读使能E1,E2,E。
5、N和读地址A1R,A2R,ANR信号及各缓冲区的写状态指针寄存器的读地址信号AR等,以读取上述存储空间中的数据;步骤六创建上位机中断服务子程序上位机中断服务子程序工作过程如下上位机中断服务子程序接收到硬件中断信号后,先做是否要初始化的判断如果系统是刚上电复位或其他形式重置之后,则将FPGA各缓冲区写地址和上位机的历史写指针寄存器值初始化为其相应的起始地址,否则跳过该初始化步骤,然后读取各数据缓冲区的当前写状态指针寄存器值,而上位机程序中保存有上一次中断时存储的各数据缓冲区的写状态指针寄存器值,不妨称为历史写状态指针寄存器值,中断服务子程序然后利用当前写状态指针和上位机保存的历史写状态指针的一个。
6、临时备份来完成读取FPGA中各数据缓冲区相应地址段的数据,并在历史写状态指针寄存器值备份之后和上位机读操作之前,把历史写状态指针寄存器值更新为当前写状态指针寄存器值,以保证下次中断时能够正确读取各缓冲区相应地址段的数据,上位机中断服务子程序执行读操作完毕后结束,进入等待下次中断状态;步骤七上位机在周期性中断信号的触发下循环调用步骤六中所述中断服务子程序,即可达到实时连续数据传输目的。权利要求书CN102004711ACN102004724A1/4页3一种基于FPGA的单中断实时数据传输方法技术领域0001本发明涉及一种数据传输方法,特别涉及将多个异步数据源的数据经过基于FPGA的单中断数据传输。
7、设备进行缓存,再发送到上位机的一种实时数据传输方法,属于实时信号处理技术领域。背景技术0002现代通信系统例如军事通信侦察系统中常需要对各种非合作信号进行迅速搜索、截获、测量、分析、识别、监视等操作,这对数字信号处理的时间要求非常苛刻,必须采用高速专用硬件系统来完成任务。FPGADSP/MCU/CPU等的高速实时数字信号处理架构在通信、雷达系统等需要高实时性的数字信号处理系统中很常见。因此,高速数据在FPGA和DSP/MCU/CPU等这两种模块之间的高效可靠传输就显得尤为重要。FPGA作为一种实现复杂数字算法逻辑的并行高速硬线逻辑器件,通常会作为一个高速数据源。而DSP/MCU/CPU等作为一。
8、个相对低速但使用灵活的数字信号分析处理设备常处于数据接收端或称上位机的位置。FPGA所产生的数据流的特点分以下几种情况不间断连续数据流、非周期性突发数据流、周期性突发数据流等,并且各种数据流可能具有不同的数据速率。0003对于这些速率不同的异步数据源,要完成实时连续数据传输,传统的做法是针对不同的异步数据源产生多个不同的中断信号给上位机的方法来完成数据的实时连续传输。但是,基于多中断源的软硬件编程、调试等都比较复杂,并且容易导致系统崩溃等各种系统稳定性、可靠性问题。发明内容0004本发明主要针对传统多中断源式实时数据传输方法的软硬件编程调试复杂、可靠性差的缺点,提出了一种基于FPGA的单中断实。
9、时连续数据传输方法,该方法不仅减少了产生中断的次数,而且使得中断间隔具有固定周期,提高了数据传输的效率,并且简化了设计的复杂度。0005基于FPGA的单中断实时数据传输方法,是通过先在FPGA上构建N个与各种异步数据源相应的数据缓冲区B1,B2,BN,再通过采用合适的单中断源和N个数据缓冲区的写状态指针来协助完成实时连续数据传输。首先,要在N个异步数据源中选择一个数据源采用乒乓缓冲的方法建立数据缓冲区;其次,为剩余的N1个异步数据源建立非乒乓方式的普通数据缓冲区,同时为N个数据缓冲区建立写状态指针寄存器,其中,非乒乓缓冲区的写状态指针为当前的写操作地址值,而乒乓缓冲区的状态指针可仅仅用0或1表。
10、示正进行写操作的上/下数据缓冲半区;然后,针对唯一的乒乓缓冲区建立具有周期性特征的单中断源数据传输触发机制;最后,完成上位机中断服务子程序编程,需要注意的是在上位机程序中也需要建立一个数据缓冲区的写状态指针存储变量以保存上一次中断时获得的数据缓冲区写状态指针。0006不妨假设B1缓冲区被选中作为乒乓缓冲区,即B1缓冲区被分为上下两个具有相说明书CN102004711ACN102004724A2/4页4同存储深度的半区B1L和B1H,并利用其半满和全满信号来产生中断信号。假设B1数据缓冲区的写数据速率为W1字节/秒,并且B1乒乓缓冲区B1L或B1H的数据存储量为S0字节,则B1L或B1H缓冲区写。
11、满的所需的存储时间T1为0007T1S1/W10008显然,T1也即中断源的中断周期。而上位机读取完B1L或B1H缓冲区数据所需时间为0009T1S1/R0010其中R为上位机读数据速率,单位同样为字节/秒。0011如此,则B2缓冲区在T1时间内所存储的数据量为S2W2T1,W2为写数据速率;而上位机读取完该数据所需时间为T2S2/R。同理,BK数据缓冲区K1,2,N在T1时间内所存储的数据量为SKWKT1,上位机读取完所有数据所需时间为TKSK/R,其中,K1,2,N。需要注意的是各个数据缓冲区的大小必须要大于等于其在T1时间内数据存储量SKK1,2,N的2倍。0012上位机要完全读取B1,。
12、B2,BN缓冲区在T1时间内存储的所有数据需要的时间TS为0013TST1T2TN0014S1/RS2/RSN/R0015W1W2WNI1/R0016显然,要保证数据实时连续传输而不丢失数据,需要满足条件0017TST1,0018也即,需要满足条件0019W1W2WNR0020一种基于FPGA的单中断实时连续数据传输方法,包括以下具体步骤0021步骤一选择合适的中断周期0022根据各异步数据源1,2,N的写数据速率WK和上位机的读数据速率R,利用不丢失数据下实时连续数据传输条件不等式W1W2WNR,首先确认系统实现的可行性。在系统可实现的前提下,再依据FPGA硬件资源的大小及其他限制条件,选择。
13、合适的中断周期T1,因为各数据缓冲区的总字节数至少为W1W2WNT12。0023步骤二创建数据缓冲区0024根据各异步数据源1,2,N的写数据速率WK和中断周期T1,确定各个异步数据源的缓冲区存储量大小为WKT12,为这N个异步数据源建立N个数据缓冲区,并确定其中的某一个数据缓冲区为乒乓缓冲区,不妨假设选B1为乒乓缓冲区,其缓冲区分成上下半区B1L和B1H,具有半满和全满指示信号,而其它数据缓冲区则为普通数据缓冲区即可。0025步骤三创建各数据缓冲区的写状态指针寄存器0026创建各数据缓冲区的写状态指针寄存器时,其中的乒乓缓冲区B1的写状态指针值为当前写操作地址最高位的值,其值可能为0或1,而。
14、其他数据缓冲区的写状态指针为当前写操作地址值。0027步骤四产生周期性中断信号0028依据乒乓缓冲区B1的写操作产生的缓冲区半满和全满信号产生与上位机相对说明书CN102004711ACN102004724A3/4页5应的周期性中断信号,该中断信号发送至上位机即可触发中断服务子程序,从而完成读取FPGA中各数据缓冲区数据操作。0029步骤五建立上位机和FPGA中各数据缓冲区B1,B2,BN之间的总线接口。0030将上位机的读操作指令中包含的读时钟C、读操作地址A及读使能等信号转换为各数据缓冲区的读时钟C、读使能E1,E2,EN和读地址A1R,A2R,ANR信号及各缓冲区的写状态指针寄存器的读地。
15、址信号AR等。以读取上述存储空间中的数据。0031步骤六创建上位机中断服务子程序0032上位机中断服务子程序工作过程如下上位机中断服务子程序接收到硬件中断信号后,先做是否要初始化的判断如果系统是刚上电复位或其他形式重置之后,则将FPGA各缓冲区写地址和上位机的历史写指针寄存器值初始化为其相应的起始地址,否则跳过该初始化步骤。然后读取各数据缓冲区的当前写状态指针寄存器值,而上位机程序中保存有上一次中断时存储的各数据缓冲区的写状态指针寄存器值,不妨称为历史写状态指针寄存器值。中断服务子程序然后利用当前写状态指针和上位机保存的历史写状态指针的一个临时备份来完成读取FPGA中各数据缓冲区相应地址段的数。
16、据,并在历史写状态指针寄存器值备份之后和上位机读操作之前,把历史写状态指针寄存器值更新为当前写状态指针寄存器值,以保证下次中断时能够正确读取各缓冲区相应地址段的数据。上位机中断服务子程序执行读操作完毕后结束,进入等待下次中断状态。0033步骤七上位机在周期性中断信号的触发下循环调用步骤六中所述中断服务子程序,即可达到实时连续数据传输目的。0034有益效果0035本发明方法对比传统多中断源触发方式的数据传输方法,大大降低了软硬件编程调试的复杂度,由于中断单一从而使得系统的实时数据传输更加稳定、可靠,降低了系统不稳定的可能性,每次中断产生的数据量大小相对稳定,数据更便于集中进行批量传输和后处理。附。
17、图说明0036图1单中断实时数据传输装置示意图;0037图2上位机中断服务子程序流程图。具体实施方式0038下面结合附图和实施例对本发明做进一步说明。0039假设有一个如图1所示的实时数据传输装置。异步数据源1,2,N在各自写时钟C1,C2,CN作用下的写数据速率分别为W1,W2,WN。我们不妨假设异步数据源的个数为3,即N3,并且设定数据源1,2,3的写数据速率分别为50KB/S、100KB/S、150KB/S。同时,设定上位机处理器的读数据速率为1200KB/S。0040步骤一判断是否满足不丢失数据的实时数据传输条件。显然,由于三个数据源的写数据速率之和W1W2W3等于300KB/S,远小。
18、于上位机读数据速率1200KB/S,因此,不丢失数据的连续实时数据传输可以实现。另外,我们假设FPGA资源足够充裕,选择中断周期为10MS,即001S。说明书CN102004711ACN102004724A4/4页60041步骤二确定各数据缓冲区大小,建立3个数据缓冲区。我们不妨选择数据源1的缓冲区作为乒乓缓冲区。显然数据源1的缓冲区B1的大小应为W1T12,其中,T1即中断源周期为001S,W150KB/S,于是数据源1的乒乓缓冲区总大小为1KB。同理,数据源2的缓冲区大小为W2T122KB,数据源3的缓冲区大小为W3T123KB。由于数据源2和3的缓冲区为非乒乓缓冲区而不需要用于产生中断信。
19、号,故而其缓冲区大小选择可以略大于2KB和3KB以更好地保证数据的连续性,避免新数据在读取前被后续数据覆盖。0042步骤三创建各数据缓冲区B1,B2,B3的写状态指针存储寄存器。其中,数据缓冲区B1的写状态指针值等于当前写操作地址A1W的最高位的值,而数据缓冲区B2和B3的写状态指针值就等于其当前的写操作地址A2W和A3W。0043步骤四利用乒乓数据缓冲区B1的半满或全满信号产生中断信号。B1缓冲区的半满或全满信号显然与其写操作地址的值有关,假设B1缓冲区的数据宽度为1字节而存储深度为1KB,则B1缓冲区写操作地址A1W的地址范围为0至1023。显然,当写操作地址为511时B1缓冲区半满,而当。
20、写操作地址为1023时缓冲区全满。B1缓冲区半满或全满时都应该产生一个中断脉冲信号发给上位机。在图1中,由中断产生模块根据B1缓冲区的写操作地址A1W的大小是否等于511或1023来产生脉冲式的中断信号给上位机处理器。0044步骤五建立上位机与FPGA中各数据缓冲区B1,B2,B3间的总线接口模块,如图1中所示。总线接口模块用于将来自上位机的读操作指令中蕴含的读时钟C、读地址A和读使能E等信号转换为各个数据缓冲区及其写状态指针存储寄存器的读时钟C、读地址A1R、A2R、A3R、AR和读使能E1,E2,E3等信号以实现上位机对这些存储空间中可读数据的顺利读取。0045步骤六创建上位机中断服务子程。
21、序,其流程图如图2所示。在中断到来的时刻,首先完成保护现场。其次,判断当前系统是否是刚执行了上电复位或其他形式的重置操作,若是,则执行历史写状态指针寄存器的初始化操作,否则跳过该初始化步骤。然后,系统先读取FPGA中的当前写状态指针存储寄存器值,再将中断服务子程序中保存的历史写状态指针寄存器值备份到临时变量中,以备后续上位机读操作使用。接着,系统更新历史写状态指针寄存器值,也即,将刚读取的FPGA当前写状态指针寄存器结果赋值给历史写状态指针寄存器以备下一次中断使用。接下来,上位机根据前面步骤中读取的当前写状态指针寄存器值和备份到临时变量中的历史写状态指针寄存器值计算产生本次中断的读操作地址A的范围,然后根据该地址范围执行读操作函数。数据读取完毕后,执行恢复现场操作,中断服务子程序结束退出,等待下一次中断的到来。0046步骤七在周期性中断信号触发下,上位机反复执行步骤六中所述中断服务子程序即可完成多异步数据源的实时连续数据传输。说明书CN102004711ACN102004724A1/2页7图1说明书附图CN102004711ACN102004724A2/2页8图2说明书附图CN102004711A。