Altera usb blaster распиновка
Зачастую если в устройстве есть программируемая логика, присутствует и процессор/микроконтроллер.
В какой-то момент мне надоело разводить на платах разъем JTAG, он занимает много места на плате и по сути нужен только для разработки. В конечном устройстве он вообще без надобности.
Очень часто для проверки правильности реализации Verilog кода или вообще "посмотреть как сигнальчики бегают" я использую SignalTap II Logic Analyzer, штука удобная и наглядная, я думаю многие сразу узнают по изображению:
Но как же отлаживать само устройство и в частности программируемую логику без JTAG?
Я уж молчу о записи прошивок в CPLD на этапе производства.
А у нас есть микроконтроллер.
Возьмем к примеру микроконтроллер STM32F103RCT6 и реализуем в нем USB Byte Blaster. И возьмем CPLD EPM3064.
Разумеется я имею ввиду что микроконтроллер уже подключен к соответствующим выводам программируемой логики, например вот так:
USB Устройство начинается с дескриптора, опишем его:
Далее нам нужно прописать саму "начинку" Byte Blaster'a:
И в финале добавим обработчик в нашу программу. Можно это сделать конечно и в таймере, но для наглядности я добавил функцию обработки в main() в бесконечном цикле.
Собираем всё вместе и компилируем и прошиваем, используя вот такой игровой набор:
И подключаем наше устройство к USB.
И это же конечно ничего не значит. Потому что установка происходит только на основании дескриптора устройства, теперь проверим действительно ли это у нас "настоящий" Byte Blaster.
И запускаем JTAG Chain Debugger:
Работает. Можем писать CPLD прям на борту нашего устройства.
К слову сказать если подключить эту реализацию к FPGA, будет доступна запись в FPGA и SignalTap II. У меня всё.
Продолжаем осваивать FPGA Altera. В первой части я описал процесс установки программного обеспечения Altera Quartus под CentOS7. Теперь уже наконец попробуем что-то сделать «железное», например светодиодики позажигаем. Но прежде небольшое вступление.
Одним из направлений моей деятельности является преподавание в кружке робототехники в небольшом городке Беларуси. Окунувшись во всю эту кухню и поучаствовав в разных конкурсах не только как тренер команды, но и как судья, я пришел к выводу, что ардуино в частности и микроконтроллеры в целом не самая лучшая база для конкурсных роботов (про лего вообще молчу). Многие задачи эффективней решать на уровне голой электроники. Кроме того 90% процентов кружков и «школ» робототехники не дают даже базовых знаний именно электроники, сосредоточившись чисто на «обучении» программированию готовых конструкций. Но чисто электронные роботы (например незаслуженно забытые BEAM) заточены под конкретную задачу и изменение условий конкурса приведет к необходимости существенной перестройки робота, что не всегда возможно. Вот тут я и вспомнил про программируемую логику. В результате поиска информации о применении ПЛИС в обучении я наткнулся на блог Юрия Панчула YuriPanchul. Пользуясь случаем я хочу публично выразить ему свою благодарность. Благодаря ему наш кружок совершенно бесплатно получил плату TerasIC DE0-CV c Altera Cyclone V на борту.
Собственно эта и последующие публикации будут представлять собой реальный учебный материал, который мы реализовываем на кружке. И я буду благодарен за конструктивную критику и замечания, так как применение ПЛИС на кружках для школьников — нехоженая пока область.
Итак, начинаем. В этой публикации будут описаны первые шаги в Quartus, описание элементарной цифровой логики на языке Verilog и загрузка конфигурации в FPGA Altera Cyclone V. Работать мы будем с платой TerasIC DE0-CV, которая имеет на борту встроенный USB-Blaster. Так же затронем и вопрос «запуска» USB-Blaster под Linux.
Запускаем Quartus:
Выбираем «Create a New Project». Запускается диалог мастера создания проекта. Тут просто нажимаем Next.
А теперь нам надо выбрать рабочую директорию для проекта (не забываем про права доступа!). Придумываем название проекта:
На следующем шаге нам предлагают добавить в проект дополнительные файлы. На данном этапе нам это не нужно, но в будущем для облегчения работы стоит добавлять как минимум файл назначения выводов.
Здесь нам предлагают выбрать дополнительные инструменты. Мы пока оставляем все как есть и жмем Next.
Ну вот, мы выполнили первоначальные настройки и создали проект. Жмем Finish.
Теперь нам нужно создать файл, описывающий логику проекта. Заходим в меню File/New, появляется диалог в котором требуется выбрать тип файла. В принципе логику можно нарисовать в специальном графическом редакторе, но сейчас мы выбираем Verilog HDL File:
Файл создан, пишем текст нашей программы, описывающей элементы NO, AND, OR, XOR. В качестве входов используем, имеющиеся на плате переключатели (key*), а состояние выхода индицируем светодиодами (led*). Небольшая ремарка: производитель платы предлагает создать конфигурационный файл для входов-выходов в специальной программе, работающей только под Windows. Если пойти этим путем, то надо следить чтобы имена «проводов» и «регистров» в программе совпадали с таковыми в конфигурационном файле. Но мы сейчас будем делать все вручную, поэтому вольны выбрать любые имена.
Теперь сохраняем файл. Важный момент — для корректной работы необходимо, чтобы имя файла совпадало с именем модуля, описываемого в программе (В нашем примере basic_logic).
Теперь необходимо сделать ряд настроек для успешной компиляции проекта. Во-первых укажем, какой модуль у нас главный явным образом. Конкретно в этом проекте это не актуально, но для сложных проектов с множеством модулей этот шаг обязателен. Заходим в меню Project/Set As Top Level Entity. Готово. Далее надо сделать ряд настроек для конкретного кристалла. Выберем пункт меню Assignments/Device. Открывается диалог, в котором мы имеем возможность изменить тип кристалла (или проверить, что ранее мы его указали верно):
Теперь жмем кнопку Device and Pin Option и в открывшемся диалоге в первую очередь зададим состояние для неиспользуемых выводов. По умолчанию все неиспользуемые контакты микросхемы подключаются к нулю по питанию. Но мы не знаем, как эти выводы разведены физически на плате и такая конфигурация может привести к короткому замыканию и выходу из строя чипа. Поэтому безопасней неиспользуемые выводы сделать входами с высоким сопротивлением — As input tri-stated
Следующий необходимый шаг — указать, какие физические ножки микросхемы соответствуют входам и выходам описанного нами модуля. Для этого идем в меню Assignments/Assignment Editor. В открывшемся окне делаем нужные нам назначения согласно схеме нашей платы. В колонке To вписываем имя входа или выхода. В колонке Assignment Name выбираем из списка нужную нам настройку Location. В колонке Value вписываем название контакта микросхемы:
Закономерный вопрос: откуда берется название контактов? Обычно в даташите на плату или конкретную микросхему есть табличка PIN OUT. Так же, как я ранее писал, с платой может идти специальная программа, создающая конфигурационный файл. А сейчас вы можете воспользоваться этими данными:
Наконец-то можно нажать кнопочку Start Compilation!
Получаем 16 warnings. Ничего серьезного.
Можно посмотреть репорт:
Теперь подключаем плату и запускаем программу программатора: Tools/Programmer. Линукс автоматически подхватывает USB-Blaster, но прошивка не работает… Что же, открываем любимую консоль, вооружаемся бубном и погружаемся в документацию к Quartus…
Для начала убеждаемся, что система видит программатор:
Переходим в папку /etc/profile.d/ , где создаем файл custom.sh
Обзор программатора для ПЛИС фирмы Altera. Кому интересно — прощу под кат.
ПРЕДУПРЕЖДЕНИЕ: данный обзор написан для тех, кто «в теме». Если об электронике и ПЛИСах Вы имеете смутное представление, то, судя по комментариям, этот обзор будет врятли Вам полезен.
USB-Blaster — программатор, разработанный фирмой Altera для своих ПЛИС. Имеет три интерфейса программирования: JTAG, Active Serial и Passive Serial. Предназначен для программирования и отладки ПЛИС этой фирмы.
По просьбам привожу некоторые расшифровки:
— ПЛИС(FPGA или CPLD) — Программируемая логическая интегральная схема.
— Altera — американская компания, один из ведущих и крупнейших производителей ПЛИС
— Cyclone II — семейство FPGA этой фирмы.
— Altera Quartus II — САПР, разработанная Альтерой для проектирования и отладки своих ПЛИС.
— JTAG — грубо говоря, интерфейс для программирования и отладки сложных цифровых микросхем и устройств. На данный момент — промышленный стандарт.
— AS и PS — интерфейсы программирования последовательных конфигурационных ПЗУ.
Данный программатор покупался для и одновременно с Отладочной платой на кристалле Cyclone II( mysku.club/blog/aliexpress/12915.html )год назад. Надо сказать, что китайцы очень и очень приятно удивили своей ценой. Для сравнения: цена у оф. производителя — 300$, цена у стороннего производителя(Terasic) — 100$(сейчас уже 50$), цена в Питерском магазине Терраэлектроника — примерно 16000 рублей. В итоге экономия от 10 до 40 раз.
Данных по трекингу у меня уже нет, т.к. заказывал не я, но посылка дошла примерно за 25-30 дней.
Сделан он на четверочку — внешний вид сразу выдает китайскую подделку. Но мы ведь им не любоваться будем, а работать. И в плане работы он хорош. ПО Quartus II принял его как
Плюсы:
+ Цена
+ Цена
+ ЦЕНА!
+ Полная совместимость с оригинальным устройством. Прошивание и отладка через jtag работают отлично.
Минусы:
— «Китайский» внешний вид.
— Некорректно работает интерфейс AS, НО тут неизвестно кто виноват — USB-Blaster или моя отладочная плата.
Здесь уже начали разбирать ПЛИС, так что принимайте мой вклад.
USB-Blaster
(картинка не влезла по ширине, кликните и все увидите)
Все основано на PIC18F2550 (недавно автор создал еще одну версию программатора основанную на PIC18F14k50, можете попробовать собрать его). На схеме ничего сложного нет. СМД компоненты типоразмера 1206. На выходе стоят резисторные делители для согласования уровней до 3.3 В, конечно лучше поставить микросхему, к примеру SN74LVC2T45.
Программатор для PIC
С ПИКами я раньше не возился, и у меня возникли проблемы при прошивке контроллера. Здесь надо высоковольтный программатор. После долгих поисков подходящего простого и работающего программатора я где-то наткнулся на такое чудо
Транзистор любой n-p-n, у меня кт315.
Прошиваться через WinPic800 с немного измененными настройками одного программатора
Как программой пользоваться разберетесь, а вот про программатор расскажу.
МК прошивается уже в устройстве. К пятачкам на плате подпаиваем выводы программатора.
Еще надо блок питания на 12 В, я подключался к компьютерному, куда плюс питания на схеме видно, главное про землю не забыть. Во время прошивки будет питаться от USB.
Установка драйвера
После установки Квартуса можно приступать к установке драйверов (они в папке с программой).
Так об этом написано на сайте Альтеры
Driver Installation
1. Plug the USB-Blaster download cable into the PC. The Found New Hardware Wizard appears.
2. If you are prompted to answer a question about Windows XP Update, choose No, not this time and click Next.
3. Select Install from a list or specific location (Advanced) and click Next.
4. Select Don't search. I will choose the driver to install and click Next.
5. If you are prompted to Select a hardware type, keep the default selection Show All Devices, and click Next.
6. Select Altera USB-Blaster from the wizard list of hardware devices, then click Have Disk… If the device is not available in the list, click Have Disk… without selecting any device from the wizard list.
7. Click Browse… and browse to the \drivers\usb-blaster directory.
8. Choose the appropriate location or file using the following steps:
o All versions of Quartus II software (except versions 6.1 to 7.2):
1. Select the file usbblst.inf.
2. Click Open.
o Quartus II software versions 6.1 to 7.2:
1. Browse to the \x32 directory (Windows 2000/XP standard 32-bit) or \x64 directory (Windows XP 64-bit).
2. Click Open. The wizard automatically chooses the required file.
9. If the hardware Altera USB-Blaster appears in the Model list, select the device.
10. Click Next in the wizard.
11. Click Continue Anyway in the warning dialog box.
12. Click Finish.
13. To complete your installation, set up programming hardware in the Quartus II software
По-русски это выглядит так:
Нет, не в этот раз -> Установка из указанного места -> Не выполнять поиск. Я сам выберу нужный драйвер -> (выбираете “Altera USB-Blaster”) Установить с диска -> Обзор (выбираете \drivers\usb-blaster в папке с установленным Квартусом) -> Готово.
На программаторе должен засветиться светодиод.
Прошивка контроллера, печатная плата и схема
USB-Blaster.rar
Ждите описание того для чего он вам надо :)
UPD, некоторые неучтенные моменты
Здесь выведено питание на JTAG разъем, мне показалось удобным питать отладочную плату от программатора через USB — я так и сделал. В других программаторах на пин питания в разъеме подключено питание выходного каскада буфера (которого здесь нет) для привидения уровня сигналов JTAG к уровням на плате а плата питается отдельно. Стоит добавить джампер для отключения питания через JTAG.
Когда я пытался прошить еще один программатор, ПИК не хотел прошиваться, доходило до 15-20% и все. После увеличения питания высоковольтной части (на схеме 12В) до 12.5-13В все прошло гладко и без запинок.
Здесь уже начали разбирать ПЛИС, так что принимайте мой вклад.
USB-Blaster
(картинка не влезла по ширине, кликните и все увидите)
Все основано на PIC18F2550 (недавно автор создал еще одну версию программатора основанную на PIC18F14k50, можете попробовать собрать его). На схеме ничего сложного нет. СМД компоненты типоразмера 1206. На выходе стоят резисторные делители для согласования уровней до 3.3 В, конечно лучше поставить микросхему, к примеру SN74LVC2T45.
Программатор для PIC
С ПИКами я раньше не возился, и у меня возникли проблемы при прошивке контроллера. Здесь надо высоковольтный программатор. После долгих поисков подходящего простого и работающего программатора я где-то наткнулся на такое чудо
Транзистор любой n-p-n, у меня кт315.
Прошиваться через WinPic800 с немного измененными настройками одного программатора
Как программой пользоваться разберетесь, а вот про программатор расскажу.
МК прошивается уже в устройстве. К пятачкам на плате подпаиваем выводы программатора.
Еще надо блок питания на 12 В, я подключался к компьютерному, куда плюс питания на схеме видно, главное про землю не забыть. Во время прошивки будет питаться от USB.
Установка драйвера
После установки Квартуса можно приступать к установке драйверов (они в папке с программой).
Так об этом написано на сайте Альтеры
Driver Installation
1. Plug the USB-Blaster download cable into the PC. The Found New Hardware Wizard appears.
2. If you are prompted to answer a question about Windows XP Update, choose No, not this time and click Next.
3. Select Install from a list or specific location (Advanced) and click Next.
4. Select Don't search. I will choose the driver to install and click Next.
5. If you are prompted to Select a hardware type, keep the default selection Show All Devices, and click Next.
6. Select Altera USB-Blaster from the wizard list of hardware devices, then click Have Disk… If the device is not available in the list, click Have Disk… without selecting any device from the wizard list.
7. Click Browse… and browse to the \drivers\usb-blaster directory.
8. Choose the appropriate location or file using the following steps:
o All versions of Quartus II software (except versions 6.1 to 7.2):
1. Select the file usbblst.inf.
2. Click Open.
o Quartus II software versions 6.1 to 7.2:
1. Browse to the \x32 directory (Windows 2000/XP standard 32-bit) or \x64 directory (Windows XP 64-bit).
2. Click Open. The wizard automatically chooses the required file.
9. If the hardware Altera USB-Blaster appears in the Model list, select the device.
10. Click Next in the wizard.
11. Click Continue Anyway in the warning dialog box.
12. Click Finish.
13. To complete your installation, set up programming hardware in the Quartus II software
По-русски это выглядит так:
Нет, не в этот раз -> Установка из указанного места -> Не выполнять поиск. Я сам выберу нужный драйвер -> (выбираете “Altera USB-Blaster”) Установить с диска -> Обзор (выбираете \drivers\usb-blaster в папке с установленным Квартусом) -> Готово.
На программаторе должен засветиться светодиод.
Прошивка контроллера, печатная плата и схема
USB-Blaster.rar
Ждите описание того для чего он вам надо :)
UPD, некоторые неучтенные моменты
Здесь выведено питание на JTAG разъем, мне показалось удобным питать отладочную плату от программатора через USB — я так и сделал. В других программаторах на пин питания в разъеме подключено питание выходного каскада буфера (которого здесь нет) для привидения уровня сигналов JTAG к уровням на плате а плата питается отдельно. Стоит добавить джампер для отключения питания через JTAG.
Когда я пытался прошить еще один программатор, ПИК не хотел прошиваться, доходило до 15-20% и все. После увеличения питания высоковольтной части (на схеме 12В) до 12.5-13В все прошло гладко и без запинок.
Читайте также: