在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3530|回复: 12

我写的任意奇数分频,大家挑一下毛病

[复制链接]
发表于 2007-4-28 13:01:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
module divide(clk,reset,clk_out,clk_out1,clk_out2);
input clk,reset;
output clk_out,clk_out1,clk_out2;
parameter N=7;
reg[N/2:0] qq,dq;
reg clk_out1,clk_out2;

always @(posedge clk)
begin
if(!reset)
  qq<=0;
else
qq<=qq+1;
if(qq==N-1)
begin
  qq<=0;
end
end
always @(qq)
begin
if(qq<N/2)
  clk_out1<=1;
else
  clk_out1<=0;
end        
always @(negedge clk)
begin
if(!reset)
  dq<=0;
else
dq<=dq+1;
if(dq==N-1)
begin
  dq<=0;
end
end
always @(dq)
begin
if(dq<N/2)
  clk_out2<=1;
else
  clk_out2<=0;
end  
assign clk_out=clk_out1||clk_out2;
endmodule
 楼主| 发表于 2007-5-8 12:46:40 | 显示全部楼层
怎么没人说呀?
发表于 2007-5-15 12:22:45 | 显示全部楼层
我学vhdl的,不懂你的东东。
发表于 2007-5-16 09:48:55 | 显示全部楼层
呵呵,我也是学vhdl看不懂啊,能给个vhdl的么?
发表于 2007-5-16 14:56:34 | 显示全部楼层
大概看了看,应该是50%的duty cycle
不错不错,

就是不应该在always的触发事件中用negedge,
所有dff都应该用一样的edge触发,

可以用时钟取反再去count,用“clk_neg”来做dq,

还有一个always下用两套if-else会不会不太好,
不大清楚,但是很少见这样写code
可以只用一个if-else,但是多层嵌套
一家之言,呵呵

[ 本帖最后由 pennynet 于 2007-5-16 14:59 编辑 ]
发表于 2007-5-16 15:01:08 | 显示全部楼层
以前面试写过一个19分频,
要求近似50%dutycycle,
所以做了两个14,15counter,
没有用反沿来做
发表于 2008-2-15 14:20:09 | 显示全部楼层
不错,粘下来研究研究
发表于 2008-2-17 09:28:18 | 显示全部楼层
always 中可以使用negedge的吧,如果如上所说修改时钟的话反而不好,无故的增加时钟树的难度
另外,always触发条件中用电平触发容易产生锁存器,是不好的编码风格吧

我也只学了1年半哈,有不对的地方大家多指教哈
发表于 2008-2-26 23:15:14 | 显示全部楼层
我写过三分频的,认为任意奇数分频不成问题
发表于 2008-2-27 08:39:47 | 显示全部楼层
reg[N/2:0] qq,dq;
这是什么????N=7,7/2=3.5吗?
他们的宽度是3,还是4,还是3.5,
汗,我搞了3年FPGA了,这个问题现在才考虑到!!

[ 本帖最后由 loveineda 于 2008-2-27 08:46 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-13 09:04 , Processed in 0.030806 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表