多通道波形合成引擎的制作方法

文档序号:14651778发布日期:2018-06-08 21:58阅读:163来源:国知局
多通道波形合成引擎的制作方法

在用于特定应用的情况下,可以要求信号具有给定的相位和脉冲宽度。所要求的相位和脉冲宽度可以随时间的经过而改变。在一些应用中,需要生成大量这种信号,其中这些信号的相位和脉冲宽度的要求经常针对每一个信号而改变。



技术实现要素:

这里所公开的系统和技术可允许实现多通道波形合成引擎。考虑到以下的具体实施方式部分、附图和所附权利要求书,所公开的主题的附加特征、优点和实施例可得以阐述或显而易见。此外,应当理解,上述总结和以下详细说明这两者都是示例,并且意图在不限制权利要求书的范围的情况下提供进一步的解释。

相位计数器模块可以对与可用相位的数量相对应的值进行计数,输出表示来自该多个所述可用相位中的当前相位的相位计数器值,并且在所述相位计数器值达到相位计数器复位值的情况下,复位所述相位计数器值。多个通道可以输出波形。各个通道可以包括:相位模块,其可以接收从所述相位计数器模块输出的所述相位计数器值,并且在所述相位计数器值表示所述数量的可用相位中的分配至该通道的相位的情况下,激活激活信号;以及脉冲宽度模块,其可以接收所述激活信号,并且在所述激活信号激活的情况下,在由分配至该通道的脉冲宽度表示的时间段内激活波形,并且在由分配至该通道的脉冲宽度表示的时间段之后,停用所述波形。

可以接收表示可用相位的数量的值。可以设置基于表示所述可用相位的数量的值的、相位计数器的相位计数器值以及相位计数器复位值。针对所述数量的可用相位中的各相位,进行以下操作:可以确定具有如下的已有效波形的任何通道,并且可以保持来自任何这种通道的波形有效,其中该已有效波形自该波形变为有效起、尚未到达由分配至该通道的脉冲宽度表示的时间段的结束;可以确定包括由所述相位计数器值表示的所分配相位的任何通道,并且可以激活来自任何这种通道的波形;可以确定具有如下的已有效波形的任何通道,并且停用来自任何这种通道的波形,其中该已有效波形已到达由分配至该通道的脉冲宽度表示的时间段的结束;以及可以更新所述相位计数器值。

可以在多通道波形合成引擎的通道处接收到相位计数器值。可以判断为所述相位计数器值表示分配至所述通道的相位。可以激活从所述通道输出的波形。可以在经过了由分配至所述通道的脉冲宽度表示的时间段之后,停用从所述通道输出的波形。

附图说明

为了提供所公开的主题的进一步理解所包括的附图并入并且构成本说明书的一部分。这些附图还示出所公开的主题的实现,并且连同具体实施方式部分一起用来说明所公开的主题的实施例的原理。不试图以比基本理解所公开主题及可实践该主题的各种方式所需的更详细的方式来示出结构详情。

图1示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图2示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图3示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图4示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图5示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图6示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图7示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图8示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图9示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。

图10示出根据所公开的主题的实现的多通道波形合成引擎所用的示例信号迹线。

图11示出适合根据所公开的主题的实现的多通道波形合成引擎的示例信号迹线。

图12示出适合根据所公开的主题的实现的多通道波形合成引擎的示例信号迹线。

图13示出适合根据所公开的主题的实现的多通道波形合成引擎的示例信号迹线。

图14示出适合根据所公开的主题的实现的多通道波形合成引擎的示例过程。

图15示出适合根据所公开的主题的实现的多通道波形合成引擎的示例过程。

图16示出适合根据所公开的主题的实现的多通道波形合成引擎的示例过程。

图17示出适合根据所公开的主题的实现的多通道波形合成引擎的示例过程。

图18示出根据所公开的主题的实施例的计算机。

图19示出根据所公开的主题的实施例的网络结构。

具体实施方式

根据这里所公开的实施例,可以针对大量通道高效地生成波形。针对各通道的波形可以对针对各种应用所要生成的信号的给定的相位和脉冲宽度进行编码。例如,引擎所输出的波形可以用来生成按相控阵列排列的变换器所用的信号。

多通道波形合成引擎可以允许进行输出波形的相位和脉冲宽度的控制。多通道波形合成引擎可以包括相位计数器模块和多个通道。相位计数器模块可以包括相位计数器,其中该相位计数器对于所有通道可以是全局性的。相位计数器可以对时钟信号的各滴答(tick)进行计数。各通道可以包括自身的相位模块和脉冲宽度模块。通道的相位模块可以将分配至该通道的相位值存储在相位寄存器中。通道的脉冲宽度模块可以存储分配至该通道的脉冲宽度。在通道的相位模块所存储的相位值与相位计数器的当前值一致的情况下,针对该通道的波形可以从低转变为高。换句话说,该一致表示到该通道变为接通的时间了。通道为接通的时间的长度可以对该波形的脉冲宽度进行编码。为了设置该通道的“接通”状态的适当持续时间,相位模块中所存储的相位值与全局相位计数器一致可以将该通道的脉冲宽度计数器复位为开始值。脉冲宽度计数器可以对全局时钟的各滴答进行计数。波形继续处于“接通”状态,直到通道的脉冲宽度计数器的值与通道的脉冲宽度寄存器中的值一致为止。该一致表示波形处于接通的时间已足够长,并且波形从高转变为低。多通道波形合成引擎可以有利地生成针对多个通道的波形,其中例如可以使用单一全局相位计数器来高效地独立控制各个波形。

相位计数器可以存储基于任何适当事件按任何适当量进行递增或递减的相位计数器值。例如,相位计数器可以基于接收到时钟信号的前沿或后沿,来以1、2或任何其它量为单位进行增计数(例如,从0开始)、或者(从任何数值开始)减计数到0。相位计数器值可以以相位计数器开始值开始。多通道波形合成引擎还可以存储可以作为相位计数器到期的值的相位计数器复位值。例如,可以将相位计数器复位值存储在相位计数器模块中。

相位计数器可以计数的相位的数量可以利用相位计数器所使用的相位计数器开始值、相位计数器复位值和计数增量来设置。例如,为了将相位的数量设置为8,可以将相位计数器开始值设置为0,将计数增量设置为1,并且将相位计数器复位值设置为7。然后,相位计数器可以从0计数到7,这使相位计数器值按1的增量从0递增为7。可以在达到八个单独相位计数器值各自时输出该相位计数器值。在相位计数器值达到7、从而与相位计数器复位值一致的情况下,可以认为相位计数器到期并被复位为相位计数器开始值。相位计数器开始值可以是其上次的值(例如,0)、或者可以相对于其上次的值改变。在相位计数器到期时,相位计数器复位值也可以改变。然后,相位计数器可以重新开始增计数。这样可以使得相位计数器在复位之前重复对相位数量(例如,八个相位)进行计数。

作为另一示例,为了将相位数量设置为8,可以将相位计数器开始值设置为7,计数增量可以为1,并且可以将相位计数器复位至设置为0。然后,相位计数器可以从7计数到0,这样使相位计数器值从7以1为单位递减为0,从而在达到7~0的八个单独相位计数器值各自时输出该相位计数器值。在相位计数器值达到0、从而与相位计数器开始值一致的情况下,相位计数器可能到期,这导致相位计数器值被复位为相位计数器开始值(可以仍为7、或者可能已改变)。在相位计数器到期时,相位计数器复位值也可以改变。然后,相位计数器可以重新开始减计数。

可以使用如由相位计数器开始值、相位计数器复位值和计数增量所确定的相位计数器进行计数的相位数量来控制多通道波形合成引擎的各种通道的输出波形的频率。例如,可以使用相位数量来对相位计数器模块所使用的时钟信号的频率进行分割。为了基于y Hz的时钟信号输出x Hz的波形的输出频率,可以将相位计数器计数的相位数量设置为y/x。例如,在时钟为12.75MHz且期望的输出频率为75KHz的情况下,可以将相位数量设置为12,7500,000/75,000=170。例如,可以将相位计数器开始值设置为169并且可以将相位计数器复位值设置为0。这样可以得到相位计数器始终对170个相位进行计数,例如相位计数器从169减计数为0。从同一相位计数器模块接收到相位计数器值的所有通道基于该相位计数器模块的相位计数器开始值、相位计数器复位值和计数增量可以输出具有相同频率的波形。在各种实现中,这些波形可以是脉冲宽度调制(PWM)波形。

相位计数器可以是任何适当的硬件或软件计数器,并且可以将相位计数器值存储在任何适当的硬件或软件中,从而存储任何适当的位数。例如,可以将相位计数器值存储在8或9位硬件或软件寄存器中。还可以将相位计数器复位值存储在任何适当的硬件或软件寄存器中,从而存储任何适当的位数。为了存储相位计数器值而可用的位数可以确定可以输出波形的最小频率、以及为了输出而可以选择的不同频率的数量。针对时钟信号的任何给定频率,相位的各数量可以与频率相关联。例如,如果将相位计数器值存储在9位寄存器中,则这可以允许512个不同的频率,而使用8位寄存器可以允许256个不同的频率。

多通道波形合成引擎可以包括任何数量的通道。各通道可以接收来自相位计数器模块的相位计数器值作为输入并且可以输出针对该通道的波形。该波形例如可以是二值信号,并且可被输出为高或低,或者可以是模拟信号,其中特定信号电平与高和低相对应。可以向通道分配相位。在相位计数器计数达到如由该通道的相位值表示的、分配至该通道的相位的情况下,该通道可被激活。该通道可以使其波形从低转变为高,并且可以在由分配至该通道的脉冲宽度确定的时间段内以高状态输出波形。一旦经过了该时间段,则通道可以使其波形从高转变为低,并且可以以低状态输出该波形,直到下次相位计数器计数达到分配至该通道的相位时、该通道再次被激活为止。

多通道波形合成引擎的通道可以包括相位模块和脉冲宽度模块。通道的相位模块可以将该通道的相位值存储在寄存器中并且可以接收相位计数器模块所输出的相位计数器值。可以判断相位计数器值与同该通道相关联的相位值是否一致,并且在判断为一致的情况下使得以高状态提供波形。脉冲宽度模块可以将该通道的所分配的脉冲宽度例如存储在脉冲宽度寄存器中,并且使得波形的高状态持续了由分配至该通道的脉冲宽度确定的时间段。在该时间段结束时,波形可以从高改变为低。

通道的相位模块可以包括相位比较器和用于存储单个位的相位触发器。相位模块还可以存储可以与分配至该通道的相位相关联的通道相位值。该相位值可以比该相位值所关联的相位编号小1。例如,如果存在可用的八个相位,则相位值1可以与第二相位相关联,其中该第二相位相对于相位值为0的第一相位可以相移了45度,而相位值7可以与第八相位相关联,其中该第八相位相对于第一相位可以相移了315度。可以从0开始对相位进行编号,其中在这种情况下,与相位相关联的相位值可以具有与相位相同的编号。相位触发器的输出可以是针对通道的激发信号,并且例如可以以停用状态(例如,低)开始。相位比较器可以将可能以低开始的信号输出至相位触发器。相位比较器可以接收到相位计数器模块所输出的相位计数器值并且将该相位计数器值与通道相位值进行比较。如果相位计数器值不等于通道相位值,则来自相位计数器的输出可能保持低、或者可能从高转变为低,并且相位比较器可以等待接收来自相位计数器模块的下一相位计数器值。如果相位计数器值等于通道相位值,则来自相位比较器的输出可以从低转变为高。

