CN114280977B - 一种基于fpga的大规模定时方法及装置 - Google Patents
一种基于fpga的大规模定时方法及装置 Download PDFInfo
- Publication number
- CN114280977B CN114280977B CN202111430541.4A CN202111430541A CN114280977B CN 114280977 B CN114280977 B CN 114280977B CN 202111430541 A CN202111430541 A CN 202111430541A CN 114280977 B CN114280977 B CN 114280977B
- Authority
- CN
- China
- Prior art keywords
- ram
- timing
- value
- reset
- flag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title abstract description 28
- 238000007781 pre-processing Methods 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 24
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000011144 upstream manufacturing Methods 0.000 abstract description 16
- 101100325756 Arabidopsis thaliana BAM5 gene Proteins 0.000 description 42
- 102100031584 Cell division cycle-associated 7-like protein Human genes 0.000 description 42
- 101000777638 Homo sapiens Cell division cycle-associated 7-like protein Proteins 0.000 description 42
- 101150046378 RAM1 gene Proteins 0.000 description 42
- 101100476489 Rattus norvegicus Slc20a2 gene Proteins 0.000 description 42
- 238000004590 computer program Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 101100087393 Caenorhabditis elegans ran-2 gene Proteins 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000032683 aging Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
- Logic Circuits (AREA)
Abstract
本发明提出了一种基于FPGA的大规模定时方法及装置,其中,方法包括:确定RAM的有效地址范围;循环读取有效地址范围内的RAM地址,并通过统计对应的RAM地址被读取的次数进行定时计数。本发明创新地提出了利用循环读取RAM地址进行定时计数,本发明的定时方法及装置在能够保证各定时器计时精确、相互独立和对上游快速响应的前提下,节省大量的FPGA逻辑资源并降低了整体功耗。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种基于FPGA的大规模定时方法及装置。
背景技术
随着云计算处理数据量的几何级数增长,对数据中心网络延迟和带宽的要求也越来越高,因此越来越多的设备采用FPGA作为主处理芯片代替CPU进行数据转发和计算等操作,其中包括大规模网络流表的维护、大规模连接的RDMA数据传输等应用。这些应用都需要大量的定时器对每个流表、每个连接进行超时计时等操作。传统使用FPGA实现定时器的方法是通过FPGA内部逻辑资源编程加法器实现。此种方法在需要大量定时器时会占用大量的FPGA内部逻辑资源,降低了FPGA使用效率并增加了功耗。
发明内容
为解决上述技术问题,在本发明的一个方面,提出了一种基于FPGA的大规模定时方法,所述FPGA包含双端口RAM,所述方法包括:确定所述RAM的有效地址范围;循环读取所述有效地址范围内的RAM地址,并通过统计对应的RAM地址被读取的次数进行定时计数。
在一个或多个实施例中,所述方法还包括:调整所述RAM的有效地址范围的大小以调整定时的计时精度;所述定时的计时精度为循环读取所述RAM地址的间隔时间乘以所述有效地址范围内的RAM地址的数量。
在本发明的另一个方面,提出了一种基于FPGA的大规模定时器装置,包括:具有相同有效地址范围的第一RAM、第二RAM以及第三RAM;预处理模块,配置用于获取定时器请求并计算定时计数总数,并将所述定时器请求的用户地址写入所述第一RAM的有效地址空间中,将所述定时计数总数写入所述第二RAM的有效地址空间中;以及判断模块,配置用于同时对所述第二RAM以及所述第三RAM的有效地址空间进行循环读取,并判断预设在所述第三RAM中的定时计数参数的值是否达到所述定时计数总数,并响应于所述定时计数参数的值未达到所述定时计数总数而对所述定时计数参数的值加1,直至响应于所述定时计数参数的值达到所述定时计数总数,生成定时结束信号。
在一个或多个实施例中,所述预处理模块还配置用于获取所述有效地址范围内的RAM地址的数量以及所述判断模块循环读取有效地址空间的时间间隔;将所述RAM地址的数量与所述时间间隔相乘以计算定时的计时精度;获取所述定时器请求的定时时间,将所述定时时间除以所述计时精度并取整以获得定时计数总数。
在一个或多个实施例中,所述第二RAM和所述第三RAM的有效地址空间中还各自预设有第二复位标志以及第三复位标志;所述判断模块还配置用于在判断所述定时计数参数的值是否达到所述定时计数总数之前,判断所述第二复位标志与所述第三复位标志的值是否相同;响应于所述第二复位标志与所述第三复位标志的值相同且所述定时计数参数的值未达到所述定时计数总数而对所述定时计数参数的值加1;响应于所述第二复位标志与所述第三复位标志的值不同,清零所述定时计数参数的值。
在一个或多个实施例中,所述第一RAM的有效地址空间中还预设有第一复位标志,其中,所述第一复位标志与所述第二复位标志的初始值相同;所述预处理模块还配置用于响应于获取定时器请求,获取所述第一复位标志的值取反后同时写入所述第一复位标志以及所述第二复位标志。
在一个或多个实施例中,所述第二RAM的有效地址空间中还预设有有效标志;所述判断模块还配置用于在判断所述第二复位标志与所述第三复位标志的值是否相同之前,获取所述第二RAM的对应有效地址空间中的有效标志的值;响应于所述有效标志的值为1,判断所述第二复位标志与所述第三复位标志的值是否相同,并响应于所述第二复位标志与所述第三复位标志的值不同,而对所述第三复位标志的值取反后写入所述第三复位标志中。
在一个或多个实施例中,所述判断模块还配置用于,响应于所述有效标志的值为0,同时读取所述第二RAM和所述第三RAM的下一有效地址空间。
在一个或多个实施例中,所述预处理模块还配置用于响应于获取定时器请求,将值1写入所述第二RAM的有效标志中。
在一个或多个实施例中,所述预处理模块还配置用于响应于获取删除定时器请求,将值0写入所述第二RAM的有效标志中。
本发明的有益效果包括:本发明创新地提出了利用循环读取RAM地址进行定时计数,并提出了基于FPGA的3个双端口RAM实现定时器的结构。本发明的定时方法及装置做到了在能够保证各定时器计时精确、相互独立和对上游快速响应的前提下,节省大量的FPGA逻辑资源并降低了整体功耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明的基于FPGA的大规模定时方法的工作流程图;
图2为本发明的基于FPGA的大规模定时器装置的结构示意图;
图3为本发明的预处理模块的工作流程图;
图4为本发明的判断模块的工作流程图;
图5为本发明的可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
FPGA(Field Programable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。鉴于目前使用FPGA作为定时器会消耗大量计算资源的问题,本发明提出了一种基于FPGA的大规模定时方法,通过利用FPGA循环读取地址的间隔时间固定的特点,利用少量的计算资源对预设在对应地址空间中的变量参数进行监控及对比,解决了利用大量加法器资源实现大规模定时的资源消耗问题。以下将结合具体实施例对本发明的方法进行更加详细的说明。
图1为本发明的基于FPGA的大规模定时方法的工作流程图。如图1所示,本发明的大规模定时方法的工作流程包括:步骤S1、确定RAM的有效地址范围;步骤S2、循环读取有效地址范围内的RAM地址,并通过统计对应的RAM地址被读取的次数进行定时计数。具体的,本发明的定时原理是,由于FPGA循环读取各个地址空间的时间间隔相同,因此,在循环读取的地址空间的数量一定时,各个地址空间被第二次读取到的时间间隔是相同的,从而每个地址空间都可以作为一个计数器,并通过预设在其中的变量参数进行计数,进而实现定时功能。由上述定时原理可知,循环读取的地址数量将影响本发明的定时的计时精度。
在一个实施例中,本发明的基于FPGA的大规模定时方法还包括:调整RAM的有效地址范围的大小以调整定时的计时精度;定时的计时精度为循环读取RAM地址的间隔时间乘以有效地址范围内的RAM地址的数量。
基于上述定时原理,本发明还提出了基于FPGA的大规模定时器装置。图2为本发明的基于FPGA的大规模定时器装置的结构示意图。在本实施例中,FPGA需具有双端口RAM,所谓的双端口即读两对写端口,具体包括读地址端口、读数据端口、写地址端口以及写数据端口。
如图2所示,本发明的基于FPGA的大规模定时器装置包括预处理模块、第一RAM、第二RAM、第三RAM以及断模块;其中,第一RAM、第二RAM以及第三RAM具有相同的有效地址范围,预处理模块分别与第一RAM的读地址端口、读数据端口、写地址端口以及写数据端口连接以及与第二RAM的写地址端口以及写数据端口,并配置用于获取定时器请求并计算定时计数总数,并将定时器请求的用户地址写入第一RAM的有效地址空间中,将定时计数总数写入第二RAM的有效地址空间中;判断模块分别与第二RAM的读地址端口以及读数据端口连接以及与第三RAM的读地址端口、读数据端口、写地址端口以及写数据端口连接,并配置用于同时对第二RAM以及第三RAM的有效地址空间进行循环读取,并判断预设在第三RAM中的定时计数参数的值是否达到定时计数总数,并响应于定时计数参数的值未达到定时计数总数而对定时计数参数的值加1,直至响应于定时计数参数的值达到定时计数总数,生成定时结束信号。在本实施例中,有效地址范围内的地址空间都能够作为计数器使用,其中,第一RAM的主要用于记录定时器请求的用户地址,第二RAM的地址空间主要用于记录每个定时器请求所需的计数次数(即定时时间),第三RAM的地址空间用于记录循环读取的次数,通过比较第二RAM的定时时间与第三RAM的计数次数既可以实现以某一地址空间作为计数器进而实现定时功能。
在一个实施例中,预处理模块还配置用于获取有效地址范围内的RAM地址的数量以及判断模块循环读取有效地址空间的时间间隔;将RAM地址的数量与时间间隔相乘以计算定时的计时精度;获取定时器请求的定时时间,将定时时间除以计时精度并取整以获得定时计数总数。
在上述实施例中介绍了本发明最基本的定时工作原理,然而,在某些应用场景下需要要求定时器具有重复触发以重新计时的功能,
在一个实施中,第二RAM和第三RAM的有效地址空间中还各自预设有第二复位标志以及第三复位标志;判断模块还配置用于在判断定时计数参数的值是否达到定时计数总数之前,判断第二复位标志与第三复位标志的值是否相同;响应于第二复位标志与第三复位标志的值相同且定时计数参数的值未达到定时计数总数而对定时计数参数的值加1;响应于第二复位标志与第三复位标志的值不同,清零定时计数参数的值。
在上述实施例中,由于第二RAM的读数据端口以及读地址端口已经被占用,因此为了能够货值第二RAM中的复位标志的值的情况,需要通过预处理模块实现将第二RAM的复位标志的值写入第一RAM的复位标志中,从而使得第一复位标志与第二复位标志同步,进而可以通过读取第一复位标志的值而获得第二RAM的复位标志的值的情况。
在一个实施例中,为了能够控制各个将各个地址空间用作定时计数的个数,第二RAM的有效地址空间中还预设有有效标志;判断模块还配置用于在判断第二复位标志与第三复位标志的值是否相同之前,获取第二RAM的对应有效地址空间中的有效标志的值;响应于有效标志的值为1,判断第二复位标志与第三复位标志的值是否相同,并响应于第二复位标志与第三复位标志的值不同,而对第三复位标志的值取反后写入第三复位标志中,以及响应于有效标志的值为0,同时读取第二RAM和第三RAM的下一有效地址空间。其中,有效标志位将在预处理模块获取定时器请求时有效,并将值1写入第二RAM的有效标志中,并在获取删除定时器请求失效,并将值0写入第二RAM的有效标志中。
在上述各实施例中,预处理模块的主要工作如下:图3为本发明的预处理模块的工作流程图。如图3所示,预处理模块的工作流程包括:设第一RAM——RAM0存储有复位标志rst_flag,第二RAM——RAM1存储有有效标志valid、复位标志rst_flag和定时定时计数总数为max_cnt,第三RAM——RAM2存储有复位标志为rst_flag和实时计数值current_cnt。其中,第二RAM和第三RAM的数据结构如下:
RAM1数据结构
第三RAM存储的数据结构如下:
RAM2数据结构
预处理模块的工作流程包括:步骤100、接收请求;
步骤200、判断请求中携带的有效标志Valid是否为1,是则进入步骤300,否则进入步骤400;
步骤300、读取RAM0的复位标志并进入步骤500;
步骤400、对RAM1执行写操作,包括,将RAM1中的有效标志置1,以表明该地址空间已被用于定时计数以及将定时计数总数写入,并进入步骤700;
步骤500、将RAM0和RAM1的复位标识进行同步,并进入步骤600;
步骤600、对RAM0和RAM1执行写操作;其中,写操作包括将对应请求的用户地址user_id_i作为RAM0的读地址,读出rst_flag后取反,写入RAM0的相同地址(及RAM0的user_id_i地址);同时将max_time(定时计数总数)除以计时精度转化为max_cnt(定时计数参数),并valid(有效位)和取反后的rst_flag(复位标志),一起写入RAM1的相同地址(与RAM0的user_id_i保持一致)。
步骤700,结束。
上述实施例中,预处理模块将根据接收请求中的valid的值判断接收到的是定时器请求还是删除定时器请求,其中,valid的值为1时表明是定时器请求,而valid的值为1时表明是删除定时器请求。
判断模块主要工作如下:图4为本发明的判断模块的工作流程图。如图4所示,判断模块的工作流程包括:步骤01、同时循环读取RAM1和RAM2,且同时读取的初始地址一致,读地址每时钟周期加1;
步骤02、判断RAM1中valid的值是否为1,是则进入步骤03,否则进入步骤09;
步骤03、判断RAM1中的rst_flag值与RAM2中的rst_flag值是否相同,是则进入步骤04,否则进入步骤05;
步骤04、判断RAM1中的max_cnt是否与RAM2中的current_cnt相同,是则进入步骤06,否则进入步骤07;
步骤05、清零RAM2中的current_cnt的值,并使得RAM1和ran2中的复位标志相同;
步骤06、获得对应的user_id_i,并进入步骤步骤08;
步骤07、对ran2中的current_cnt的值加1,并进入步骤09;
步骤08、清零RAM2中的current_cnt的值,并进入步骤09;
步骤09、对RAM2执行相应的写操作,完成后进步步骤10;
步骤10、结束。
具体的,本发明定时装置的完整工作的过程为:首先,上电后本发明的装置自动开始初始化,将3个RAM全部数据清0。在上游模块需要使用一个定时器或要使一个定时器重新开始计时的情况下,将该定时器的user_id_i和max_time发送到本发明的装置并将valid置1;本发明的装置内部预处理逻辑(pre_proc)把user_id_i作为RAM0的读地址,读出rst_flag后取反,写入RAM0的相同地址。Pre_proc同时将max_time(计时时间)除以计时精度转化为max_cnt,与valid和取反后的rst_flag,一起写入RAM1的相同地址。与此同时,加法处理逻辑(adder_proc)在初始化结束后,一直循环读取RAM1和RAM2,两个RAM的读取地址一致,读地址每时钟周期加1。当读地址为user_id_i时,获取到RAM1中valid为1,rst_flag值与RAM2中的rst_flag值不同,则将新的rst_flag值和0分别写入RAM2相同地址的rst_flag和current_cnt字段。当adder_proc读完整个RAM地址后,再次读到user_id_i地址时,RAM1的valid仍然为1,RAM1和RAM2的rst_flag值相同,RAM2的current_cnt小于RAM1的max_cnt,则将RAM2的current_cnt值+1,写入RAM2相同地址中,RAM2的rst_flag值不变。如此循环,当读到RAM2的current_cnt与RAM1的max_cnt相等时,则将此时的读地址也就是定时器号通过user_id_o端口输出给上游模块表示该定时器到时,同时将RAM2的current_cnt置0,rst_flag不变。
当上游撤销一个定时器(即删除定时器)时,将user_id_i发送到本发明装置并将valid置0。Pre_proc逻辑将RAM1的user_id_i地址的valid置0,其他保持不变。当Adder_prc逻辑读取到user_id_i地址时,得到RAM1的valid值为0,之后将不对进行RAM2的地址user_id_i执行写操作。
如上述实施例,本发明创新地提出了基于FPGA的3个双端口RAM相实现定时器的结构。本发明的定时方法及装置做到了在能够保证各定时器计时精确、相互独立和对上游快速响应的前提下,节省大量的FPGA逻辑资源并降低了整体功耗。
实施例
以FPGA处理规模为2000条的网络流表为例,每条网络流表需要有老化时间,即当某一条数据流在一段时间内没有出现数据包时认为此数据流已经失效,需要FPGA将此条流表信息从内存中删除。每条数据流需要一个定时器从接收到第一个数据包开始计时,当收到一个新数据包时重新从0开始计时,当达到设置的超时时间都没有新数据包出现时,发出超时信号。FPGA的时钟周期为4ns,为了便于计算,RAM的地址总数设置为2500,计时精度为4ns*2500=10us。
例如,第3条流的老化时间为1000,000us,当上游模块检测到此条数据流的第一个数据包到来时,设置本发明的装置的user_id_i=3,max_time=1000,000us,valid=1。本发明的装置内部pre_proc逻辑根据valid=1,读取RAM0的3地址得到rst_flag=0,之后将rst_flag=1写入RAM0的3地址,并将max_time=1000,000us转化为max_cnt=100000,与valid=1和rst_flag=1一同写入RAM1的3地址。Adder_proc逻辑在读取RAM1和RAM2的3地址时,得到RAM1的valid=1,rst_flag=1;RAM2的rst_flag=0。之后将rst_flag=1和current_cnt=0写入RAM2。当adder_proc再次读到RAM1和RAM2的3地址时,得到RAM1的valid=1,rst_flag=1,max_cnt=100000;RAM2的rst_flag=1。之后将current_cnt+1写入RAM2,如此循环。
当current_cnt=5000时,上游模块检测到该数据流一个新的数据包,再次设置本发明的装置的user_id_i=3,max_time=1000,000us,valid=1。本发明的装置重复处理第一个数据包的所有动作,重新开始计时。
当current_cnt计数到max_cnt时,上游模块一直没有发起命令,本发明的装置输出user_id_o为3给上游模块,表示3号定时器到时。上游模块将第3条流表信息从内存中删除后,将本发明的装置user_id_i=3,valid=0。本发明的装置的pre_proc逻辑将RAM1的3地址写0,撤销3地址对应的定时器。
如上述实施例,本发明创新地提出了基于FPGA的3个双端口RAM相实现定时器的结构。本发明的定时方法及装置做到了在能够保证各定时器计时精确、相互独立和对上游快速响应的前提下,节省大量的FPGA逻辑资源并降低了整体功耗。
在本发明的第三方面,提出了一种可读计算机存储介质。图5为本发明的可读存储介质的结构示意图。如图5所示,本发明的可读存储介质1包括可运行的计算机程序1.1和计算机程序1.2,该计算机程序1.1和计算机程序1.2在被执行时用于实现以下实施例中的步骤;
其中,计算机程序1.1用于实现:
步骤100、接收请求;
步骤200、判断请求中携带的有效标志Valid是否为1,是则进入步骤300,否则进入步骤400;
步骤300、读取RAM0的复位标志并进入步骤500;
步骤400、对RAM1执行写操作,包括,将RAM1中的有效标志置1,以表明该地址空间已被用于定时计数以及将定时计数总数写入,并进入步骤700;
步骤500、将RAM0和RAM1的复位标识进行同步,并进入步骤600;
步骤600、对RAM0和RAM1执行写操作;其中,写操作包括将对应请求的用户地址user_id_i作为RAM0的读地址,读出rst_flag后取反,写入RAM0的相同地址(及RAM0的user_id_i地址);同时将max_time(定时计数总数)除以计时精度转化为max_cnt(定时计数参数),并valid(有效位)和取反后的rst_flag(复位标志),一起写入RAM1的相同地址(与RAM0的user_id_i保持一致)。
步骤700,结束。
上述实施例中,预处理模块将根据接收请求中的valid的值判断接收到的是定时器请求还是删除定时器请求,其中,valid的值为1时表明是定时器请求,valid的值为1时表明是删除定时器请求。
计算机程序1.2用于实现:
步骤01、同时循环读取RAM1和RAM2,且同时读取的初始地址一致,读地址每时钟周期加1;
步骤02、判断RAM1中valid的值是否为1,是则进入步骤03,否则进入步骤09;
步骤03、判断RAM1中的rst_flag值与RAM2中的rst_flag值是否相同,是则进入步骤04,否则进入步骤05;
步骤04、判断RAM1中的max_cnt是否与RAM2中的current_cnt相同,是则进入步骤06,否则进入步骤07;
步骤05、清零RAM2中的current_cnt的值,并使得RAM1和ran2中的复位标志相同;
步骤06、获得对应的user_id_i,并进入步骤步骤08;
步骤07、对ran2中的current_cnt的值加1,并进入步骤09;
步骤08、清零RAM2中的current_cnt的值,并进入步骤09;
步骤09、对RAM2执行相应的写操作,完成后进步步骤10;
步骤10、结束。
具体的,上述计算机程序1.1和计算机程序1.2用于控制本发明的装置完成以下工作过程,包括:首先,上电后本发明的装置自动开始初始化,将3个RAM全部数据清0。在上游模块需要使用一个定时器或要使一个定时器重新开始计时的情况下,将该定时器的user_id_i和max_time发送到本发明的装置并将valid置1;本发明的装置内部预处理逻辑(pre_proc)把user_id_i作为RAM0的读地址,读出rst_flag后取反,写入RAM0的相同地址。Pre_proc同时将max_time(计时时间)除以计时精度转化为max_cnt,与valid和取反后的rst_flag,一起写入RAM1的相同地址。与此同时,加法处理逻辑(adder_proc)在初始化结束后,一直循环读取RAM1和RAM2,两个RAM的读取地址一致,读地址每时钟周期加1。当读地址为user_id_i时,获取到RAM1中valid为1,rst_flag值与RAM2中的rst_flag值不同,则将新的rst_flag值和0分别写入RAM2相同地址的rst_flag和current_cnt字段。当adder_proc读完整个RAM地址后,再次读到user_id_i地址时,RAM1的valid仍然为1,RAM1和RAM2的rst_flag值相同,RAM2的current_cnt小于RAM1的max_cnt,则将RAM2的current_cnt值+1,写入RAM2相同地址中,RAM2的rst_flag值不变。如此循环,当读到RAM2的current_cnt与RAM1的max_cnt相等时,则将此时的读地址也就是定时器号通过user_id_o端口输出给上游模块表示该定时器到时,同时将RAM2的current_cnt置0,rst_flag不变。
当上游模块撤销一个定时器时,将user_id_i发送到本发明的装置并将valid置0。Pre_proc逻辑将RAM1的user_id_i地址的valid置0,其他保持不变。当Adder_prc逻辑读取到user_id_i地址时,得到RAM1的valid值为0,不进行RAM2的写操作。
如上述实施例,本发明创新地提出了基于FPGA的3个双端口RAM相实现定时器的结构。本发明的定时方法及装置做到了在能够保证各定时器计时精确、相互独立和对上游快速响应的前提下,节省大量的FPGA逻辑资源并降低了整体功耗。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一FPGA的可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中的地址空间包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(RAMbus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (8)
1.一种基于FPGA的大规模定时器装置,其特征在于,包括:
具有相同有效地址范围的第一RAM、第二RAM以及第三RAM;
预处理模块,配置用于获取定时器请求并计算定时计数总数,并将所述定时器请求的用户地址写入所述第一RAM的有效地址空间中,将所述定时计数总数写入所述第二RAM的有效地址空间中;以及
判断模块,配置用于同时对所述第二RAM以及所述第三RAM的有效地址空间进行循环读取,并判断预设在所述第三RAM中的定时计数参数的值是否达到所述定时计数总数,并
响应于所述定时计数参数的值未达到所述定时计数总数而对所述定时计数参数的值加1;
响应于所述定时计数参数的值达到所述定时计数总数,生成定时结束信号;
其中,所述第一RAM、所述第二RAM以及所述第三RAM均为双端口RAM,每个双端口RAM均包括读地址端口、读数据端口、写地址端口以及写数据端口。
2.如权利要求1所述的基于FPGA的大规模定时器装置,其特征在于,所述预处理模块还配置用于
获取所述有效地址范围内的RAM地址的数量以及所述判断模块循环读取有效地址空间的时间间隔;
将所述RAM地址的数量与所述时间间隔相乘以计算定时的计时精度;
获取所述定时器请求的定时时间,将所述定时时间除以所述计时精度并取整以获得定时计数总数。
3.如权利要求1所述的基于FPGA的大规模定时器装置,其特征在于,
所述第二RAM和所述第三RAM的有效地址空间中还各自预设有第二复位标志以及第三复位标志;
所述判断模块还配置用于在判断所述定时计数参数的值是否达到所述定时计数总数之前,判断所述第二复位标志与所述第三复位标志的值是否相同;
响应于所述第二复位标志与所述第三复位标志的值相同且所述定时计数参数的值未达到所述定时计数总数而对所述定时计数参数的值加1;
响应于所述第二复位标志与所述第三复位标志的值不同,清零所述定时计数参数的值。
4.如权利要求3所述的基于FPGA的大规模定时器装置,其特征在于,
所述第一RAM的有效地址空间中还预设有第一复位标志,其中,所述第一复位标志与所述第二复位标志的初始值相同;
所述预处理模块还配置用于响应于获取定时器请求,获取所述第一复位标志的值取反后同时写入所述第一复位标志以及所述第二复位标志。
5.如权利要求3所述的基于FPGA的大规模定时器装置,其特征在于,所述第二RAM的有效地址空间中还预设有有效标志;
所述判断模块还配置用于在判断所述第二复位标志与所述第三复位标志的值是否相同之前,获取所述第二RAM的对应有效地址空间中的有效标志的值;
响应于所述有效标志的值为1,判断所述第二复位标志与所述第三复位标志的值是否相同,并响应于所述第二复位标志与所述第三复位标志的值不同,而对所述第三复位标志的值取反后写入所述第三复位标志中。
6.如权利要求5所述的基于FPGA的大规模定时器装置,其特征在于,所述判断模块还配置用于,响应于所述有效标志的值为0,同时读取所述第二RAM和所述第三RAM的下一有效地址空间。
7.如权利要求5所述的基于FPGA的大规模定时器装置,其特征在于,所述预处理模块还配置用于响应于获取定时器请求,将值1写入所述第二RAM的有效标志中。
8.如权利要求5所述的基于FPGA的大规模定时器装置,其特征在于,所述预处理模块还配置用于响应于获取删除定时器请求,将值0写入所述第二RAM的有效标志中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111430541.4A CN114280977B (zh) | 2021-11-29 | 2021-11-29 | 一种基于fpga的大规模定时方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111430541.4A CN114280977B (zh) | 2021-11-29 | 2021-11-29 | 一种基于fpga的大规模定时方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114280977A CN114280977A (zh) | 2022-04-05 |
CN114280977B true CN114280977B (zh) | 2024-02-02 |
Family
ID=80870179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111430541.4A Active CN114280977B (zh) | 2021-11-29 | 2021-11-29 | 一种基于fpga的大规模定时方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114280977B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5437021A (en) * | 1992-06-12 | 1995-07-25 | Intel Corporation | Programmable dedicated timer operating on a clock independent of processor timer |
JPH08179998A (ja) * | 1994-12-26 | 1996-07-12 | Matsushita Electric Ind Co Ltd | 多段ハードウエアタイマ |
CN1149184A (zh) * | 1994-05-19 | 1997-05-07 | 株式会社日立制作所 | 存储器读取装置 |
CN101141296A (zh) * | 2007-08-16 | 2008-03-12 | 华为技术有限公司 | 通道化逻辑单通道统计的方法和装置 |
CN102141971A (zh) * | 2011-01-13 | 2011-08-03 | 哈尔滨工业大学 | 具有大容量存储功能的1553b硬件定时通讯模块 |
CN102323786A (zh) * | 2011-07-01 | 2012-01-18 | 广西工学院 | Arm+fpga组成的定时器装置及其实现方法 |
CN102571316A (zh) * | 2011-12-31 | 2012-07-11 | 清华大学 | 一种无线通信系统闭环定时调整方法 |
CN103955255A (zh) * | 2014-04-28 | 2014-07-30 | 国家电网公司 | 基于fpga的开入量事件精确测量的系统及其方法 |
CN104156331A (zh) * | 2014-07-21 | 2014-11-19 | 中国电子科技集团公司第四十一研究所 | 一种基于fpga双口ram实现的高速数据速率匹配方法 |
CN110046113A (zh) * | 2019-05-06 | 2019-07-23 | 华峰测控技术(天津)有限责任公司 | 一种基于fpga的sdram控制系统及控制方法 |
-
2021
- 2021-11-29 CN CN202111430541.4A patent/CN114280977B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5437021A (en) * | 1992-06-12 | 1995-07-25 | Intel Corporation | Programmable dedicated timer operating on a clock independent of processor timer |
CN1149184A (zh) * | 1994-05-19 | 1997-05-07 | 株式会社日立制作所 | 存储器读取装置 |
JPH08179998A (ja) * | 1994-12-26 | 1996-07-12 | Matsushita Electric Ind Co Ltd | 多段ハードウエアタイマ |
CN101141296A (zh) * | 2007-08-16 | 2008-03-12 | 华为技术有限公司 | 通道化逻辑单通道统计的方法和装置 |
CN102141971A (zh) * | 2011-01-13 | 2011-08-03 | 哈尔滨工业大学 | 具有大容量存储功能的1553b硬件定时通讯模块 |
CN102323786A (zh) * | 2011-07-01 | 2012-01-18 | 广西工学院 | Arm+fpga组成的定时器装置及其实现方法 |
CN102571316A (zh) * | 2011-12-31 | 2012-07-11 | 清华大学 | 一种无线通信系统闭环定时调整方法 |
CN103955255A (zh) * | 2014-04-28 | 2014-07-30 | 国家电网公司 | 基于fpga的开入量事件精确测量的系统及其方法 |
CN104156331A (zh) * | 2014-07-21 | 2014-11-19 | 中国电子科技集团公司第四十一研究所 | 一种基于fpga双口ram实现的高速数据速率匹配方法 |
CN110046113A (zh) * | 2019-05-06 | 2019-07-23 | 华峰测控技术(天津)有限责任公司 | 一种基于fpga的sdram控制系统及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114280977A (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020258529A1 (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN109343978B (zh) | 一种深度学习分布式框架用的数据交换方法与装置 | |
US8850137B2 (en) | Memory subsystem for counter-based and other applications | |
CN113806258B (zh) | 一种动态自适应的虚拟通道映射方法、装置及存储介质 | |
CN105654419A (zh) | 一种图像的运算处理系统及运算处理方法 | |
CN112529795B (zh) | 基于fpga的双目相机畸变校正系统、方法和终端设备 | |
US20220253668A1 (en) | Data processing method and device, storage medium and electronic device | |
WO2022166875A1 (zh) | 一种日志保存方法、通信装置、芯片及模组设备 | |
CN114280977B (zh) | 一种基于fpga的大规模定时方法及装置 | |
CN100511207C (zh) | 一种双处理器间的通讯方法 | |
CN114879584B (zh) | 一种基于fpga的dma控制器边界对齐方法及其电路 | |
CN111782027A (zh) | Ddr存储器运行频率调整方法及装置 | |
CN105205012A (zh) | 一种数据读取方法和装置 | |
CN114443521A (zh) | 一种提高cpu和ddr5 dimm之间传输速率的和装置 | |
WO2020041962A1 (zh) | 一种并行反卷积计算方法、单引擎计算方法及相关产品 | |
CN114048149A (zh) | 一种控制页链表的构建的方法、系统、存储介质及设备 | |
CN105577985A (zh) | 一种数字图像处理系统 | |
CN103714012B (zh) | 数据处理方法和装置 | |
CN108494586B (zh) | 带宽控制方法和装置 | |
CN116627867A (zh) | 数据交互系统、方法、大规模运算处理方法、设备及介质 | |
CN114979030B (zh) | 大规模时间敏感网络异步门控的实现方法和系统 | |
CN104599706A (zh) | 随机存取存储器及调整随机存取存储器读取时序的方法 | |
CN114301620B (zh) | 一种基于acl时间域的快速匹配方法 | |
CN113821463A (zh) | 基于fpga的pcie控制器验证方法、装置及计算机设备 | |
CN109800495B (zh) | 基于ddr phy物理实现的时钟树优化方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |