Так вот про регенерацию. Засада с ней вот в чем: корка контроллера считает положенное количество тактов REFRESH_COUNT до следующего цикла регенерации, после чего взводит флаг и ждет, что регенерация волшебным образом случится, после чего снова начнет считать REFRESH_COUNT.
(
Еще больше букв и картинка )
Comments 17
Reply
Reply
Reply
Reply
ну или слипы вставлять или что там еще даст регенерацию запустить …
Reply
Длину цикла в худшем случае я знаю. Прерывать его в принципе можно, ценой генерации ошибки BUS ERROR и дальше на усмотрение обработчика exception, но это совсем как-то криво. Делить на короткие нельзя, он атомарный (выставили адрес - подождали - забрали данные).
Единственный правильный подход - смотреть, на сколько тактов запоздала регенерация по факту, и уменьшать время до следующей регенерации на это же количество тактов.
Reply
а какой-нить этикет с платформой существует? пины статусные или подобное.. хотя если есть длинная неделимая транзакция по шине, то между циклами регенарации никак не уложишься -> задача слаборазрешимая..
может есть возможность шину "холдить"?
Reply
Я все же хочу попробовать определять, сколько лишних тактов рыбки прожили без воды, и соответственно доливать им в следующий раз пораньше.
Reply
имхо, подобные задачи решались еще на Микро80, Спектруме и прочих мелких..
я бы поставил приоритет процесса регенерации на первое место и с приличным запасом по таймингам, т.к. характеристики памяти могут плавать, иначе "рыбки просто сдохнут" и все остальные действия потеряют всякий смысл..
поток со стороны физики вероятно лучше пускать через фифо, чтобы избежать потери пакетов..
ну это я так, теоретизирую - возможно есть и более другие пути..
хех, у меня это все еще впереди :)
Reply
Можно и вообще нахально сделать - прицепить принудительный рефреш к концу каждого обращения процессора. Медленно будет кошмарно, зато надёжно.
C FPGA что приятно - перепаивать ничего не надо. Перекомпилировал-залил-запустил и куришь бамбук.
Reply
Reply
Ведь памяти, работающей в видеоконтроллере, никакая дополнительная ренерация не нужна, нес па?
Reply
В принципе, можно вести лог с номерами строк и временем последней регенерации, и рефрешить те из них, кому приспичило.
Reply
Reply
Reply
Leave a comment