相位触发器可以接收来自相位比较器的输出信号,其中可以在可能是时钟前沿的下一时钟沿将该输出信号存储在相位触发器中。例如,在来自相位比较器的输出信号从低转变为高的情况下,相位触发器可以在下一时钟前沿存储高信号,只要在相位触发器接收到时钟前沿时该信号仍高即可。然后,在由于相位计数器值的变化、因而相位比较器使其输出信号从高转变为低的情况下,相位触发器可以激活激活信号、例如使激活信号从低转变为高。在下一时钟前沿,相位触发器可以存储来自相位比较器的低信号并且使激活信号从高转变为低。这样可以得到来自相位模块的激活信号在一个时钟周期内为高,从而在相位计数器值等于通道相位值之后开始一个时钟周期。在相位计数器值等于通道值的情况下,通道相位值也可能改变,从而可以允许向该通道分配不同的相位。

例如,相位计数器可以对八个相位进行计数,并且通道的通道相位值可以为4,其中该通道相位值4与第五可用相位相对应。来自相位比较器的输出信号在相位计数器从0计数为3的情况下可以保持低,并且在相位计数器值达到4的情况下可以转变为高。通道相位值也可以改变、或者可以保持为4。来自相位比较器的高信号可以由相位触发器接收到。在下一时钟前沿使得相位计数器值达到5时相位比较器输出转变为低之前,在该同一时钟沿,相位触发器可以存储高信号。相位触发器可以使激活信号转变为高。相位触发器可以接收到低信号,并且在下一时钟前沿,相位触发器可以存储由于相位计数器值达到5所引起的来自相位比较器的低信号,从而使激活信号转变为低。来自相位比较器的输出和激活信号可以保持低,直到相位计数器值再次与通道相位值一致为止。这样,除非在来自相位比较器的输出信号高时、通道相位值改变为相位计数器尚未达到的值,否则针对相位计数器经所有相位的每遍,针对该通道的激活信号在一个时钟周期内仅一次转变为高。

各通道可以具有表示分配至该通道的相位的通道相位值。基于相位计数器开始值、相位计数器复位值和计数器增量,任何通道的通道相位值可以以任何适当方式(例如,相位编号-1)与可用的任何相位相关联。例如,如果存在可用的1~512这512个相位,则任何通道可以具有0~511的任何通道相位值,并且通道相对于其它通道不必具有独特的相位值。这样可以使得各通道具有独立于其它通道来分配并改变的相位,从而使得能够经由通道相位值来控制通道之间的相位差。例如,在可利用八个相位的情况下,第一通道的通道相位值可以为0,并且第二通道的通道相位值可以为4,从而与可用相位中的第一相位和第五相位相对应。第二通道和第一通道所输出的波形的相位差可以为180度。通道相位值的排序可以基于相位计数器值是进行增计数还是减计数。例如,如果相位计数器进行增计数,则通道相位值可以采用升序,并且如果相位计数器进行减计数,则通道相位值可以采用降序。通道的通道相位值和相位可以针对波形的每个周期而改变,从而允许如由时钟信号和可用相位的数量确定的波形的频率那样频繁地进行相位调整。

可以将通道相位值存储在任何适当的硬件或软件寄存器中,该寄存器存储任何适当的位数。存储通道相位值所使用的位数可以是与存储相位计数器值所使用的相同的位数,以确保可以向通道分配任何相位。相位比较器可以是以任何适当方式所实现的并且具有任何适当性能的任何适当硬件或软件比较器。例如,该比较器可以能够进行相等、大于和小于比较,或者可以仅能够比较两个值以判断这两个值是否相等。相位触发器可以是用于存储1位信息的任何适当触发器。相位触发器可以是异步的、或者可以是同步的并由时钟前沿或时钟后沿进行激活,并且可以以任何适当延迟存储输入信号。例如,相位触发器可以具有非常短的延迟,以确保在所接收到的高信号转变为低之前相位触发器在触发了存储的同一时钟沿上存储该高信号。还可以利用用于在适当情形下使激活信号在高和低之间转变的任何其它适当组件来替换相位触发器。在不存在触发器、锁存器或其它这种组件的情况下,还可以利用相位比较器来使激活信号转变。相位模块可以直接输出来自相位比较器的激活信号。

通道的脉冲宽度模块可以包括:脉冲宽度计数器,其可以存储脉冲宽度计数器值,并且使脉冲宽度计数器值递增或递减;第一脉冲宽度比较器;第二脉冲宽度比较器;以及脉冲宽度触发器,用于存储单个位。脉冲宽度模块还可以包括寄存器,其中该寄存器可以存储0值和可以表示分配至该通道的脉冲宽度的通道脉冲宽度值。第一脉冲宽度比较器在脉冲宽度计数器值等于通道脉冲宽度值的情况下可以输出高信号,否则输出低信号,并且第二脉冲宽度比较器在通道脉冲宽度值等于0的情况下可以输出高信号,否则输出低信号。脉冲宽度触发器的波形可以是针对该通道的波形,并且可以以低开始。脉冲宽度触发器可以存储如下的信号,其中在从脉冲宽度触发器输出的波形高或来自通道的相位模块的激活信号高、并且第一比较器和第二比较器均未输出高信号的情况下,该信号可以为高,否则该信号可以为低。

在相位计数器值与通道相位值一致时(或者,例如在一个时钟沿之后),脉冲宽度模块可以从相位模块(例如,从相位触发器或相位比较器)接收到高激活信号。该高激活信号可以使脉冲宽度计数器复位、例如将脉冲宽度计数器值设置为0,并且可以允许通道脉冲宽度值改变。高激活信号和脉冲宽度计数器的复位可以引起脉冲宽度模块的脉冲宽度触发器所接收到的信号转变为高。脉冲宽度触发器可以在下一时钟前沿存储该高信号,从而可以引起从触发器输出的波形转变为高,只要通道脉冲宽度值不为0即可。

脉冲宽度计数器可以开始计数,例如从复位后的脉冲宽度计数器值0开始、并且使脉冲宽度计数器值针对时钟信号的各时钟前沿而递增。时钟信号可以是相位计数器模块中的相位计数器所使用的相同时钟信号。在来自相位模块的激活信号从高转变为低之后,从脉冲宽度触发器输出的波形可以保持高,并持续了长达脉冲宽度计数器计数达到通道脉冲宽度值所需的时间。一旦脉冲宽度计数器等于通道脉冲宽度值、这表示脉冲宽度计数器到期,则来自第一脉冲宽度比较器的信号可以从低转变为高,从而使脉冲宽度触发器所接收到的信号从高转变为低。脉冲宽度触发器可以在下一时钟前沿存储该低信号,从而使输出波形从高转变为低。这样可以得到输出波形的脉冲宽度等于如由通道脉冲宽度值表示那样的针对该通道所分配的脉冲宽度。在输出波形转变为低之后,脉冲宽度计数可以继续进行计数,从而可以引起第一脉冲宽度比较器转变回为低。这样可以不引起波形转变回为高,这是因为低波形仅可以在激活信号高的情况下才转变为高。波形可以保持低,直到激活信号转变回为高(例如,下次通道相位值与相位计数器值一致)为止。

例如,通道可以具有如由通道脉冲宽度值4表示的所分配的脉冲宽度4。在激活信号转变为高的情况下,该通道的脉冲宽度计数器可被复位为0,这可以引起第一脉冲宽度比较器转变为低。与激活信号相组合,来自第一脉冲宽度比较器的低信号可以引起脉冲宽度触发器所接收到的信号转变为高。在下一时钟前沿,脉冲宽度触发器可以存储高信号,并且可以使输出波形转变为高。脉冲宽度计数器可以使脉冲宽度计数器值从0递增为1。该时钟沿可以是输出波形高的第一个时钟周期的开始。下一时钟前沿可以标记输出波形高的第一个时钟周期的结束和输出波形高的第二个时钟周期的开始。可以使脉冲宽度计数器值递增为2。下一时钟前沿可以标记输出波形高的第二个时钟周期的结束和输出波形高的第三个时钟周期的开始。可以使脉冲宽度计数器值递增为3。

下一时钟前沿可以标记输出波形高的第三个时钟周期的结束和输出波形高的第四个时钟周期的开始。可以使脉冲宽度计数器值递增为4,从而使脉冲宽度计数器到期。这样可以引起第一脉冲宽度比较器从低转变为高、并且引起脉冲宽度触发器所接收到的信号从高转变为低。由于脉冲宽度触发器直到下一时钟前沿为止可能无法存储所接收到的低信号,因此即使在脉冲宽度触发器所接收到的信号高的情况下,输出波形也可以在直到下一时钟前沿为止的时钟周期内保持高。这可以是输出波形高的第四个时钟周期。在下一时钟前沿,脉冲宽度触发器可以存储低信号,并且输出波形可以转变为低。波形在激活之后可能已在与通道脉冲宽度值一致的四个时钟周期内保持为高。这样,可以使用通道脉冲宽度值来控制针对来自任何通道的输出波形的高信号的宽度。通道脉冲宽度值可以仅由可用相位的数量来限制,这是因为通道脉冲宽度值不可以大于相位的数量。

脉冲宽度模块可以使用用于基于激活信号和通道脉冲宽度值来从通道输出波形的其它适当结构。例如,脉冲宽度模块可以不包括第二脉冲宽度比较器。这可以降低脉冲宽度模块的复杂度,并且可以允许脉冲宽度计数器进行增计数或减计数。为了使得脉冲宽度计数器能够进行减计数,可以在每次脉冲宽度计数器被复位时将通道脉冲宽度值存储在脉冲宽度计数器中,并且脉冲宽度模块可以在本该存储通道脉冲宽度值处存储零。然后,第一脉冲宽度比较器可以将脉冲宽度计数器与零进行比较,这是因为在高波形转变为低之前脉冲宽度计数器可以从通道脉冲宽度值减计数为0。

作为另一示例,代替脉冲宽度触发器,脉冲宽度模块可以包括脉冲宽度锁存器。脉冲宽度锁存器也可以存储1位,但可以是异步的。例如,脉冲宽度锁存器可以是置位-复位(SR)锁存器。脉冲宽度锁存器的置位输入可以直接连接至来自脉冲模块的激活信号。在激活信号从低转变为高的情况下,这可以对脉冲宽度锁存器进行置位(例如,存储1),并且引起脉冲宽度锁存器使输出波形从低转变为高。脉冲宽度计数器还可被复位,并且可以开始计数(例如,从0起直至通道脉冲宽度值为止)。激活信号可以在下一时钟前沿转变为低,之后该激活信号从低转变为高,但脉冲宽度锁存器可以在存储1的情况下继续将波形输出为高。在脉冲宽度计数器值等于通道脉冲宽度值的情况下,第一脉冲宽度比较器可以使其输出信号从低转变为高。这可能引起针对脉冲宽度锁存器的复位输入的输入从低转变为高,这样得到脉冲宽度锁存器存储0并且使输出波形转变为低。由于脉冲宽度锁存器可能是异步的,因此输出波形的转变可能不会延迟任何时钟周期。输出波形可以在激活信号转变为高的相同时钟周期内转变为高,并且可以在脉冲宽度计数器值等于通道脉冲宽度值的相同时钟周期内转变为低。还可以在无触发器或锁存器的情况下输出来自脉冲宽度模块的输出波形。例如,可以从接收来自如下的输出作为输入的逻辑AND门直接输出输出波形:接收输出波形和激活信号的逻辑OR门、以及接收来自第一脉冲宽度比较器和第二脉冲宽度比较器的输出的另一OR门。

