波形产生技术的制作方法

文档序号:14448317阅读:251来源:国知局
波形产生技术的制作方法

本发明涉及使用微处理器来产生预定波形。其具体涉及使用脉冲宽度调制(pwm)以产生此类波形。



背景技术:

在微控制器单元(mcu)中通常具有pwm模块,以允许产生能够用于驱动诸如灯、电动机、扬声器等外部配件的输出波形。这些一般包含具有特定模式和比较功能的定时器。这些由运行于mcu上的软件控制。此表示每当需要动态地改变pwm模块的设定时,中央处理单元(cpu)必须顺序地加载一组寄存器。在cpu运行时发生明显的功率消耗,而且存储器映像接口的缓慢特性使得难以满足实时的需求。结果导致高功率的使用以及关于所能产生的图案的限制。



技术实现要素:

从第一方面来看,本发明提供数字微处理器装置,其具有:

中央处理单元;

存储器;以及

输出信号模块,其包含:

计数器,被配置成计数到预定计数值;以及

至少一个比较器,被配置成在该计数器达到预定比较器值时将输出信号从第一输出状态改变至第二输出状态;

其中,该输出信号模块被配置成在不用接收来自该中央处理单元的指令的情况下从存储器自动地加载选自包含下列的群组中的至少一个参数:预定计数值、预定比较器值、以及第一输出状态或第二输出状态。

因此,本领域普通技术人员将可看出,根据本发明,可自动地修改由输出信号模块所产生的信号的一个或多个特性而不需要cpu的干预,因此不需要该cpu从休眠状态上电。这可潜在地节省大量的电力。另一方面,其在能够产生的信号方面提供显著的灵活性。例如,作为优选的情况,计数器以固定速率操作,预定计数值将决定该输出信号的周期。预定比较器值将决定该输出以周期的多大比例分别处于第一输出状态或第二输出状态;换言之,其决定该输出的空占比。此外,依据本发明指定的该装置允许:至少在其实施例中,通过改变参数而构造不同输出的序列。这些序列可随后被按顺序重复(即,循环)或执行以建立更复杂的输出。

在一些实施例中,该计数器可被配置成在达到预定计数值时立即返回到初始值。当然应理解的是,该计数器可被配置成向上计数或向下计数,使得预定计数值可代表最大值或最小值。在其他实施例中,一旦达到预定计数值,该计数器可被配置成以反方向朝初始值计数。

第一输出状态及第二输出状态决定输出的极性。例如,如果该第一状态为低且该第二状态为高,则当达到该预定比较器值时该输出将从低变为高,且该输出将保持高位直到该计数器数值再次降至低于预定比较器值(这可能发生在计数器返回至零(或其他初始值)时或该计数已在另一方向上达到预定计数时)。如果该第一状态为高且该第二状态为低,则将得到此信号的反向版本。由于第一输出状态及第二输出状态为彼此互补的,因此它们可由单个参数决定,以下称之为极性。

可提供单个比较器,给出单一输出。然而,在一组实施例中,多个比较器具有相应的预定比较器值且提供相应的输出信号。这些输出信号可独立使用或可合并。这在一些实施例中提供产生具有复杂图案的复合输出信号。

优选地,这些比较器使用同一计数器,因为这使得电路上所需的物理区域此最小化并使功率使用最小化。因此在这些实施例中,预定计数值将是共同的。然而,优选地,针对相应比较器中的每一者,从存储器加载针对预定比较器值或极性中的一者或两者的数值。应当理解的是,在计数器为单向(在到达预定计数值之后立即返回至其初始值)时,相应输出信号中的脉冲的边缘将互相对齐,这是因为比较器将全部同时恢复到第一状态。在计数器为双向时,相应输出信号将具有中心对齐的脉冲(在预定计数值达到时及该计数改变方向时)。

在一组实施例中,所述装置被配置成使得可在每个周期中从存储器加载参数。如本文中使用的那样,周期被定义为达到预定计数值的连续的计数器实例之间的时间。由于预定计数值自身能改变,所以可得出该周期的时长是可变的。在不必给cpu上电的情况下按照“每个脉冲”改变关于输出信号的参数的能力提供了特别有利的配置。在本发明的实施例中,通过简单地在存储器中储存适当的数据,可以将序列重复多次(串接或循环),在序列之间具有可变的延迟。因此,这提供了产生几乎无限重复或不重复的输出的能力。因此,在一组实施例中,所述装置的存储器包含至少与第一序列部分、第二序列部分及在该第一与第二序列部分之间的延迟对应的数据,所述装置被配置成执行该第一序列部分并接着在该延迟之后执行该第二序列部分。

