具体实施方式
图1为本发明实施例提供的用于数字电路的信号延迟方法的流程图。如图1所示,数字逻辑延迟方法包括:
步骤11、接收待延迟的信号,该待延迟的信号的待延迟量为n个延迟单位,其中n为自然数,延迟单位可以是时钟周期;
步骤12、分解出该待延迟的信号的上升沿和下降沿;
步骤13、通过计数器对该上升沿和下降沿分别进行n-1个延迟单位的延迟,得到延迟后的上升沿和延迟后的下降沿。
步骤14、将该延迟后的上升沿和延迟后的下降沿合成,得到该待延迟的信号延迟了n延迟单位后的信号。
本发明实施例用于数字电路的信号延迟方法的实现时序如图2所示,待延迟的信号(signal)被分解出上升沿(pos_edge)和下降沿(neg_edge)后,分别对上升沿(pos_edge)和下降沿(neg_edge)进行了延迟量为delay-1的延迟,得到延迟后的上升沿(delay_pos_edge)和延迟后的下降沿(delay_neg_edge)。将延迟后的上升沿(delay_pos_edge)和延迟后的下降沿(delay_neg_edge)合成,又占用了1个延迟单位,得到延迟后的信号时,待延迟的信号(signal)已被延迟了delay。其中,delay的单位为时钟周期。
可选地,通过计数器对该上升沿和下降沿分别进行n-1个延迟单位的延迟,包括:
将该n-1个延迟单位与该待延迟的信号的沿间隔最小值进行比较,该沿间隔最小值为该待延迟的信号的所有上升沿间隔与所有下降沿间隔中的间隔最小的值,如图3所示,该上升沿间隔为该待延迟的信号中从第一个上升沿开始,相邻的两个上升沿之间的间隔,该下降沿间隔为该待延迟的信号中从第一个下降沿开始,相邻的两个下降沿之间的间隔;
当该n-1个延迟单位小于等于该待延迟的信号的沿间隔最小值时,该上升沿和下降沿分别通过一个基本脉冲延迟单元进行延迟;
当该n-1个延迟单位大于该待延迟的信号的沿间隔最小值时,该上升沿和下降沿分别通过m个级联的基本脉冲延迟单元进行延迟,m等于该n-1个延迟单位除以该待延迟的信号的沿间隔最小值后,向上取整得到的值,每个基本脉冲延迟单元的延迟量小于等于该待延迟的信号的沿间隔最小值,各基本脉冲延迟单元分别包含一个计数器。
可选地,该m个级联的基本脉冲延迟单元中,第一个基本脉冲延迟单元的延迟量等于该n-1个延迟单位减去m-1个该待延迟的信号的沿间隔最小值,其余基本脉冲延迟单元的延迟量均等于该待延迟的信号的沿间隔最小值。
可选地,通过计数器对该上升沿和下降沿分别进行n-1个延迟单位的延迟,包括:
该计数器在该上升沿或下降沿的触发下从1开始计数,当计数达到该计数器的延迟量减1个延迟单位时清零,且输出高电平脉冲信号。
可选地,将该延迟后的上升沿和延迟后的下降沿合成,包括:通过时序逻辑将该延迟后的上升沿和延迟后的下降沿合成。
本发明实施例中,信号延迟方法采用计数器实现信号的延迟,从而可以用少量的计数器替代寄存器或RAM实现信号的延迟,有效地解决了传统方式通过寄存器、RAM延迟导致的占用资源大、成本高的问题,降低了功耗。并且,在基本脉冲延迟单元级联延迟的过程中,输入输出端口均为时序逻辑,解决了传统方式时序不易收敛和布局布线拥塞的问题。此外,本发明实施例中,信号延迟方法可扩展性好,当延迟量改变时,无需修改代码,只需对参数进行修改,解决了传统方式实现延迟时,延迟量的变化会导致需要较大变更代码的问题。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM(Read-Only Memory,只读存储器)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图4为本发明实施例提供的一种用于数字电路的信号延迟装置的结构示意图。如图4所示,用于数字电路的信号延迟装置包括:沿分解单元41、延迟单元42及合成单元43。
沿分解单元41用于用于接收待延迟的信号,并用于分解出所述待延迟的信号的上升沿和下降沿,并将分解出的所述待延迟的信号的上升沿和下降沿发送给延迟单元42,所述待延迟的信号的待延迟量为n个延迟单位,其中n为自然数。
延迟单元42用于接收沿分解单元41发送的所述待延迟的信号的上升沿和下降沿,通过计数器对所述上升沿和下降沿分别进行n-1个延迟单位的延迟,得到延迟后的上升沿和延迟后的下降沿,并将所述延迟后的上升沿和延迟后的下降沿发送给合成单元43。
合成单元43用于接收延迟单元42发送的所述延迟后的上升沿和延迟后的下降沿,将所述延迟后的上升沿和延迟后的下降沿合成,得到所述待延迟的信号延迟了n延迟单位后的信号。
可选地,该延迟单元42包括上升沿延迟单元和下降沿延迟单元,该上升沿延迟单元和下降沿延迟单元分别包括至少一个基本脉冲延迟单元,一个基本脉冲延迟单元中包含一个计数器;
该上升沿延迟单元通过该至少一个基本脉冲延迟单元对该上升沿延迟该n-1个延迟单位;
该下降沿延迟单元通过该至少一个基本脉冲延迟单元对该下降沿延迟该n-1个延迟单位;
各基本脉冲延迟单元的延迟量分别小于等于该待延迟的信号的沿间隔最小值,该沿间隔最小值为该待延迟的信号的所有上升沿间隔与所有下降沿间隔中的间隔最小的值,该上升沿间隔为该待延迟的信号中从第一个上升沿开始,相邻的两个上升沿之间的间隔,该下降沿间隔为该待延迟的信号中从第一个下降沿开始,相邻的两个下降沿之间的间隔。
可选地,该上升沿延迟单元和下降沿延迟单元分别包括m个基本脉冲延迟单元,m等于该n-1个延迟单位除以该待延迟的信号的沿间隔最小值后,向上取整得到的值;
该m个基本脉冲延迟单元级联在一起,该m个基本脉冲延迟单元中,第一个基本脉冲延迟单元的延迟量等于该n-1个延迟单位减去m-1个该待延迟的信号的沿间隔最小值,其余基本脉冲延迟单元的延迟量均等于该待延迟的信号的沿间隔最小值。
可选地,该基本脉冲延迟单元中,计数器在该上升沿或下降沿的触发下从1开始计数,当计数达到该计数器的延迟量减1个延迟单位时清零,且该基本脉冲延迟单元输出高电平脉冲信号。
可选地,该合成单元为时序逻辑电路。
本发明实施例中,用于数字电路的信号延迟装置通过采用计数器实现信号的延迟,从而可以用少量的计数器替代寄存器或RAM实现信号的延迟,有效地解决了传统方式通过寄存器、RAM延迟导致的占用资源大、成本高的问题,降低了功耗。并且,在基本脉冲延迟单元级联延迟的过程中,输入输出端口均为时序逻辑,解决了传统方式时序不易收敛和布局布线拥塞的问题。此外,本发明实施例中,信号延迟方法可扩展性好,当延迟量改变时,无需修改代码,只需对参数进行修改,解决了传统方式实现延迟时,延迟量的变化会导致需要较大变更代码的问题。
图5为本发明实施例提供的另一种用于数字电路的信号延迟装置的结构示意图。用于数字电路的信号延迟装置包括:沿分解单元51、延迟单元52及合成单元53。延迟单元52包括上升沿延迟单元DLY_B1和下降沿延迟单元DLY_B2。
假设待延迟的信号为脉冲信号(signal),待延迟量为delay个时钟周期。沿分解单元51使用组合逻辑实现上升沿和下降沿。具体地,脉冲信号通过寄存器D延迟一个时钟周期后的信号为signal_1d,取脉冲信号的上升沿取下降沿该过程中脉冲信号无延迟。
延迟单元52中,上升沿pos_edge通过上升沿延迟单元DLY_B1延迟(delay-1)个时钟周期,得到延迟后的上升沿delay_pos_edge。
同理,下降沿neg_edge通过下降沿延迟单元DLY_B2延迟(delay-1)个时钟周期,得到延迟后的下降沿delay_neg_edge。
上升沿延迟单元DLY_B1和下降沿延迟单元DLY_B2延迟的过程相当于对脉冲信号进行了延迟量为(delay-1)个时钟周期的延迟。
然后,通过合成单元53将延迟后的上升沿delay_pos_edge和延迟后的下降沿delay_neg_edge合成,恢复得到延迟后的脉冲信号delay_signal。合成单元53的合成过程使用时序逻辑实现,相当于脉冲信号又被延迟了一个时钟周期。
这样,从分解出脉冲信号的上升沿和下降沿,到恢复出延迟后的脉冲信号的过程,延迟总量为delay个时钟周期,即实现了脉冲信号signal延迟量为delay个时钟周期的延迟。
合成单元53合成得到延迟后的脉冲信号delay_signal的具体过程,用伪代码可表示为:
上升沿延迟单元DLY_B1和下降沿延迟单元DLY_B2分别由1个或多个基本脉冲延迟单元DLY_A级联而成。
其中,基本脉冲延迟单元DLY_A的个数和延迟前的脉冲信号signal的特性相关。延迟前的脉冲信号signal的上升沿间隔、下降沿间隔如图3所示,假设延迟前的脉冲信号所有上升沿间隔最小值为pos_space_min,所有下降沿间隔最小值为neg_space_min。
当延迟量delay-1<=min(pos_space_min,neg_space_min)时,则基本脉冲延迟单元DLY_A级联的个数n=l,即实现延迟量为(delay-1)个时钟周期的延迟只需要1个基本脉冲延迟单元DLY_A。
当延迟量delay-l>min(pos_space_min,neg_space_min)时,则DLY_A级联的个数即实现延迟(delay-1)个时钟周期的延迟,需要将n个基本脉冲延迟单元DLY_A级联。其中,为向上取整函数。
上升沿延迟单元DLY_B1的结构如图6所示,n个基本脉冲延迟单元DLY_A1、DLY_A2、...DLY_An级联,实现delay-1个时钟周期的延迟。其中,基本脉冲延迟单元DLY_A1、DLY_A2、...DLY_An的延迟量配置分别为dly_load1、dly_load2、...dly_loadn,基本脉冲延迟单元DLY_A1输出延迟了dly_load1个时钟周期的上升沿pos_out1,基本脉冲延迟单元DLY_A2输出延迟了dly_load1+dly_load2个时钟周期的上升沿pos_out2,...,基本脉冲延迟单元DLY_An输出延迟了dly_load1+dly_load2+.......dly_loadn个时钟周期的上升沿delay_pos_edge。也就是说,基本脉冲延迟单元DLY_A1、DLY_A2、...DLY_An的延迟量总和,等于上升沿延迟单元DLY_B1的延迟量(delay-1)个时钟周期,即dly_load1+dly_load2+.......dly_loadn=delay-1。
下降沿延迟单元DLY_B2的结构与上升沿延迟单元DLY_B1的结构相同。
其中,第1级延迟量即基本脉冲延迟单元DLY_A1的延迟量可配置为dly_load1=delay-1-(n-1)min(pos_space_min,neg_space_min)。
其它各级的延迟量即基本脉冲延迟单元DLY_A2、...DLY_An的延迟量可做相同的配置均,即dly_load2=dly_load3=.......=dly_loadn=min(pos_space_min,neg_space_min)。
对于每个基本脉冲延迟单元,需要配置参数-延迟量。如图7所示,基本脉冲延迟单元DLY_A输入信号为pos_in,输出延迟后的信号为pos_out,配置的延迟量为dly_load。
基本脉冲延迟单元DLY_A的实现电路如图8所示,利用信号的上升沿和下降沿启动计数器实现信号的延迟。用伪代码可表示为:
计数器cnt_a在输入的脉冲信号pos_in为高电平时,从1开始计数,当计数器计数到大于或等于(dly_load-1)时清0。且当计数器cnt_a的值为基本脉冲延迟单元DLY_A配置的延迟量dly_load-1时,基本脉冲延迟单元DLY_A输出高电平脉冲信号pos_out,pos_out即为pos_in延迟dly_load后的信号。
本发明实施例提供的数字电路系统,包括上述装置实施例提供的任一种用于数字电路的信号延迟装置,其具体实现如上述实施例所述,在此不再赘述。
本发明实施例中,数字电路系统通过采用上述用于数字电路的信号延迟装置,实现了采用计数器实现信号的延迟,从而可以用少量的计数器替代寄存器或RAM实现信号的延迟,有效地解决了传统方式通过寄存器、RAM延迟导致的占用资源大、成本高的问题,降低了功耗。并且,在基本脉冲延迟单元级联延迟的过程中,输入输出端口均为时序逻辑,解决了传统方式时序不易收敛和布局布线拥塞的问题。此外,本发明实施例中,信号延迟方法可扩展性好,当延迟量改变时,无需修改代码,只需对参数进行修改,解决了传统方式实现延迟时,延迟量的变化会导致需要较大变更代码的问题。
本本发明实施例提供的用于数字电路的信号延迟方法及装置可应用到任何与逻辑设计相关的领域,包括FPGA(Field-Programmable Gate Array,现场可编程门阵列)逻辑设计和ASIC(Application Specific Integrated Circuit,专用集成电路)逻辑设计。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。