作者SILee (WaLiLe)
看板Electronics
标题Re: [问题] verilog 程式问题...
时间Mon Oct 29 08:21:21 2007
※ 引述《peter921 (PP)》之铭言:
: 小弟我是最近才学到verilog.....
: 现在是写个jk counter的simulate来练习....
: 但是在sim的时候会出现个error
: # ** Error: (vsim-3601) Iteration limit reached at time 0 ns.
: google一下好像是有死回圈的样子...(是吗?)
: 可是我照着书上的格式打的说....
: 能帮找一下错误吗?我找了三天了...囧
: code:
: module sti_jk;
: reg j,k,clk,clr;
: wire q,qbar;
: initial
: $monitor($time, " Count Q = %b", q); <=出错後这行会反白...
: JK_flip_flop qqqq(q,,j,k,clk,clr);
: initial
: begin
: clr=0;clk = 1'b0;j=1'b1;k=1'b1;
: forever #10 clk = ~clk;
: end
: endmodule
: jk的code@@:
: module JK_flip_flop (q,qbar,j,k,clk,clr);
: output q,qbar;
: input j,k,clk,clr;
: wire temp;
: assign q = temp & ~clk & ~clr;
: assign qbar =~q;
: assign temp =(( j & ~q)|(~k & q));
: endmodule
: 先谢谢各位板友了...
把你一开始initial的值代入
q = temp & (1'b1) & (1'b1)
temp = ((1'b1 & ~q) | (1'b0 & q))
这两个的初始值到底是多少?????
if q=0, then temp=1 => q=1
if q=1, then temp=0 => q=0
这两个condition很明显互相矛盾
所以simulator会一直作iteration变成infinity loop
此电路只要clk=1'b0,clr=1'b0这个condition一发生就会遇到这样的问题
换个方法写吧, flip-flop不是用这样写的
况且flip-flop看的是trigger, 这样写会变成latch
※ 编辑: SILee 来自: 61.59.105.115 (10/29 08:32)
1F:推 peter921:谢了...我会用其他方法再试试的@@" 10/29 23:23