Система охлаждения для платы Terasic DE10-Nano (Altera, Intel FPGA)
Введение
На многих форумах, посвященных обсуждению вопросов о платах на ПЛИС и SoC, поднимается вопрос перегрева платы DE10-Nano. На форуме один из пользователей провел сравнение с другой платой на аналогичном чипе ПЛИС и выяснил, что плата DE10-Nano подвержена сильному нагреву, особенно при работе с HPS и ПЛИС одновременно. Такая ситуация не позволяет оставлять ее включенной на время большее нескольких часов, так как это может оказать негативное влияние на плату в целом и чип в частности.
В некоторых исключительных случаях перегрев может вывести плату из строя. Но во многих проектах плата должна работать несколько часов или даже несколько дней. Поэтому на другом форуме предлагается использовать вентилятор и/или радиатор для охлаждения. Для этого вентилятор необходимо правильно разместить для наилучшего охлаждения.
Кроме того, постоянно работающий вентилятор может раздражать шумом и быть избыточным. В некоторых high-end платах уже интегрирован в чип датчик температуры (internal TSD) и в ПО Quartus Prime имеются специальные мега-функции чтобы обрабатывать его показания с аппратно-привязанных пинов. В DE10-Nano такого датчика нет.
Данный проект создан специально для DE10-Nano (но легко может быть перенесен на другие платы) и включает:
-- 3д модель крышки, которая удобно крепится на ножки платы и имеет все необходимые сокеты для крепления остальных компонентов системы (вентилятора, печатной платы управления и т.д.);
-- Схема печатной платы для схемы управления датчиком температуры;
-- Универсальный Verilog моуль для обработки показаний датчика и контроля вентилятором.
Создание печатной платы
Для проекта была разработана печатная плата, для удобного соединения всех компонентов.
Размер печатной платы – 27х16 мм.
Проект был разработан в среде EasyEDA и находится здесь.
Перечень необходимых компонентов:
- Q1 – транзистор IRLR8113 в корпусе DPAK.
- Q2 – транзистор 2N7002 в корпусе SOT23.
- R1 и R3 – резисторы сопротивлением 1 КОм в корпусе 1206.
- R2 – резистор сопротивлением 10 КОм в корпусе 1206.
- R4 – резистор сопротивлением 100 КОм в корпусе 1206.
- TERM – термистор NTC 3950 100K.
- LD1 – светодиод любого цвета типоразмера 1608.
- Для площадки H1 требуются header male 1x4.
- Для площадок H2 и H3 требуются header male 1x3.
- Для площадки H4 требуются header male 1x2.
Подключение к плате DE10-Nano
Для правильной работы системы необходимо подключить все необходимы пины к плате:
- Пин GND подключается к пину GND на плате.
- Пин Vcc подключается к пину с питанием 3.3В на плате.
- Пин S необходимо подключить к одну из пинов GPIO в зависимости от привязанного в проекте пина.
- Пин ST необходимо подключить к одну из пинов ADC в зависимости от привязанного в проекте пина.
- Пины L- и L+ необходимо подключить к вентилятору.
- Пины P- и P+ необходимо подключить к источнику питания для вентилятора. Питание может быть подключено несколькими способами:
- Пин P+ подключается к пину 9В в разъемах Arduino. Пин P- можно не подключать, т.к. пин GND уже подключен к плате.
- Пин P+ подключается к питанию с напряжением до 24В. Пин P- необходимо подключить к GND источника питания.
- Если необходимо реализовать постоянное охлаждение, то нужно закоротить перемычку H4. В таком случае шаг 3 и 4 не требуется.
Сборка системы охлаждения
Специально для разработанной платы был разработана 3D модель крышки с удобным соединением с DE10-Nano, а также с вентилятором типоразмера 40х40 мм.
Скачать модель в формате stl для печати можно здесь.
Модуль управления охлаждением
Если модуль используется в качестве постоянного охлаждения, то данный шаг не требуется. В папке Quartus_project представлен проект с примером использования адаптивной системы охлаждения.
Основные настройки
Ниже представлен пример подключения модуля охлаждения в проект.
cooling_system cs1(
.min_temp(30),
.max_temp(60),
.cur_temp(analog[0]),
.fan_control(GPIO[0]),
);
Для корректной работы необходимо подать правильные сигналы в каждый вход/выход модуля:
- В min_temp передается температура, до которой необходимо охлаждать плату в случае ее нагрева до max_temp.
- В max_temp передается максимально допустимая температура.
- В cur_temp необходимо передавать данные о текущей температуре с термистора.
- В fan_control необходимо подключить один из пинов GPIO для управления включением/отключение вентилятора.
Дополнительные настройки
Для дополнительной настройки кода, в том числе для использования с другими платами есть возможность дополнительной настройки модуля:
- extra_res используется для задания сопротивления резистора R4 выступающего в качестве делителя напряжения для работы термистора.
- voltage показывает напряжение, поданное на пин VCC. Данное значение должно быть целым и для этого реальное значение помножается на mult_voltage. Для питания 3.3В voltage = 33.
- mult_voltage отображает на сколько домножено напряжение на VCC. Для питания 3.3В mult_voltage = 10.
Использование примера
Для использования примера можно воспользоваться уже скомпилированной версией. Для этого нужно прошить плату с использованием Quartus Prime Lite Edition 18.1 и файла cooling.sof.
Примечание
Инструкцию в формате Word можно скачать здесь.