Софт проект hello_led добавлен цикл: while(1){ IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x01); IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x00); } Плата 1С20 эвалюха, частота 50МГц HW 1C20 low_cost (код данные из SDRAM, процессор NIOS II/e): период 1.56 мкс.
Тоже самое но для HW small (память данных и кода на М4К блоках внутри циклона (всего 2К байт), процессор NIOS II/e): период 800нс
При этом для ядра NIOS II/e заявляется 5-7 DMIPS. По сгенеренному коду мы имеем: while(1){ IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x01); 60: 00900004 movi r2,16384 64: 00c00044 movi r3,1 68: 10c00035 stwio r3,0(r2) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x00); 6c: 00900004 movi r2,16384 70: 10000035 stwio zero,0(r2) 74: 003ffa06 br 60 <alt_main+0xc> Disassembly of section .comment:
За один период выполняется 6 команд. Что соответствует заявленым 5-7 мипсам. Проект компилился в дебаге. Реально только запись в R2 лишняя, что уменьшило бы цикл до 4 команд.
Все "железо" компилилось в квартусе 5.0, настройки проектов не изменялись, все по умолчанию.
|