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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 9793|回复: 27

[原创] 4.5分频

[复制链接]
发表于 2010-5-28 14:30:42 | 显示全部楼层 |阅读模式

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

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

x
前几天,师弟们笔试了一道题,实现4.5分频
我的方案,上下沿都计数,最后实现的代码如下,代码风格可能不好!
大家一起品评下,是否还有好的方案!
希望拍转!


module Div(clk,rst,divout);

input clk,rst;
output divout;
reg[3:0] counter;
always @(posedge clk) begin

if (rst)
    counter=0;
else if(counter==8)
     counter=0;
     else     
     counter=counter+1;
     
  end
  
always @(negedge clk)
    begin
    if (rst)
        counter=0;
     else if(counter==8)
           counter=0;
    else
        counter=counter+1;
end
assign divout =(counter[2]==1)?1:0;
endmodule
发表于 2010-5-28 15:18:33 | 显示全部楼层
这个~~
不知道你是否验证过了?没报什么错误么?
发表于 2010-5-28 17:30:58 | 显示全部楼层
这样的话占空比不是50%的吧?
发表于 2010-5-28 17:32:02 | 显示全部楼层
不可以先倍频然后直接9分频么·?还是只能用代码实现不能用FPGA内部工具?
发表于 2010-5-28 23:55:58 | 显示全部楼层
1.always中要加rst吧
2.得到的是九分频,占空比为4/9
发表于 2010-5-31 08:43:45 | 显示全部楼层
首先语法就不对。verilog要求同一个reg不能同时在不同的always块里赋值。
发表于 2010-5-31 19:32:27 | 显示全部楼层
6# wycawyc

是  是~~
我就是这个意思~~~
发表于 2010-6-1 16:29:47 | 显示全部楼层
同意5楼的说法,另外,为什么不把上升下降沿写到同一个always模块中,两个always模块使用同一个reg变量很容易出错。
发表于 2010-6-1 17:17:00 | 显示全部楼层
同意8楼,写在同一个always里会好些吧。
发表于 2010-6-9 00:01:19 | 显示全部楼层
错误1:同一个reg(即couter)在两个always里面赋值!!!
错误2:两个always还一个上升沿,一个下降沿!!!
错误3:对clock进行组合选择(assign divout =(counter[2]==1)?1:0;),虽然你的代码等效于(assign divout =counter[2];),其实并不是组合logic,但是这样的设计观念是错误的!!!

所以根本不用看你的design function是不是4.5分频。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-25 10:42 , Processed in 0.037056 second(s), 8 queries , Gzip On, Redis On.

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