多通道波形合成引擎中的各通道可以具有可以是分配至该通道的脉冲宽度的通道脉冲宽度值。基于相位计数器开始值、相位计数器复位值和计数器增量,多通道波形合成引擎中的任意通道的通道脉冲宽度值可以是0~可用相位的数量的任意值。例如,如果存在1~512的可用的512个相位,则多通道波形合成引擎的任意通道可以具有0~512的任意通道脉冲宽度值。这样可以使得各通道具有独立于其它通道而分配并改变的相位,从而使得能够分别经由通道相位值来控制脉冲宽度。例如,在存在可用的八个相位的情况下,第一通道的通道脉冲宽度值可以为4,并且第二通道的通道脉冲宽度值可以为8。第一通道所输出的波形可以具有宽度4或50%的占空比,而第二通道所输出的波形可以具有宽度8或100%的占空比。任意通道的通道脉冲宽度值和脉冲宽度可以在输出波形的每个周期的开始发生改变,从而使得能够如由时钟信号和可用的脉冲数量确定的波形的频率那样频繁地进行脉冲宽度调整。

脉冲宽度计数器可以是任何适当的硬件或软件计数器,并且可以将脉冲宽度计数器值存储在任何适当的存储任何适当位数的硬件或软件寄存器中。例如,可以将脉冲宽度计数器值存储在7位硬件或软件寄存器中。存储脉冲宽度计数器值所使用的位数还可以基于存储相位计数器值所使用的位数。例如,可以使用比存储脉冲宽度计数器值所使用的位数多1位或2位来存储相位计数器值。还可以将通道脉冲宽度值存储在任何适当的存储任何适当位数的硬件或软件寄存器中。存储通道脉冲宽度值所使用的位数可以是存储脉冲宽度计数器值所使用的相同位数,以确保任意脉冲宽度计数器均可能始终能够计数达到通道脉冲宽度值。第一脉冲宽度比较器和第二脉冲宽度比较器可以是以任何适当方式实现的且具有任何适当能力的任何适当的硬件或软件。例如,比较器可能能够进行相等、大于和小于比较,或者可能仅能够比较两个值以判断这两个值是否相等。脉冲宽度触发器可以是用于存储1位信息的任何适当的触发器。脉冲宽度触发器可以是异步的、或者可以是同步的且利用时钟前沿或时钟后沿进行激活,并且可以以任何适当延迟存储输入信号。例如,脉冲宽度触发器可能具有非常短的延迟,以确保在高信号转变为低之前脉冲宽度触发器在触发存储的同一时钟沿上存储该高信号。还可以利用用于在适当情形下使激活信号在高和低之间转变的任何其它适当组件(例如,SR锁存器)来替换脉冲宽度触发器。可以通过使用诸如AND门、OR门和NOT门等的任何适当的硬件或软件逻辑门来组合脉冲宽度模块中的各种信号。

可以使用硬件和软件的任何适当组合来实现多通道波形合成引擎。例如,多通道波形合成引擎的组件可以整体或部分被实现为现场可编程门阵列(FPGA)或专用集成电路(ASIC)或复杂可编程逻辑器件(CPLD)、或者被实现为在任何适当的处理装置上运行的软件。多通道波形合成引擎所输出的波形可以是在硬件上输出的、或者可以是用于其它软件或硬件的控制的软件输出。可以以任何适当方式确定并分配可用相位的数量、各通道的通道相位值和各通道的通道脉冲宽度值。例如,作为多通道波形合成引擎的一部分或与多通道波形合成引擎分开的软件或硬件控制器可以确定并分配相位计数器开始值、相位计数器复位值、通道相位值和通道脉冲宽度值中的任意或全部。多通道波形合成引擎可以从任何适当的硬件或软件时钟或振荡器接收时钟信号。

图1示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。多通道波形合成引擎100可以包括相位计数器模块110、通道121和第N通道131,其中在通道121和第N通道131之间存在任意数量的通道。相位计数器模块110、通道121、第N通道131和中间的通道可以从时钟180接收时钟信号。

相位计数器模块110可以是用于对各个相位进行计数、并且在计数达到期望角度之后进行复位的任何适当模块。相位计数器模块110可以按1的增量(例如,针对从时钟180接收到的时钟信号的各沿)进行计数。相位计数器模块110可以将当前相位计数器值输出至通道121、第N通道131和中间的任何通道。

通道121、第N通道131和中间的任何通道各自可以是用于输出波形的独立通道。通道121、第N通道131和中间的任何通道各自可以基于从相位计数器模块110接收到的相位计数器值和从时钟180接收到的时钟信号来输出自身的波形。通道121、第N通道131和中间的任何通道各自可被分配相位和脉冲宽度,并且在相位计数器达到与各自的所分配相位相关联的值的情况下,可以在由各自的脉冲宽度所确定的时间段内输出处于高状态的波形。

图2示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。相位计数器模块110可以包括相位计数器210、相位计数器比较器220和相位计数器复位寄存器230。相位计数器210可以是任何适当的硬件或软件计数器,并且可以将相位计数器值存储在任何适当的硬件或软件寄存器中,从而存储任何适当的位数。例如,可以将相位计数器值存储在相位计数器210的9位寄存器中。相位计数器210可以包括:CLK输入,其例如可以从时钟180接收时钟信号;以及WR输入,其可以使得能够将新的值(例如,相位计数器开始值)写入存储有相位计数器值的寄存器。根据来自相位计数器比较器220的输出的性质,WR输入可以为高态有效或低态有效。相位计数器210可能能够在发生一些指定事件时使相位计数器值递增或递减了一些计数增量。例如,每次相位计数器210接收到来自时钟180的时钟信号的前沿(或正沿、或上升沿)时,相位计数器210可以使相位计数器值递减1。相位计数器210还可以针对时钟信号的后沿(或负沿、或下降沿)使相位计数器值递增或递减。相位计数器210可以将相位计数器值的值输出到相位计数器模块110外并且输出至相位计数器比较器220。例如,可以并行地输出存储有相位计数器值的寄存器的位。

相位计数器比较器220可以是用于比较输入值(例如,判断两个输入值是否相等)的任何适当的硬件或软件比较器。例如,可以使用多个硬件XOR门和OR门来实现相位计数器比较器220。相位计数器比较器220可以接收任何位长度的输入值,并且可以并行地接收输入。相位计数器比较器220可能能够输出表示所接收到的两个值是否相等的信号。例如,相位计数器比较器220可以在所接收到的值相等的情况下输出高信号,并且在所接收到的值不相等的情况下输出低信号,或者反之亦然。

相位计数器复位寄存器230可以将相位计数器复位值存储在任何适当的硬件或软件寄存器中,从而存储任何适当的位数。例如,可以将相位计数器复位值存储在相位计数器210所使用的相同类型的寄存器(例如,9位寄存器)中。相位计数器复位值可以是相位计数器值在复位为相位计数器开始值之前达到的值。相位计数器复位寄存器230可以将相位计数器复位值输出至相位计数器比较器220。

多通道波形合成引擎100的通道(例如,通道121、第N通道131和中间的任何通道)的可用相位的数量和频率可以通过设置相位计数器开始值和相位计数器复位值、并且通过相位计数器210的计数增量来确定。例如,如果相位计数器210以1为单位进行计数,则可用相位的数量可以比相位计数器开始值和相位计数器复位值之间的差大1。例如,如果相位计数器210使相位计数器值递增,则相位计数器开始值0和相位计数器复位值511可以允许512个相位。如果相位计数器210使相位计数器值递减,则相位计数器开始值512和相位计数器复位值0可以允许512个相位。可以通过将例如来自时钟180的频率除以可用相位的数量来确定多通道波形合成引擎100的所有通道的频率。例如,如果时钟180以12.75MHZ运行,则可以通过将可用相位的数量设置为170来将输出波形设置为75KHz的频率。

相位计数器210可以以其寄存器中的相位计数器开始值作为相位计数器值来开始,并且相位计数器复位寄存器220可以以相位计数器复位值开始。在时钟180正运行时,相位计数器210可以将当前相位计数器值输出到相位计数器模块110的外部并且输出至相位计数器比较器220。相位计数器比较器220还可以从相位计数器复位寄存器230接收相位计数器复位值。如果相位计数器值等于相位计数器复位值,则相位计数器比较器220可以输出信号(例如,高信号),其中该信号可被输入至相位计数器210的WR输入,从而使得能够将新的值写入相位计数器210的寄存器。该新的值可以是相位计数器开始值,其中该相位计数器开始值可能与原始的相位计数器开始值相同、或者例如可能已发生了改变以改变可用相位的数量或改变输出波形的频率。如果相位计数器值不等于相位计数器复位值,则相位计数器比较器210可以输出信号(例如,低信号),其中该信号使得不能向相位计数器210的寄存器写入新的值。相位计数器210可以接收时钟180的下一前沿,使相位计数器值递减1,并且输出相位计数器值,从而引起相位计数器比较器220所进行的另一比较等等,直到时钟180停止为止。这样可以使得相位计数器210针对各可用相位进行计数,从而在时钟180正运行时循环地顺次输出与各这种相位相对应的相位计数器值。

在一些实现中,相位计数器210可以使相位计数器值递增1、或者可以使相位计数器值递增或递减了一些其它的计数增量,并且可以对时钟后沿进行计数。对于递增的相位计数器210,在相位计数器比较器220启用WR输入的情况下,相位计数器210可以使相位计数器值复位为0,并且相位计数器复位寄存器230可以具有如下的WR输入,其中该WR输入在由相位计数器比较器220启用的情况下,可以允许写入新的值作为相位计数器复位值。

图3示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。多通道波形合成引擎100的各通道(诸如通道121等)可以包括相位模块310和脉冲宽度模块320,并且可以输出波形。相位模块310可以接收相位计数器模块110所输出的相位计数器值,并且可以将激活信号发送至脉冲宽度模块320。脉冲宽度模块320可以输出波形,并且可以确定该波形的宽度。相位模块310和脉冲宽度模块320可以接收来自时钟180的时钟信号。

图4示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。多通道波形合成引擎100的通道(诸如通道121、第N通道131或中间的任何通道等)的相位模块310可以包括道相位寄存器410、相位比较器420和触发器430。通道相位寄存器410可以将通道相位值存储在任何适当的硬件或软件寄存器中,从而存储任何适当的位数。例如,通道相位寄存器可以是与相位计数器210所使用的相同类型的寄存器(例如,9位寄存器)。通道相位值可以是将使得相位模块310输出用于激活通道的激活信号的相位计数器值,并且可以与分配至该通道的相位相关联。通道相位寄存器410可以包括WR输入,其中该WR输入可以使得能够将新的值(例如,新的通道相位值)写入通道相位寄存器410。该WR输入可以为高态有效或低态有效。通道相位寄存器230可以将通道相位值输出至相位比较器420。

