nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

Торжественно отключаем Ethernet на быстром QuatCore

На отладочной плате для отечественной ПЛИС 5576ХС4Т стоит генератор тактовой частоты 80 МГц, это многовато для неё, на мой вкус, очень тяжело такие схемы проектировать. ФАПЧ (PLL) на этой ПЛИС нет, поэтому самый простой выход, как мне получить желаемые 25 МГц - это задействовать Ethernet-контроллер ENC624J600, который также присутствует на этой отладочной плате. Его выход CLKout присоединён к ПЛИС, и туда при подаче питания поступает 4 МГц. Но сконфигурировав контроллер по SPI, можно выбрать другую тактовую частоту, в том числе и 25 МГц, и, раз уж "зашли" - ещё и отключить сам Ethernet-контроллер по-максимуму, чтобы не потреблял, и вообще как-то оно спокойнее, когда ничего лишнего не работает на плате :)

Один раз мы это уже делали "на чистом верилоге", безо всяких процессоров. Второй раз - на обычном, не ускоренном QuatCore, хотя это было обрубание сука, на котором сидишь - выполнив свою работу, QuatCore вдруг получал 25 МГц тактовой частоты, на которых работать при всём желании не мог. Ну хотя бы в бесконечном цикле своём сидел прилежно :)

И вот теперь повторим этот незамысловатый процесс на "быстром" QuatCore, которому 25 МГц нипочём...

О том, что частота поменяется, будем судить по миганию светодиода, он должен мигать раз в секунду.

Вот "схема верхнего уровня":



Запустил синтез, всё очень быстро синтезировалось, но максимальная частота получилась 23 МГц, при этом никакого Critical Warning не вылезло. Дело в том, что у меня был заданы "часы", привязанные к clk, а сейчас весь clk у меня оказался подключён к ETH_CLK_global, на счёт которого никаких указаний не было. Ну, фиттер и расслабился - "раз требования по максимальной частоте нет, сделаю максимально просто".

Стоило мне добавить ещё одни "часы" в настройках Classic Timing Analyzer, и повторно запустить синтез - как он уже "взялся за ум" и смог достичь критической частоты в 27 МГц. Получается, что фиттер действительно обращает внимание на тайминги, а не просто расставляет и соединяет "как считает правильным", а там уж что вышло-то вышло.




Заработало. Теперь у меня уже не осталось никаких "путей к отступлению" - пора браться за "недостающее звено" в моём макете.

Оцифровка видеосигнала высокой чёткости - есть (техническое зрение "для бедных", аналоговые форматы "высокой четкости", кадровая развёртка в аналоговых форматах, оцифровка аналоговых видеосигналов, детектор синхроимпульсов на ПЛИС, селектор синхроимпульсов на ПЛИС)

Алгоритм захвата, который координаты 4 ярких точек заранее известной "мишени" преобразует в дальность, углы и кватернион поворота, уже реализованный в ассемблере QuatCore - тоже есть.

Преобразовывать эти числа в строки и выдавать хоть в UART, хоть на ЖК-экранчик мы тоже научились.

Не хватает лишь видеообработчика, который найдёт координаты ярких точек с субпиксельной точностью и передаст их в QuatCore. Теперь они даже на единой частоте работают, 25 МГц, что существенно упрощает обмен информацией между ними. Осталось лишь сделать...
Tags: ПЛИС, программки, работа, странные девайсы
Subscribe

Recent Posts from This Journal

  • Нахождение двух самых отдалённых точек

    Пока компьютер долго и упорно мучал симуляцию, я пытался написать на ассемблере алгоритм захвата на ближней дистанции. А сейчас на этом коде можно…

  • Слишком общительный счётчик

    Вчера я чуть поторопился отсинтезировать проект,параметры не поменял: RomWidth = 8 вместо 7, RamWidth = 9 вместо 8, и ещё EnableByteAccess=1, чтобы…

  • Балансируем конвейер QuatCore

    В пятницу у нас всё замечательно сработало на симуляции, первые 16 миллисекунд полёт нормальный. А вот прошить весь проект на ПЛИС и попробовать "в…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 2 comments