Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Altera MAX® 10 FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Страницы: 1, 2
lesha73
Цитата(Stewart Little @ Nov 20 2014, 12:53) *
Блин, ну опять за рыбу деньги...

т.е. развести выводы так, чтобы i2c слайвам не мешать, а UART не важно.
Блин... пока не углубляясь в детали... КРАСИВО! Спасибо за идею!

Цитата
...говорит о некорректном лечении квартуса.

Выходит, что да. Лечилка январская для 14 с фтп. Тогда MAX 10 был только в проекте.
Использую Subscription.

Цитата
...бета-версии v14.1 все компилируется и работает...

Её как-то можно с сайта скачать на свой страх и риск? Беглый поиск не дал результатов. Хотя в лечилку опять упрется.
Stewart Little
Цитата(lesha73 @ Nov 20 2014, 14:31) *
Выходит, что да. Лечилка январская для 14 с фтп. Тогда MAX 10 был только в проекте. Использую Subscription.

Отписал в почту.

Цитата
Её как-то можно с сайта скачать на свой страх и риск? Беглый поиск не дал результатов. Хотя в лечилку опять упрется.

Для этого нужно быть "персоной, приближенной к императору" sm.gif
Alexey_Rostov
Думаю заказать.
Подскажите есть ли проблемы с лицензией для Квартуса? Необходимо поработать с ядрами АЦП?
Stewart Little
Цитата(farbius @ Nov 26 2014, 20:34) *
Думаю заказать.
Подскажите есть ли проблемы с лицензией для Квартуса? Необходимо поработать с ядрами АЦП?

Проблем с лицензиями нет sm.gif
Но нужно ту версию квартуса использовать, которая MAX10 поддерживает - как минимум v14.0 Update2.
Блок АЦП не нуждается в лицензировании.
Alexey_Rostov
Цитата(Stewart Little @ Nov 27 2014, 00:58) *
Проблем с лицензиями нет sm.gif
Но нужно ту версию квартуса использовать, которая MAX10 поддерживает - как минимум v14.0 Update2.
Блок АЦП не нуждается в лицензировании.


благодарю за ответ. как с кряком быть не подскажите? laughing.gif
Stewart Little
Цитата(farbius @ Nov 27 2014, 22:49) *
благодарю за ответ. как с кряком быть не подскажите? laughing.gif
Пишите в личку.
lesha73
Цитата(Stewart Little)
NiosII Gen2/fast работает как часы, правда из ОЗУ.
Катастрофически мало документации sad.gif

И у меня работает если "Run As" -> "Nios II hardware".

Цитата(Stewart Little)
Проверил два варианта:
1. проект, где сермент кода расположен в On-Chip RAM, которая при включении питания (или перезаргузке) инициализируется из On-Chip Flash - работает.

Я понимаю, что первым делом нужно sof2flash запустить, но у меня для MAX 10 пишет "sof2flash: Unrecognized device family in SOF." Quartus 14.0.
Как Вы этого добились? Ткните, плиз, на ниточку.
Stewart Little
Цитата(lesha73 @ Nov 28 2014, 11:41) *
Я понимаю, что первым делом нужно sof2flash запустить, но у меня для MAX 10 пишет "sof2flash: Unrecognized device family in SOF." Quartus 14.0.
Как Вы этого добились? Ткните, плиз, на ниточку.

Нет, sof2flash запускать не надо.
Нужно правильно установить режим конфигурирования MAX10 в Qsys'e и в квартусе - они должны совпадать.
И в Qsys'е правильно настроить вектора в ниосовском модуле и режим флэша в On-Chip Flash.
Ну и добавить mem_init'овский qip в квартусовский проект.

Если все сделано правильно, то при компиляции в квартусе автоматом получится все, что нужно. Преобразуем sof в pof (не забывает watchdog отключить), прошиваем pof (долго шьется, зараза) и вперед, по бездорожью и разгильдяйству sm.gif
Stewart Little
Итак, вскрытие показало sm.gif :
встроенный АЦП вполне себе работает. Правда, замечена ошибка в значениях адресов регистра разрешения прерываний и регистра статуса блока Sample Storage - адреса этих регистров перепутаны друг с другом. Где именно ошибка - в хендбуке или в bsp, я пока до конца не разобрался. sm.gif
Но похоже, что все-таки в хендбуке.

