Figure 32-3 shows the functional block diagram of the two instances of the VCP modules. It consists of four main blocks:
- VCP control, this block controls all the blocks within the VCP. It stores the Viterbi decoder parameters, analyzes commands from the DSP, and controls the global sequencing of events. The control unit also generates the two synchronization events to the DMA: a write event (VCPXEVT) and a read event (VCPREVT). The configuration bus loads the VCP with all the parameters and controls that affect the execution of the VCP. These parameters are memory mapped and accessed as 32-bit registers. These registers can be read and written by this bus.
- EDMA I/F unit, connected to L3 Interconnect, typically accessed by the EDMA. The EDMA is used to send the bulk of the input and output data. The data input to the VCP using the EDMA/L3 Interconnect bus are the branch metrics. The data output from the VCP using the EDMA/L3 Interconnect bus are either the hard decisions or soft decisions. The intended use of the EDMA bus is to transfer data that requires high bandwidths. This data includes the branch metrics and the decoded data. The intended use of the configuration bus is load data that requires low bandwidths. This includes the input parameters and output status registers.
- Memory block, contains all of the RAMs used by the Viterbi decoder
- Processing unit, of the VCP is realized by two main modules: the State Metrics Unit and the Trace Back Unit.
The DSP controls the operation of the VCP on Figure 32-3 using memory-mapped registers. The DSP typically sends and receives data using synchronized EDMA transfers through the 64-bit EDMA bus. The VCP sends two synchronization events to the EDMA:
- receive event (VCP1REVT and VCP2REVT)
- transmit event (VCP1XEVT and VCP2XEVT)
The VCP input data corresponds to the branch metrics and the output data to the hard decisions or soft decisions.