BSACPLD 9 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба Just now, Sverlo1 said: FPGA MAX10 10M02 Маловата ПЛИС для AVR ядра. Я пробовал обрезать свой AVR по системе команд, но в MAX 10 меньше 2195 LUT на ядро не получалось. Вам лучше посмотреть в сторону risc16f84. https://github.com/freecores/risc16f84 Он намного меньше AVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sverlo1 0 14 ноября, 2020 Опубликовано 14 ноября, 2020 (изменено) · Жалоба >> Маловата ПЛИС для AVR ядра. >> Я пробовал обрезать свой AVR по системе команд, но в MAX 10 меньше 2195 LUT на ядро не получалось. Значит готовая плата M02mini не пойдёт... :( >> Вам лучше посмотреть в сторону risc16f84. Другая архитектура. Наработанное не используешь. 10M02DCV36C8G $1.70 SRAM 10K EPROM 10K www.fpgamall.com/altera/10M02DCV36C8G И это великолепное соотношение. Было бы. Тогда придётся делать свою плату под: 10M04SCE144C8G $6.86 SRAM 20K EPROM 124K куда 2195 LUT влезет запросто и без обрезаний (наверное). Пошёл рисовать плату под QFP144. Большое спасибо Вам за чёткий расклад! :) Вот шкала цен на серию MAX10, и я "прикинул" что туда влезет. Изменено 14 ноября, 2020 пользователем Sverlo1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба 1 hour ago, Sverlo1 said: Пошёл рисовать плату под QFP144. Вот шкала цен на серию MAX10, и я "прикинул" что туда влезет. А что мешает взять и скомпилировать тестовый проект перед тем, как бросаться проектировать плату? И удостовериться, что не только нужное вам ядро, но и нужная вам _периферия_ влезет туда? Как дети, ей-же-ей! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sverlo1 0 14 ноября, 2020 Опубликовано 14 ноября, 2020 (изменено) · Жалоба 28 minutes ago, Raven said: А что мешает взять и скомпилировать тестовый проект перед тем, как бросаться проектировать плату? И удостовериться, что не только нужное вам ядро, но и нужная вам _периферия_ влезет туда? Как дети, ей-же-ей! Спасибо. Ничто не мешало. Проверили. :) Хватает любой МС из таблицы что я привёл. (кроме 10M02) Всё что в QFP144 подходит. Небольшая возня с распиновкой, т.к. надо просматривать и сравнивать все таблицы под все МС. И с квартусом тоже немного надо повозиться. Изменено 14 ноября, 2020 пользователем Sverlo1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба 1 hour ago, Sverlo1 said: куда 2195 LUT влезет запросто и без обрезаний (наверное). Это чисто ядро без периферии. Полноценный UART еще примерно 300 LUT. Я бы рекомендовал брать 10M08. 1 hour ago, Sverlo1 said: Другая архитектура. Наработанное не используешь. Так если на C писать, то какая разница? Или у Вас ассемблер? :) 1 hour ago, Sverlo1 said: Значит готовая плата M02mini не пойдёт... :( Из готовых можете посмотреть платы от Trenz Electronic (не реклама!). https://shop.trenz-electronic.de/en/TEI0001-03-08-C8-MAX1000-IoT-Maker-Board-8kLE-8-MByte-RAM?c=467 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sverlo1 0 14 ноября, 2020 Опубликовано 14 ноября, 2020 (изменено) · Жалоба >> Я бы рекомендовал брать 10M08. Я и выбрал как самый достаточный и дешёвый под одно ядро 10M04SCE144, а далее в серии и поболее влезет, но это всё уже на готовом железе провериться. 10M04SCE144 есть по $10 если брать 25 штук, вероятно так и будет - мне больше и не надо будет. Потом туда любой камень в 144 ноги влезет - на дальнейший рост! Постараюсь так развести плату. >> Или у Вас ассемблер? :) Да. Богохульство? AVR-ов стало не хватать, а ради повышения производительности менять ВСЁ и переходить "вот сюда или туда", ходить по граблям, ломать мозг над чужими заморочками - ЗАЧЕМ? XXI век на дворе, и ресурсы можно уже создавать свои. Надеюсь на минимальное кол-во граблей - 10 лет опыта однако!!! >> Из готовых можете посмотреть платы от Trenz Electronic (не реклама!). Да смотрю я на них, и облизываюсь! Но только это не наш метод! 22 евро врагам отдавать! Плату делаю "под ARDUINO2560", что получается оптимально по фактору - привычка уже. Не совсем понятно что там ОНИ с ADC намудрили, и как цепи строить, но это ещё впереди. Изменено 14 ноября, 2020 пользователем Sverlo1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба 2 hours ago, Sverlo1 said: Да. Богохульство? Да нет. Просто практика показала, что только в двух проектах было оправданно делать на ассемблере. И то из-за того, что на процессор положили то, что не влезло в логику по причине выбора слишком маленькой ПЛИС. Во всех остальных проектах было удобнее на C, т.к. небольшая потеря в производительности была абсолютно не критична. 2 hours ago, Sverlo1 said: XXI век на дворе, и ресурсы можно уже создавать свои. Надеюсь на минимальное кол-во граблей - 10 лет опыта однако!!! Сразу замечу, что периферия у меня своя - готовые драйвера от Arduino не подойдут. В SPI, например, сделана двойная буферизация - позволяет слать байты вплотную друг к другу (было нужно для обхода бага в одном Ethernet SPI контроллере). В UART добавлен отдельный сигнал для управления драйвером RS485. Количество бит можно задавать от 1 до 9. Время исполнения команд также отличается (в лучшую сторону). Настройка прерываний тоже нестандартная. У меня они не по фиксированным адресам, а программируемые - экономия 2 тактов при входе в прерывание за счёт отсутствия команды rjmp для перехода с вектора прерывания на подпрограмму обработки прерывания. Т.е. адрес вектора прерывания настраивается сразу на адрес функции обработчика прерывания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sverlo1 0 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба >> Во всех остальных проектах было удобнее на C, т.к. небольшая потеря в производительности была абсолютно не критична. Для меня ASM - не приговор. Мне он нужен по факту, для выжимания ресурсов. И его мне хватает. >> готовые драйвера от Arduino не подойдут Arduino ерунда, но код под "чистый" вариант, например, ATmega8 не получится? Или пройдёт, если в программе не будут затронуты особенности версии - эти команды? >> В SPI, например, сделана двойная буферизация - позволяет слать байты вплотную друг к другу (было нужно для обхода бага в одном Ethernet SPI контроллере). SPI не всегда нужен. Но запрограммить я его смогу как обычный проц через обычный адаптер ? >> В UART добавлен отдельный сигнал для управления драйвером RS485. Отлично! Для 485-го самое то! При "обычной" работе, например как RS232 <-> IBM он не мешает? >> Настройка прерываний тоже нестандартная. У меня они не по фиксированным адресам, а программируемые - экономия 2 тактов при входе в прерывание >> за счёт отсутствия команды rjmp для перехода с вектора прерывания на подпрограмму обработки прерывания. Т.е. адрес вектора прерывания настраивается сразу на адрес функции обработчика прерывания. В стандартные адреса можно же будет прописать свои векторы? А в последующем легко можно учесть это преимущество!!! Вообще-то я категорически "ЗА" улучшение архитектуры, когда это делает опытный пользователь. Что позволит из камня выжать особенности его структуры, по максимуму заюзать SRAM и EPROM. Так и помечтать можно немного: - Ещё бы в прерывания свои банки регистров, типа, как это было в Z80. - В окне команд AVR есть окна Reserved штук пять, это лечится? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба 53 minutes ago, Sverlo1 said: Arduino ерунда, но код под "чистый" вариант, например, ATmega8 не получится? Или пройдёт, если в программе не будут затронуты особенности версии - эти команды? Команды как раз поддержаны все необходимые. Различия в периферии. Вообще этот проект это именно ядро. Периферию каждый пользователь может делать свою, какая ему требуется. Нет смысла повторять оригинальную периферию, когда можно сделать ее "под задачу" и упростить прошивку CPU. 54 minutes ago, Sverlo1 said: SPI не всегда нужен. Но запрограммить я его смогу как обычный проц через обычный адаптер ? Вы имеете ввиду прошивку CPU? Нет. Прошивка добавляется в образ памяти команд средствами Quartus. Отдельный программатор для AVR не нужен. Все шьется через USB-Blaster. 57 minutes ago, Sverlo1 said: Отлично! Для 485-го самое то! При "обычной" работе, например как RS232 <-> IBM он не мешает? Конечно не мешает. Это просто отдельный сигнал индицирующий, что передатчик в данный момент активен. 58 minutes ago, Sverlo1 said: В стандартные адреса можно же будет прописать свои векторы? А в последующем легко можно учесть это преимущество!!! Можно. 1 hour ago, Sverlo1 said: по максимуму заюзать SRAM и EPROM EPROM в ПЛИС нет. Только FLASH. И доступ к ней очень сильно различается в зависимости от выбранного семейства ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sverlo1 0 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба Спасибо за подробный ответ. Общая картина понятна. Мне надо сначала потренироваться на кроликах, чтоб задавать меньше вопросов. Для этого мне проще вернуться в начало. >> Малая занимаемая площадь на кристалле (ядро ~2100 LE). >> GPIO интерфейс. Прочитав это, и уточнив что 1 км = 1024 метра в камне 10M02 всего 2304 LE. >> Я пробовал обрезать свой AVR по системе команд, но в MAX 10 меньше 2195 LE на ядро не получалось. В 100 LUT получится два восьмибитных GPIO, и таймер 8 бит? Тогда готовая плата M02mini пойдёт мне для старта. Схема платы M02mini Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба 33 minutes ago, Sverlo1 said: Прочитав это, и уточнив что 1 км = 1024 метра в камне 10M02 всего 2304 LE. >> Я пробовал обрезать свой AVR по системе команд, но в MAX 10 меньше 2195 LE на ядро не получалось. В 100 LUT получится два восьмибитных GPIO, и таймер 8 бит? Тогда готовая плата M02mini пойдёт мне для старта. Схема платы M02mini Не пойдет. 2195 это только ядро с обрезанными командами. Еще же нужен мультиплексор шины данных. Он тоже место занимает. И запас на разводку в зависимости от настроек. Вот Вам скриншот для понимания масштаба проблемы. 2749 при оптимизации по тактовой частоте. Это с полным ядром где из периферии только калькулятор CRC и сторожевой таймер. Обратите внимание, что при оптимизации по скорости ядро распухло до 2358 LUT. Поэтому я и говорю, что запас по логической емкости нужен как минимум 30-40% от оценочного значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sverlo1 0 14 ноября, 2020 Опубликовано 14 ноября, 2020 · Жалоба 39 minutes ago, BSACPLD said: Не пойдет. 2195 это только ядро с обрезанными командами. А-а-а, вот оно как... В 1км оказалось больше чем 1024м. :( Ну тогда делаю свою плату для QFP144, а это с месяц. А пока закуплю M02mini для тренировок. Спасибо. Было оч позновательно. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 15 ноября, 2020 Опубликовано 15 ноября, 2020 · Жалоба 57 minutes ago, Sverlo1 said: Ну тогда делаю свою плату для QFP144, а это с месяц. Еще важный момент. Нужно брать ПЛИС с маркировкой SAE. С SCE просто так не получится - у них нет возможности инициализировать RAM начальными значениями (прошивка). Порт для динамической смены прошивки в моем AVR есть, но придется добавлять логику для работы с UFM (перекачивание прошивки из UFM в RAM). А она тоже место съест. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 16 ноября, 2020 Опубликовано 16 ноября, 2020 · Жалоба On 11/14/2020 at 6:39 PM, Sverlo1 said: >> Маловата ПЛИС для AVR ядра. >> Я пробовал обрезать свой AVR по системе команд, но в MAX 10 меньше 2195 LUT на ядро не получалось. Значит готовая плата M02mini не пойдёт... :( Проект для M02mini: Процессор языка Forth в FPGA https://marsohod.org/projects/proekt-m02mini/410-forth-j1 Проект для M02mini: Простейший интерпретатор Forth в плате M02mini https://marsohod.org/411-prostejshij-interpretator-forth-v-plate-m02mini Процессор Forth J1 в FPGA плате M02mini Forth CPU. Что это такое? (Часть 1) habr.com/ru/post/133338 Forth CPU. Что это такое? (Часть 2) habr.com/ru/post/133380 https://wiki.ros.org/wge100_camera_firmware P.S. J1A есть и порт для плат Lattice HX1K and HX8K и http://mecrisp.sourceforge.net/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 16 ноября, 2020 Опубликовано 16 ноября, 2020 · Жалоба 14.11.2020 в 01:29, Sverlo1 сказал: Прописать туда AVR любой, какой влезет. Нужно только ядро, из периферии порты и таймер T0 (8бит). И, если получится, USART. Если не секрет, в чем смысл? Тем более убедились, что в дешевую плиску не влезет, а только в 6и баксовую. Готовый АВР, типа тиньки 2313 с 1м таймером и 1м уартом стоит три копейки... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться