技术领域
[0001] 本发明涉及同步架构技术领域,具体而言,涉及一种实时仿真同步架构的同步方法、同步装置、计算机可读存储介质和计算机程序产品。
相关背景技术
[0002] 仿真技术是研究和认识可再生能源与电力电子装备特性、进行电力系统分析与故障预防的有效工具。离线仿真的仿真速率都比较慢,所需要的仿真时间也较长,而实时仿真时间和真实的物理时间保持一致,且在实时仿真模型中,在实时性的要求下,电力电子器件的仿真步长一般是微秒或者亚微秒级的,以便在相同的时间内实现更多的计算任务,从而完成实际物理时间限制要求的解算工作量。
[0003] 无论是实时仿真还是离线仿真,仿真模型的同步就十分重要,当模型中的电气信息不同步处理时,不能真实、准确的反映仿真模型的时间‑物理关系,甚至由于模型数据信息不同步造成最终的解算结果发散、完全失真。在仿真模型中,通常的同步方法是按照解算步骤每隔一个时钟频率生成一个同步脉冲,同时给需要处理的模型数据按照自然顺序依次赋予一个同步脉冲,这样每个需要处理的模型数据就被赋予了同步信息,然后根据这些模型数据赋予的同步脉冲就进行寻址操作或者解算,该种同步方法按照每隔一个时钟频率生成同步脉冲,按照同步脉冲的先后顺序依次将同步脉冲赋予需要处理的模型数据,无论外部有无有效数据输入,生成的每个同步脉冲按照先后顺序开辟一个固定的地址空间预留出来,从而进行模型的数据解算。上述同步方法在外部没有有效的模型数据信息需要处理时,仍然会开辟预留一个地址空间出来,形成空闲状态,浪费了硬件资源。
[0004] 当硬件资源足够的情况下,采用上述通用的同步方法不会影响模型的解算和运行,仅仅是占用更多的硬件资源和开销更多的时间成本而已,经济性相对较差。然而,在电力电子系统中,占用较多的硬件资源和时间开销会降低仿真模型的实时性和准确性,尤其是在实时仿真领域的影响会更严重。
具体实施方式
[0024] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0025] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0026] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0027] 正如背景技术中所介绍的,现有技术中在电力电子系统中,占用较多的硬件资源和时间开销会降低仿真模型的实时性和准确性,尤其是在实时仿真领域的影响会更严重,为解决现有技术中同步信号与模型数据量不匹配而造成硬件资源闲置的问题,本申请的实施例提供了一种实时仿真同步架构的同步方法、同步装置、计算机可读存储介质和计算机程序产品。
[0028] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[0029] 本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种实时仿真同步架构的同步方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
[0030] 存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的设备信息的显示方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
[0031] 在本实施例中提供了一种运行于移动终端、计算机终端或者类似的运算装置的实时仿真同步架构的同步方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0032] 图2是根据本申请实施例的实时仿真同步架构的同步方法的流程图。如图2所示,该方法包括以下步骤:
[0033] 步骤S201,获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量。
[0034] 具体地,对仿真系统初始化,获取仿真系统的时钟脉冲频率f和仿真步长Ts,根据仿真系统的同步架构确定需要进行仿真解算的数据量或者数据维度,需提前设定需要处理的模型数据量,记为N。
[0035] 步骤S202,根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号。
[0036] 具体地,根据仿真系统的时钟脉冲频率生成脉冲信号P1,即上述第一同步脉冲信号,这是为了建立一个基准信号,该基准信号与仿真系统的时钟脉冲频率同步,确保所有仿真操作都在统一的时间基准下进行。对上述第一同步脉冲信号依次进行延迟和取反操作得到第二同步脉冲信号,是为了检测在仿真系统的外部存在有效的模型数据信息,该同步脉冲信号是有效的。
[0037] 步骤S203,将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器。
[0038] 具体地,通过将原始同步脉冲信号(即上述第一同步脉冲信号)和取反后的信号(即上述第二同步脉冲信号)进行逻辑“与”操作,可以检测到信号的有效性。如果两个信号完全同步,即第一同步脉冲信号生成的时间点上是高电平(1),在经过延迟和取反之后,第二同步脉冲信号的时间点上应该仍为高电平(1),逻辑“与”操作的结果将是1。如果存在任何不同步的情况,即两个信号在不同的时间点上,逻辑“与”操作的结果将是0,这样,就可以通过检测逻辑“与”操作的结果来确定同步脉冲信号是否有效。
[0039] 步骤S204,在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1。
[0040] 具体地,将上述第一输出结果T_en作为计数器的使能信号,在同步脉冲信号有效的情况下,也即是在第一输出结果为1的情况下,触发计数器,计数器从0开始计数,步进为1。每当第一输出结果为1时,计数器的计数结果在前一次计数结果的数值上增加1,直至计数器的计数结果达到N‑1,记为T_dat。将计数结果T_dat与0进行逻辑比较运算,同时也将计数结果T_dat与N‑1进行逻辑比较运算,得到上述第二输出结果。
[0041] 步骤S205,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示当前同步开始或当前同步结束,0表示正在同步处理。
[0042] 具体地,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,结果为真则输出1,结果为假则输出0。
[0043] 步骤S206,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。
[0044] 具体地,上述计数结果为0说明当前需要处理的模型数据量已全部分配了对应的同步脉冲和地址空间,已可以进入下一轮的同步,因此,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,也即是标识仿真模型一个仿真周期或仿真任务同步处理过程开始的信号,用以触发并启动整个同步处理流程。
[0045] 本实施例中,首先,获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量;然后,根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号;之后,将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器;之后,在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1;之后,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示当前同步开始或当前同步结束,0表示正在同步处理;最后,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。本申请通过每隔一个时钟脉冲频率生成一个同步脉冲信号,以对同步脉冲信号进行有效性检测,即第一输出结果为1时说明脉冲信号有效,在脉冲信号有效的情况下触发计数器,根据需要处理的模型数据量灵活的实现同步脉冲的分配。本申请解决了现有技术中同步信号与模型数据量不匹配而造成硬件资源闲置的问题。
[0046] 为了使得本领域技术人员能够更加清楚地了解本申请的技术方案,以下将结合具体的实施例对本申请的实时仿真同步架构的同步方法的实现过程进行详细说明。
[0047] 为了检测同步脉冲信号的有效性以减少硬件资源的占用,在一种可选地实施方式中,上述步骤S202包括:
[0048] 步骤S2021,将上述第一同步脉冲信号延迟一个仿真步长,得到第三同步脉冲信号;
[0049] 步骤S2022,将上述第三同步脉冲信号进行上述取反操作,得到上述第二同步脉冲信号。
[0050] 在上述实施例中,将上述第一同步脉冲信号P1延迟1个仿真步长Ts,得到时间延迟1个仿真步长后的第三同步脉冲信号P3,将第三同步脉冲信号P3逻辑取反(也就是0变成1或者1变成0),得到取反后的同步脉冲信号P2,即上述第二同步脉冲信号。延迟操作的目的是为了创建一个时间上的偏移,这个偏移可以用于检测信号的同步状态。如果信号在经过仿真系统处理后仍然能够保持这个时间偏移,那么可以认为信号是同步的。取反操作的目的是为了在逻辑上创建一个与原始同步脉冲信号(即上述第一同步脉冲信号)相对的信号,这样可以用于后续的逻辑判断,检测信号的有效性。
[0051] 为了避免同步信号与模型数据量不匹配而造成硬件资源闲置与占用,在一种可选地实施方式中,在上述步骤S204之后,该方法还包括:
[0052] 步骤S301,在上述计数结果为上述模型数据量的情况下,将上述计数器清零。
[0053] 在上述实施例中,确保计数器从初始状态开始计数,以避免错误的数据同步。在一个仿真周期或仿真任务中根据模型数据量只对有效同步脉冲信号进行计数,避免同步信号与模型数据量不匹配而造成硬件资源闲置与占用,在上述计数结果为上述模型数据量的情况下,将计数器进行清零,开始下一个仿真周期或仿真任务的同步脉冲分配,从0到N‑1反复循环计数。
[0054] 为了确保数据在仿真过程中的正确处理和同步,在一种可选地实施方式中,在上述步骤S204之后,该方法还包括:
[0055] 步骤S401,根据上述计数结果为待处理数据赋予对应的数据地址信息,上述数据地址信息为上述待处理数据的地址空间信息;
[0056] 步骤S402,根据上述数据地址信息对上述待处理数据进行同步处理。
[0057] 在上述实施例中,如图3所示,同步架构包括使能模块、结束状态模块、开始状态模块和数据地址模块,在计数器进行计数之后,得到的计数结果T_dat将作为数据地址模块的信号,流程如图4所示,上述计数结果主要表征待处理数据的数据地址信息信号,同时赋予同步信息地址识别信号,能够根据上述计数结果待处理数据赋予对应的数据地址信息,以根据上述数据地址信息对上述待处理数据进行同步处理,确保数据在仿真过程中的正确处理和同步。
[0058] 为了提高仿真模型的准确性以准确判断同步开始和同步结束,在一种可选地实施方式中,上述步骤S204包括:
[0059] 步骤S2041,将上述计数结果同时输入至第一比较器和第二比较器,上述第一比较器的上述比较值为0,上述第二比较器的上述比较值为上述模型数据量减1;
[0060] 步骤S2042,在上述计数结果为0情况下,得到上述第一比较器输出的第五输出结果,上述第五输出结果为1;
[0061] 步骤S2043,在上述计数结果不为0的情况下,得到上述第一比较器输出的上述第五输出结果,上述第五输出结果为0;
[0062] 步骤S2044,在上述计数结果为上述模型数据量减1的情况下,得到上述第二比较器输出的第六输出结果,上述第六输出结果为1;
[0063] 步骤S2045,在上述计数结果不为上述模型数据量减1的情况下,得到上述第二比较器输出的上述第六输出结果,上述第六输出结果为0。
[0064] 在上述实施例中,上述第二输出结果分为第五输出结果和第六输出结果,将计数器的计数结果T_dat输入第一比较器,与0做比较,当计数结果T_dat为0时,第一比较器的输出为1,否则输出为0,记第一比较器的输出结果为T_sta0,即上述第五输出结果。将计数器的计数结果T_dat输入第二比较器,与N‑1做比较,当计数结果T_dat为N‑1时,第二比较器的输出为1,否则输出为0,记第二比较器的输出结果为T_end0,即上述第六输出结果。
[0065] 为了降低仿真模型的灵活性和准确性,在一种可选地实施方式中,上述步骤S205包括:
[0066] 步骤S2051,将上述第一输出结果与上述第五输出结果进行上述逻辑与运算;
[0067] 步骤S2052,在上述逻辑与运算的结果为真的情况下,得到上述第七输出结果,上述第七输出结果为1,表示上述当前同步开始;
[0068] 步骤S2053,在上述逻辑与运算的结果为假的情况下,得到上述第七输出结果,上述第七输出结果为0;
[0069] 步骤S2054,将上述第一输出结果与上述第六输出结果进行上述逻辑与运算;
[0070] 步骤S2055,在上述逻辑与运算的结果为真的情况下,得到上述第八输出结果,上述第八输出结果为1,表示上述当前同步结束;
[0071] 步骤S2056,在上述逻辑与运算的结果为假的情况下,得到上述第八输出结果,上述第八输出结果为0。
[0072] 在上述实施例中,上述第三输出结果分为第七输出结果和第八输出结果,上述第七输出结果用于表示当前同步是否开始,上述第八输出结果用于表示当前同步是否结束,将上述第五输出结果T_sta0与上述第一输出结果T_en做逻辑“与”运算,结果为真输出1,结果为假输出0,记输出结果为T_sta,即上述第七输出结果,同步架构开始的信号,为同步开始信号。将上述第六输出结果T_end0与上述第一输出结果T_en做逻辑“与”运算,结果为真输出1,结果为假输出0,记输出结果为T_end,即上述第八输出结果,表征同步架构结束的信号,即同步结束信号。为了计算同步过程的开始条件和结束条件,而且通过精确控制同步脉冲,提高了仿真模型的效率、灵活性和准确性。
[0073] 还需要说明的是,如图3所示的同步架构中的四种模块,即使能模块、结束状态模块、开始状态模块和数据地址模块可以在仿真模型中作为全局变量使用,各模块的生成图如图4所示,数据地址信息信号T_dat可以作为寄存器其他硬件资源的地址输入信号,用于仿真模型数据的身份识别,赋予需要处理的模型数据的地址信息,T_sta用于流水线同步处理进程的开始信号,T_end用于流水线同步处理进程的结束或者重置信号,T_en用于判断同步脉冲信号的有效性。当然,上述信号的功能并不限于此,例如,T_en还可用于仿真模型数据的单独提取处理。
[0074] 为了确保仿真系统按照预定的时序准确地进行,在一种可选地实施方式中,在上述步骤S205之后,该方法还包括:
[0075] 步骤S501,在上述计数结果为上述模型数据量减1且上述第三输出结果为1的情况下,发出同步结束信号,以提示上述仿真模型当前的上述同步操作已结束。
[0076] 在上述实施例中,上述计数结果为上述模型数据量减1说明当前需要处理的模型数据量已全部分配了对应的同步脉冲和地址空间,当前的同步处理已将完成,已可以进入下一轮的同步,因此,在上述计数结果为模型数据量减1且上述第三输出结果为1的情况下,发出同步结束信号,也即是标识一个仿真周期或仿真任务的结束,用于确保仿真系统按照预定的时序准确地进行。
[0077] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0078] 本申请实施例还提供了一种实时仿真同步架构的同步装置,需要说明的是,本申请实施例的实时仿真同步架构的同步装置可以用于执行本申请实施例所提供的用于实时仿真同步架构的同步方法。该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0079] 以下对本申请实施例提供的实时仿真同步架构的同步装置进行介绍。
[0080] 图5是根据本申请实施例的实时仿真同步架构的同步装置的结构框图。如图5所示,该装置包括:
[0081] 获取单元10,用于获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量。
[0082] 具体地,对仿真系统初始化,获取仿真系统的时钟脉冲频率f和仿真步长Ts,根据仿真系统的同步架构确定需要进行仿真解算的数据量或者数据维度,需提前设定需要处理的模型数据量,记为N。
[0083] 生成单元20,用于根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号。
[0084] 具体地,根据仿真系统的时钟脉冲频率生成脉冲信号P1,即上述第一同步脉冲信号,这是为了建立一个基准信号,该基准信号与仿真系统的时钟脉冲频率同步,确保所有仿真操作都在统一的时间基准下进行。对上述第一同步脉冲信号依次进行延迟和取反操作得到第二同步脉冲信号,是为了检测在仿真系统的外部存在有效的模型数据信息,该同步脉冲信号是有效的。
[0085] 第一逻辑运算单元30,用于将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器。
[0086] 具体地,通过将原始同步脉冲信号(即上述第一同步脉冲信号)和取反后的信号(即上述第二同步脉冲信号)进行逻辑“与”操作,可以检测到信号的有效性。如果两个信号完全同步,即第一同步脉冲信号生成的时间点上是高电平(1),在经过延迟和取反之后,第二同步脉冲信号的时间点上应该仍为高电平(1),逻辑“与”操作的结果将是1。如果存在任何不同步的情况,即两个信号在不同的时间点上,逻辑“与”操作的结果将是0,这样,就可以通过检测逻辑“与”操作的结果来确定同步脉冲信号是否有效。
[0087] 计数单元40,用于在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1。
[0088] 具体地,将上述第一输出结果T_en作为计数器的使能信号,在同步脉冲信号有效的情况下,也即是在第一输出结果为1的情况下,触发计数器,计数器从0开始计数,步进为1。每当第一输出结果为1时,计数器的计数结果在前一次计数结果的数值上增加1,直至计数器的计数结果达到N‑1,记为T_dat。将计数结果T_dat与0进行逻辑比较运算,同时也将计数结果T_dat与N‑1进行逻辑比较运算,得到上述第二输出结果。
[0089] 第二逻辑运算单元50,用于将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示当前同步开始或当前同步结束,0表示正在同步处理。
[0090] 具体地,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,结果为真则输出1,结果为假则输出0。
[0091] 第一发出单元60,用于在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。
[0092] 具体地,上述计数结果为0说明当前需要处理的模型数据量已全部分配了对应的同步脉冲和地址空间,已可以进入下一轮的同步,因此,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,也即是标识仿真模型的一个仿真周期或仿真任务同步处理过程开始的信号,用以触发并启动整个同步处理流程。
[0093] 本实施例中,获取单元,用于获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量;生成单元,用于根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号;第一逻辑运算单元,用于将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器;计数单元,用于在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1;第二逻辑运算单元,用于将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示同步开始或同步结束,0表示正在同步处理;第一发出单元,用于在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。本申请通过每隔一个时钟脉冲频率生成一个同步脉冲信号,以对同步脉冲信号进行有效性检测,即第一输出结果为1时说明脉冲信号有效,在脉冲信号有效的情况下触发计数器,根据需要处理的模型数据量灵活的实现同步脉冲的分配。本申请解决了现有技术中同步信号与模型数据量不匹配而造成硬件资源闲置的问题。
[0094] 为了检测同步脉冲信号的有效性以减少硬件资源的占用,在一种可选地实施方式中,上述生成单元包括:
[0095] 延迟模块,将上述第一同步脉冲信号延迟一个仿真步长,得到第三同步脉冲信号;
[0096] 取反模块,将上述第三同步脉冲信号进行上述取反操作,得到上述第二同步脉冲信号。
[0097] 在上述实施例中,将上述第一同步脉冲信号P1延迟1个仿真步长Ts,得到时间延迟1个仿真步长后的第三同步脉冲信号P3,将第三同步脉冲信号P3逻辑取反(也就是0变成1或者1变成0),得到取反后的同步脉冲信号P2,即上述第二同步脉冲信号。延迟操作的目的是为了创建一个时间上的偏移,这个偏移可以用于检测信号的同步状态。如果信号在经过仿真系统处理后仍然能够保持这个时间偏移,那么可以认为信号是同步的。取反操作的目的是为了在逻辑上创建一个与原始同步脉冲信号(即上述第一同步脉冲信号)相对的信号,这样可以用于后续的逻辑判断,检测信号的有效性。
[0098] 为了避免同步信号与模型数据量不匹配而造成硬件资源闲置与占用,在一种可选地实施方式中,该装置还包括:
[0099] 清零单元,用于在上述第一输出结果为1的情况下,利用计数器进行计数,得到计数结果之后,在上述计数结果为上述模型数据量的情况下,将上述计数器清零。
[0100] 在上述实施例中,确保计数器从初始状态开始计数,以避免错误的数据同步。在一个仿真周期或仿真任务中根据模型数据量只对有效同步脉冲信号进行计数,避免同步信号与模型数据量不匹配而造成硬件资源闲置与占用,在上述计数结果为上述模型数据量的情况下,将计数器进行清零,开始下一个仿真周期或仿真任务的同步脉冲分配,从0到N‑1反复循环计数。
[0101] 为了确保数据在仿真过程中的正确处理和同步,在一种可选地实施方式中,该装置还包括:
[0102] 赋予信息单元,用于在上述第一输出结果为1的情况下,利用计数器进行计数,得到计数结果之后,根据上述计数结果为待处理数据赋予对应的数据地址信息,上述数据地址信息为上述待处理数据的地址空间信息;
[0103] 同步处理单元,用于根据上述数据地址信息对上述待处理数据进行同步处理。
[0104] 在上述实施例中,如图3所示,同步架构包括使能模块、结束状态模块、开始状态模块和数据地址模块,在计数器进行计数之后,得到的计数结果T_dat将作为数据地址模块的信号,各模块的生成图如图4所示,上述计数结果主要表征待处理数据的数据地址信息信号,同时赋予同步信息地址识别信号,能够根据上述计数结果待处理数据赋予对应的数据地址信息,以根据上述数据地址信息对上述待处理数据进行同步处理,确保数据在仿真过程中的正确处理和同步。
[0105] 为了提高仿真模型的准确性以准确判断同步开始和同步结束,在一种可选地实施方式中,上述计数单元包括:
[0106] 输入模块,将上述计数结果同时输入至第一比较器和第二比较器,上述第一比较器的上述比较值为0,上述第二比较器的上述比较值为上述模型数据量减1;
[0107] 第一输出模块,在上述计数结果为0情况下,得到上述第一比较器输出的第五输出结果,上述第五输出结果为1;
[0108] 第二输出模块,在上述计数结果不为0的情况下,得到上述第一比较器输出的上述第五输出结果,上述第五输出结果为0;
[0109] 第三输出模块,在上述计数结果为上述模型数据量减1的情况下,得到上述第二比较器输出的第六输出结果,上述第六输出结果为1;
[0110] 第四输出模块,在上述计数结果不为上述模型数据量减1的情况下,得到上述第二比较器输出的上述第六输出结果,上述第六输出结果为0。
[0111] 在上述实施例中,上述第二输出结果分为第五输出结果和第六输出结果,将计数器的计数结果T_dat输入第一比较器,与0做比较,当计数结果T_dat为0时,第一比较器的输出为1,否则输出为0,记第一比较器的输出结果为T_sta0,即上述第五输出结果。将计数器的计数结果T_dat输入第二比较器,与N‑1做比较,当计数结果T_dat为N‑1时,第二比较器的输出为1,否则输出为0,记第二比较器的输出结果为T_end0,即上述第六输出结果。
[0112] 为了降低仿真模型的灵活性和准确性,在一种可选地实施方式中,上述第二逻辑运算单元包括:
[0113] 第一逻辑运算模块,将上述第一输出结果与上述第五输出结果进行上述逻辑与运算;
[0114] 第五输出模块,在上述逻辑与运算的结果为真的情况下,得到上述第七输出结果,上述第七输出结果为1,表示上述当前同步开始;
[0115] 第六输出模块,在上述逻辑与运算的结果为假的情况下,得到上述第七输出结果,上述第七输出结果为0;
[0116] 第二逻辑运算模块,将上述第一输出结果与上述第六输出结果进行上述逻辑与运算;
[0117] 第七输出模块,在上述逻辑与运算的结果为真的情况下,得到上述第八输出结果,上述第八输出结果为1,表示上述当前同步结束;
[0118] 第八输出模块,在上述逻辑与运算的结果为假的情况下,得到上述第八输出结果,上述第八输出结果为0。
[0119] 在上述实施例中,上述第三输出结果分为第七输出结果和第八输出结果,上述第七输出结果用于表示当前同步是否开始,上述第八输出结果用于表示当前同步是否结束,将上述第五输出结果T_sta0与上述第一输出结果T_en做逻辑“与”运算,结果为真输出1,结果为假输出0,记输出结果为T_sta,即上述第七输出结果,同步架构开始的信号,为同步开始信号。将上述第六输出结果T_end0与上述第一输出结果T_en做逻辑“与”运算,结果为真输出1,结果为假输出0,记输出结果为T_end,即上述第八输出结果,表征同步架构结束的信号,即同步结束信号。为了计算同步过程的开始条件和结束条件,而且通过精确控制同步脉冲,提高了仿真模型的效率、灵活性和准确性。
[0120] 还需要说明的是,如图3所示的同步架构中的四种模块,即使能模块、结束状态模块、开始状态模块和数据地址模块可以在仿真模型中作为全局变量使用,各模块的生成图如图4所示,数据地址信息信号T_dat可以作为寄存器其他硬件资源的地址输入信号,用于仿真模型数据的身份识别,赋予需要处理的模型数据的地址信息,T_sta用于流水线同步处理进程的开始信号,T_end用于流水线同步处理进程的结束或者重置信号,T_en用于判断同步脉冲信号的有效性。当然,上述信号的功能并不限于此,例如,T_en还可用于仿真模型数据的单独提取处理。
[0121] 为了确保仿真系统按照预定的时序准确地进行,在一种可选地实施方式中,该装置还包括:
[0122] 第二发出单元,用于在将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果之后,在上述计数结果为上述模型数据量减1且上述第三输出结果为1的情况下,发出同步结束信号,以提示上述仿真模型当前的上述同步操作已结束。
[0123] 在上述实施例中,上述计数结果为上述模型数据量减1说明当前需要处理的模型数据量已全部分配了对应的同步脉冲和地址空间,当前的同步处理已将完成,已可以进入下一轮的同步,因此,在上述计数结果为模型数据量减1且上述第三输出结果为1的情况下,发出同步结束信号,也即是标识一个仿真周期或仿真任务的结束,用于确保仿真系统按照预定的时序准确地进行。
[0124] 上述实时仿真同步架构的同步装置包括处理器和存储器,上述获取单元、生成单元和第一逻辑运算单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0125] 处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中同步信号与模型数据量不匹配而造成硬件资源闲置的问题。
[0126] 存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
[0127] 本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质包括存储的程序,其中,在上述程序运行时控制上述计算机可读存储介质所在设备执行上述实时仿真同步架构的同步方法。
[0128] 具体地,实时仿真同步架构的同步方法包括:
[0129] 步骤S201,获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量;
[0130] 步骤S202,根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号;
[0131] 步骤S203,将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器;
[0132] 步骤S204,在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1;
[0133] 步骤S205,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示当前同步开始或当前同步结束,0表示正在同步处理;
[0134] 步骤S206,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。
[0135] 本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述实时仿真同步架构的同步方法。
[0136] 具体地,实时仿真同步架构的同步方法包括:
[0137] 步骤S201,获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量;
[0138] 步骤S202,根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号;
[0139] 步骤S203,将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器;
[0140] 步骤S204,在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1;
[0141] 步骤S205,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示当前同步开始或当前同步结束,0表示正在同步处理;
[0142] 步骤S206,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。
[0143] 本发明实施例提供了一种同步架构,同步架构包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
[0144] 步骤S201,获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量;
[0145] 步骤S202,根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号;
[0146] 步骤S203,将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器;
[0147] 步骤S204,在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1;
[0148] 步骤S205,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示当前同步开始或当前同步结束,0表示正在同步处理;
[0149] 步骤S206,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。
[0150] 本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
[0151] 步骤S201,获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量;
[0152] 步骤S202,根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号;
[0153] 步骤S203,将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器;
[0154] 步骤S204,在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1;
[0155] 步骤S205,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示当前同步开始或当前同步结束,0表示正在同步处理;
[0156] 步骤S206,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。
[0157] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0158] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0159] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0160] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0161] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0162] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0163] 存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
[0164] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0165] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0166] 从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
[0167] 1)、本申请的实时仿真同步架构的同步方法,首先,获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量;然后,根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号;之后,将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器;之后,在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1;之后,将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示当前同步开始或当前同步结束,0表示正在同步处理;最后,在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。本申请通过每隔一个时钟脉冲频率生成一个同步脉冲信号,以对同步脉冲信号进行有效性检测,即第一输出结果为1时说明脉冲信号有效,在脉冲信号有效的情况下触发计数器,根据需要处理的模型数据量灵活的实现同步脉冲的分配。本申请解决了现有技术中同步信号与模型数据量不匹配而造成硬件资源闲置的问题。
[0168] 2)、本申请的实时仿真同步架构的同步装置,获取单元,用于获取时钟脉冲频率、仿真步长和模型数据量,上述模型数据量为仿真模型中待进行仿真解算的数据量;生成单元,用于根据上述时钟脉冲频率生成第一同步脉冲信号,并将上述第一同步脉冲信号延迟一个上述仿真步长并进行取反操作,得到第二同步脉冲信号;第一逻辑运算单元,用于将上述第一同步脉冲信号与上述第二同步脉冲信号进行逻辑与运算,得到第一输出结果,上述第一输出结果为0或1,1表示触发计数器,0表示不触发上述计数器;计数单元,用于在上述第一输出结果为1的情况下,利用上述计数器进行计数,得到计数结果,并将上述计数结果与比较值进行逻辑比较运算,得到第二输出结果,上述计数结果小于上述模型数据量,上述比较值为0或上述模型数据量减1,上述第二输出结果为0或1;第二逻辑运算单元,用于将上述第一输出结果与上述第二输出结果进行上述逻辑与运算,得到第三输出结果,上述第三输出结果为0或1,1表示同步开始或同步结束,0表示正在同步处理;第一发出单元,用于在上述计数结果为0且上述第三输出结果为1的情况下,发出同步开始信号,以提示上述仿真模型执行仿真解算的同步操作,上述同步操作至少包括以下之一:同步存储数据和同步读取数据。本申请通过每隔一个时钟脉冲频率生成一个同步脉冲信号,以对同步脉冲信号进行有效性检测,即第一输出结果为1时说明脉冲信号有效,在脉冲信号有效的情况下触发计数器,根据需要处理的模型数据量灵活的实现同步脉冲的分配。本申请解决了现有技术中同步信号与模型数据量不匹配而造成硬件资源闲置的问题。
[0169] 以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。