Использование Произвольных Dataflash 25 Серии Вместо Дорогих Конфигураторов Fpga Altera Без Дополнительного Оборудования.

Из любого описания популярных ПЛИС известно, что для хранения их конфигураций используются специальные микросхемы — конфигураторы.

В комментариях меня поправили, что потихоньку набирают популярность и ПЛИС, где этого не требуется, но пока многие разрабатывают на классике, где нужен конфигуратор, и это надо учитывать.

Например, Altera Cyclone использует чипы EPCS. Ниже представлена схема типичной макетной платы с кристаллом семейства Cyclone IV. На нем мы видим конфигуратор EPCS16. Все бы ничего, но традиционно эти конфигураторы довольно дорогие, поэтому хотелось бы использовать что-нибудь подешевле.

Подробности в подробном тексте ниже.

Если вам очень интересно, но лень читать столько писем, то можно упростить задачу, посмотрев подробное 20-минутное видео.

Итак, вернемся к нашей проблеме.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Если мы повернём в руках ту же макетную плату с кристаллом семейства Cyclone IV, то увидим очень удивительную вещь.

Вот она, ПЛИСина, а вот ПЗУ конфигурации:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Как ни странно, это не EPCS, а обычная 25-я флешка.

Такие флешки стоят дешево и продаются довольно много.

Но, как говорится, не все йогурты одинаково полезны.

В частности, наши клиенты были рады купить подобные флешки, припаять их к плате и получить глобальную проблему.

Заходим в программатор, загружаем подготовленный к прошивке файл, начинаем прошивать и получаем ошибку:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Вот сообщение об ошибке:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Ошибка (209025): Невозможно распознать идентификатор кремния для устройства 1. Идентификатор кремния устройства отличается от его идентификатора JTAG. Убедитесь, что все кабели надежно подключены, выберите другое устройство или проверьте питание целевой системы.

Убедитесь, что контакты устройства подключены и настроены правильно.

Идентификатор устройства не распознан.

То есть флешка имеет неизвестный с точки зрения кварта идентификатор.

В частности, мы приобрели у наших клиентов кристаллы 25П32, которые вообще не поддерживаются в принципе, но в жизни может быть и более приземленная ситуация.

В частности, на фото выше припаяна флешка от ST, и она определяется как МИКРОН.

Китайские продавцы могут маркировать что-то другое, но когда партия куплена и не работает, что можно сделать? Я зашёл на форумы.

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

Но в нашем случае покупать новую партию никто не захотел.

В англоязычных источниках нам удалось найти только одну статью с решением, но в современной среде Quartus Prime это решение не будет работать «в лоб».

Поэтому мы взялись задокументировать эту проблему для современной среды, на русском языке и в видеоформате.

Итак, как вообще программируется шина ПЗУ? В ПЛИС добавлена специальная конфигурация, позволяющая получить доступ к флешке через JTAG. А затем, используя эту конфигурацию, мы загружаем данные.

Получается, что мы можем сделать подобную конфигурацию, которая даст нам доступ к флешке и позволит прошивать ее независимо от ID, и нам не придется писать ни строчки собственного кода, и все утилиты будут использоваться из пакета Quartus Prime (или Qiartus II, который использует более старые версии среды разработки).

То есть нам предстоит сделать 3 шага: Сделайте конфигурацию, которая доходит до флешки.

Напишите файл, описывающий флешку.

Шить.

Давай сделаем это.

Начнем с разработки собственной «прошивки» (она же конфигурации), не написав ни строчки нашего кода.

Заходим в Квартус:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Создадим новый проект:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Назовем его, скажем, флешером:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Это имя следует запомнить — оно нам понадобится позже.

Создадим пустой проект, моя семья — Cyclone IV E, кристалл, используемый в проекте, такой:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Так.

Когда мы закончим создание проекта, нажмите «Готово».

Проект создан.

Как уже говорилось, мы не пишем ни строчки собственного кода.

Но вам все равно нужно заставить среду что-то сделать.

Для этого заходим в Инструменты – Конструктор платформ.

