makc 218 2 января Опубликовано 2 января · Жалоба 26 минут назад, dxp сказал: С помощью какой команды запускаете? С помощью консольного TCL-шелла gw_sh. 26 минут назад, dxp сказал: В смысле, какой-то проект создаётся или прямо так под управлением скрипта тиклевыми командами? Проект конвертируется в базовый набор команд из среды с помощью консольной команды saveto -all_options options.tcl и далее вы используете этот скрипт для сборки проекта с помощью команды gw_sh options.tcl. Только есть нюанс, что ему в конец необходимо добавить команду run pnr или run syn. В принципе это всё описано в их гайде Gowin Software User Guide SUG100-3.8E, 11/30/2023. Диалект TCL там крайне куцый, на изыски, доступные в Vivado, рассчитывать не приходится. Но и так уже неплохо. Я это всё собрал в Makefile, который ещё и зависимости строит с помощью парсинга options.tcl и далее собирает по мере надобности, шьёт и делает всё остальное. 31 минуту назад, dxp сказал: А IP ядра можно создавать консольно -- из скрипта? Или только через его GUI? На сколько я знаю только через GUI. 32 минуты назад, dxp сказал: Интересуюсь, потому что присматриваюсь к китайским ПЛИС. И после Vivado с её довольно богатым Tcl API их инструментарий для консольного управления выглядит как-то бледновато. Да, это боль. На уровне 10% древнего-древнего ISE. Но они растут и развиваются, с чего-то нужно начинать. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
selax 20 2 января Опубликовано 2 января · Жалоба 1 час назад, dxp сказал: С помощью какой команды запускаете? В смысле, какой-то проект создаётся или прямо так под управлением скрипта тиклевыми командами? А IP ядра можно создавать консольно -- из скрипта? Или только через его GUI? Интересуюсь, потому что присматриваюсь к китайским ПЛИС. И после Vivado с её довольно богатым Tcl API их инструментарий для консольного управления выглядит как-то бледновато. Я всё просто сделал - один раз через Gowin Eda сгенерировал .tcl файл и запускаю сборку через gw_sh.exe. tcl уже правлю ручками по необходимости. Проект он вроде как теперь даже и не нужен. По поводу IP ядер - вроде как через GUI только создаются, но я стараюсь ими не пользоваться - они слабопереносимые между вендорами. У меня один проект сразу под Gowin и под Intel, а если пользовать IP ядра - придётся 2 проекта делать или переделывать скрипт, чтобы он разные файлы подхватывал для сборки под разные ПЛИС. Лень - проще самому написать нужный функционал. Я бы в вашем случае ПЛИС BMTI порекомендовал, там почти Xilinx. Я бы тоже их пользовал, но мне нужны плис в qfp корпусах. Прикрепил файлик, где про Gowin обсуждаемая тема описана. SUG100-3.8E_Gowin Software User Guide.pdf 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 2 января Опубликовано 2 января · Жалоба 1 минуту назад, selax сказал: я стараюсь ими не пользоваться - они слабопереносимые между вендорами. А как вы обходитесь с созданием таких вещей, которые плотно завязаны на аппаратные блоки ПЛИС? Например, PLL. Не говоря уже о мультигигабитных трансиверах, PCIe блоках, аппаратных МАС и т.п. Да и другие типа памяти или DSP блоков -- да, это можно инферить, но это, имхо, такое себе -- не люблю инферинг за непредсказуемость, когда не там поставленная запятая может сломать его. Да, это не фатально, но неприятно. С Xilinx для памяти и фифо предпочитаю использовать XPM библиотеку -- там тоже внутри инферинг делается, это уже ответственность вендора, "сюрпризов" тут не помню. Если есть "завязки" на аппаратные блоки, то тут как без портирования обойтись? Даже если инферинг успешно используется, всё равно там какие-то вендоро-зависимые атрибуты, как правило, применяются. 8 минут назад, selax сказал: Я бы в вашем случае ПЛИС BMTI порекомендовал, там почти Xilinx. Я бы тоже их пользовал, но мне нужны плис в qfp корпусах. К сожалению, в той области, где используется продукция Xilinx, уровень требований -- это старшие Kintex из US+, тут BMTI пока не доросли, насколько знаю. А китайские интересуют как раз из области мелочи (аналоги Cyclone, Spartan, ну, может младший Artix). Привлекает доступность, цена. Отпугивает "сырость" и бедность средств разработки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
selax 20 2 января Опубликовано 2 января · Жалоба 5 минут назад, dxp сказал: А как вы обходитесь с созданием таких вещей, которые плотно завязаны на аппаратные блоки ПЛИС? Например, PLL. Не говоря уже о мультигигабитных трансиверах, PCIe блоках, аппаратных МАС и т.п. Да и другие типа памяти или DSP блоков -- да, это можно инферить, но это, имхо, такое себе -- не люблю инферинг за непредсказуемость, когда не там поставленная запятая может сломать его. Да, это не фатально, но неприятно. С Xilinx для памяти и фифо предпочитаю использовать XPM библиотеку -- там тоже внутри инферинг делается, это уже ответственность вендора, "сюрпризов" тут не помню. Если есть "завязки" на аппаратные блоки, то тут как без портирования обойтись? Даже если инферинг успешно используется, всё равно там какие-то вендоро-зависимые атрибуты, как правило, применяются. А мне это всё не нужно, вот так и обхожусь. У меня околоэлементарные задачи - синусы до десятков кГц померить, ШИМ до сотен кГц подать, алгоритмы/фильтры простенькие, потрындеть по интерфейсам типа SPI, UART и т.д. 🙂 Для меня даже Cyclone - уже жир. Я пользуюсь простенькими gw1n-uv9 и 10m08, чтобы без ПЗУ и без кучи разных питаний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 10 января Опубликовано 10 января · Жалоба On 12/18/2023 at 12:29 AM, faa said: Удалось запустить AE350 процессор (на бете и демо 1.0 не запускался) на Sipeed Tang Mega 138k. Судя по спецификации riscv-a25 кушает 20uW/MHz, заметно увеличение потребления или нагрева на 16Вт при использовании AE350@800MHz? On 12/18/2023 at 12:29 AM, faa said: Примеры нормально собираются без RDS. И работают. Примеры на Си? Что за примеры? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 13 января Опубликовано 13 января · Жалоба В 10.01.2024 в 14:48, _4afc_ сказал: Судя по спецификации riscv-a25 кушает 20uW/MHz, заметно увеличение потребления или нагрева на 16Вт при использовании AE350@800MHz? Примеры на Си? Что за примеры? Потребление не проверял. Сейчас в отъезде - железка на столе за 1.5ткм. Вернусь - померяю. Примеры выложил на гитхаб. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 18 января Опубликовано 18 января · Жалоба On 12/1/2023 at 4:30 PM, StewartLittle said: (но все равно - для работы с GW5AT нужно выбирать GW5AST ver.B). Для заказа на свои платы ПЛИС таких как на китах от GoWin & SiPeed надо искать GW5AT-LV138FPG676AC2/I1 ? Есть понятная таблица каким функционалом отличаются GW5A / GW5AS / GW5AT / GW5AST или наименования ещё не устаканились? На что лучше ориентироваться в 2024 если нужны GTP/PCIe и желательны DDR3 & AE350? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 18 января Опубликовано 18 января · Жалоба В 18.01.2024 в 12:00, _4afc_ сказал: Есть понятная таблица каким функционалом отличаются GW5A / GW5AS / GW5AT / GW5AST или наименования ещё не устаканились? Все очень просто: GW5A - "просто" ПЛИС; GW5AS - ПЛИС + аппаратный процессорный модуль AE350; GW5AT - ПЛИС + трансиверы (+ аппаратный PCIe); GW5AST - ПЛИС + трансиверы (+ аппаратный PCIe) + аппаратный процессорный модуль AE350. Отдельная песня - наличие аппаратных блоков MIPI (RX, TX) - но это уже надо смотреть внимательнее по подсемействам. В 18.01.2024 в 12:00, _4afc_ сказал: На что лучше ориентироваться в 2024 если нужны GTP/PCIe и желательны DDR3 & AE350? GW5AST В 18.01.2024 в 12:00, _4afc_ сказал: Для заказа на свои платы ПЛИС таких как на китах от GoWin & SiPeed надо искать GW5AT-LV138FPG676AC2/I1 ? На платах Gowin DK_START_GW5AT-LV138FPG676A_V2.1 используется микросхема GW5AT-LV138FPG676AES (т.е. еще инженерный образец - по крайней мене, на тех платах. что есть у меня). На платах Sipeer Tang Mega 138K используется микросхема GW5AST-LV138FPG676A, но не знаю, в каком исполнении (плата до меня еще не доехала). Насчет точного артикула можно узнать у уважаемого коллеги @faa , у него такая плата есть, насколько я помню. Что касается указания точного артикула при размещения заказов, то с этим пока еще не все ясно. Я запрашивал варианты с самым быстрым спидргейдом, например GW5AT-LV138FPG676AC2/I1. Но мне на это отвечали, что такие пока еще не готовы, и вместо них предлагали GW5AT-LV138FPG676AC1/I0 (т.е. вариант со спидгрейдом помедленнее). Так что насчет доступности варианта с самым быстрым спидгрейдом вопрос пока остается открытым. 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 22 января Опубликовано 22 января · Жалоба В 18.01.2024 в 12:47, StewartLittle сказал: На платах Sipeer Tang Mega 138K используется микросхема GW5AST-LV138FPG676A, но не знаю, в каком исполнении (плата до меня еще не доехала). Насчет точного артикула можно узнать у уважаемого коллеги @faa , у него такая плата есть, насколько я помню. На моем Tang Mega 138K от Sipeed стоят такие микросхемы. На ПЛИС маркировка GW5AT, но аппаратное ядро процессора AE350 присутствует. ID CODE 0x1081B. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DanilinS 4 22 января Опубликовано 22 января · Жалоба Вполне возможно что кристалл идентичен для всей серии GW5. Это гораздо проще для производства. "Лишнии" модули просто не проходят тестирование. Вы можете использовать эти модули в своих проектаъх, но без гарантии работоспособности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mse 0 23 января Опубликовано 23 января · Жалоба Проявилось непонятное в Говин ИДЕ. В проекте есть шина данных, двунаправленная. В исходном тексте описана "inout", как положено. До поры, до времени(пока шина не использовалась), FloorPlanner в разделе IOConstrains определял их, как inout, всё нормально. Стоило её задействовать, как input, он стал считать ноги(не все, что характерно) только input и при компиляции вывалил кучу ошибок, типа "неправильный констрейн: нога такая-то drive=8ma не может быть у входа". Пришлось изваять в тексте белиберду, которая пользует шину данных как output, чтобы в проекте у шины было и input, и ouotput, только тогда он угомонился. Это что за бред? Как он может сам по себе изменять назначение ног? Или у него есть волшебное слово, чтобы он не считал себя умнее меня? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 23 января Опубликовано 23 января · Жалоба В 23.01.2024 в 13:15, mse сказал: В проекте есть шина данных, двунаправленная. В исходном тексте описана "inout", как положено. ... Это что за бред? Как он может сам по себе изменять назначение ног? Или у него есть волшебное слово, чтобы он не считал себя умнее меня? Пример в студию! Вот такое описание работает, как положено: Цитата entity top_prj is port( ft_d : inout std_logic_vector(7 downto 0); -- FT245R d[7..0] ); end top_prj; architecture rtl of top_prj is type states is ( <bla-bla-bla> ); signal state : states; begin ft_d <= shift_reg when ((state = output_data_to_fifo_enable) or (state = set_wr_low)) else -- Формирование двунаправленной шины данных для работы с FIFO (others => 'Z'); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mse 0 23 января Опубликовано 23 января · Жалоба 8 hours ago, StewartLittle said: Пример в студию! Вот такое описание работает, как положено: Постарался, чтобы видно было текст на скриншотах. Разница только в комментированной строке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 218 23 января Опубликовано 23 января · Жалоба 9 часов назад, mse сказал: Это что за бред? Как он может сам по себе изменять назначение ног? Или у него есть волшебное слово, чтобы он не считал себя умнее меня? Это не бред, всё логично: пока ноги не использовались они удалялись из проекта и проблем с применением атрибута DRIVE (и других) не было априори. Когда вы стали их использовать, то появилось размещение этих пинов и сопоставление ячеек ввода-вывода, но при этом у ячейки типа input нет выходного буфера (это не inout) и поэтому атрибут DRIVE к такому пину не применим (это вход, а DRIVE только для выходов или inout), поэтому вы стали получать предупреждения об ошибках. Хорошо, что он ругается, т.к. вы в результате обратили на это внимание и теперь можете решить, что же вы хотели в итоге сделать: если вход, то убираете DRIVE, если же забыли подключить управление выходом - подключаете его и DRIVE будет корректно применён без всяких сообщений и ошибок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mse 0 23 января Опубликовано 23 января · Жалоба Не, это-то понятно. Только он не даёт работать. Я отлаживаю куски, где шина только для записи, а он мне делает аборт компиляции. Читать по шине мне вообще захочется только ближе к концу работы. Там-же ещё довольно каличная система установки констрейнов. Нужно ткнуть в каждый пин и выбрать опцию. 16 линий перетыкивать несколько раз, как-то напряжно, проще написать тупую затычку. Просто такого инициативного ИДЕ ни разу не встречалось. Я уже подумал, мож у меня с головой что-то. Спасибо, буду знать, что вот так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться