parametrs are just like enumerated data types in vhdl that are usr defined.
basically when you have ur own defined parameters then it's quite eassy to work on.
complexity is reduced in the sense, when u need to change a value i.e used @ multpile places u need 2 change only once. Like # define in C. If Anyother advantages pls addon....
parameter is valid only within this module.
define ........ after defined, the value stays there and can propagate through all the codes that are compiled later on.
Use parameter is safer.
but sometimes, using `define is pretty convenient, but just be careful.
don't you think using parameter - for FSM - for example will force the synthesis tool to encode your state control to the one you wrote in your parameter definition even if was not the optimum technique for FSM state encoding ?, i mean you just use parameter - usually in FSM - to make your code readable , I agree with that , but look to the other side .. what do you think
Parameters can be used in FSMs compared to `define. Say, if states like idle, read, write are declared using `define and if the design contains multiple FSMs, it might be difficult to debug the design. Here parameters come in handy.