Imax9
NEWS   ARTICLES   MINIMIG   FILES   ABOUT

Экспериментируем с TG68 - Нарушения синхронизации в прошлом.

Предлагаю вам перевод цикла Experimenting with TG68 Part 13: Timing closure at last! автора Alastair M. Robinson.

В проекте TG68MiniSOC я руководствовался тем, как процессор был реализован в проекте Minimig, и синхронизировал все модули одним высокоскоростном сигналом.

Сам TG68 не может работать на частоте намного больше 32 МГц, и синхронизировать его можно быстрее, только потому что он имеет сигнал “clkena”, который позволяет остановить его, пока комбинационная логика внутри догоняет. Хотя этот подход работает (в основном), он вызывает предупреждения в ПО синтеза FPGA, которое сообщает о серьезных нарушениях синхронизации, когда комбинационные пути имеют длину более одного цикла. Можно сообщить программному обеспечению, что эти длинные пути в порядке, предусмотреть в дизайне с помощью “multicycles”, но найти и указать их все, не включая ничего, что не должно быть включено - это скучно, утомительно и подвержено ошибкам. Эта проблема является основной причиной проблем стабильности от сборки к сборке, которые преследовали несколько проектов на базе TG68.

Однако сегодня я попробовал другой подход с разделенными тактовыми сигналами. Эта версия проекта использует тактовую частоту 100 МГц для контроллера SDRAM и контроллера VGA, а также тактовую частоту 25 МГц (генерируемую в том же PLL, что и тактовая частота 100 МГц, и, таким образом, согласованную с ней), которая запускает центральный процессор, основной конечный автомат и периферийные устройства. Работа с передачей данных между этими двумя тактовыми сигналами оказалась намного проще, чем я ожидал, и просто убедиться, что все сигналы от процессора записаны в регистры, прежде чем быть переданными чему-либо, работающему с более высокой тактовой частотой, кажется, это является главным трюком.

Большая новость заключается в том, что такой подход позволяет добиться устранения ошибок проекта по временным задержкам! При сборке для DE1 TimeQuest больше не сообщает о каких-либо нарушениях синхронизации. Мне еще предстоит запустить какие-либо тесты на этой версии проекта, поэтому я пока не знаю, какие санкции всплывут в проекте из-за скорости. Но улучшенная аккуратность основного конечного автомата и повышенная надежность, которые должны получится, лучше для понимания структуры проекта и должны сделать штраф за производительность вполне оправданным.

Как всегда, полный исходный код можно найти на моей странице github. Я помечаю репозиторий в ключевых точках, и этот пост ссылается на код, помеченный как SplitClock_20140405.



Адрес для контактов : imax9@narod.ru

Если вам понравились мои работы и вы желаете поддержать сайт - сделайте дотацию.

При копировании статьи – обязательна ссылка на авторство и источник. Без разрешения автора копирование запрещено.

© Максим Ильин 2022г.

Яндекс.Метрика