相位比较器420可以是用于比较输入值(例如,判断两个输入值是否相等)的任何适当的硬件或软件比较器。例如,可以使用多个硬件XOR门和OR门来实现相位比较器420。相位比较器420可以接收任何位长度的输入值,并且可以并行地接收输入。相位比较器420可能能够输出表示所接收到的两个值是否相等的信号。例如,相位比较器420可以在所接收到的值相等的情况下输出高信号,并且在所接收到的值不相等的情况下输出低信号,或者反之。

触发器430可以是用于存储1位并基于所存储的位来输出信号的任何适当的硬件或软件触发器。触发器430可以包括CLK输入、D输入、Q输出和RST输入。CLK输入可能能够接收例如来自时钟180的时钟信号。D输入可能能够接收表示触发器430可以存储的位的信号。例如,如果在触发器430接收到输入至CLK输入的时钟信号的时钟沿时、D输入为高,则触发器430可以在该时钟沿存储1。如果在触发器430接收到输入至CLK输入的时钟信号的时钟沿时、D输入为低,则触发器430可以在该下一时钟沿存储0。Q输出可能能够基于触发器430当前所存储的位来输出信号。例如,如果触发器430正存储1,则从Q输出的信号可以为高,并且如果触发器430正存储0,则从Q输出的信号可以为低。来自Q输出的信号可以是针对脉冲宽度模块320的激活信号。与D输入的值无关地,可以使用触发器430的RST输入来将触发器430所存储的位复位为0。

可以使用分配至通道的并且存储在该通道的通道相位寄存器410中的通道相位值来向该通道分配相位。通道相位值可以与来自可用相位的相位相关联。在相位计数器210复位之后通道基于其通道相位值可以激活的顺序可以是基于相位计数器210是进行增计数还是减计数。例如,如果相位计数器210进行增计数,则通道可以按这些通道的通道相位值的升序激活,并且如果相位计数器210进行减计数,则通道可以按这些通道的通道相位值的降序激活。通道相位值可以基于这些通道相位值和可用相位之间的关联来确定诸如通道121和第N通道131等的输出波形的相位差。例如,可能存在八个可用相位,通道121可以具有与第一相位相关联的通道相位值0,并且第N通道131可以具有与第八相位相关联的通道相位值7。通道121和第N通道131的输出波形之间的相位差可以是315度。如果相位计数器210进行增计数,则这可以允许来自通道121的输出波形相比来自第N通道131的输出波形提前了315度。如果相位计数器210进行减计数,则来自第N通道131的输出波形可以相比来自通道121的输出波形提前了315度。

(诸如通道121等的)通道的相位比较器420可以接收由相位计数器210从相位计数器模块110输出的相位计数器值以及通道相位寄存器410中所存储的通道相位值。如果通道相位值等于相位计数器值,则相位比较器420可以输出信号(例如,高信号)。这可以表示相位计数器210已计数达到了该通道的相位。来自相位比较器420的高信号可以由通道相位寄存器410的WR输入接收到,从而使得能够将新的通道相位值写入通道相位寄存器410。新的通道相位值可以与通道相位寄存器410中已存储的通道相位值相同或不同。来自相位比较器420的高信号还可以由触发器430的D输入接收到。触发器430还可以接收例如来自时钟180的时钟信号。触发器430可以在D输入接收高信号,并且在时钟信号的下一时钟沿(例如,前沿),在由于相位比较器420从相位计数器210接收到的相位计数器值的变化而导致从相位比较器420向D输入的信号转变回为低之前,触发器430可以存储1。这样可以使得Q输出的激活信号转变为高。在触发器430存储1时,来自Q输出的激活信号可以保持高。

如果通道相位值不等于相位计数器值,则相位比较器420可以输出表示相位比较器420正比较的值不相等的信号(例如,低信号)。来自相位比较器420的低信号可以由触发器430的D输入接收到。触发器430还可以接收例如来自时钟180的时钟信号。触发器430可以在D输入接收低信号,并且在时钟信号的下一时钟沿(例如,前沿),在相位计数器值已改变为与通道相位值一致时从相位比较器420向D输入的信号转变为高之前,触发器430可以存储0。这样可以使得Q输出的激活信号在高的情况下转变为低、或者保持低。在触发器430存储0时,来自Q输出的激活信号可以保持低。这样可以得到来自通道(诸如通道121、第N通道131或中间的任何通道等)的相位模块310的激活信号在如由相位计数器值和通道相位值所确定的一个时钟周期(相位计数器210已计数到分配至该通道的相位之后的一个时钟周期)内为高。

例如,在8个可用相位中,通道121的所分配相位可以是6。通道相位寄存器410中所存储的通道相位值可以是5。相位计数器210可以进行减计数,即从相位计数器开始值7开始并且减计数为0。触发器430可以存储0作为默认值,并且来自Q输出的激活信号可以为低。相位比较器420可以接收第一相位计数器值7,其中该第一相位计数器值7可能不等于通道相位值5。相位比较器420可以输出低信号,其中该低信号可以由触发器430接收到。在下一时钟前沿,相位计数器210可以减计数1,并且输出相位计数器值6。触发器430可以存储可能没有改变的低信号,并且继续存储0。激活信号可以保持低。相位比较器420可以判断为相位计数器值6与通道相位值5不一致,并且可以将低信号输出至触发器430的D输入。触发器430可以接收到该低信号。

在下一时钟前沿,相位计数器可以减计数1,并且输出相位计数器值5。触发器430可以在来自相位比较器420的低信号改变之前存储该低信号,从而继续存储0。激活信号可以保持低。相位比较器420可以判断为相位计数器值5与通道相位值5一致,并且可以将高信号输出至触发器430的D输入和通道相位寄存器410的WR输入。触发器430可以在存储了先前接收到的低信号之后,在D输入接收高信号。可以将新的通道相位值写入通道相位寄存器410。新的通道相位值可以与通道相位寄存器中所存储的通道相位值(例如,5)相同,或者可以是与八个可用相位中的不同相位相关联的不同通道相位值。

在下一时钟前沿,相位计数器可以减计数1并且输出相位计数器值4。触发器430可以在相位比较器420所输出的高信号改变之前存储该高信号,从而存储1。激活信号可以转变为高。相位比较器420可以判断为相位计数器值4与通道相位值5不一致,并且可以将低信号输出至触发器430的D输入。触发器430可以在存储了先前接收到的高信号之后,接收低信号。

在下一时钟前沿,相位计数器可以减计数1并且输出相位计数器值3。触发器430可以存储可能没有改变的来自相位比较器420的低信号,并且存储0。可能已在一个时钟周期内为高的激活信号可以转变为低。相位比较器420可以判断为相位计数器值3与通道相位值5不一致,并且可以将低信号输出至触发器430的D输入。触发器430可以接收到该低信号。在相位计数器值例如被复位回到7、并且相位计数器210再次开始减计数之前,该操作可以在相位计数器210进行相位计数器值为2、1和0的减计数时重复进行。因而,来自通道121的相位模块310的激活信号在一个时钟周期内(在相位计数器值即通道121的通道相位值达到5之后一个周期开始)可以为高,并且在其它时钟周期内可以为低。

图5示出适合根据所公开的主题的实现的多通道波形合成引擎的示例系统。多通道波形合成引擎100的通道(诸如通道121、第N通道131或中间的任何通道等)的脉冲宽度模块320可以包括通道脉冲宽度寄存器510、脉冲宽度计数器520、零530、脉冲宽度比较器1 540、脉冲宽度比较器2 550、OR(或)门560、AND(与)门570、OR门580和触发器590。脉冲宽度计数器520可以是任何适当的硬件或软件计数器,并且可以将脉冲宽度计数器值存储在任何适当的硬件或软件寄存器中,从而存储任何适当的位数。例如,可以将脉冲宽度计数器值存储在脉冲宽度计数器520的7位寄存器中。脉冲宽度计数器520可以包括:CLK输入,其可以接收例如来自时钟180的时钟信号;以及RST输入,其可以使得能够将脉冲宽度计数器值复位为0。根据从相位模块310输出的激活信号的性质,RST输入可以为高态有效或低态有效。在发生一些指定事件时,脉冲宽度计数器520可能能够使脉冲宽度计数器值递增或递减了一些计数增量。例如,每次脉冲宽度计数器520接收到来自时钟180的时钟信号的前沿时,脉冲宽度计数器520可以使脉冲宽度计数器值递增1。脉冲宽度计数器520还可以针对时钟信号的后沿使脉冲宽度计数器值递增或递减。脉冲宽度计数器520可以输出脉冲宽度计数器值的值。例如,可以并行地输出存储有脉冲宽度计数器值的寄存器的位。例如可以将脉冲宽度计数器值输出至脉冲宽度比较器2 550。

通道脉冲宽度寄存器510可以将通道脉冲宽度值存储在任何适当的硬件或软件寄存器中,从而存储任何适当的位数。例如,通道脉冲宽度寄存器可以是脉冲宽度计数器520所使用的相同类型的寄存器(例如,7位寄存器)。如由输出波形的宽度或占空比所反映的,通道的通道脉冲宽度值可以表示该通道所输出的波形的脉冲宽度。通道脉冲宽度寄存器520可以包括WR输入,其中该WR输入可以使得能够将新的值(例如,新的通道脉冲宽度值)写入通道脉冲宽度寄存器520。WR输入可以为高态有效或低态有效。通道脉冲宽度寄存器520可以将通道脉冲宽度值输出至脉冲宽度比较器1 540和脉冲宽度比较器2 550。

脉冲宽度比较器1 540和脉冲宽度比较器2 550各自可以是用于比较输入值(例如,判断两个输入值是否相等)的任何适当的硬件或软件比较器。例如,脉冲宽度比较器1 540和脉冲宽度比较器2 550各自可以使用多个硬件XOR门和OR门来实现。脉冲宽度比较器1 540和脉冲宽度比较器2 550各自可以接收任何位长度的输入值,并且可以并行地接收输入。脉冲宽度比较器1 540和脉冲宽度比较器2 550各自可能能够输出表示所接收到的两个值是否相等的信号。例如,脉冲宽度比较器1 540和脉冲宽度比较器2 550各自可以在所接收到的信号相等的情况下输出高信号,并且在所接收到的信号不相等的情况下输出低信号,或者反之亦然。

触发器590可以是用于存储1位并且基于所存储的位来输出信号的任何适当的硬件或软件触发器。触发器590可以包括CLK输入、D输入、Q输出和RST输入。CLK输入可能能够接收例如来自时钟180的时钟信号。D输入可能能够接收表示触发器590可以存储的位的信号。例如,如果在触发器590接收到输入至CLK输入的时钟信号的时钟沿时、D输入为高,则触发器590可以在该时钟沿存储1。如果在触发器590接收到输入至CLK输入的时钟信号的时钟沿时、D输入为低,则触发器590可以在该下一时钟沿上存储0。Q输出可能能够基于触发器590当前所存储的位来输出信号。例如,如果触发器590正存储1,则从Q输出的信号可以为高,并且如果触发器590正存储0,则从Q输出的信号可以为低。来自Q输出的信号可以是针对通道(例如,通道121)的波形。与D输入的值无关地,可以使用触发器590的RST输入来将触发器590所存储的位复位为0。