Вот оно загружено.

Конкретно у меня в этой плате кварц 60 Гц, поэтому подкорректирую настройки частоты:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

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

То есть, если выпускается какая-то плата, то для нее этот загрузчик подойдет для любого проекта.

Кварц я подготовил – теперь устанавливаем процессор.

В библиотеке слева находим «Процессоры и периферия», «Встроенные процессоры» и далее — Процессор Nios II:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Выберите его и нажмите «Добавить».

В открывшемся окне в свойствах выберите Nios II/e, потому что он абсолютно бесплатен и не требует никакой лицензии.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Ошибки говорят нам, что векторы не настроены.

Мы не будем ничего программировать для этого процессора.

Поэтому просто направляем векторы в первую доступную локацию из списка:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Нам очень важно, чтобы в процессоре был работающий JTAG-модуль:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

После наших манипуляций ошибки ушли.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Процессор готов.

Нажмите «Готово» и идите дальше.

Теперь переходим к основным функциям.

Здесь есть конфигураторы:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Раскрываем список конфигураторов - ближе к концу находим EPCS - наши конфигураторы:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Оставляем все по умолчанию:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Теперь начинаем их соединять.

Мы передаем тактовые сигналы обоим модулям и передаем сигнал сброса обоим модулям.

Мы также передаем сигнал сброса, поступающий от оборудования JTAG — debug_reset_request — на оба модуля.

Затем мы передаем data_master обоим модулям.

Инструкция_master передается только отладчику.

И еще пропускаем запрос на прерывание:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Далее переходим к внешним ножкам – внешним.

Ээкспортируйте их, дважды щелкнув поле «Двойной щелчок для экспорта»:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Для простоты я назову его epcs, чтобы длина была короче:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Теперь обычным движением руки назначаем базовые адреса:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

И назначаем прерывания:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Автоматически присвоенный адрес нашему флеш-контроллеру — 0x800 — следует запомнить:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Оно нам еще понадобится.

А все остальное в принципе сделано и будет работать.

Сейчас это очень важно, так как мы не собираемся писать ни строчки нашего кода, чтобы имя процессорной системы совпадало с названием проекта.

Наш проект был флешером.

Сохраняем систему, называем ее флешером:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Именно тогда наш топовый модуль будет иметь именно этот процессор, и поэтому нам ничего делать не придется.

Наш следующий шаг:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Оставляем все по умолчанию, потому что просто используем то, что уже готово:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Давайте закончим:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Появилось сообщение о том, что нужно не забыть добавить файл в проект:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Давайте добавим.

Перейдите в «Проект» — «Добавить/удалить файлы в проекте»:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Находим наш файл на компьютере.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Вот он, наш файл-прошивальщик с расширением qsys.

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Добавил это:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Теперь давайте сделаем приблизительную компиляцию:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Оно закончилось успешно.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Теперь, когда оно прошло, можно дать выводы.

Перейдите в Планировщик пинов:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Ножки JTAG нам назначать не надо — назначаем ножки флешки.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Для каждой микросхемы, для каждого случая они разные.

В принципе, можно посмотреть документацию к микросхеме или вашей плате.

Например, вот двенадцатая нога DCLK:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Я уже подготовил список — мы просто пройдемся по нему.

Итак, epcs_data0, LOCATION: PIN13, epcs_dclk – PIN12, epcs_sce – PIN8, epcs_sdo – PIN6. А конкретно на платах наших клиентов тактовая частота — PIN24, reset_n — PIN88.

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Ноги были назначены.

Приступим к компиляции.

Ошибки даны:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Все потому, что я сделал вид, что забыл сделать очень важную настройку.

Теперь мы подключили флешку к сервисным линиям.

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

Поэтому нам выдали сообщения о том, что у нас конфликт:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Чтобы это исправить, перейдите в «Назначения» — «Устройство»:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Варианты устройства и контактов:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Здесь мы выбираем контакты двойного назначения.

И в конце программирования мы просим вас сделать все эти строки обычными строками ввода-вывода:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Нажмите «ОК» и запустите компилятор.

