There are four copies of the secondary
control module that are controlled by the primary control module. Each secondary is
responsible for sending out the proper length data valid signal and to increment the
ROM address. The data valid signal goes to the Aurora interface to mark the data
being sent as valid. The Aurora interface can de-assert the ready signal at various
times, so the secondary module must take this into account by holding the values and
valid signal until the ready signal is re-asserted. The maximum ROM address is sent
to the secondary module by the primary control module. The secondary module counts
up to this value allowing the ROMs to send out lines up to the user-specified
amount. Figure 2-7 depicts the main Secondary FSM where each state
machine is defined as followed:
- IV_IDLE - When the
secondary modules are not needed (for example, when load types clear or set are
selected), the secondary module is held in this idle state. If data is needed
(load type = Normal), then the FSM goes to the next state.
- IV_BEGIN - Wait until the
primary module sends a start signal. Once received, the secondary goes to the
next state. Otherwise, the FSM holds in this state until the FSM receives the
start signal OR the load type is changed.
- IV_START - The FSM starts
the process to send out the valid signal and the ROM addresses. The valid signal
is delayed a few clock cycles to align the ROM output with the valid
signal.
- IV_ACTIVE - Once the
secondary module is started, the process that outputs ROM addresses continues to
run until the module has reached the ROM address sen by the primary module. Once
the value is reached, the FSM is signaled to go to beginning state.