OR门560、AND门570和OR门580可以是逻辑门的任何适当的硬件或软件实现。例如,OR门560和OR门580可以是硬件逻辑OR门、或者可以是软件实现的逻辑OR。AND门570可以是硬件逻辑AND门、或者可以是软件实现的逻辑AND。

多通道波形合成引擎100的通道(例如,通道121、第N通道131和中间的任何通道)所输出的波形的宽度(持续时间)可以通过设置该通道的脉冲宽度计数器值、通道脉冲宽度值、并且通过脉冲宽度计数器520的计数增量来确定。例如,如果通道121的脉冲宽度计数器520以1为单位进行计数,则通道121所输出的波形的脉冲宽度可以是脉冲宽度计数器520的复位值与通道脉冲宽度寄存器510中所存储的通道脉冲宽度值之间的差。例如,如果脉冲宽度计数器520使脉冲宽度计数器值递增,则针对脉冲宽度计数器520的复位值0和通道脉冲宽度值为4可以得到来自通道121的输出波形的脉冲宽度为4。如果脉冲宽度计数器520使脉冲宽度计数器值递减,则针对脉冲宽度计数器520的复位值4和通道脉冲宽度值为0可以得到来自通道121的输出波形的脉冲宽度为4。多通道波形合成引擎100的各通道可以具有自身独立的脉冲宽度,其中各通道具有针对该通道的脉冲宽度计数器520的独立通道脉冲宽度值和复位值。这样可以使得能够独立地控制来自各通道的输出波形的脉冲宽度。

通道(例如,通道121)的脉冲宽度模块320的脉冲宽度计数器520、通道脉冲宽度寄存器510和OR门560全部可以接收例如该通道的相位模块310所输出的激活信号。该激活信号可能为低。触发器590可以默认存储0,从而引起从Q输出的波形为低。在激活信号转变为高的情况下,可以启用脉冲宽度计数器520上的RST输入和通道脉冲宽度寄存器510上的WR输入,并且OR门560可以输出高信号。启用RST输入可以使得脉冲宽度计数器520将脉冲宽度计数器值复位为0,其中,该计数器520可能已针对来自时钟180的时钟信号的例如每个前沿进行了计数。启用WR输入可以使得通道脉冲宽度寄存器510存储所输入的通道脉冲宽度值,其中该通道脉冲宽度值可能与通道脉冲宽度寄存器510中已存储的通道脉冲宽度值相同、或者可能是不同值。这样可以允许通道的输出波形的脉冲宽度如输出波形的频率那样频繁地、并且紧挨在波形转变为高之前改变。可以将从OR门560输出的高信号输入至AND门570。AND门570还可以从OR门580接收反相信号。

在激活信号为高的情况下,脉冲宽度比较器1 540可以将可能已复位为0的脉冲宽度计数器值与可能刚刚写入通道脉冲宽度寄存器510的通道脉冲宽度值进行比较。脉冲宽度比较器2 550可以将可能刚刚写入通道脉冲宽度寄存器510的通道脉冲宽度值与可能存储在位宽度和通道脉冲宽度寄存器510相同的任何适当硬件或软件寄存器中的零530进行比较。如果通道脉冲宽度值为0,则脉冲宽度比较器2 550可以输出高信号,其中该高信号可以使OR门580输出可以在到达AND门570之前反转为低信号的高信号。这样可以使得AND门570输出低信号,从而使得触发器590接收到该低信号并且在下一时钟前沿继续存储0,由此即使在脉冲宽度计数器520进行了增计数并且使得脉冲宽度比较器1 540输出低信号的情况下,也防止了波形变高。因而,将通道的通道脉冲宽度值设置为0可能禁用了来自该通道的输出波形,这是因为该输出波形可能从未转变为高。否则,如果通道脉冲宽度值不为0,则脉冲宽度比较器2 550可以输出低信号,并且在激活信号为高的情况下,脉冲宽度比较器1540还可以输出低信号。这样可以使得OR门580输出可以在进入AND门570之前反转为高信号的低信号。由于OR门560也可能正输出高信号,因此AND门570可以输出高信号,其中该高信号可被输入至D输入并且由触发器590接收到。

在下一时钟前沿,激活信号可以转变回为低。触发器590可以存储来自AND门570的高信号,从而存储1。这样可以使得来自Q的输出波形转变为高。可以将该输出波形输出至可以将该输出波形用于任何适当目的的任何适当的硬件或软件。还可以将该输出波形反馈回至OR门560,从而尽管激活信号已转变为低、也保持来自OR门560的输出高。脉冲宽度计数器520可以使脉冲宽度计数器值递增1。脉冲宽度比较器1 540可以将脉冲宽度计数器值与通道脉冲宽度值进行比较,并且可以在这两者相等的情况下输出高信号、或者在这两者不相等的情况下输出低信号。在脉冲宽度比较器1 540输出低信号的情况下,OR门580可以输出可以在进入AND门570之前反转为高信号的低信号。由于OR门560也可能由于来自Q的输出波形为高因而正输出高信号,因此AND门570可以继续将高信号输出至触发器590的D输入。触发器590可以接收到高信号,并且在下一时钟前沿,可以继续存储1并且将波形输出为高。该操作可以针对脉冲宽度计数器值小于通道脉冲宽度寄存器的各时钟前沿重复进行。

在时钟前沿、脉冲宽度计数器值递增为等于通道脉冲宽度值的情况下,脉冲宽度比较器1 540可以输出高信号。这样可以使得OR门580输出可以在进入AND门570之前反转为低信号的高信号。即使在OR门560仍正输出高信号时,输入至AND门570的低信号也可以使得AND门570输出低信号。AND门570所输出的低信号可以由触发器590接收到,其中该触发器590可以继续保持输出波形高。在下一时钟前沿,触发器590可以存储低信号,从而存储0,这样使得输出波形转变为低。这样可以使得OR门560转变为低。脉冲宽度计数器520可以再次使脉冲宽度计数器值递增,并且可以高于通道脉冲宽度值而结束、或者可以循环回至0。在任意情况下,脉冲宽度计数器值均可能不再等于通道脉冲宽度值。脉冲宽度比较器1 540可以输出低信号,其中该低信号可以使得OR门580输出可以在进入AND门570之前反转为高信号的低信号。由于OR门560可能正输出低信号,因此AND门570可以继续输出低信号,其中该低信号可以由触发器590接收到。在下一时钟前沿,触发器590可以存储低信号,从而继续存储0并保持输出波形低。该操作可以在激活信号保持低的情况下重复进行,直到激活信号转变为高为止。这样,如由通道脉冲宽度值和针对脉冲宽度计数器值的复位值所确定的,波形可以在与利用激活信号激活脉冲宽度模块320之后分配至通道的脉冲宽度相等的多个时钟周期内保持高。在接收到激活脉冲宽度模块320的激活信号时和在来自脉冲宽度模块320的输出波形转变为高时之间,可能存在一个时钟周期的延迟。

例如,可以向通道121分配脉冲宽度5。激活信号可以为低。触发器590可以存储0,脉冲宽度计数器520的脉冲宽度计数器值可以是任何值,并且通道脉冲宽度寄存器510可以存储任何值。尽管激活信号保持低,但来自触发器590的输出波形可以保持低。然后,例如在使得相位计数器模块110输出与通道121的通道相位值相等的相位计数器值的时钟前沿,激活信号可以转变为高,从而使得相位模块310使激活信号从低转变为高。高的激活信号可以启用脉冲宽度计数器520的RST输入,其中该RST输入可以将脉冲宽度计数器值复位为0。高的激活信号可以启用通道脉冲宽度寄存器510的WR输入,其中该WR输入可以允许将通道脉冲宽度值5写入通道脉冲宽度寄存器510。高的激活信号还可以使得来自OR门560的输出转变为高。由于脉冲宽度计数器值0可能不等于通道脉冲宽度值5,因此脉冲宽度比较器1 540可以将低信号输出至OR门580。由于通道脉冲宽度值5可能不等于0,因此脉冲宽度比较器2550也可以输出低信号。接收到两个低信号的OR门580可以输出可以在进入AND门570之前反转为高信号的低信号。由于OR门560也可能正将高信号输出至AND门570,因此AND门570可以转变为高。来自AND门570的高信号可以由触发器590的D输入接收到,从而可以接收到高信号。由于触发器590仍可以存储0,因此来自触发器590的Q输出的波形可以保持低。

在下一时钟前沿,触发器590可以存储高信号,从而存储1。这样可以使得来自触发器590的Q输出的波形转变为高。可以将高输出波形反馈回至OR门560。激活信号可以转变为低,但OR门560可以基于该高输出波形继续输出高信号。脉冲宽度计数器520可以使脉冲宽度计数器值从0递增为1。由于脉冲宽度计数器值1可能不等于通道脉冲宽度值5,因此脉冲宽度比较器1 540可以继续输出低信号。这样可以使得OR门580继续输出可以在进入AND门570之前反转为高信号的低信号。由于OR门560可能正输出高信号并且OR门580可能正输出低信号,因此AND门570可以继续向触发器590的D输入输出高信号。该高信号可以由触发器590接收到。这可以是输出波形为高的第一个时钟周期。

在标记输出波形高的第一个时钟周期的结束的下一时钟前沿,触发器590可以存储高信号,从而继续存储1,其中该高信号可以保持输出波形高。激活信号可以保持低。除可能已从1递增为2的从脉冲宽度计数器520输出的脉冲宽度计数器值外,来自脉冲宽度模块320的所有组件的输出信号可以保持与先前时钟周期相同。这可以是输出波形高的第二个时钟周期。该操作可以在脉冲宽度计数器值从2增加为3、并且从3增加为4的下两个时钟前沿上重复进行。脉冲宽度计数器从3增加为4的时钟前沿可以标记输出波形高的第三个时钟周期的结束和输出波形高的第四个时钟周期的开始。

在标记第四个时钟周期的结束和输出波形高的第五个时钟周期的开始的下一时钟前沿上,在脉冲宽度计数器520递增时、来自AND门570的高信号转变为低之前,触发器590可以存储在先前时钟周期上脉冲宽度计数器值为4的情况下所生成的来自AND门570的高信号,从而存储1并且保持输出波形高。脉冲宽度计数器520可以使脉冲宽度计数器值递增为5。由于脉冲宽度计数器值5可以等于通道脉冲宽度值5,因此这样可以使得脉冲宽度比较器1 540输出高信号。OR门580可以基于来自脉冲宽度比较器1 540的高信号而转变为高。来自OR门580的高信号可以在进入AND门570之前反转为低信号,并且可以使得AND门570将低信号输出至触发器590的D输入。触发器590可以接收低信号,但还可以保持输出波形高,这是因为触发器590在该时钟沿基于在D输入处存在的来自AND门570的高信号仍可以存储1。

