Question: what is the difference between wire and reg?
Answer: Wire is used as combinational logic. You can assign it, e.g. assign a = 1'b1. ... Reg can be used as either combinational or sequential logic. In always@ block, you have to use reg to assign for a value, e.g. '=' or '<='.