Еще замечание по поводу отладочной платы. Там сигналы на входы АЦП заводятся с операционников.
Но на плате стоят операционники LM2902, которые выдают максимум 1,95 Вольта. Что, при VREF = 2,5 Вольта, явно будет маловато. sad.gif
Надо бы попробовать найти пин-ту-пин совместимые ОУ, которые могли бы выдать уровень побольше, да и перелудить их на эту плату...
SM
Цитата(Stewart Little @ Dec 8 2014, 19:43) *
LM2902, которые выдают максимум 1,95 Вольта.


LM2902, если мне память не изменяет, это индустриальная LM324. А значит, таких пин-ту-пин операционников пруд пруди. Первым, который "пошел, купил", в голову приходит OPA4348 (вопрос в нюансах - буковках, обозначающих корпус). Если питание там ниже 6 вольт (а, судя по цифре 1.95, там 3.3 питание), то замена адекватная.
Stewart Little
Цитата(SM @ Dec 8 2014, 20:13) *
Первым, который "пошел, купил", в голову приходит OPA4348 (вопрос в нюансах - буковках, обозначающих корпус). Если питание там ниже 6 вольт (а, судя по цифре 1.95, там 3.3 питание), то замена адекватная.

Да я тут в ближайшем лабазе нашел MCP6244-E/SL микрочиповские. Вроде то, что надо.
SM
Цитата(Stewart Little @ Dec 9 2014, 12:44) *
Вроде то, что надо.

Только полоса вдвое поуже. Если это не важно, то покатит.
Stewart Little
Продолжение разборок с АЦП - работа по прерываниям.
Замечен баг в бета-верии, при работе генератора bsp. Идентификатор прерывания от AЦП в system.h всегда создается со значением -1:
Код
#define ADC_SAMPLE_STORE_CSR_IRQ -1
#define ADC_SAMPLE_STORE_CSR_IRQ_INTERRUPT_CONTROLLER_ID -1
Т.е. получается, что независимо от настроек Qsys'а, прерывания от АЦП как бы не используются. Ну и, соответственно регистрация обработчика прерывания от АЦП не выполняется.
Работа с АЦП по прерываниям становится возможной только после рукопашной правки system.h (в соответствии с кусисовскими установками).

Надеюсь, что в "боевой" v14.1 этот баг будет исправлен.
Kapsik
Добрый день! Может кто подскажет по работе с ADC. Создал IP ядро на QSYS с этим все вроде понятно. А надо ли, квартусу как то сообщаться, что на пины АЦП подается аналоговый сигнал? Или в квартусе это никак не оговаривается, а создание ядра подразумевает, что ножки стали входами АЦП?
Stewart Little
Цитата(Kapsik @ May 8 2015, 13:43) *
Добрый день! Может кто подскажет по работе с ADC. Создал IP ядро на QSYS с этим все вроде понятно. А надо ли, квартусу как то сообщаться, что на пины АЦП подается аналоговый сигнал? Или в квартусе это никак не оговаривается, а создание ядра подразумевает, что ножки стали входами АЦП?

Нет, входы АЦП в квартусе специально назначать не надо. Все назначения для АЦП делаются в Qsys'е.
Kapsik
Цитата(Stewart Little @ May 8 2015, 14:02) *
Нет, входы АЦП в квартусе специально назначать не надо. Все назначения для АЦП делаются в Qsys'е.

Спасибо за ответ. Подскажите, там есть какие нибудь тонкости? Я для пробы подключил IP ядро АЦП просто к такту. Сгенерился код, я планирую в соответствии с временной диаграммой посылать "комманд" и получать "респонс" с информацией. Все так? Меня смущает, что никак не оговорено, что ножки плисины являются входами АЦП...
Нажмите для просмотра прикрепленного файлаьНажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
Stewart Little
Цитата(Kapsik @ May 8 2015, 14:25) *
Я для пробы подключил IP ядро АЦП просто к такту.

Так, скорее всего, работать не будет. Для тактирования АЦП нужен PLL, и настройки секвенсора должны соответствовать настройкам PLL.
Сделайте сперва все по инструкции, чтобы заработало. А уж потом за всякие эксперименты принимайтесь. smile3046.gif

Цитата(Kapsik @ May 8 2015, 14:25) *
Меня смущает, что никак не оговорено, что ножки плисины являются входами АЦП...

Все, что нужно - где нужно оговорено sm.gif
goodsoul
Цитата(Kapsik @ May 8 2015, 14:25) *
Спасибо за ответ. Подскажите, там есть какие нибудь тонкости? Я для пробы подключил IP ядро АЦП просто к такту. Сгенерился код, я планирую в соответствии с временной диаграммой посылать "комманд" и получать "респонс" с информацией. Все так? Меня смущает, что никак не оговорено, что ножки плисины являются входами АЦП...


IMHO, быстрее всего понять что к чему можно с помощью готовых примеров: https://cloud.altera.com/devstore/
Регистрируйтесь и берите готовые проекты для конкретных плат. Примеров много, и по АЦП, и по NIOS II и по другим тематикам.
Kapsik
Спасибо за помощь, с ацп стало понятно.
Теперь другая напасть. Подключаю DDR3, Quartus начинает ругаться на распиновку.
Чип - 10M50DAF484I
Сначала запускаю скрипт pin_assignments.tcl и на основании его провожу распиновку. Далее запускаю компиляцию и получаю ошибку в фиттинге.

Прикрепляю скин из пин пленера, где Quartus сам заполнил Fitter Location и скрин ошибки.

Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Kapsik
Добрый день! В версии Quartus 14.0 для MAX10 не поддерживается PowerPlay Power Analyzer . В следующих версиях уже пофиксили? У меня такой ошибки нет, но "PowerPlay Power Analyzer" абсолютно не активен, все серое и некликабельно, тоже и в настройках.
Весь фикс состоит в том, что теперь ошибка не мозолит глаза или можно нормально пользоваться инструментом, просто я что-то не доглядел в настройках?
Кто нибудь оценивал потребление в MAX10?
Использую Quartus II 14.1 (64-bit)
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
sonycman
Можно спросить совета, уважаемые?

Интересует нагрузочная способность пинов IO выходов MAX10.
В документе MAX 10 General Purpose I_O User Guide касательно 3.3 вольтовых стандартов, особенно LVCMOS, какая-то шляпа:


max10_current_strength.png

Ток всего 2 миллиампера - но почему так мало?
LVTTL не многим лучше - даже до 16 ма не дотягивает sad.gif

Насколько я понимаю - это не ошибка, и 3.3 вольтовые драйвера очень слабые?

Встроенный осциллятор тоже расстроил - генерирует частоту в диапазоне 55-116 МГц, без возможности выбрать более точное значение.
Понадеялся, что будет не хуже MachXO2 с точностью 5% и широким диапазоном...
des00
Цитата(sonycman @ Oct 16 2015, 21:19) *
Насколько я понимаю - это не ошибка, и 3.3 вольтовые драйвера очень слабые?

не ошибка

Цитата
Понадеялся, что будет не хуже MachXO2 с точностью 5% и широким диапазоном...

берите макхо
EvgenyNik
Цитата(sonycman @ Oct 16 2015, 17:19) *
Ток всего 2 миллиампера - но почему так мало? LVTTL не многим лучше - даже до 16 ма не дотягивает sad.gif
Насколько я понимаю - это не ошибка, и 3.3 вольтовые драйвера очень слабые?
Первая мысль, которая возникла - ограничивают мощность на выходе (потому и на более низком TTL ток можно развить выше). Но величина 16мА уже на 3.0В указывает, что дело не просто в ограничении мощности.
Вероятно, дело в том, что последние поколения ПЛИС всё хуже и хуже справляются с перенапряжением (пусть и кратковременным) на выводах. И чтобы не создавать перенапряжения при коммутациях в области уровней, близких к критическим, ток там ограничивается.
Как-то убил Циклон, вогнав в резонанс RLC-нагрузку на выходе 24МГц. На живом другом глянул - примерно 6В в амлитуде от выхода 3.3! Снизил ток в порядке эксперимента - помогло.
А вообще, от силового применения выходных каскадов ПЛИС надо уходить.
Цитата
Встроенный осциллятор тоже расстроил - генерирует частоту в диапазоне 55-116 МГц, без возможности выбрать более точное значение.
У MAXII/V тоже разброс был неслабый 3.33-5.66МГц. Для простых вещей хватает. Кстати, если есть некий внешний периодический низкочастотный сигнал, то при расположенности к искусственным трудностям sm.gif, можно заделать цифровую подстройку, потратив десятков 5-7 логических ячеек.
sonycman
des00
Понятно, спасибо!

EvgenyNik
Цитата
А вообще, от силового применения выходных каскадов ПЛИС надо уходить

Похоже на то. Хотелось бы, конечно, сэкономить на лишних корпусах...

Можно ещё один вопрос специалистам?
Я с ПЛИС только начал знакомиться, поэтому сильно не бейте за некоторый офтоп.

По поводу начальной инициализации данных модулей.
Синтезируется ли подобное:
Код
reg [7:0] data;
reg [3:0] code = 4'd14;

