打印

关于奇数分频的设计

[复制链接]
3557|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
嘿嘿,首先声明一下,绝对的原创哈,赚点分,希望4月份能上个榜赚两本书,顺道分享一下以前遇到过几次的一个问题,在此先谢谢大家支持!

对于分频器大家可能都有意或者无意的会用到很多,但是不知道大家是否有留意,一般情况下我们用的都是偶数分频的分频器,比如用计数器对时钟沿计数,计数大小为5,超过5后计数结果清零,输出取反,这样得出来的一个分频结果实际是10分频,用100Hz的时钟通过此分频器后,输出将是10Hz。因此在此便可以因为今天我想分享的问题:如果希望实现5分频,我们该如何实现了?

我曾不止一次遇到过要求实现3分频的问题,好在没有限制,用什么方式实现都行。好在鄙人手艺不潮,遇上该问题都被俺把招给拆了。

从逻辑上来看的话,直接对时钟沿简单计数是无法完成的。那么可否用计数来实现咧?答案是肯定的。方法也有很多,首先,如果你熟悉verilog中always可用的触发条件的话,你可能会想到对时钟电平进行计数!哈哈,这也正是鄙人第一次遇到这个问题时给出的解决方案,用时钟电平作触发条件,只要电平切换就触发计数器计数一次,计3个时钟电平得到一个输出电平,这样就可以实现3分频了,这个办法相信不少人其实都能想到的吧。代码描述如下(verilog):

moduledv3(        output        clk_out,
                                input        clk_in,
                                input        reset
    );
         
reg        [1:0]        cnt;
reg        clk_out_temp;

always@ (clk_in        or reset)         
begin
        if(reset== 1)
        begin
                cnt<= 0;
                clk_out_temp<= 0;
        end
        else        if(cnt >= 2'b10)
        begin
                cnt<= 0;
                clk_out_temp<= ~clk_out_temp;
        end
        else
                cnt<= cnt + 1;
end

assignclk_out = clk_out_temp;

endmodule

但是这样描述能否综合出来?综合出来后是什么玩意?这个我自己确实也想不出照这个逻辑来做,电路会是怎么样的(哈哈,俺的数字电路逻辑能力比较弱滴,这种实现对俺来说算是复杂的了),但是我们可以看看综合工具给出的结果


这个已经是能看到的最底层了,再往下就点不进去了,我是真没弄明白里边实现的电路。经过仿真发现功能是可以出来的,波形图如下:


后来有一次我作一个电路的移位寄存器分析的时候,在画时序图的时候突然找到灵感,发现可以用移位寄存器来实现3分频的电路,电路图如下:


哈哈,这个实现就友好多了吧,即使一下看不明白,稍微画一下时序图就出来了。

:-),这些其实都是很早前的故事了,大概乾龙年间吧:lol,当年俺还靠这个把王总给忽悠了,嘿嘿

当时确实很傻很天真,自己想不出电路实现也不知道去baidu,后来等想起来去bai了一把,结果发现乱七八糟的方法还真不少,有用verilog或VHDL胡乱描述的,把逻辑搞的很复杂,估计也很浪费资源的,至于能否实现俺是米有兴趣去仿真和验证的,也发现有用JK触发器来作的,实际跟用DFF作移位异曲同工

有了3分频的基础,5分频就不难了,照着原理依葫芦画瓢吧,先把时钟作偶数分频成非50% duty,用移位寄存器吧duty调整好,使其与180度相移信号可以组合出奇数分频的输出即可

相关帖子

沙发
lelee007|  楼主 | 2011-4-21 13:18 | 只看该作者
沙发不留啦,HOHO~~~~~~~:lol:victory:

使用特权

评论回复
板凳
lelee007|  楼主 | 2011-4-21 13:18 | 只看该作者
原创哦,X版能否给俺个裤裤穿?:lol

使用特权

评论回复
地板
wxfxwk1986| | 2011-4-21 14:27 | 只看该作者
有创意!用电平触发计数。正好我前几天刚看到书上讲到奇数占空比1比一分频,实现方法为设计两个计数器,一个上升沿计数,一个下降沿计数。

使用特权

评论回复
5
heitai| | 2011-4-21 19:18 | 只看该作者
不是所有芯片都支持同一进程中上升沿、下降沿双触发的,而且很少。

使用特权

评论回复
6
lelee007|  楼主 | 2011-4-21 20:14 | 只看该作者
LS说的是ODDR么?

呵呵,第一种我没验证过,也没弄明白电路的具体实现,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

8560

帖子

3

粉丝