В прошлой статье я попытался с генерировать тактирующий сигнал в ПЛИС на разных примитивах. Из всех рассмотренных вариантов генерации сигнала, самым адекватным получился  клок с генерированный на  блоках 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 см( +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 градусов.  Первое, что меня удивило, так это повышение частоты с повышением температуры.  Я ожидал, что частота станет меньше, либо в вообще меняться не будет, но я ни как не ожидал, что частота поднимется вместе с температурой. В статье продемонстрировал результат трех экспериментов, по которым можно сделать следующие выводы:  Зависимость частоты от длины проводника не линейная. Возможно потому, что задержка внутри плис и задержка на проводнике приблизительно равны.     Зависимость частоты от количества лутов  так же не линейна. Причем слишком уж сильно не линейна.     Сырые данные последнего графика если кому надо:   5 68,23 6 52,33 21 32,285 41 24,326 56 19,663 71 15,657 86 16,056 96 13,277 101 13,881 121 10,499 141 10,104 161 6,443 181 7,268 201 6,331 301 4,484 401 3,315 501 2,791 601 2,49 701 2,042 801 1,753 901 1,629 1001 1,496 1401 1,029 1801 0,797 2201 0,655 2601 0,537   3. Зависимость частоты от температуры оценить трудно, так как не получается однозначно сопоставить значение частоты и температуре. Для этого нужен XADC.  Инженер-программист