在标记输出波形高的第五个时钟周期的结束的下一时钟前沿上,触发器590可以存储来自AND门570的低信号,从而存储0。如通道121的通道脉冲宽度值所指定的,输出波形在五个时钟周期内为高之后,可以转变为低。作为输出波形为低的结果,OR门560可以转变为低。脉冲宽度计数器520可以继续进行计数,从而使脉冲宽度计数器值递增为6。这样可以使得脉冲宽度比较器1 540输出低信号,从而得到OR门580输出可以在进入AND门570之前反转为高信号的低信号。由于OR门560所输出的低信号,因而AND门570可以输出低信号570,这样得到触发器590接收到低信号。输出波形可以在后续的时钟沿内保持低,直到激活信号转变为高为止,这表示通道121的激活。

通道中的触发器(诸如触发器430和触发器590等)的使用可以引起来自该通道的输出波形从相位计数器210已计数达到分配至该通道的相位的时间起延迟了两个时钟周期。在相位计数器模块110、相位模块310和脉冲宽度模块320中可以使用其它组件和配置,从而可以使该延迟增加或减少。

在一些实现中,脉冲宽度计数器520可以进行减计数。如果脉冲宽度计数器520进行减计数,则在脉冲宽度计数器520被复位时可以将通道脉冲宽度值存储在脉冲宽度计数器520中,并且通道脉冲宽度寄存器510可以存储比脉冲宽度计数器520可以减计数至的0更大的一些值。将0存储在通道脉冲宽度寄存器510中仍可以防止输出波形由于零530和脉冲宽度比较器2 550而转变为高。可以基于通道脉冲宽度寄存器510中所存储的大于0的值来设置通道脉冲宽度值,以确保输出波形针对期望数量的时钟信号为高。

图6示出适用于根据所公开的主题的实现的多通道波形合成引擎的示例系统。可以在没有零530、脉冲宽度比较器2 550和OR门580的情况下实现脉冲宽度模块320。在该实现中,从脉冲宽度比较器1 540输出的信号可以发生反转并被输入至AND门570。在该实现中,脉冲宽度计数器520可以进行增计数或减计数。如果脉冲宽度计数器520进行减计数,则在脉冲宽度计数器520被复位时,可以将通道脉冲宽度值存储在脉冲宽度计数器520中,并且通道脉冲宽度寄存器510可以存储0、或者可以存储脉冲宽度计数器520可以减计数达到的一些其它值。

图7示出适用于根据所公开的主题的实现的多通道波形合成引擎的示例系统。可以在没有OR门560、AND门570和触发器590的情况下实现脉冲宽度模块320。该脉冲宽度模块可以代替触发器590而包括锁存器710。锁存器710可以是使用硬件和软件的任何适当组合的任何适当实现。锁存器710可能能够存储1位,并且基于所存储的位来输出信号。锁存器710可以包括SET输入、RST输入和Q输出。SET输入可以是异步的,并且在例如利用高信号启用的情况下,可以使得锁存器710存储1。向着SET输入的低信号可能不会对锁存器710所存储的位产生任何变化。RST输入可以是异步的,并且在例如利用高信号启用的情况下,可以使得锁存器710存储0。向着RST输入的低信号可能不会对锁存器710所存储的位产生任何变化。锁存器710可以在Q输出上输出表示正存储的位的信号。例如,如果锁存器710正存储1,则Q输出可以输出高信号,并且如果锁存器710正存储0,则Q输出可以输出低信号,或者反之亦然。

脉冲宽度模块320的锁存器710的SET输入可以接收到直接来自相位模块310的激活信号作为输入。锁存器710的RST输入可以接收到从OR门580输出的信号作为输入。锁存器710的Q输出可以输出脉冲宽度模块320的通道的波形。在激活信号转变为高的情况下,锁存器710可以立即存储1并且开始将波形输出为高。在脉冲宽度计数器520使脉冲宽度计数器值递增为等于通道脉冲宽度寄存器510中所存储的通道脉冲宽度值、从而使得脉冲宽度比较器1540向OR门580输出高信号并使得OR门580向RST输入来输出高信号的情况下,锁存器710可以立即存储0并且使输出波形转变为低。在激活信号转变回为高之前,输出波形可能不能转变回为高。这样可以在激活信号转变为高与波形转变为高之间不存在一个时钟周期延迟、并且在脉冲宽度计数器值等于通道脉冲宽度值与波形转变为低之间不存在一个时钟周期延迟的情况下,使得脉冲宽度模块320能够在由通道脉冲宽度值表示的多个时钟周期内将波形输出为高。

图8示出适用于根据所公开的主题的实现的多通道波形合成引擎的示例系统。多通道波形合成引擎100的通道(诸如通道121、第N通道131或中间的任何通道等)可以包括相位模块310和脉冲宽度模块320这两者。可以从相位模块310将激活信号发送至脉冲宽度模块320。从相位模块310向脉冲宽度模块320可能不需要发送其它信号以使通道适当发挥功能,并且可能不需要从脉冲宽度模块320向相位模块310发送信号以使通道适当发挥功能。在一些实现中,可以在相位模块310和脉冲宽度模块320之间发送诸如时钟信号等的其它信号。

图9示出适用于根据所公开的主题的实现的多通道波形合成引擎的示例系统。多通道波形合成引擎100可以包括任何数量的通道,包括数十个、数百个、数千个或数百万个通道,其中各通道输出自身的波形。例如,多通道波形合成引擎100可以包括第一通道921、第二通道922、第三通道923、第四通道924、第五通道925、第六通道926、第七通道927和第八通道928这八个通道,其中各个通道可以接收来自时钟180的时钟信号和相位计数器模块110所输出的相位计数器值。

图10示出根据所公开的主题的实现的多通道波形合成引擎所用的示例信号迹线。通道输出高波形的频率可以由可用相位的数量来确定。在可用相位的总数是32、16和8的情况下、并且在诸如相位计数器210等的相位计数器从0开始进行增计数的情况下,信号迹线1000可以示出脉冲宽度为4且相位编号为1的通道所用的信号迹线。信号迹线1000上的两个邻接时钟沿之间的距离可以表示例如针对来自时钟180的时钟信号的一个时钟周期。例如,第一通道921可以具有所分配的脉冲宽度4和所分配的相位编号1。可以使用通道脉冲宽度值4和通道相位值0将此设置在第一通道921中。

在存在32个可用相位的情况下,例如在相位计数器值为0时,来自第一通道921的输出波形可以从第0个时钟沿起输出为高,而不考虑相位模块310或脉冲宽度模块320所引起的任何延迟。根据分配至第一通道921的脉冲宽度4,来自第一通道921的输出波形可以在四个时钟周期内保持高,然后可以在第四个时钟沿上转变为低。来自第一通道921的输出波形可以保持低,直到第32个时钟沿为止,在转变回为低之前可以在四个时钟周期内再次为高,并且可以在第64个时钟沿等等处转变回为高。在可利用32个相位的情况下,第一通道921可以输出频率为时钟信号的频率的1/32的波形。在脉冲宽度为4的情况下,波形可以具有12.5%的占空比。

在存在16个可用相位的情况下,例如在相位计数器值为0时,来自第一通道921的输出波形可以从第0个时钟沿起输出为高,而不考虑相位模块310或脉冲宽度模块320所引起的任何延迟。根据分配至第一通道921的为4的脉冲宽度,来自第一通道921的输出波形可以在四个时钟周期内保持高,然后可以在第四个时钟沿上转变为低。来自第一通道921的输出波形可以保持低,直到第16个时钟沿为止,在转变回为低之前可以在四个时钟周期内再次为高,并且可以在第32个时钟沿、第48个时钟沿等上转变回为高。在可利用16个相位的情况下,第一通道921可以输出频率为时钟信号的频率的1/16的波形。在脉冲宽度为4的情况下,波形可以具有25%的占空比。

在存在8个可用相位的情况下,例如在相位计数器值为0时,来自第一通道921的输出波形可以从第0个时钟沿起输出为高,而不考虑相位模块310或脉冲宽度模块320所引起的任何延迟。根据分配至第一通道921的为4的脉冲宽度,来自第一通道921的输出波形可以在四个时钟周期内保持高,然后可以在第四个时钟沿上转变为低。来自第一通道921的输出波形可以保持低,直到第8个时钟沿为止,可以在转变回为低之前在四个时钟周期内再次为高,并且可以在第16个时钟沿、第24个时钟沿、第32个时钟沿等上转变回为高。在可利用8个相位的情况下,第一通道921可以输出频率为时钟信号的频率的1/8的波形。在脉冲宽度为4的情况下,波形可以具有50%的占空比。

在所有情况下,例如,通过使用触发器430和触发器590,通道921所进行的波形的实际输出可能延迟了一个或多个时钟周期。例如,在32个可用相位和两个时钟周期延迟的情况下,波形可以在第2个时钟沿、第34个时钟沿和第66个时钟沿上转变为高。信号迹线1000假定分配至第一通道921的脉冲宽度始终为4,尽管分配至第一通道921的脉冲宽度可以在每次波形转变为高时改变。信号迹线1000假定分配至第一通道921的相位编号始终为1,尽管分配至第一通道921的相位编号可以在每次相位计数器值与第一通道921的通道相位值一致时改变。

图11示出根据所公开的主题的实现的多通道波形合成引擎所用的示例信号迹线。通道所输出的波形的宽度可以由分配至该通道的脉冲宽度来确定。在可用相位的总数为16、通道的脉冲宽度为12、8和4、并且诸如相位计数器210等的相位计数器从0开始进行增计数的情况下,信号迹线1100可以示出针对相位编号为1的通道的信号迹线。信号迹线1100上的两个邻接时钟沿之间的距离可以表示例如来自时钟180的时钟信号的一个时钟周期。例如,第一通道921可以具有所分配的相位编号1,并且可以具有所分配的脉冲宽度12、8和4。可以使用通道脉冲宽度值12、8和4以及通道相位值0将此设置在第一通道921中。

在通道脉冲宽度值为12的情况下,例如在相位计数器值为0时,来自第一通道921的输出波形可以从第0个时钟沿起输出为高,而不考虑相位模块310或脉冲宽度模块320所引起的任何延迟。根据分配至第一通道921的脉冲宽度12,来自第一通道921的输出波形可以在十二个时钟周期内保持高,然后可以在第12个时钟沿上转变为低。来自第一通道921的输出波形可以在四个时钟周期内保持低,直到第16个时钟沿为止,可以在转变回为低之前在十二个时钟周期内再次为高,并且可以在第32个时钟沿、第48个时钟沿等上转变回为高,从而每次针对12个时钟周期保持高。在脉冲宽度为12的情况下,波形可以具有75%的占空比。

在通道脉冲宽度值为8的情况下,例如在相位计数器值为0时,来自第一通道921的输出波形可以从第0个时钟沿起输出为高、而不考虑相位模块310或脉冲宽度模块320所引起的任何延迟。根据分配至第一通道921的脉冲宽度8,来自第一通道921的输出波形可以在八个时钟周期内保持高,然后可以在第八个时钟沿上转变为低。来自第一通道921的输出波形可以在八个时钟周期内保持低,直到第16个时钟沿为止,可以在转变回为低之前在八个时钟周期内再次为高,并且可以在第32个时钟沿、第48个时钟沿等上转变回为高,从而每次针对八个时钟周期保持高。在脉冲宽度为8的情况下,波形可以具有50%的占空比。

