Without "always" block,have u seen same singals in signal tap?? if same then excecuation is not going into always block
Or just to experiment ,change the sensitivity of the always block like "posedge clk" something like that and see what is the effect or
keep only always block,no condition within bracket check whether there is no frequency issues while setting into the signal tap sampling.
May be "a" is one but just because of frequency mismatch,it is showing u "zero" on that particular time.
So check for all these and if possible just for verification,make so small program regarding this and looks signals in singal tap.
And even if not working,Dnt pull off your hair. ;)