Штука интересная... и возможных решений достаточно много.
Штука интересная... и возможных решений достаточно много.
Да любой))Reflector писал(а):И какой размер этого FIFO?
Код: Выделить всё
int i = 1000;
while(i--)
{
volatile uint32_t fifo = GPIOB->IDR;
GPIOC->ODR = fifo;
}
ldr r2, [r0, #16]
subs r3, #1
str r2, [sp, #52]
ldr r2, [sp, #52]
str r2, [r1, #20]
cmp r3, #0
bne.n 0x800019feэто такБольшая часть современной периферии 3-х вольтовая
это всё делается на ПЛИС.быстродействующие коммутаторы...
обработчики потокового аудио и видео...
внешняя ОЗУ на МК...
Они всегда были разные. AtXMega, AVR32...Да и АВРки уже совсем иные пошли, весьма отличающиеся от "стандартных"...
Пики не являются чем-то универсальным. Там под каждую задачу есть свой пик. Иногда, этот самый пик и заменить нечем из-за специфической периферии.Кстати... совсем про ПИКи подзабыли
Только ушёл от Си на Ассемблер... и вот опять всё сначала))diplodok писал(а):и как, примерно, делается FIFO
Угу)) Сейчас сбегаю за ПЛИС ))parovoZZ писал(а):это всё делается на ПЛИС.
140 MHzReflector писал(а):Если читать значение считанное с порта в ячейку памяти, сразу из нее читать и выводить в другой порт, то на G0 получится тоже 8 тактов для 140 MHz
Не понял...Reflector писал(а):там 2 команды для счетчика без которого точно замерять число тактов проблематично
Reflector писал(а):помимо конвеера у мк еще есть небольшой кеш инструкций и нужно учитывать латентность флеша которая разная для разных частот.
зачем там счётчик ? а низя просто читать инструкции подряд и просто их выполнять...Reflector писал(а):2 команды для счетчика без которого точно замерять число тактов проблематично
а какая там предвыборка ?BOB51 писал(а):предвыборке команд из ПЗУ...
Это на медленных AVR так можно. А на быстрых камнях так не получается - флеш не сразу отдаёт данные, а через определённый интервал.По идеи процессор просто берёт инструкции из флеша и сразу их выполняет.
А как насчет 480 МГц? https://www.st.com/en/microcontrollers- ... 750vb.htmlroman.com писал(а):140 MHz А вот это уже интересно))
Потому что частоты низкие. Когда речь идет о сотнях МГц, из флеша не успевает производится чтение на такой скорости и применяются различные методы позволяющие снизить скорость чтения не снижая производительность МК.roman.com писал(а):И флеш не зависит от частоты
а ОЗУ не тормозит ?parovoZZ писал(а):Программу можно загрузить целиком в ОЗУ (как это делает ESP) и выполнять оттуда.
Reflector писал(а):если постоянно не пишешь на ассме для одной серии на одной частоте, то вручную подсчитать количество тактов не так просто
Reflector писал(а):придется сбросить конвейер и дождаться чтения инструкций из флеша
Мурик писал(а):К ядре есть кеши инструкций и данных, конвейер и др. что затрудняет точный подсчет времени до такта.
Так и ARM можно заставить делать так же.ESP вроде загружает пользовательские программы из внешнего EEPROM...