Добрый день.
Вопрос по быстродействию Nios. Собрал в SOPBulder контроллер. Nios II f. Плата De1, на ней Cyclone II.
CLK 100 МГц, умножители аппаратные, аппартное деление. В проекте есть необходимость решить СЛАУ размером 5 на 5. Для этого взял метод изключения Гаусса. Все типы данных int. И здесь возник вопрос по поводу быстродействия. Для оценки быстродействия добавил в SOPBuilder интервальный таймер. Оптимизация -O2.
#include "sys/alt_stdio.h" #include "alt_types.h" #include "system.h" #include "altera_avalon_timer_regs.h"
int alt_timestamp_start(void) { IOWR_ALTERA_AVALON_TIMER_CONTROL (TIMER_0_BASE,ALTERA_AVALON_TIMER_CONTROL_STOP_MSK); IOWR_ALTERA_AVALON_TIMER_PERIODL (TIMER_0_BASE,0xFFFF); IOWR_ALTERA_AVALON_TIMER_PERIODH (TIMER_0_BASE,0xFFFF); IOWR_ALTERA_AVALON_TIMER_CONTROL (TIMER_0_BASE,ALTERA_AVALON_TIMER_CONTROL_START_MSK); return 0; }
alt_u32 alt_timestamp(void) { volatile alt_u32 lower; volatile alt_u32 upper; IOWR_ALTERA_AVALON_TIMER_SNAPL (TIMER_0_BASE, 0); lower = IORD_ALTERA_AVALON_TIMER_SNAPL(TIMER_0_BASE); upper = IORD_ALTERA_AVALON_TIMER_SNAPH(TIMER_0_BASE); return (0xFFFFFFFF - ((upper << 16) | lower)); }
int main() { volatile alt_u32 a; volatile alt_u32 beg,end,res_timer; beg = alt_timestamp();
Solve_G(); end = alt_timestamp(); res_timer = end - beg; while (1){}; return 0; }
Если я правльно понял функция alt_timestamp() возвращает текущее значение счётчика. В отладчике res_timer имеет значение 25345. Получается, что система решается примерно за 250 мкс? Можно ли повысить быстродействие Nios?
|