一种产生整数频率脉冲的信号发生器及信号产生方法
【技术领域】
[0001]本发明属于信号处理领域,更具体地,涉及一种产生整数频率脉冲的信号发生器及信号产生方法。
【背景技术】
[0002]目前市面上的脉冲个数调制器,多以倍频累加思路或者计数器按照权系数进行分频输出的方式产生。前者的设计虽然简单,但是在频率控制字不能被频率累加计数器整除时,波形会在频率累加器的每个清零时刻出现不规则波形,会影响单位时间内的脉冲方波个数;后者的设计虽然能输出非整数时钟周期计数的脉冲波,但是其精度受参考频率影响较大,以十六位信号发生器为例,如果晶振为50MHz,则很难精准的产生216= 65536Hz精准的参考频率。
【发明内容】
[0003]针对现有技术的以上缺陷或改进需求,本发明提供了一种产生整数频率脉冲产生的信号发生器及信号产生方法,其目的在于进行非整数周期到整数周期的转化,由此解决系统时钟频率固定的情况下整数频率输入值会导致输出脉冲非整数周期计数的问题。
[0004]为实现上述目的,按照本发明的一个方面,提供了一种产生整数频率脉冲的信号发生器,所述信号发生器包括依次连接的检测模块、除法模块和波形产生模块,所述检测模块、除法模块和波形产生模块均接收同一个系统时钟信号;
[0005]检测模块用于检测输入频率值,将输入频率值与预设值进行比较,根据比较结果输出除法使能信号和脉冲输出使能信号;
[0006]除法模块用于在除法使能信号的触发下将系统时钟信号的频率值与输入频率值进行除法运算,输出商、余数和除法完成使能信号;
[0007]波形产生模块用于在除法完成使能信号的触发下根据所述商和余数生成整数频率脉冲信号,并根据脉冲输出使能信号确定是否输出所述整数频率脉冲信号;当接收到的脉冲输出使能信号为高电平时,输出脉冲信号;当接收到的脉冲输出使能信号为低电平时,停止输出脉冲信号。
[0008]优选的,检测模块输出的除法使能信号和脉冲输出使能信号均是高电平有效。
[0009]优选的,检测模块预设有最大容许输入频率值匕‘若检测模块接收到的输入频率值为零,则脉冲输出使能信号和除法使能信号为低电平;若输入频率值大于O且小于等于fmax,则脉冲输出使能信号和除法使能信号均为高电平。
[0010]进一步优选的,若检测模块接收到的输入频率值大于fmax,脉冲输出使能信号和除法使能信号均为高电平且将输入频率值视为无效输入,将fmax作为输入频率值与系统时钟信号的频率值进行除法运算。
[0011]进一步优选的,检测模块预设的最大容许输入频率值fmax为小于系统时钟频率的整数值。
[0012]进一步优选的,波形产生模块根据所述商和余数生成的整数频率脉冲信号具体如下:以Q表示商,以R表示余数,生成单位时间内以(Q+1)为计数周期的R个脉冲,以Q为计数周期的(f_R)个脉冲,两种计数周期的整数频率脉冲均匀分布。
[0013]为实现本发明目的,按照本发明的另一个方面,提供了一种产生整数频率脉冲的信号产生方法,所述信号产生方法采用本发明提供的产生整数频率脉冲的信号发生器,具体如下:
[0014](I)判断输入频率值f是否为零,若是,则将脉冲输出使能信号置低;若否,则将脉冲输出使能信号置高,并进入步骤(2);
[0015](2)判断输入频率值f是否超出预设的最大容许输入频率值,若否,则生成除法使能信号,进入步骤(3);若是,则将输入频率值f视为无效输入,将最大容许输入频率值作为输入频率值,并生成除法使能信号,进入步骤(3);
[0016](3)接收到所述除法使能信号后,将系统时钟信号的频率值与输入频率值f进行除法运算,所述系统时钟信号的频率值作被除数,获取商Q、余数R和除法完成使能信号;
[0017](4)接收到所述除法完成使能信号后,根据所述商Q和余数R值产生整数频率脉冲信号:单位时间内生成的脉冲信号分为两部分,其中R个脉冲以(Q+1)作为计数周期,(f-R)个脉冲以Q作为计数周期,两种计数周期的脉冲均匀分布;若脉冲输出使能信号为高电平,则将产生的整数频率脉冲信号输出;若脉冲输出使能信号为低电平,则停止脉冲信号输出;
[0018](5)检测输入频率值f是否有变化,若否,则持续输出单位时间内以(Q+1)为计数周期的R个脉冲,以Q为计数周期的(f-R)个脉冲,两种计数周期的脉冲均匀分布;若是,则进入步骤(I)。
[0019]优选的,所述步骤(5)中,在系统时钟信号的上升沿时刻或下降沿时刻检测输入频率值是否变化,若在系统时钟信号的上升沿时刻检测到输入频率值f有变化,则在系统时钟信号的下一个上升沿时刻产生输入值改变标志位并进入步骤(I);若在系统时钟信号的下降沿时刻检测到输入频率值f有变化,则在系统时钟信号的下一个下降沿时刻产生输入值改变标志位并进入步骤(I)。
[0020]进一步优选的,在输入频率值f有变化的情况下,所述除法使能信号由所述脉冲输出使能信号与输入值改变标志位进行逻辑与操作获得。
[0021]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0022](I)由于本发明提供的信号发生器根据除法运算的结果进行了非整数周期到整数周期的转化,因此无论输入频率能否通过系统时钟频率整数分频,都能以均匀的间隔连续输出单位时间内个数与输入频率数值相等的脉冲;
[0023](2)本发明有效解决在系统时钟频率固定情况下,整数频率输入值会导致非整数周期计数的问题,具有精度高,易于实现的特点。
【附图说明】
[0024]图1是本发明提供的一种产生整数频率脉冲信号的信号发生器的整体结构框图;
[0025]图2是本发明实施例1提供的一种产生整数频率脉冲信号的信号发生器的各模块间信号主要输入输出关系连接图;
[0026]图3是本发明实施例2提供的一种产生整数频率脉冲信号的信号产生方法的流程图。
【具体实施方式】
[0027]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0028]如图1所示,本发明的信号发生器包括依次连接的检测模块、除法模块和波形产生模块;三个模块接收同一个系统时钟信号输入;
[0029]检测模块接收输入频率值f,对输入频率值f进行检测,若检测到输入频率值为O则将送往波形产生模块的脉冲输出使能信号置低;波形产生模块收到低电平的脉冲输出使能信号后就停止脉冲输出;如检测到输入频率值不为O且发生改变,则将脉冲输出使能信号置高,并输出除法使能信号;
[0030]检测模块预设有最大容许输入频率值,若输入频率值f大于所述最大容许输入频率值,则视为无效输入,将输入频率值f按照最大容许输入频率值处理;所述最大容许输入频率值为小于系统时钟频率的整数值;
[0031]例如,当系统时钟频率为50MHz,若预设最大容许输入频率值为500KHZ,当输入频率值大于500KHz时,将输入频率值视为无效输入,按照f等于500KHz进行除法运算,产生整数频率脉冲信号。
[0032]所述除法模块接收除法使能信号,进行系统时钟的频率与输入频率值的除法运算,输出商Q、余数R和除法完成使能信号;
[0033]所述波形产生模块受除法完成使能信号的触发,根据所述商和余数生成脉冲信号,单位时间内生成的脉冲信号分为两部分,其中R个脉冲以(Q+1)作为计数周期,(f-R)个脉冲以Q作为计数周期。
[0034]实施例1的各模块间信号连接关系如图2所示,其中,Clk为系统时钟信号,Rst_η为系统复位信号,Div_en为除法使能信号,Div_done为除法完成使能脉冲信号,Run为脉冲输出使能信号,pnm为脉冲输出端口 ;
[0035]f为输入频率,输入频率值f随可根据需求设置;检测模块输出的除法使能信号