存储器可为专用存储器,但优选地包含由cpu使用(通常也由其他外围设备使用)的随机存取存储器(ram)。在一组实施例中,所述装置包括另外的外围设备,其被配置成将一组参数储存进存储器内。这例如允许外围设备产生被路由至输出信号模块的事件,其致使从存储器加载所述至少一个参数。该另外的外围设备可经由外围-外围接口(ppi,其在本申请人先前的申请wo2013/088121中更加详细描述)与输出信号模块通信。这允许相对于输出信号模块以异步方式产生事件。

所述装置可被配置成使得能够在周期内的任何时刻载入参数。然而,在一组实施例中,所述装置被配置成使得在特定时刻(例如,在预定计数值达到时)加载参数。此可有助于防止输出上失灵。

附图说明

现在将参考附图,仅通过示例来描述本发明的一些实施例,在附图中:

图1是依据本发明的典型系统的示意图;

图2是具有三个输出通道和单向计数器的本发明实施例的操作图示;

图3是具有三个通道和双向计数器的实施例的操作图示;

图4是显示反转极性的效果的图形;

图5图示出改变比较器阈值对输出波形的作用;

图6图实处改变最大计数器数值对输出波形的作用;

图7是依据本发明能够产生的组合序列的图示;

图8是针对复合序列的空占比变化的图示。

具体实施方式

首先转到图1,其中可看到依据本发明的典型输出信号产生器的示意图。其大致包含译码器模块4、计数器6、随机存取存储器(ram)8以及一组比较器10a、10b、10c。这些比较器将计数器6的输出与译码器模块4在相应数据线12a、12b、12c上提供的相应阈值相比较。这些数据线还将相应的极性比特提供给这些比较器10a、10b、10c,这些比较器10a、10b、10c在计数超过阈值时判定给定的比较器的输出14a、14b、14c是否变高或变低,反之亦然。这些比较器的输出14a、14b、14c提供电路的输出,即产生的所需信号。在此示例中,有三个输出通道,但这仅为示例性的,且可提供任何适宜的数目,包括单个通道。

在使用时,译码器模块4从ram8将数据载入。此包括针对这些比较器10a、10b、10c将要采用的阈值的数值与极性以及计数器6应该计数的最大数值。计数器6在每个时钟周期(未显示时钟)将其输出递增1,其可由图2中的顶部迹线7显示。当计数7达到作为中间的比较器10b的阈值的数值comp1时,对应的输出14b由高变低(此行为由在输入12b上经由模块4从ram8接收的数据包的极性比特决定)。类似地,当计数7达到第一个比较器10a的较高的阈值comp0时,对应的输出14a变低。不久后,该计数器输出7达到第三个比较器10c的阈值comp2,致使其输出14c变低。

一旦计数器输出7达到最大值countertop(其亦从ram4设定),其返回至零(或其他最小值)。这导致所有比较器输出14a、14b、14c重设为高。

在图2的下部中的所得波形显示各个输出14a、14b、14c的空占比根据所关联的阈值而不同。波形具有与计数器重置对齐的边缘。由于在图2中示出的时间段内没有新的数值从ram4载入,所以这些波形都是常规的。这些输出14a、14b、14c可例如用于以与其不同的空占比对应的不同亮度等级照亮相应led。

图3示出相似的配置。其不同在于计数器6是双向的,即其被配置成在其达到最大等级countertop之后再次往回向下计数。此举的效果在于:对于与先前示例中相同的阈值comp0、comp1、comp2,输出波形14a、14b、14c的波长被加倍且现为居中对齐。

图4示出改变极性的效果。在此,一旦计数器输出16(为清楚起见被示为连续的而非离散的)达到第一比较器的阈值18,对应的输出20变高而非变低。类似地,一旦计数器输出16达到第二阈值22,对应的输出24变高。其结果为这两个波形20、24与利用图2及图3中使用的相同极性会产生的波形相比是反向的。

如先前所述,在比较器阈值的数值与极性以及最大计数器数值保持未变时产生图2及图3中的波形。然而,现在参考图5,可见到改变比较器阈值的效果。在初始时,阈值被设定为数值26,使得当计数器输出28在时间30达到此数值26时,输出32变低。当计数器数值28达到最大值34时,其开始向下计数,从而当其在时间34以相反方向通过阈值26时,导致输出32再次变高。在计数器数值28沿正向方向再次通过阈值26时的时间36,此周期重新开始,导致输出32在时间36时再次变低。

