Interrupt pragma, Interrupt pragma –4, Interrupt pragma” on – Altera Nios II C2H Compiler User Manual

Page 122

Advertising
background image

6–4

9.1

Altera Corporation

Nios II C2H Compiler User Guide

November 2009

Interrupt Pragma

Interrupt
Pragma

To use a hardware accelerator in interrupt mode, add the following line
to your function source code:

#pragma altera_accelerate \

enable_interrupt_for_function

<function name>

At the next software compilation, the C2H Compiler creates a new header
file containing all the macros needed to use the accelerator and service the
interrupts it generates.

This pragma causes the function (which is assumed to be a top-level
accelerated function, not an accelerated subfunction) to be an interrupt-
mode accelerator. Specifically, the following things change:

■

The accelerator's control slave has an IRQ signal, which is asserted
every time the function has completed execution.

■

The polling loop in the generated driver file is removed. When the
function is called, the CPU immediately returns after launching the
accelerator.

■

A header file is generated, providing macros and definitions
required for you to write an ISR. The macros are summarized in

Table 6–1

.

An example of this header file is shown in

Example 6–4

for an

accelerated function called

coprocess()

in a Nios II IDE project

called my_project. The file is generated in <Project Path>/
<Configuration>
, where <Project Path> is the software project
directory, and <Configuration> is the project configuration name
(Release or Debug). The file name is ACCELERATOR_<Project
Name>_<Function Name>
_IRQ.h, where <Project Name> is the name
of the project (usually the same as <Project Path>), and <Function
Name>
is the name of the function you are accelerating.

Table 6–1. C2H Accelerator Interrupt Macros

Purpose

Macro Name

Return value

ACCELERATOR

_

<Project Name>

_

<Function Name>

_

GET_RETURN_VALUE()

Interrupt clear

ACCELERATOR

_

<Project Name>

_

<Function Name>

_

CLEAR_IRQ()

Check status

ACCELERATOR

_

<Project Name>

_

<Function Name>

_

BUSY()

Advertising