Forum Discussion
Altera_Forum
Honored Contributor
14 years agoTrying to make sense of this always block
Hi, So I wanted to take an input and decrement it in a combinational block.. here is the code I am talking about.. always @ (posedge clock or posedge reset)
begin
if (reset)
...
Altera_Forum
Honored Contributor
14 years agoYour always @ (*) block will only update its outputs when the following signals change: t0_reg, t1_reg, i, or n.
So what is happening is that n_next is getting decremented when the block updates, but then that block does not update again until one of the signals listed above changes. So the event will be that the "always @ (posedge clock or posedge reset)" block will be updated on the next clock. But in that block n is being assigned the value of n_next (which was decremented). So now that "n" has changed the always @ (*) block will update sequentially. So first, n_next gets assigned the value of "i" but that doesn't matter because the if statement is false so n_next gets the value of n-1. This continues with n=n_next then n_next=n-1 until n==0 is true then n_next gets to keep the value of i. Hope this helps.