A shift register can shift its stored data when the clock signal transitions from low to high (rising edge). It's a useful module for transferring data from one module to another. However, it should be implemented using only non-blocking assignment statements to avoid potential race conditions.
The bit 0 shifts from the AN[0] position to the AN[7] position, then wraps around back to the AN[0] position. This process repeats continuously.