initial
begin
data = 8'd10;
end


То есть будут ли начальные значения присвоены регистрам после инициализации ПЛИС?
Для семейств MAX10 или лэттисовских MachXO2.

Или использовать для инициализации сигнал сброса res_n?
Leka
В Квартусе "reg[7:0]data=10;" синтезируется.
Подобных вопросов на начальном этапе очень много возникает, быстрее задавать такие вопросы Квартусу, и получать ответ в картинках (Viewer после синтеза) - сразу видно, как синтезируется та или иная конструкция.
alevnew
Цитата(sonycman @ Oct 19 2015, 15:26) *
По поводу начальной инициализации данных модулей.
Синтезируется ли подобное:

В квартусе в Analysis & Syntesis settings, кнопка "More settings", в списке есть опция "Ignore verilog initial constructs".
По умолчанию off.
Цитата
Instructs Analysis & Synthesis to ignore initial constructs and variable declaration assignments in your Verilog HDL design files. By default, Analysis & Synthesis derives power-up conditions for your design by elaborating these constructs.
EvgenyNik
У MAX 10 есть на борту PLL. У него есть выход Locked. Даже если Вам "услуги" PLL не нужны, то можно завести клок на него только ради этого сигнала, чтобы обеспечить начальный сброс регистров в исходное положение стандартными средствами (подобие ресета).
Не факт, что в дальнейшей поддержке не придётся в угоду фиттеру играться с настройками компилятора. Обнаружите, к примеру, что с галочкой Ignore initial проект весит меньше, обрадуетесь. И только когда-нибудь где-нибудь вылезет некорретная работа.
Leka
У меня так: *.qsf считается исходником, в который Квартусу вписывать что-либо свое запрещено (как, например, в *.v).
Поэтому простановка галочек действует только в текущем сеансе GUI (обычно Квартус вызывается в консольном режиме, в нем *.qsf не "портится").
sonycman
Leka
alevnew
Ясно, буду знать, спасибо! cheers.gif

Цитата(EvgenyNik @ Oct 20 2015, 10:27) *
У MAX 10 есть на борту PLL. У него есть выход Locked. Даже если Вам "услуги" PLL не нужны, то можно завести клок на него только ради этого сигнала, чтобы обеспечить начальный сброс регистров в исходное положение стандартными средствами (подобие ресета).

В смысле - у MAX10 разве нет внутреннего сигнала глобального сброса после подачи питания, подобия GSR в MachXO?
Такая фишка, казалось бы, должна быть у всех кристаллов...
Golikov A.
иногда хорошо иметь сброс когда клок уже стабильный
sonycman
Играюсь с платкой Bemicro MAX10.
Там установлена 10M08DAF484C8GES.

Питание портов выставил как 3.3в, со стабилизатора поступает 3.27в.

Выводы, не задействованные в прошивке, установлены как входа с weak pull-up.

Меряю на них уровень вольтметром - около 3.1 вольт.
Дотрагиваешься пальцем - проседает ещё на 50 милливольт...
Почему такое проседание? wacko.gif

По даташиту сопротивление пуллапов должно быть в диапазоне от 7 до 34 кОм.
Но по факту такое ощущение, что оно на порядок больше.
Stewart Little
Цитата(sonycman @ Dec 26 2015, 18:39) *
Почему такое проседание? wacko.gif

AN 447: Interfacing Altera Devices with 3.3/3.0/2.5 V LVTTL/LVCMOS I/O Systems
sonycman
И?
Не увидел в этом документе объяснения... rolleyes.gif

