用于创建分配列表的方法与流程

文档序号:15884410发布日期:2018-11-09 18:34阅读:178来源:国知局
本发明涉及一种用于创建分配列表的方法。
背景技术
:复杂动态模型的实时仿真自身基于受限的时间边缘条件对现代计算节点提出了很高的要求。在汽车硬件在环仿真(hil)中,这类模型主要用于快速控制回路必须闭合的地方。例如仿真气缸内部压力传感器就是这种情况,气缸内部压力传感器在减少消耗或废气排放方面发挥着越来越大的作用。但在具有高动态性的受控系统中、如在电动机中短周期时间和低延迟是必不可少的。这在实践中很难借助基于cpu的仿真来实现。现场可编程门阵列(fpga)可以在实时仿真中通过执行模型的动态部分的计算来辅助计算节点。基于高灵活性和并行处理信号的可能性,也可通过使用fpga简单地满足硬实时要求。fpga可用作计算节点cpu的硬件加速器。因此例如将环境模型的高动态部分转移到fpga中,以确保控制器具有足够精确和快速的响应时间。fpga网表通常基于fpga模型以硬件描述语言在构建过程中产生。受控系统的模型基于增加的精度要求而变得越来越复杂并且因此也难以处理。在汽车hil环境中,这种模型通常借助mathworks公司的工具包matlab/simulink来创建。simulink以这种模型的框图形式提供基于块的视图。模型部分可在框图中组合成子系统并且通过信号相互关联。这些块之间的数据流通过信号线表示。基于fpga的仿真可借助xilinx系统生成器(xsg)和dspace的fpga编程块组(类似于基于cpu的仿真)借助simulink以框图进行建模。但与cpu仿真不同的是,该模型不会转换为迭代编程语言,而是被转换为描述用户专用数字电路的fpga网表。该fpga网表可被转换为fpga配置数据流。分配列表为此用于在fpga运行时能实现信号值的读取。首先由源代码生成网表,然后将网表转换成比特流并将比特流加载到fpga上。在该转换时跟踪fpga的哪个寄存器由源代码的哪个寄存器使用,即在运行时源代码的哪个信号存储在fpga的哪个寄存器中。当应从fpga读取特定信号的值时,可借助分配列表确定需读取fpga的哪个寄存器。该读取过程可通过不同技术实现。例如可通过回读接口读取寄存器,这在ep2765528a1中被描述。在此不仅可读取由在fpga源代码中描述的功能所使用的寄存器,而且也可读取仅用于存储用于读取的信号值并且对于fpga源代码中描述的功能不重要的寄存器。作为替代方案,可通过地址解码器针对性地读取寄存器。作为替代方案,寄存器可连接成移位寄存器链并被依次读取。技术实现要素:本发明的任务在于改进现有技术。本发明涉及一种用于创建分配列表的方法,所述分配列表基于fpga源代码创建,源代码在第一位置上使用至少一个第一信号,为第一信号分配至少一个第一寄存器,在分配列表中将第一信号和第一寄存器列为彼此分配的,在fpga源代码中的第二位置上使用第二信号,自动识别第二信号的值能根据第一计算规则由第一信号的值确定,在分配列表中将第二信号、第一寄存器和第一计算规则列为彼此分配的。根据本发明方法创建的分配列表在运行中读取信号值时是有利的。在运行时将第一信号的值存储在第一寄存器中。在运行时该信号值可如上所述那样以不同方式读取。通过计算规则无需读取分配给第二信号的寄存器。如应读取第一信号值和第二信号值,则只需读取第一寄存器,这样可节省时间。通过本发明的分配列表无需为第二信号分配一个寄存器。如应读取第二信号的值,则读取分配给第一信号的第一寄存器并根据计算规则由第一寄存器的读取值确定第二信号的值。由于第二信号无需存储在寄存器中,因此可省却一个寄存器。可确定在运行时在fpga中未存储在寄存器中的信号值。分配列表包括信号、寄存器和计算规则的分配关系。列表的每个对象因此包括至少三个元素。因此分配列表也可被理解为分配表格。例如在每行中可存在一个分配关系。在第一列中是相应的信号、在第二列中是分配的寄存器并且在第三列中是计算规则,借助所述计算规则由寄存器值计算信号。在本发明的一种实施方式中,第一信号和第二信号是相同的并且计算规则是一致性。由于在该情况下信号是相同的,因此它们的值在运行时是相同的。因此在确定第二信号的值时则可采用第一信号值。在一种替代实施方式中,第二信号由第一信号的位的子集组成,并且分配规则定义第一信号的描述第二信号的值的位。在该情况下,在确定第二信号的值时仅使用通过分配规则定义的那些位。其它位被丢弃。如不需要第一信号值,则无需读取不需要的位。在一种替换实施方式中,第二信号仅通过一个或多个位保持(biterhaltend)运算操作与第一信号关联。术语“位保持运算操作”理解为位序列的值不改变,位序列仅被移动(这也称为移位(shifting)),或者以其它方式进行解释(这也称为转换(casting))。在一种替代实施方式中,第二信号通过一个或多个位改变运算操作与第一信号关联。为了确定第二信号值,读取第一信号的值并进行位改变运算操作。在一种优选实施方式中,位改变运算操作在相同的时钟脉冲内输出计算结果。为了确定第二信号的信号值,在从fpga的寄存器读取第一信号值之后必须进行运算操作。当运算操作结果处于相同的时钟脉冲内时,通过运算操作在相同的时钟脉冲内已知第一信号值和第二信号值。这是有利的,因为通常应构建许多变量的一致图像来确定fpga的状态。在一种实施方式中,位改变运算操作是组合逻辑运算。无时钟延迟、即结果处于相同的时钟脉冲内的组合逻辑运算例如有:-逻辑运算(not、and、nand、or、nor、xor)-查找表(lookup-table)运算-无流水线级的基本运算操作(sum、subtract、...)类似于位保持运算操作的操作,这些位改变运算操作的结果同样也可通过引用输入变量来确定。在一种实施方式中,位改变算术运输将第一信号与第三信号进行运算,为第三信号分配第三寄存器,在分配列表中为第一信号附加地分配第三寄存器,第一计算规则指示如何从第一信号的值和第三信号的值计算第二信号的值。一般来说,在具有多个输入的运算操作中,当每个输入信号存储在一个寄存器中时,可由输入信号的值确定输出信号。因此不必读取输出信号。运算操作也可由多个较小的运算操作组成。例如两个信号值相加并且随后将和乘以第三值可理解为具有三个输入信号和一个输出信号的运算操作。第三寄存器用于在运行时存储第三信号的值。在运行时可从第一寄存器读取第一信号的值并从第三寄存器读取第三信号的值。通过位改变运算操作的推算于是可确定第二信号的值而无需读取第二信号的值。在另一种实施方式中,为fpga源代码中的第二信号分配第二寄存器,在分配列表中附加于第一寄存器和计算规则将第二寄存器列为分配给第二信号的。通过第二寄存器提供确定第二信号值的替代方法。第二信号值能根据分配列表通过读取第一寄存器并且借助计算规则确定或通过读取第二寄存器确定。通过比较这两种确定方法的两个结果可提示错误。由此可提示的错误例如有:-在由第一信号的值推算第二信号值时cpu的错误。-fpga中的计算错误,由此第二值的计算有误。-在fpga上实现源代码时的错误。因此,通过第二寄存器虽然没有了上述可节省一个寄存器的优点,但通过分配规则提供了错误识别可能性。在另一种实施方式中,评估读取第二寄存器的持续时间和从第一信号值计算第二信号值的持续时间并且基于该评估在分配列表中指定更快的方法为优选方法。有利的是,在运行时可非常快速地决定应使用哪种方法。当寄存器构造用于通过移位寄存器链或地址解码器进行读取时,可由读取机制的特性确定读取所需的持续时间。当寄存器构造用于通过回读接口读取时,则只有在创建网络列表之后当比特流中的值的比特位置已知时才能良好地评估读取持续时间。在已知的处理器中可由所需的处理器指令及其执行时间来评估由第一信号值计算第二信号值的持续时间。作为替代方案可凭经验在目标处理器或类似处理器上确定计算持续时间。在一种有利实施方式中,fpga源代码实现于fpga上,在运行时读取来自fpga的第一寄存器,借助来自分配列表的计算规则确定第二信号值。在运行时第一信号的值存储在第一寄存器中。在运行时读取该信号值。用于读取寄存器的可能技术已在上面给出。通过计算规则无需读取分配给第二信号的寄存器。仅读取第一寄存器并且通过计算规则确定第二值,这样可节省时间。由于第二信号无需存储在寄存器中,因此可节省一个寄存器。在另一种实施方式中,为fpga源代码中的第二信号分配第二寄存器,在分配列表中附加于第一寄存器和计算规则将第二寄存器列为分配给第二信号的,在运行时自动决定是从第二寄存器读取第二信号值还是通过计算规则由第一信号值确定第二信号值。有利的是,在确定第二信号值时可考虑渡越时间条件。当也应确定第一信号值时,通常从第一信号值计算第二信号值要比从第二寄存器读取第二信号值更快。当无需确定第一信号值时,则通常从第二寄存器读取第二信号值比从第一寄存器读取第一信号值并由其计算第二信号值更快。在一些开发环境中可将多个信号综合至总线。在这种综合的信号中,针对总线的每个信号单独确定是否可借助计算规则从其它寄存器值确定信号值。因此在分配列表中单独处理每个信号。本发明还涉及一种用于在运行时确定fpga的信号值的方法,在此使用分配列表,在运行时从第一寄存器读取第一信号的第一值,在分配列表中将第一信号、第一寄存器、第二信号和第一计算规则列为彼此分配的,通过第一计算规则由第一值确定第二信号的第二值。该方法的优点在于无需读取第二信号的值。此外,可确定未存储在寄存器中的值。能根据上述方法创建用于确定信号值的分配列表。附图说明下面参考附图详细阐述本发明。在此,相同部件具有相同的附图标记。所示实施方式是高度示意性的,即距离及横向和竖直延伸尺寸并非按比例的,除非另有说明,否则它们之间没有可导出的几何关系。附图如下:图1以相同信号为例来引用寄存器;图2以位减少为例引用寄存器;图3以位保持运算操作为例引用寄存器;图4以位改变运算操作为例引用寄存器;图5以位改变运算操作为例多次引用寄存器。具体实施方式图1示出包括两个彼此嵌套的子系统10、11的图形fpga源代码1。第一子系统10包括第一逻辑块13和第二逻辑块14。第一逻辑块13包括两个输入信号14、15和一个第一输出信号2。为第一输出信号2分配第一寄存器3。第一寄存器3为此用于在运行时存储第一输出信号2的值并允许在运行时读取该值。第一子系统10嵌入第二子系统11中。第一子系统10的第一输出信号4与第一子系统10内的第一逻辑块13的第一输出信号2相同。在创建分配列表时识别这一点并且将第一子系统10内的第一寄存器3分配给第一子系统的第一输出信号4。作为在第一子系统10的第一输出信号4和第一寄存器3之间的分配规则,在分配列表中指定一致性因此可在实现时省却分配给第一子系统10的第一输出信号4的第二寄存器5。由此节省了fpga中的资源。作为替代方案,第二寄存器5可在fpga中实现,于是可从第二寄存器5读取第一子系统10的第一输出信号4的值,这提供了在运行时识别错误的可能性。图2示出另一种图形fpga源代码1。下面仅描述与图1的不同之处。在本实施例中通过所谓的分割块(slice-block)16将第一信号2进一步处理为第二信号6。通过分割块16可丢弃不需要的信号位。例如第一信号2可以是20位,而第二信号6则仅为12位,因为只需要这12位。第二信号6可如图1中的第二信号2那样存储在一个寄存器中,这在图2中未示出。图3示出另一种图形fpga源代码1。下面仅描述与图2的不同之处。在本实施例中通过所谓的重新解释块17将第一信号2进一步处理为第二值7。重新解释块17不改变信号的位序列,但影响程序中信号的逻辑解释。例如第一信号2可以是35位整数,而第二信号7则是包括十五位尾数和十位指数的浮点数。第二信号7也可如图1中的第二信号2那样存储在一个寄存器中,这在图3中未示出。图4示出另一种图形fpga源代码1。下面仅描述与图2的不同之处。在本实施例中第一信号2通过所谓的减法块18进一步处理为第二值8。减法块18从第一信号2中减去常数19。为了确定第二信号8的值,不必像第一信号2的第一值那样读取常数19的值。常数19的值可在分配列表中或以其它方式固定地存储,从而可在计算第二信号8的值时可访问常数19的值。作为替代方案,常数19的值可一次性从fpga读取,以排除fpga构建工具或硬件中的故障。替代或附加地,常数19的值可与fpga间隔开预定距离地读取,以排除由环境条件或硬件故障引起的错误。图5示出另一种图形fpga源代码1。下面仅描述与图4的不同之处。在本实施例中通过所谓的加法块20将第一信号2进一步处理为第二值9。加法块20将第三信号22加到第一信号2上。为第三信号22分配第三寄存器23。第三寄存器23构造用于在运行时存储第三信号23的值。在运行时从第一寄存器3读取第一信号2的值并从第三寄存器23读取第三信号22的值。然后可通过将读取值相加来确定第二信号9的值。图6示出本发明方法的各步骤。一些步骤在此是必需的,另一些步骤是可选的。在第一必需步骤s110中检查源代码1。在此确定在源代码1中定义的信号。在第二必需步骤s120中确定源代码1的第一信号2。在第三必需步骤s130中确定在运行时在哪个寄存器3中存储了在第二步骤s120中确定的第一信号2。当没有为第一信号2分配第一寄存器3时,在源代码中添加第一寄存器3。此外,可为第一寄存器3在源代码中添加并设置解耦机制或将影子寄存器10与已经添加的解耦机制相关联。解耦机制例如可中断寄存器的时钟线或寄存器的使能信号。解耦机制能够在运行时临时分离寄存器与所分配信号,使得在分离期间存储在寄存器中的值不被更新。有利的是,多个寄存器与相同的解耦机制关联。由此各寄存器可同时解耦并在各寄存器中存储一组一致的信号值。这在第二信号应由多个信号值计算时特别有利。在第四必需步骤s140中确定第二信号4、6、7、8、9。在第五必需步骤s150中创建计算规则,借助该计算规则可由在第二步骤s120中确定的第一信号2的值来确定在第四步骤s140中确定的第二信号4、6、7、8、9的值。计算规则通常是指源代码1中第一信号2和第二信号4、6、7、8、9之间定义的计算的转移。在第六可选步骤s155中确定在哪个寄存器5中存储第二信号4、6、7、8、9。当可确定这种第二寄存器5时,则在第七步骤160中使用它。如不能确定这种第二寄存器5,则类似于第三步骤s130的第一寄存器3那样添加第二寄存器5。在可选的第七步骤s160中,对于在第三步骤s130中确定的第一寄存器3和/或在第六步骤s155中确定的第二寄存器在源代码中添加读取机制。在可选的第八步骤s170中为第一寄存器3在源代码中添加并设置读取机制。读取机制的添加和设置例如可如下进行:在源代码中添加对实现工具的指令;在应加载网表的fpga上应通过回读接口进行读取。如果第一寄存器3也可在没有这种机制的情况下被读取,则不需要添加读取机制。也可规定,在该方法中读取机制晚些时候才被添加到由源代码创建的fpga程序中。第二到第八步骤可多次重复,以便为多个信号分配寄存器和计算规则。优选第二至第八步骤通过算法自动重复处理,该算法系统地处理所有在源代码中定义的信号。在可选的第九步骤s180中从源代码合成网表。在可选的第十步骤s190中将在第九步骤s180中生成的网表转换成比特流,该比特流随后可在可选的第十一步骤s200中被加载到fpga上并在那里执行。然后在fpga运行期间可在可选的第十二步骤s210中读取在第三步骤s130中确定的第一寄存器3。第二信号4、6、7、8、9的值于是可由读取值通过计算规则进行确定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1