NiosII 일반 중단(IIC) 및 VIC 응답 시간 비교

5059 단어 NiosIIModelSimquartus
VIC(Vectored Interrupt Controller)를 사용하면 인터럽트 응답 성능이 좋아진다고 합니다.
통상적으로 끊기는 속도를 비교해 보자.
참고서: AN595: 벡터 인터럽트 컨트롤러 사용 및 응용

컨디션


Quartus Prime 18.0
Modelsim INTEL FPGA EDITION 10.5b

일반 중단(IIC)


Platform Editor


입력 포트로 pio0을 추가해 하강 가장자리에서 Nios에 중단을 가하도록 설정했다.
처리의 시작과 끝을 보기 위해 busy를 출력 포트로 추가합니다.

Eclipse


다음 코드를 작성하기 위해 적합한 프로젝트를 만듭니다.
test.c
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"

//割り込み発生時のコールバック関数
void pio_0_callback(){
    IOWR_ALTERA_AVALON_PIO_SET_BITS(BUSY_BASE, 0x01); //出力ポートBusyを1にする。
    IOWR_ALTERA_AVALON_PIO_CLEAR_BITS(BUSY_BASE, 0x01); //出力ポートBusyを0にする。
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_0_BASE, 0x0000); //エッジキャプチャのリセット
}

//割り込みのための初期化
void init() {
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_0_BASE, 0x0001); //PIO初期化
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_0_BASE, 0x0000); //エッジキャプチャのリセット
    alt_ic_isr_register(PIO_0_IRQ_INTERRUPT_CONTROLLER_ID, PIO_0_IRQ, pio_0_callback, (void *)0, (void *)0); //割り込みハンドラ登録
}

int main()
{
    init();
    while(1); //割り込み待ち受け
    return 0;
}

Modelsim의 시간 측정 결과


Nios가 시동을 걸 타이밍을 찾으려고 Pio.0에 200us 주기의 시계를 넣으려고 합니다.80us busy마다 출력이 있기 때문에 이 근처에서도 프로그램이 시작된 것 같습니다.pio_0의 펄스를 850us~850.1us에 넣으세요.force -freeze sim:/display_qsys_tb/display_qsys_inst_pio_0_external_connection_bfm_conduit_export St0 0 force -freeze sim:/display_qsys_tb/display_qsys_inst_pio_0_external_connection_bfm_conduit_export St1 850000000 force -freeze sim:/display_qsys_tb/display_qsys_inst_pio_0_external_connection_bfm_conduit_export St0 850100000 run 1ms천천히 기다리세요.
pio_0 입하행(인터럽트 발생)에서 busy의 상승(처리 시작)까지 4550ns

VIC(Vectored Interrupt Controller) 사용


Platform Editor


통상 중단되는 구성 외에도 VIC와 Nios2→Advanced 태그를 추가한 General Interrupt controller를 인터넷에서 External로 변경한다.

Eclipse


보통 끊길 때와 같다

Modelsim의 시간 측정 결과


보통 끊길 때처럼 pio0펄스로 설정합니다.실행하다.천천히 기다려.
pio_0 입하행(인터럽트 발생)에서 버스의 상승(처리 시작)까지 보통보다 3배 빠릅니다!

총결산


통상 VIC를 사용하면 응답 중단 시간이 약 3배 빠르다.
참고서에는'4∼5배의 새치기 성능'을 내세우고 있지만 다른 조정이 있나.

좋은 웹페이지 즐겨찾기