在时序逻辑电路中,除了实现时钟的奇偶分频,还会涉及到时钟的占空比问题,现就该问题进行如下分析。
- 实现占空比为50%的分频电路很简单,对于偶分频电路只需将cnt计数到一半时进行输出q的翻转即可。比如8分频的输出q,只需在cnt == 3(8÷2 - 1)的时候进行翻转,因为cnt计数是从0计数到7,即0,1,2,3,4,5,6,7,其中3正好是中间点。
- 若要实现占空比可调,q1和q2要根据不同的cnt值进行翻转。比如8分频电路,q1在cnt==0翻转(此输出相当于16分频),q2在cnt==6的时候进行翻转(此输出也相当于16分频),只不过q2相对于q1往后延迟了6个cycle,令q=q1 ^ q2(异或),最终可得到占空比为6/8=75%
代码及波形如下:
若要实现奇分频电路的占空比可调,稍微修改一下上述电路即可。
- 将第20行的判断条件cnt == 3'b111改为cnt == 3'b110(变成了7分频);
- 将第二个cnt的计数改成下降沿有效(第33行),即always @ (negedge clk or negedge rstn)