[讨论] 求帮忙看一下这个逻辑不稳么?

astwyg   2014-6-4 10:20 楼主
需要出一个时钟,随手写了一个: reg CLK_160k; reg [19:0] CLK_160k_cnt; always @(posedge CLK) if(RESET_GENED==1) begin CLK_160k_cnt <=0; CLK_160k <=0; end else begin if (CLK_160k_cnt < 313) //1250-40k 6250-16k 625-160k begin CLK_160k_cnt <= CLK_160k_cnt +1; CLK_160k <=0; end else if ((CLK_160k_cnt < 626) && (CLK_160k_cnt >= 313)) begin CLK_160k_cnt <= CLK_160k_cnt +1; CLK_160k <=1; end else CLK_160k_cnt <= 0; end 嗯..自认为十分符合c语言逻辑.. 但是用signaltap看到的结果,让我十分惊奇: 很多位发生了莫名其妙的异常,求指点一下是什么原因导致的,还有如果很习惯c语言类型的编程习惯,应该怎么在verilog中注意,多谢多谢~ TM截图未命名.jpg TM截图未命名1.jpg 本帖最后由 astwyg 于 2014-6-4 10:23 编辑
博客:http://www.ysgh.net/

回复评论 (5)

我换了个更为简洁的逻辑,还是有问题:
reg CLK_160k;
reg [19:0]                 CLK_160k_cnt;
always @(posedge CLK)
if(RESET_GENED==1)
begin
        CLK_160k_cnt <=0;
        CLK_160k <=0;
end
else
begin
        if (CLK_160k_cnt == 313) //1250-40k  6250-16k  625-160k
        begin
                CLK_160k_cnt <= 0;
                CLK_160k <= ~CLK_160k;
        end
        else
        begin
                CLK_160k_cnt <= CLK_160k_cnt+1;
        end
end



TM截图未命名2.jpg


有点怀疑signalTap是否没有正确的输出寄存器状态
博客:http://www.ysgh.net/
点赞  2014-6-4 10:37
我试了一下,没有问题啊。我用的modelsim
点赞  2014-6-6 14:56
引用: lzscan 发表于 2014-6-6 14:56
我试了一下,没有问题啊。我用的modelsim

唉 悲剧了 我硬件有点问题,给的时钟不稳
博客:http://www.ysgh.net/
点赞  2014-6-6 17:05
引用: astwyg 发表于 2014-6-6 17:05
唉 悲剧了 我硬件有点问题,给的时钟不稳

用什么给的时钟?晶振?
点赞  2014-6-9 09:27
引用: lzscan 发表于 2014-6-9 09:27
用什么给的时钟?晶振?

时钟管理芯片
博客:http://www.ysgh.net/
点赞  2014-6-11 10:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复