Is this possible or does it make sense to create an element which its
output become a clock of other elements of a circut? I need to clock
two different entities. One gets a clock as milisecond and one as
second!
There is no simple answer to this really. The purists will argue that such
things should never be done. However, in the real-world it is in general OK
providing a couple of facts are true:
1. The technology you are using allows the generated clock to be distributed
as if it was a normal external clock. In the case of FGPAs, this typically
involves instantiating a global clock buffer to force the generated clock to
be routed on dedicated clock routing nets.
2. Your design doesn't rely on any timing relationship between the clocks.
In other words, when interfacing between logic using the two clocks one
needs to follow normal multi-clock domain procedures.
Whether it's a good idea to use generated clocks or not is a different
matter, and depends on what you are trying to do. If, for example, you have
a design that features two unconnected blocks of logic - one running at
100MHz and the other at 50MHz, it would make sense to generate the 50MHz
clock by dividing the 100MHz one. However, in your case you are probably
better running everything off the system clock and implementing a prescaler
that generates a one-clock wide enable every millisecond (and another every
second) that are then used to gate your low-speed entities.