И все получилось.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Итак, первый шаг завершен.

У нас есть конфигурация, через которую мы можем получить доступ к флешке.

Теперь наша задача сделать файл, с помощью которого система распознает нашу флешку.

Перейдем ко всем программам, Intel FPGA (для старых версий это будет Altera), Nios II Command Shell.

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Вот мы и заходим в каталог, где мы только что все собрали.

При этом не забываем, что слеши здесь должны быть не обратными, а прямыми, и что полученный файл flasher.sof находится в каталоге output_files:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Теперь начинаем произносить магические заклинания.

Итак, нам необходимо влить вновь сформированную конфигурацию.

Для этого пишем: nios2-configure-sof flasher.sof и нажмите Enter:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Файл загрузился – теперь у нас есть доступ к флешке.

Для того, чтобы определить все, что касается доступа к флешке, нам необходимо запустить следующую программу: nios2-flash-программист --epcs --base=0x800--debug. где 0x800 — тот самый адрес, который был автоматически присвоен блоку epcs и который нужно было запомнить.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Нажмите Ввод:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Что он нам сказал? Он пытался исследовать местность, которую мы назвали.

И по смещению 0 по адресу 800 я ничего не нашел.

По адресу с00 он нашел то, что нам нужно:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Теперь мы запоминаем не просто базовый адрес 800, а конкретный адрес с00 — в дальнейшем будем работать с ним.

Он нашел флешку, ее идентификатор 202016, но сказал, что понятия не имеет, что с ней делать, потому что не знает ее.

Вот документация к нашей флешке:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Ее полный идентификатор — 202016 — именно это она возвращает в ответ на команду, запрашивающую ее код. Значит всё правильно - правильная флешка нашлась.

Он нам говорит, что должен быть файл с разделом EPCS-202016. Удивительный.

Редактировать – Марк.

Выберите ее имя и скопируйте его в буфер обмена.



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Создайте файл ovr.txt и раздел с именем, которое вы только что скопировали:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

В документации к нашей флешке в разделе Карта памяти мы видим, что она состоит из 64 секторов.

Размер каждого сектора составляет 64 КБ (от 0000 до FFFF).



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Итак, файл конфигурации, который мы только что создали, должен выглядеть так:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

64 сектора по 64 КБ или 65536 байт каждый.

Второй шаг готов.

У нас есть файлы flasher.sof и ovr.txt, в которых содержится конфигурация флешки.

Перейдем к третьему шагу.

Напомню, что рабочим проектом был USB16_my. А файл для прошивки назывался Test1.sof. Копируем в него flasher.sof и ovr.txt. Сейчас мы завершили все подготовительные этапы – приступаем к непосредственным боевым действиям.

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



Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Первое, что нам нужно сделать, это сгенерировать выходной файл.

Потому что файл sof в ПЗУ не записывается - записывается немного другой файл.

Для его формирования пишем:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Полученный файл — Test1.flash:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Теперь чисто формально пришла очередь действий, которые должны совершить сборщики досок.

Прежде всего, они должны скачать наш прошивальщик таким же образом, а именно:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

После чего должны прошить ПЗУ:

Использование произвольных DataFlash 25 серии вместо дорогих конфигураторов FPGA Altera без дополнительного оборудования.
</p><p>

Собственно, это все.

Проблема решена, флешка прошита - можно пользоваться, хотя в основном пути говорилось о несовпадении ID номеров.

И совершенно не нужно покупать дорогие конфигураторы или искать, у какого поставщика есть 25-е флешки с совместимыми идентификаторами.

Подготовили «прошивальщик» под нашу конкретную плату (и любые другие, где такой же кристалл и Reset с генератором подключены к одному и тому же пину), подготовили текстовый файл для конфигуратора, а затем залили «прошивку» с помощью утилит, входящих в комплект поставки стандартной среды Quartus Prime (они также шли в комплекте со средой Quartus II).

Теги: #plis #FPGA #plis #fgpa #FPGA

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.