在通道脉冲宽度值为4的情况下,例如在相位计数器值为0时,来自第一通道921的输出波形可以从第0个时钟沿起输出为高,而不考虑相位模块310或脉冲宽度模块320所引起的任何延迟。根据分配至第一通道921的脉冲宽度4,来自第一通道921的输出波形可以在四个时钟周期内保持高,然后可以在第四个时钟沿上转变为低。来自第一通道921的输出波形可以在十二个时钟周期内保持低,直到第16个时钟沿为止,可以在转变回为低之前在四个时钟周期内再次为高,并且可以在第32个时钟沿、第48个时钟沿等上转变回为高,从而每次针对四个时钟周期保持高。在脉冲宽度为4的情况下,波形可以具有25%的占空比。

在所有情况下,例如,通过使用触发器430和触发器590,通道921所进行的波形的实际输出可能延迟了一个或多个时钟周期。例如,在16个可用相位和两个时钟周期延迟的情况下,波形可以在第2个时钟沿、第18个时钟沿和第34个时钟沿上转变为高。信号迹线1100假定分配至第一通道921的脉冲编号始终为1,尽管分配至第一通道921的脉冲编号可以在每次脉冲计数器值与通道相位值一致时改变。信号迹线1100假定可用相位的数量始终为16,尽管例如每次相位计数器210到期时(例如,在相位计数器达到15时)、可用相位的数量可以改变。

图12示出适合根据所公开的主题的实现的多通道波形合成引擎的示例信号迹线。可以向多通道波形合成引擎100的各通道分配自身的独立相位编号,从而可以确定输出波形相对于彼此的相位。例如,多通道波形合成引擎100可以具有第一通道921、第二通道922、第三通道923、第四通道924、第五通道925、第六通道926、第七通道927和第八通道928这八个通道。信号迹线1200可以示出以下情况下的八个通道的信号迹线:可用相位的总数为8并且各通道的脉冲宽度为4,并且诸如相位计数器210等的相位计数器从比脉冲数量小1起减计数到0。可以向第一通道921分配相位编号8,可以向第二通道922分配相位编号7,可以向第三通道923分配相位编号6,可以向第四通道924分配相位编号5,可以向第五通道925分配相位编号4,可以向第六通道926分配相位编号3,可以向第七通道927分配相位编号2,并且可以向第八通道928,分配相位编号1。信号迹线1200上的两个邻接时钟沿之间的距离可以表示例如来自时钟180的时钟信号的一个时钟周期。可以通过设置比通道的相位编号小1的通道相位值来在各通道中设置相位编号,例如,第一通道921的通道相位值为7并且第八通道928的通道相位值为0。

例如在相位计数器值为7的情况下,可以将来自第一通道921的输出波形从第0个时钟沿起输出为高,而不考虑相位模块310或脉冲宽度模块320所引入的任何延迟。根据分配至第一通道921的脉冲宽度4,来自第一通道921的输出波形可以在四个时钟周期内保持高,然后可以在第4个时钟沿上转变为低,之后在第8个时钟沿、第16个时钟沿等上转变回为高。

例如在相位计数器值为6的情况下,可以将来自第二通道922的输出波形从第1个时钟沿起输出为高。来自第二通道922的输出波形可以在四个时钟周期内保持高,然后可以在第5个时钟沿上转变为低,之后在第9个时钟沿、第17个时钟沿等上转变回为高。来自第一通道921和第二通道922的输出波形之间的相位差可以为45度。

例如在相位计数器值为5的情况下,可以将来自第三通道923的输出波形从第2个时钟沿起输出为高。来自第三通道923的输出波形可以在四个时钟周期内保持高,然后可以在第6个时钟沿上转变为低,之后在第10个时钟沿、第18个时钟沿等上转变回为高。来自第一通道921和第三通道923的输出波形之间的相位差可以为90度。

例如在相位计数器值为4的情况下,可以将来自第四通道924的输出波形从第3个时钟沿起输出为高。来自第四通道924的输出波形可以在四个时钟周期内保持高,然后可以在第7个时钟沿上转变为低,之后在第11个时钟沿、第19个时钟沿等上转变回为高。来自第一通道921和第四通道924的输出波形之间的相位差可以为135度。

例如在相位计数器值为3的情况下,可以将来自第五通道925的输出波形从第4个时钟沿起输出为高。来自第五通道925的输出波形可以在四个时钟周期内保持高,然后可以在第8个时钟沿上转变为低,之后在第12个时钟沿、第20个时钟沿等上转变回为高。来自第一通道921和第五通道925的输出波形之间的相位差可以为180度。

例如在相位计数器值为2的情况下,可以将来自第六通道926的输出波形从第5个时钟沿起输出为高。来自第六通道926的输出波形可以在四个时钟周期内保持高,然后可以在第9个时钟沿上转变为低,之后在第13个时钟沿、第21个时钟沿等上转变回为高。来自第一通道921和第六通道926的输出波形之间的相位差可以为225度。

例如在相位计数器值为1的情况下,可以将来自第七通道927的输出波形从第6个时钟沿起输出为高。来自第七通道927的输出波形可以在四个时钟周期内保持高,然后可以在第10个时钟沿上转变为低,之后在第14个时钟沿、第22个时钟沿等上转变回为高。来自第一通道921和第七通道927的输出波形之间的相位差可以为270度。

例如在相位计数器值为0的情况下,可以将来自第八通道928的输出波形从第7个时钟沿起输出为高。来自第八通道928的输出波形可以在四个时钟周期内保持高,然后可以在第11个时钟沿上转变为低,之后在第15个时钟沿、第23个时钟沿等上转变回为高。来自第一通道921和第八通道928的输出波形之间的相位差可以为315度。

在所有情况下,例如通过使用触发器430和触发器590,多通道波形合成引擎100的通道所进行的波形的实际输出可以延迟了一个或多个时钟周期。信号迹线1200假定分配至各个通道的脉冲宽度始终为4,尽管分配至各通道的脉冲宽度可以在每次波形转变为高时改变,并且各通道可以具有不同的独立分配的脉冲宽度。信号迹线1200假定分配至各通道的相位编号针对各通道没有改变,尽管分配至各通道的相位编号可以在每次相位计数器值与该通道的通道相位值一致时改变。信号迹线1200假定可用相位的数量始终为8,尽管可用相位的数量例如可以在每次相位计数器210到期时(例如,在相位计数器值达到0时)改变。

图13示出适合根据所公开的主题的实现的多通道波形合成引擎的示例信号迹线。分配至多通道波形合成引擎100的各个通道的相位编号可以彼此独立。可以向任何通道针对可用相位分配任何相位编号,并且在任何给定时间不必使用所有的可用相位。不必按任何顺序将相位编号分配至通道。可以向多个通道分配相同的相位编号,结果来自这些通道的输出波形不具有相位差。

例如,在可用相位的总数为8并且各通道的脉冲宽度为4的情况下、并且在诸如相位计数器210等的相位计数器从比相位数量小1开始减计数到0的情况下,信号迹线1300可以示出八个通道所用的信号迹线。在可利用8个相位的情况下,可以向第一通道921和第二通道922分别分配相位编号7,可以向第三通道923和第四通道924分别分配相位编号3,可以向第五通道925和第六通道926分别分配相位编号5,并且可以向第七通道927和第八通道928分别分配相位编号1。这样可以得到通道之间的各种相位差。例如,第一通道921和第三通道923之间的相位差可以为180度。第一通道921和第五通道925之间的相位差可以为90度。第一通道921和第七通道927之间的相位差可以为270度。第五通道925和第七通道927之间的相位差可以为180度。例如,通过使用各通道的通道相位寄存器410中所存储的通道相位值,可以利用分配至不同通道的可用相位的相位编号来控制所有通道之间的相位差。

图14示出适合根据所公开的主题的实现的多通道波形合成引擎的示例过程。在1402中,可以将相位计数器值设置为开始值。例如,可以将相位计数器210的相位计数器值设置为相位计数器开始值,其中该相位计数器开始值在相位计数器进行增计数的情况下可以为0,或者在相位计数器进行减计数的情况下可以为可用相位的数量-1。还可以设置相位计数器复位值。例如,如果相位计数器210进行减计数,则相位计数器复位值可被设置为0,并且可能无需改变。如果相位计数器210进行增计数,则相位计数器复位值可被设置为可用相位的数量-1。

在1404中,可以输出相位计数器值。例如,相位计数器模块110的相位计数器210可以将当前相位计数器值输出至多通道波形合成引擎100的各通道的各相位模块310。可以以任何适当方式输出相位计数器值。例如,可以并行地输出相位计数器值,使得相位计数器值的所有位可以由相位模块310在一个时钟周期内接收到。

在1406中,可以判断相位计数器值是否等于相位计数器复位值。例如,相位计数器比较器220可以将当前相位计数器值与相位计数器复位寄存器230中所存储的相位计数器复位值进行比较。如果相位计数器值等于相位计数器复位值,则相位计数器210可能到期,并且流程可以进入1402,其中在该1402中,相位计数器值可被复位为可以改变的相位计数器开始值。相位计数器复位值也可以改变。否则,流程可以进入1408。

在1408,中,可以更新相位计数器值。例如,相位计数器210可以使相位计数器值递增或递减1、或者递增或递减了相位计数器210所使用的一些其它计数增量。然后,流程可以进入1404,其中在该1404中,可以再次输出相位计数器值。

图15示出适合根据所公开的主题的实现的多通道波形合成引擎的示例过程。在1502中,可以设置通道相位值。例如,可以从可用的相位中向通道121分配相位编号。针对通道121所设置的通道相位值可以与分配至该通道的相位编号相关联。例如,通道相位值可以比分配至该通道的相位编号小1。可以将通道相位值存储在通道121的相位模块310中、例如通道相位寄存器410中。

在1504中,可以接收到相位计数器值。例如,通道121的相位模块310可以接收相位计数器模块110所输出的相位计数器值。可以将相位计数器值输入至例如相位比较器420。

在1506中,可以判断通道相位值是否等于相位计数器值。例如,相位比较器420可以将来自相位计数器模块110的相位计数器值与通道相位寄存器230中所存储的通道相位值进行比较。如果相位计数器值等于通道相位值,则流程可以进入1508,其中在该1508中,激活信号可以转变为高。否则,流程可以进入1510。

在1508中,激活信号可以转变为高。例如,相位模块310所输出的激活信号可以从低转变为高。例如可以利用触发器430来使激活信号转变。流程可以返回进入1502,并且激活信号可以保持高,直到该激活信号转变回为低为止。

在1510中,激活信号可以转变为低、或者保持低。例如,如果从相位模块310输出的激活信号当前为低,则激活信号可以继续被输出为低。如果从相位模块310输出的激活信号当前为高,则例如可以利用触发器430使激活信号转变为低。

图16示出适合根据所公开的主题的实现的多通道波形合成引擎的示例过程。在1602中,可以接收到激活信号。例如,可以在通道121的脉冲宽度模块320处从通道121的相位模块310接收到激活信号。

在1604中,可以判断激活信号是否为高。如果激活信号为低,则流程可以进入1618。如果激活信号为高,则流程可以进入1606。

