Обновление контроллера приборной панели.

Компания Lattice Semiconductor производит недорогие и эффективные CPLD и FPGA микросхемы и я давно хотел поработать с их продукцией. Моргание светодиодами на демонстрационной плате уже не впечатляет, поэтому решил перенести контроллер приборной панели на новое железо.

В качестве обработчика сигналов была выбрана ICE40UP5K. Версия SG48ITR имеет 5280 логических ячеек (Altera MAX II EPM1270, которая использовалась в первой версии контроллера, имеет всего 1270 ячеек), 120кбит встроенной RAM, 1024кбит SPRAM, а также контроллеры i2C, SPI, и многое другое.

Микроконтроллер я тоже решил заменить. Общение по параллельному интерфейсу, конечно, удобнее, но с нужной скоростью обмена справится и SPI.

Плата стала значительно компактнее. Ее не сложно уменьшить еще в полтора-два раза, но необходимости в этом нет. К тому же, положение монтажных отверстий привязано к габаритам дисплея.

Сравнение размеров контроллеров

Также переделал разъемы для подключения шлейфа.

Разъемы подключения шлейфов

Теперь они такие же, как на приборной панели и шлейф подключается без перегибов.

Контроллер приборной панели
Общий вид

Логика работы тоже поменялась. В первой версии FPGA отрисовывала картинку, после чего передавала управление микроконтроллеру и он продолжал управление экраном самостоятельно. Это было сделано из-за отсутствия видеобуфера. В этой версии, благодаря встроенной оперативной памяти, ICE40 принимает изображение от мк в буфер и занимается отрисовкой единолично.

Упрощенная схема обмена данными выглядит так:

Упрощенная схема алгоритма работы

Обновление экрана происходит 10 раз в секунду. Пакет данных передается примерно за 1 мс и у микроконтроллера есть огромный запас по времени для формирования и отправки изображения. Поэтому я отказался от общего тактирования и использовал два клоковых домена. Один из них управляется тактом от приборной панели, второй — от SPI микроконтроллера.

Данные из памяти читаются с задержкой на один такт, так как предварительно необходимо указать адрес чтения. А из-за того, что картинка формируется «на лету», пришлось читать данные с опережением.

Временная диаграмма работы с однопортовой памятью
Временная диаграмма работы с однопортовой памятью

Формирование шкалы температуры вариатора происходит непосредственно в плис. Алгоритм рисования шкалы не очень сложный и такой вариант реализации оказался удобнее. Для этого, вместе с данными изображения, по spi передается и дополнительная информация о температуре масла в вариаторе.

Информация о давлении в шинах пока что осталась без изменений.

Давление в шинах

В целом, работать с Lattice понравилось — у производителя есть много подробной документации по программированию и проектированию. А вот среда разработки iCEcube2 совсем не впечатлила. Но с ICE40UP5K можно работать в Radiant. Он заметно удобнее, но имеет меньший список поддерживаемых микросхем.

Поделитесь с друзьями

Ответить

ОБРАТНЫЙ ЗВОНОК

Укажите контактные данные, данные об автомобиле и мы свяжемся с Вами для записи или консультации

Отправляя заявку вы даете согласие с политикой конфиденциальности сайта