Pull to refresh

Comments 10

Я так понял, iCE40 конфигурируется по spi. И в варианте с spi флешкой, плиска выступает в роли мастера.
А есть вариант конфигурации spi slave? Что бы конфигурировать с мк, например, и избавиться от лишнего корпуса spi flash и его интерфейса программирования.
Можно в этом случае сделать МК как SPI Slave, разобравшись с тем, как хранится образ в памяти. Тогда ПЛИС при включении будет обращаться к МК как к флешке, МК должен будет хранить образ например в собственном флеше и выдавать его частями. Описание доступа к внешней флешке SPI есть в даташите на iCE40, также есть проект http://www.clifford.at/icestorm/format.html, в котором проведен реверс формата прошивки.
Решение «МК как SPI slave» — это совсем не то, что хотелось бы. «МК как SPI maser» — было бы заметно лучше. Ибо, далеко не всегда есть возможность полноценно эмулировать с помощью МК еще и SPI flash.
А зачем разбираться с форматом прошивки? Если уж она хранится во флеше — значит там «обычный бинарник» и вся служебная информация представлена в понятном для плис виде. Отдавать как есть и все. Самое главное, чтоб была возможность сделать это по инициативе и от клока МК.

А вообще, интересные устройства. Кристаллы емкие, корпуса компактные, прайс умеренный. Если еще и «passive serial» есть и софт под лин адекватный — можно попробовать и в разработку включить.

В любом случае, спасибо за статью.
Под Linux пока есть некий Yosys:

А зачем нужна инициатива МК? ПЛИС включится и попросит МК передать прошивку.
Даже как то странно видеть такой вопрос. Инициатива МК нужна для сугубой гибкости решаемых задач. Ибо, и задачи и мк бывают очень разные. Далеко не любой мк может работать с заданной частотой sclk, например. Так же, иной раз, возникают задачи по перекофигурированию плм «на лету». Или прошивки для плм на мк может и не быть. Он ее может получать уже в процессе работы. Да, мало ли, вообще.

Ознакомился с мануалом: spi slave есть. И, на беглый взгляд, сделан по-человечески.
Если есть SPI Slave, то замечательно. В принципе можно и как slave и как master сделать МК, конфигурирование ПЛИС только при включении делается, либо эпизодически. Думаю, любой МК с SPI должен в режиме slave работать на той частоте, на которой мастер читает данные, если эта частота не слишком большая для МК. Иначе он не полностью поддерживает SPI.
Спасибо за статью и за наводку на ICE40UL640-SWG16ITR50! Как мне кажется, это не плохая аналогия серии Alera max ii 240-570-1270. Только у Lattice есть еще и пара своих встроенных генераторов PLL. Цена на MAX240 прямо сейчас на ebay составляет 80 — 100 рублей с доставкой.
Я уже недавно пробовал Lattice на 64 ячейки в качестве электронных часов. А люди уже пробуют 640й!
Работал с LP8K, позволю себе немного дополнить статью.

В целом и ПЛИС, и набор инструментов порадовали своей минималистичностью. iCECube тоже использовал сначала, но затем перешёл на вызов скриптов сборки. Кстати, в комплекте с iCECube поставляется синтезатор Synplify, и его графическим интерфейсом (который вызывается как из iCECube, так и отдельно) довольно удобно пользоваться для анализа критических путей.

Из недостатков серии по сравнению с Altera хочу отметить отсутствие jtag и аналогов SignalTap, что несколько усложняет отладку на рабочей плате.

Для прошивки использовал FT232H, с его помощью можно прошить как загрузочную флешку (через flashrom), так и ПЛИС в режиме SPI Slave. Если кому надо, программку для прошивки в режиме SPI Slave через libftdi можно скачать здесь https://bitbucket.org/vasiliev/ice40_ftdi.
Что можно уместить в 640 ячеек?
я не знаю какие ячейки в латиссе, но обычно это 4х входовой LUT и один D триггер,
в таком случае я умудрялся на 512 таких ячейках разместить одно из:
1. контроллер физ и аудио уровня телефонии ISDN: приём и передача, только мью закон и линейный кодек импульсов HDB3 без ами.
2. первую стадию сжатия фото — косинусовое преобразование — два умножения фикс. матрицей 4х4, атмега могла видео слать в 5-10 фпс с упрощенным jpg сжатием
3. Z80 проц — память только внешняя, (часть функций не работала типа второго банка регистров и расширенных инструкций, забросил как хобби).
во всех случаях потребление ресурсов приближались к 90% а частота падала до 24-16 Мгц (фиттер не мог продублировать регистры для сокращения растояний, регистровый конвеер не влезал, были слишком сложные и длинные лог функции между регистрами), но этого было достаточно для ТЗ и задумок

(но хотя в части циклонов в одной ячейке уже два 6+ входовых LUT и четыре д триггера)
Sign up to leave a comment.

Articles