Понял только, что Альтера сильно заморачивается с овершотами и у MAX10 дохлые драйверы на 3.3 вольта.
Так ещё и пуллапы такие же, видимо...
Corner
Цитата(zombi @ Jul 11 2014, 12:06) *
А мне после MAX II очень даже понравилось. И PLL уже внутри.
Жаль только что TQFP всего один на 144 ноги (

Драйверы дохлые почти у всех в cmos режиме. Ведь надо обеспечивать ток при просадке в сотни миллиВольт. ТТЛ допускает почти Вольт просадку, поэтому там ток указан больше. Реально, на КЗ ток достигает десятков миллиАмпер.
Подтяжка у мах10 около 100 к. В чем смысл не спрашивайте, но биполярник такой подтяжкой не прокачивается.
alexunder
Добрый день.

Вот и я вступаю в ряды пользователей MAX10, купил самую простую платку от Альтеры MAX 10 FPGA 10M08 Evaluation Kit. Правильно ли я понимаю, что для работы с MAX10 нужен Квартус не ниже 14 Update2?
Зарегистрировался на сайте Альтеры, но почему-то письмо для подтверждения уже несколько часов не приходит на мой gmail адрес (впервые с этим сталкиваюсь), неужели они вручную каждый рег проверяют, а потом высылают письмо?
sonycman
Цитата(Corner @ Dec 27 2015, 15:46) *
Драйверы дохлые почти у всех в cmos режиме. Ведь надо обеспечивать ток при просадке в сотни миллиВольт. ТТЛ допускает почти Вольт просадку, поэтому там ток указан больше. Реально, на КЗ ток достигает десятков миллиАмпер.

Заметьте, что уже начиная с 3.0 вольт и ниже драйвера там преображаются и токи до 16 ма для них уже не проблема, TTL это или CMOS.

Цитата
Подтяжка у мах10 около 100 к. В чем смысл не спрашивайте, но биполярник такой подтяжкой не прокачивается.

А пишут, что типичное значение - 25 кОм.
Тоже показалось, что сильно больше.

alexunder
Приветствую.

А что последний квартус ставить не хотите?

По поводу регистрации - у меня без задержек всё было.
Но сайт с документацией у Альтеры всё же какой-то багнутый - браузеры виснут частенько при попытке редиректа на их доки из квартуса...
sonycman
Продолжаю копаться с Max10 и Nios.

Заглянул в первый раз SignalTap'ом на шину AvalonMM, и с удивлением обнаружил, что обращение к On-Chip памяти (без кешей) занимает 5 тактов.
То есть довольно медленно, а я почему то думал, что он-чип автоматически подразумевает однотактовый доступ... sad.gif

Включил кеш инструкций - стало лучше. Может быть, тогда проще выделить для кода tight-coupled memory?

Ещё показалось, что обращение к Avalon Memory-Mapped Slave в режиме чтения (чтение процессором периферийного слейва) идёт тоже довольно долго - около тех же 5-ти циклов.
Это при том, что у слейва read latency установлена в ноль в настройках QSys, и линия waitrequest не активируется.
Запись при этом идёт гораздо быстрее.

Интересно, а кто нибудь пробовал исполнять код прямо с флеши Max10?
Если включить флэш акселератор или кэш - то со скоростью выборки будет всё нормально?
des00
Цитата(sonycman @ Jan 17 2016, 06:51) *
Ещё показалось, что обращение к Avalon Memory-Mapped Slave в режиме чтения (чтение процессором периферийного слейва) идёт тоже довольно долго - около тех же 5-ти циклов.
Это при том, что у слейва read latency установлена в ноль в настройках QSys, и линия waitrequest не активируется.
Запись при этом идёт гораздо быстрее.

Это же очевидно sm.gif
sonycman
Цитата(des00 @ Jan 17 2016, 07:25) *
Это же очевидно sm.gif

При том, что чтение на слейве идёт за два такта - первый такт выставление READ, второй - непосредственно чтение готовых данных:
Нажмите для просмотра прикрепленного файла
А остальные три такта для чего? blink.gif
des00
Цитата(sonycman @ Jan 17 2016, 14:39) *
При том, что чтение на слейве идёт за два такта - первый такт выставление READ, второй - непосредственно чтение готовых данных:
Нажмите для просмотра прикрепленного файла
А остальные три такта для чего? blink.gif

Вангую :
Арбитраж шины - 1 такт
Мультиплексор чтения - 1 такт
Остановка конвейера NIOS - 1 такт.

Хотя по идее остановка конвейера может и 2 такта занять.
sonycman
Цитата(des00 @ Jan 18 2016, 06:55) *
Вангую :
Арбитраж шины - 1 такт
Мультиплексор чтения - 1 такт
Остановка конвейера NIOS - 1 такт.

Хотя по идее остановка конвейера может и 2 такта занять.

Понятно sm.gif

Картина грустноватая.

А запись идёт за два такта.
alexunder
Цитата(sonycman @ Dec 28 2015, 00:55) *
alexunder
Приветствую.

Спасибо.
Регистрация прошла через день. Забрал Квартус 15 из закромов, купил шнурок altera usb blaster за 15 евро - судя по всему, копия оригинального, но пока еще не потестил.
sonycman
Есть небольшой модуль на верилоге с массивом из 48 байт двух портовой памяти.
В MAX10 этот модуль занимает 600 LE, а в Lattice Machxo2 около 200.

Это такая разница из-за разной архитектуры ПЛИС?
Потому, что в Максе память набирается на логике?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.