在1606中,可以设置当前脉冲宽度。例如,可以通过以下操作来针对通道121设置通道脉冲宽度:将所接收到的通道脉冲宽度值存储在脉冲宽度模块320的通道脉冲宽度寄存器510中,并且如果脉冲宽度计数器520进行增计数,则将脉冲宽度计数器值复位为0,或者如果脉冲宽度计数器520进行减计数,则将脉冲宽度计数器值复位为所接收到的通道脉冲宽度值并将0存储在通道脉冲宽度寄存器510中。

在1608中,可以判断通道脉冲宽度是否大于0。通道脉冲宽度可以是通道脉冲宽度值与以下值的差的绝对值:0、或者脉冲宽度计数器520减计数达到或增计数起始的一些其它数值。例如,如果脉冲宽度计数器520进行增计数,则通道脉冲宽度可以是通道脉冲宽度寄存器510中所存储的通道脉冲宽度值-脉冲宽度计数器520复位为的值(例如,0)。如果脉冲宽度计数器520进行减计数,则通道脉冲宽度可以是脉冲宽度计数器值复位为的通道脉冲宽度值-通道脉冲宽度寄存器510中所存储的脉冲宽度计数器520减计数为的值。如果通道脉冲宽度不大于0,则流程可以返回进入1602,并且波形可能不转变为高。如果通道脉冲宽度大于0,则流程可以进入1610。

在1610中,波形可以转变为高。例如,脉冲宽度模块320的触发器590或锁存器710可以使低输出波形转变为高。

在1612中,可以输出波形。例如,可以从触发器590或锁存器710的Q输出来输出高输出波形。该输出波形可被输出至任何适当的硬件或软件,并且可用在任何适当的应用中。

在1614中,可以更新脉冲宽度计数器值。例如,脉冲宽度计数器520可以通过使脉冲宽度计数器值递增或递减1或一些其它计数增量来更新该值。

在1616中,可以判断脉冲宽度计数器是否到期。例如,在脉冲宽度计数器值已递增为等于例如通道脉冲宽度寄存器510中所存储的通道脉冲宽度值的情况下、或者在脉冲宽度计数器值已递减为0或用于设置通道脉冲宽度寄存器510中所存储的通道脉冲宽度的一些其它值的情况下,通道脉冲宽度计数器520可能到期。如果脉冲宽度计数器到期,则流程可以进入1618。否则,流程可以进入1612,其中在该1612中,可以继续输出高波形。

在1618中,波形可以转变为低或保持低。例如,如果输出波形当前低,则输出波形可以保持低。如果输出波形当前高,则例如可以利用触发器590或锁存器710使输出波形转变为低。

在1620中,可以输出波形。例如,可以从触发器590或锁存器710的Q输出来输出低输出波形。该输出波形可被输出至任何适当的硬件或软件,并且可以用在任何适当的应用中。

图17示出适合根据所公开的主题的实现的多通道波形合成引擎的示例过程。在1702中,可以设置可用相位的数量。例如,多通道波形合成引擎100的相位计数器模块110可以设置有相位计数器开始值和相位计数器复位值,其中这两者之差等于可用相位的数量-1。例如,可以将相位计数器210的相位计数器值设置为相位计数器开始值,其中该相位计数器开始值在相位计数器210进行减计数的情况下可以是可用相位的数量-1,并且在相位计数器210进行增计数的情况下可以为0。相位计数器复位值在相位计数器210进行减计数的情况下可被设置为0,或者在相位计数器210进行增计数的情况下可被设置为可用相位的数量。

在1704中,可以确定相位值与相位计数器值一致的通道。例如,多通道波形合成引擎100可以包括通道121、第N通道131和中间的若干数量的通道。各通道可以具有所分配的相位编号,其中该所分配的相位编号可以由该通道的相位模块310的通道相位寄存器410中所存储的通道相位值设置在各通道中。各通道可以将其通道相位值与相位计数器值进行比较,以判断这两者是否一致。

在1706中,可以更新一致的通道的相位值和脉冲宽度。例如,多通道波形合成引擎100的具有与相位计数器值一致的通道相位值的各通道可以接收新的通道相位值,其中该新的通道相位值可以与通道的先前通道相位值相同或不同。可以将该新的通道相位值存储在该通道的通道相位寄存器410中。各一致的通道还可以接收新的脉冲宽度。例如,可以利用新的通道脉冲宽度值或者通道的脉冲宽度计数器520可以复位为的新的值来设置该新的脉冲宽度。

在1708中,可以从一致的通道、以及先前一致的且不具有到期的脉冲宽度计数器的通道输出高波形,并且可以从所有其它通道输出低波形。例如,多通道波形合成引擎100可以从基于当前相位计数器值的一致的通道、以及从与先前相位计数器值一致并且具有自一致起没有到期的脉冲宽度计数器520的各通道输出高波形。基于当前相位计数器值可能不一致的、以及自先前一致起脉冲宽度计数器520可能到期的所有其它通道可以输出低波形。

在1710中,可以判断相位计数器是否到期。例如,在相位计数器值等于相位计数器复位寄存器230中所存储的相位计数器复位值的情况下,相位计数器210可能到期。如果相位计数器已到期,则流程可以返回进入1702。否则,流程可以进入1712,其中在该1712中,可以将可用相位的数量设置为新的数值、或保持相同。

在1712中,可以更新相位计数器值。例如,相位计数器210可以使相位计数器值递增或递减。各通道的各脉冲宽度计数器520还可以更新各自的脉冲宽度计数器值、例如使脉冲宽度计数器值递增或递减。然后,流程可以返回进入1704,其中在该1704中,可以确定针对更新后的相位计数器值的一致通道。

多通道波形合成引擎100的任何组件的任何输入可以为高态有效或低态有效,并且针对任何这种组件的任何输出条件的组,该组件的输出信号可以为高或低。例如,任何WR输入(诸如通道相位寄存器410上的WR输入等)可以为高态有效或低态有效。任何输出(诸如来自相位比较器420的输出等)在任何条件下(例如,在输入至相位比较器420的值相等的情况下)可以为高或低。组件之间的信号可以基于哪些输入是高态有效和低态有效、以及哪些输出条件得到来自各种组件的高输出信号和低输出信号而适当反转。输入信号和输出信号可以通过从低转变为高或者从高转变为低而激活,并且以与激活该信号的相反方式来停用该信号。信号可以是二值的或模拟的,其中以任何适当方式利用模拟信号来表示低和高。在时钟沿上激活的组件可以在时钟的前沿或后沿上激活,或者可以在时钟周期的高或低部分的中间激活。同一多通道波形合成引擎100中的不同组件可以在时钟的前沿和后沿上激活。例如,同一多通道波形合成引擎100可以包括在时钟前沿上激活的相位计数器210和在时钟后沿上激活的触发器430。组件可以以延迟方式激活。例如,利用时钟前沿激活触发器,代替紧挨在接收到前沿之后,触发器的输出可以使其输出信号在接收到前沿之后在时钟周期的高部分期间的某个时间从高改变为低或从低改变为高。

当前所公开的主题的实施例可以在各种组件和网络架构中实现并且用于这些各种组件和网络架构。图18是适合实现当前所公开的主题的实施例的示例计算机系统20。计算机20包括使计算机20的诸如以下等的主要组件相互连接的总线21:一个或多个处理器24,诸如RAM、ROM或闪速RAM等的存储器27,输入/输出控制器28,以及诸如硬盘驱动器、闪速存储器或SAN装置等的固定存储器23。应当理解,可以包括或者可以不包括诸如以下等的其它组件:诸如例如经由显示器适配器的显示屏等的用户显示器,诸如控制器和例如键盘、鼠标或触摸屏的关联的用户输入装置等的用户输入界面,以及本领域内已知的用在通用计算系统中或与该通用计算系统相结合地使用的其它组件。

总线21使得能够在中央处理器24和存储器27之间进行数据通信。RAM通常是操作系统和应用程序载入的主存储器。ROM或闪速存储器除其它代码外,还可以包含用于控制诸如与外围组件的互动等的基本硬件操作的基本输入输出系统(BIOS)。驻留在计算机20中的应用程序通常存储在诸如固定存储器23和/或存储器27等的计算机可读介质、光学驱动器或外部存储机构等上、或者经由这些组件可访问。

所示的各组件可以是与计算机20一体的、或者可以是单独的且经由其它接口进行访问。诸如网络接口29等的其它接口可以提供经由电话链路与远程系统和装置的连接、有线或无线的局域网或广域网连接、或者专用网络连接等。例如,如图19所示,网络接口29可以使得计算机能够经由一个或多个局域网、广域网或其它网络来与其它计算机进行通信。

可以以相似方式连接诸如文件扫描器、数字照相机或者辅助、补充或备用系统等的许多其它装置或组件(未示出)。相反,为了实践本发明,不需要存在图18所示的所有组件。这些组件可以以与所示方式不同的方式相互连接。诸如图18所示的计算机等的计算机的操作是本领域内容易知晓的,并且在本申请中没有进行详细论述。可以将用以实现本公开的代码存储在诸如存储器27、固定存储器23、远程存储位置或本领域内已知的任何其它存储机构中的一个或多个等的计算机可读存储介质中。

图19示出根据所公开的主题的实施例的示例配置。诸如本地计算机、智能电话、平板计算装置和远程服务等的一个或多个客户端10、11可以经由一个或多个网络7连接至其它装置。网络可以是本地网络、广域网、因特网或任何其它适当的通信网络,并且可以在包括有线和/或无线网络的任何适当的平台上实现。客户端10、11可以与诸如处理单元14、数据库15和用户接口系统13等的一个或多个计算机系统进行通信。在一些情况下,客户端10、11可以与用户接口系统13进行通信,其中该用户接口系统13可以提供向诸如数据库15或处理单元14等的一个或多个其它系统的访问。例如,用户接口13可以是提供来自一个或多个其它计算机系统的数据的用户可访问的网页。用户接口13可以向不同的客户端提供不同的界面,诸如向web浏览器客户端10提供人类可读网页,并且向远程服务客户端11提供计算机可读API或其它接口。用户接口13、数据库15和处理单元14可以是一体系统的一部分,或者可以包括经由专用网络、因特网或任何其它适当网络进行通信的多个计算机系统。处理单元14例如可以是诸如基于云的计算系统、搜索引擎或内容传输系统等的分布式系统的一部分,其中该分布式系统还可以包括数据库15和/或用户接口13、或者可以与数据库15和/或用户接口13进行通信。在一些配置中,分析系统5可以提供后端处理,诸如所存储或所获取到的数据在被传送至处理单元14、数据库15和/或用户接口13之前,由分析系统5进行预处理。例如,机器学习系统5可以将各种预测模型或数据分析等提供至一个或多个其它系统13、14、15。

为了解释的目的,已经参考特定实现说明了上述说明。然而,以上的例示性论述并不意图穷举或将所公开的主题的实现局限于所公开的精确形式。考虑到以上教导,可以进行多种修改和变化。选择并说明这些实现,从而解释所公开的主题的实现的原理及其实际应用,由此使得本领域其他技术人员能够利用这些实现和具有可以适合所考虑的特定使用的各种修改的各种实现。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1