NiosII 일반 중단(IIC) 및 VIC 응답 시간 비교
통상적으로 끊기는 속도를 비교해 보자.
참고서: 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배의 새치기 성능'을 내세우고 있지만 다른 조정이 있나.
Reference
이 문제에 관하여(NiosII 일반 중단(IIC) 및 VIC 응답 시간 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/00tksh/items/bea0b83fa6d4319dc365
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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배의 새치기 성능'을 내세우고 있지만 다른 조정이 있나.
Reference
이 문제에 관하여(NiosII 일반 중단(IIC) 및 VIC 응답 시간 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/00tksh/items/bea0b83fa6d4319dc365
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
통상 VIC를 사용하면 응답 중단 시간이 약 3배 빠르다.
참고서에는'4∼5배의 새치기 성능'을 내세우고 있지만 다른 조정이 있나.
Reference
이 문제에 관하여(NiosII 일반 중단(IIC) 및 VIC 응답 시간 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/00tksh/items/bea0b83fa6d4319dc365텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)