[Ненормальное программирование, FPGA] Генерация клока на примитиве LUT

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
14-Апр-2021 12:33

ВведениеВ прошлой статье я попытался с генерировать тактирующий сигнал в ПЛИС на разных примитивах. Из всех рассмотренных вариантов генерации сигнала, самым адекватным получился  клок с генерированный на  блоках LUT.  Цель. В этот раз я хочу сгенерировать клок не на одном примитиве, а на цепочке примитивов. Допустим возьмем один инвертирующий LUT и некоторое количество LUT-повторителей для создания задержки сигнала. Так же хочется посмотреть как будет меняться частота сигнала в зависимости от температуры кристалла.Исходные данные. В свое время приобрел с Китая плату EBAZ4205, с ПЛИС ZYNQ7010.
Как оказалось, некоторая часть компонентов была выпаяна(или не впаяна): диод по питанию, тактирующий кварц для ПЛИСовой части, пины подключения программатора и UART, слот под SD-карту.  Изначально я планировал использовать встроенный XADC для определения температуры кристалла, но по закону подлости он так же оказался не подключенным. На рисунке я отметил пины которые требуются для работы встроенного XADC. Пины по питанию J9 и J10 замкнуты сами на себя через конденсатор, а пины VREF вовсе не подключены.
Таким образом температуру померить внутренним XADC не получится. А это значит что набор для эксперимента дополняется мультиметром с термопарой, струбциной и парой проводов). Эксперимент. Первая часть. С прошлого раза я понял, что замкнуть на себя цепочку лутов просто так не получится, придется писать различные ограничения, поэтому было решено пустить эту цепочку через внешние пины ПЛИС. Для того чтобы оценить влияние внешнего проводника(да и просто ради эксперимента), была набросана такая схема:
Сигнал CLK выдает 100 МГц и тактирует свой счетчик. Пины in_pin, out_pin снаружи замкнуты сами на себя  проводником, а внутри соединены через инверсию. Длину этого проводника буду менять. И так, вот результаты этого этапа: 73.118 МГц14 см55.914 МГц49 см41.840 МГц (прямой  провод)92 см51.417 МГц (катушка  с сердечником)38.710 МГц (катушка  без сердечника)37.830 МГц170 смПервое что меня удивило в данном этапе, что сердечник увеличил частоту схемы, хотя я ожидал что ситуация будет обратной, все таки индуктивность увеличилась. Вот как это выглядело:
Синий провод и есть проводник длиной 14 сантиметров, его я заменял на другие провода различной длины.Вторая часть. Во второй части я хочу посмотреть как меняется частота в зависимости от количество лутов, т.е. в этом эксперименте инверсию заменим на цепочку лутов в которой один из лутов инвертирующий. Структурная схема немного изменилась но не сильно, я добавил в проект клок визард чтобы управлять опорной частотой, для более точного измерения.
А вот и результаты, при внешнем проводе 14 см( +1 лут - это тот самый инвертирующий лут):4+1 лут. Базовая частота 100 МГц68.230 МГц100+1 лут. Базовая частота 100 МГц13.881 МГц1000 + 1 лут. Базовая частота 100 МГц1.466 МГц1000 + 1 лут. Базовая частота 10 МГцПодключил провод 170 см. результат не сильно изменился1.496 МГц1.476 МГц(с проводом 170 см)5000 + 1  лут. Базовая частота 10 МГц0.274 МГц11000 + 1лут Базовая частота 5 МГц.Не получилось собрать. Ругался на длинную цепочку лутов.8000 + 1 лут. Базовая частота 5 МГц.Собралось, но чипскоп ни как не загружал данные из ПЛИС.8000 + 1 лут.Базовая частота 10 МГц.0.166 МГц*Базовая частота эта та частота относительно которой я считал частоту, она же была частотой для ChipScopeТретья часть. И так, из проведенных предыдущих экспериментов, можно определиться с оптимальными параметра для третьего эксперимента, чтобы оценить зависимость частоты от температуры. Я возьму 8000 лутов и внешний провод 14 см. Доработав проект, получаю вот такую схему:
Блок gen_trig генерирует сигнал каждую секунду, так же сигнал trig потребуется в чипскопе для сбора статистики. Блок cnt_lut считает такты с генерированные цепочкой лутов, по сигналу rst(непонятно почему он считает его инверсным) сбрасывается счетчик. А вот как заполнен кристалл данным проектом. Желтым отмечены все 8000 лутов, маджентой отмечены блоки чипскопа. Так же отметил где находятся пины на внешний проводник.
А вот как выглядит собраный макет эксперимента:
На ПЛИС положил термопару, капнул термопасты, накрыл пленкой и прижал струбциной через несколько слоев картона. Картон нужен чтобы струбцина не стала радиатором. Кристалл максимум греется до 47 градусов при 17 минутах работы. Поэтому чипскоп настраиваю на захват 1024 окна по два отсчета, на каждый сигнал триггера, который предусмотрен в проекте. И так, результат эксперимента:
На графике видим изменение частоты каждую секунду. Частота меняется от 165217 Гц до 165589 Гц, при изменении температуры 25-46 градусов. В целом хотелось бы нагреть кристалл до 85 градусов. Первое, что меня удивило, так это повышение частоты с повышением температуры.  Я ожидал, что частота станет меньше, либо в вообще меняться не будет, но я ни как не ожидал, что частота поднимется вместе с температурой.Заключение.В статье продемонстрировал результат трех экспериментов, по которым можно сделать следующие выводы:
  • Зависимость частоты от длины проводника не линейная. Возможно потому, что задержка внутри плис и задержка на проводнике приблизительно равны.
  • Зависимость частоты от количества лутов  так же не линейна. Причем слишком уж сильно не линейна.
Тут пара графиков зависимостей частоты от количества лутов(ось Y - значение частоты).
Сырые данные последнего графика если кому надо: 568,23652,332132,2854124,3265619,6637115,6578616,0569613,27710113,88112110,49914110,1041616,4431817,2682016,3313014,4844013,3155012,7916012,497012,0428011,7539011,62910011,49614011,02918010,79722010,65526010,537 3. Зависимость частоты от температуры оценить трудно, так как не получается однозначно сопоставить значение частоты и температуре. Для этого нужен XADC.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_nenormalnoe_programmirovanie (Ненормальное программирование), #_fpga, #_ebaz4205, #_lut, #_fpga, #_nenormalnoe_programmirovanie (
Ненормальное программирование
)
, #_fpga
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 21:21
Часовой пояс: UTC + 5