微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 奇数分频(例7分频)

奇数分频(例7分频)

时间:10-02 整理:3721RD 点击:
对于任意奇数分频可以这样实现
module 7fenpin(clkin, clkout);
input clkin;
output clkout;
reg [2:0] step1, step2;
always @(posedge clkin)
begin
case (step1)
3'b000: step1<=3'b001;
3'b001: step1<=3'b010;
3'b010: step1<=3'b011;
3'b011: step1<=3'b100;
3'b100: step1<=3'b101;
3'b101: step1<=3'b110;
3'b110: step1<=3'b000;
default :step1<=3'b000;
endcase
end
always @(negedge clkin)
begin
case (step2)
3'b000: step2<=3'b001;
3'b001: step2<=3'b010;
3'b010: step2<=3'b011;
3'b011: step2<=3'b100;
3'b100: step2<=3'b101;
3'b101: step2<=3'b110;
3'b110: step2<=3'b000;
default :step2<=3'b000;
endcase
end
assign clkout=step1[2]|step2[2];
endmodule

奇数分频(例7分频)
其实就是采用计数器分频

奇数分频(例7分频)
老大,好像不对吧

奇数分频(例7分频)
老兄,你这样做真的太浪费了,上升沿和下降沿都是一样的3bit计数器,你完全可以用下降沿把上升沿生成的信号打一拍嘛,另外计数器采用格雷码会好一些,虽然最后一个数会有多个bit翻转,但其它情形会好很多啊。
另外,我以前说过,如果对占空比没有太严格的要求,3/7、4/7的分频也可以啊,43:57的占空比完全符合40:60的要求了。这样就可以做到寄存器输出了。
注意是电路设计,不是代码设计。

奇数分频(例7分频)
clkout好象要定义为REG型吧
呵呵 班门弄斧了

如果CLKIN时钟有抖动怎么办?如果CLKIN出现毛刺又怎么办?这样得出的时钟不可靠!

为什么要定义为REG型,就应该是wire;reg型能assign吗?

hehe, The rtl code maybe good.

上述设计没有什么特别的,比较耗资源,最优的设计占用4个Reg。

哇,大家考虑的都好全啊,多学习学习

使用始终管理模块 随便怎么分都可以 ~FPGA 内部的模块很重要

有点问题哦

回复 #7 cat-floating 的帖子
分频电路很常见的问题啊

大家给个标准的啊,我也好学习一下

个人觉得只需用一个计数器counter,它的变化就只放在一个always语句里面就OK了吧?
就这样:
always@(clkin)
……
counter=counter+1;
……
if(counter==4b'1101) counter=4b'1111;
else if(counter<=4b'0110)clkout=0;
else clkout=1
counter=counter+1;
……
不知道这样可不可以?
各位多多指教!

不好意思,刚才写多了一句
改成:
always@(clkin)
……
if(counter==4b'1101) counter=4b'1111;
else if(counter<=4b'0110)clkout=0;
else clkout=1
counter=counter+1;
……

如果没有占空比要求,直接用时钟的上升沿实现就可以了。用计数器。

always 例化语句必须得用reg。
assign这里不用!

关于奇数数分频的原理
代码写不太清楚,只讲一下个人理解的实现原理
对于奇数分频,根据占空比可分为精确的50%占空比和对占空比没有要求两种类型。从实现角度来讲,采用模拟电路和纯数字电路来实现两种。
我们以纯数字电路实现50%占空比的7分频为例介绍:
主要的观点就是要利用上时钟沿的正负沿。
实现方式,利用正沿设计一个4/7分频器,利用负沿设计一个4/7分频器,将两个计数器的输出相与得到占空比为50%的3.5/7分频器

sdfdddsdfsdfsdfsdfsfwewfgsdfsd

看起来总是怪怪的啊!

学生作品,鉴定完毕!

这样做效果不好的

计数器分频的确比较方便啊!

班门弄斧了?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top