This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

INTC vs. CIC?

Hi.

What exactly is the difference between the Interrupt Controller (i.e. intc) and the Chip Interrupt Controller (i.e. CIC) in the C6474?

The CIC seems to be part of the CSL, whilst the intc is a library all on its own (that comes with the csl when downloaded)..

Regards.

Estian.

  • Start with the datasheet, section 7.6 Interrupts, on page 104 of SPRS552. Section 7.6.1 explains the INTC and section 7.6.2 explains the CIC.

    Then look at the Megamodule Reference Guide Section 7 Interrupt Controller for more details on the INTC, like registers and block diagrams. Figures 7-1 and 7-14 are helpful overviews.

    And then look at the CIC User's Guide for all the specifics about the CICs. Figure 1 on page 8 has a coarse overview of the CICs + INTC modules.

    There was a very good reason why the CSL for the INTC is a separate library, but I do not know what that reason was.

    As a summary:

    • The C6000 DSPs have a 16-bit register for interrupts, 12 of which are user defined. That was plenty when the C6000 was first available.
    • There was a selector that allow you to choose any 12 out of 24 interrupt sources for the C641x devices, for example.
    • The first C64x+ device was the C6455, and it had more peripherals to control and more things that might be useful as interrupts. So the INTC was added as an integral part of the Megamodule surrounding the C64x+ core. The INTC increases the number of interrupt sources up to 124 signals, and adds 4 multi-interrupt signals through the Event Combiners.
    • The multi-core C6474 has even more peripherals and some of them are complex enough to offer a much larger number of interrupt sources that any core might need to use, so the INTC modules were overwhelmed. The CICs are basically another layer of INTC, allowing another 62 interrupt sources to be added to the available signals that could reach the 12 available user-defined interrupts of the C64x+ core.