随后,在由模式时钟40中的脉冲指示的时间38处,阈值提高至较高的数值42。可以看到,如果该数值要被立即应用,则计数器输出26要几乎立即达到该数值,这引起在输出32中发生故障的风险。因此,可替选地,保持该较低的数值26直到计数器输出28下一次达到零,如虚线44所示。此特征确保在输出32中不会有故障发生。因此,如先前阈值26所指示那样,输出32在时间46处变高。由于该较新的阈值42明显高于较旧的阈值26,所以计数器28较久才达到该数值,因而输出32在更长的时间段内保持为高,直到时间48处。相应地,输出32仅在短时段内保持为低,直到计数器输出28已在时间50向下计数至该新的、较高的阈值42。

此较高的空占比输出持续两个完整周期。当该模式时钟40的下一脉冲52出现时,阈值再次改变,在此情况中为减少至零。然而,如先前一样,该改变并未执行,直到计数器输出28下一次在时间54达到零水平时才执行。因为阈值也为零,所以输出32变低并保持为低,直到阈值出现进一步的改变。

因此,可以看到,通过动态地改变阈值,可以达成相对复杂的波形32。然而,通过确保直到周期中一已知点(在此示例中为当该计数器达到零时)之前不采用阈值变化,可确保无故障操作。

图6示出相似的配置,除了也改变阈值56,最大计数器数值58在输出波形60产生期间也更改。与实际进行阈值改变同步地(即当计数器输出62达到零时)更改最大计数器数值58。最大计数器数值58发生改变的效果是:与先前实施例中的那些输出周期相比扩展输出周期60。这说明了依据本发明产生复杂输出波形时能够采用的更多自由度。

图7示出了如何能够利用一循环中的串接序列而产生更复杂的序列波形。该循环包含其后接着一零延迟的第一序列seq[0],然后跟着的是又一序列seq[1],其后在返回至seq[0]之前跟着一个周期的延迟。这两个序列seq[0]及seq[1]以数据ram中数值表的地址定义,其由相应的指针指向并且针对相应的序列而返回数据字64、66。加载新数值的速率是通过参数seq[n].refresh针对每个序列而单独定义的。寄存器(loop.cnt)决定在该一个周期延迟被执行多少次之后(指示该序列的结束),停止回放且产生loopdone事件。seq[0]数据字64包括初始极性比特68及随后的其它15个比特70,其定义了比较器应该应用的阈值计数等级。seq[1]数据字66具有相同格式。此对所有可能的实际使用给予了足够的精确度。

在图7中示出的示例中,序列seq[0]以一参数定义,该参数表示每隔一个pwm周期推动进行一个新的pwm空占比。此复杂序列是以seqstart[0]任务起始,因此首先执行seq[0]。由于参数seq[0].enddelay=1,所以在序列seq[0]上的最后时段与seq[1]上第一时段之间将会有一个pwm时段延迟。然而,由于seq[1].enddelay=0,所以在seq[1]之后没有延迟,使得seq[0]会在seq[1]结束之后立即开始。然而,由于loop.cnt为1,所以在执行seq[1]仅一次之后停止回放,且产生seqend[1]与loopsdone事件两者(不保证其顺序)。

最后,图8示出空占比72如何在图7中示出的循环串接序列上随着时间而改变。随着循环计数器76从其初始值loop.cnt向下计数至1,针对每个循环74持续空占比变化的模式。

在本发明的优势实行当中,可利用外围-外围接口(ppi)从相对于计数器为异步的事件源加载序列,其中该ppi在wo2013/088121中更加详细描述。举例而言,对于灯用调光器,每次按下按钮时会产生通用输入/输出(gpio)事件且其被路由至与译码器模块4相关联的nextstep任务。从ram8加载控制输出的新参数且由该输出控制的led的亮度将自动改变,而无任何cpu干预。

如本领域普通技术人员将会理解的那样,以上所列的本发明实施例提供非常有用且灵活的方法,其通过直接从ram加载少量数据值而产生复合输出序列,无需使用cpu。例如在每个步骤改变空占比、极性,和/或最大计数器数值的能力在提供这种灵活性方面特别有帮助。如普通技术人员应理解的那样,通过避免使用cpu,能够实现显著的节电而不需牺牲这种灵活性。当然将可了解的是,本发明的原理可以通过许多不同方式实行且所述实施例仅为这些方式的示例。

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