有关分频的程序

2019-03-25 08:21发布

我写了一个FPGA  50MHZ分频为1HZ的程序,不过好像不对,大家帮我看看哪里不对。

reg[22:0] counter;
reg[1:0] clkout;

always @(posedge clk)
begin
        if(counter==25_000_000)
        begin
                clkout<=!clkout;
                counter<=1'b1;
        end       
        else
        begin
                counter<=counter+1'b1;
        end       
end 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
tx_xy
1楼-- · 2019-03-25 14:07
< / 这个 counter 要赋个初值哈 。。。
Leo417love
2楼-- · 2019-03-25 16:18
reg[22:0] counter;为23位
那么2^23=8_388_608<25_000_000
类似于【但不能等同于】C语言的变量类型的错误!
改为reg[24:0] counter;再试试看!2^25=33_554_432
[个人意见]还有测试等号【if(counter==25_000_000) 】里面的清零,需修改为counter<=0;

[ 本帖最后由 Leo417love 于 2013-7-22 18:15 编辑 ]
kdy
3楼-- · 2019-03-25 22:12
呵呵,leo挺勤快啊,都上岗了!8错8错
1、位宽不够
2、clkout应该是reg不是[1:0],否则"!"有歧义
3、一般不用=1,而是用(count==25000000-1)
语法错误不算,最后一条会使综合器产生不同的计数器形式,
带load和复位2中计数器,后者简单,所以一般用count=0
Leo417love
4楼-- · 2019-03-25 23:33
 精彩回答 2  元偷偷看……
hjl240
5楼-- · 2019-03-26 04:33
我把reg[22:0] counter改为reg[24:0] counter;之后,就出现正确的现象了,,哈哈,虽然还是初学者,却犯了那么简单错误,是我不够细心,不应该呀。。还有真谢谢你
hjl240
6楼-- · 2019-03-26 06:35
多谢提点!

一周热门 更多>