Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Самый сложный Soft-CPU
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
AVR
Подскажите, какой самый сложный софт-процессор можно засунуть в ПЛИС, в которой вообще нет блоков памяти. Т.е. только регистры и логика. Даже PLL нет.
Просто логика и входы-выходы. Ориентировочно 2000-4000 логических элементов есть.

Влезет ли туда OpenRISC в самой базовой вариации? Или даже RISC-V? Или все такие процессоры требуют всё же такой встроенной блочной памяти?
Поэтому интересует наиболее сложный тест который только возможен для проверки такой простой ПЛИС, и хотелось бы именно на soft-CPU это опробовать.
Golikov A.
Процу надо же откуда то программу брать. Так что что-то типа памяти вам все равно надо. Хотя бы собранная на регистрах, но память.
Проц надо брать ниос или блейз, они оптимизированы под ФПГА, и будут хорошо работать, лучше чем абстрактные процы, оптимизированные под асики.

Риск 5 - это не проц, а система команд. По ней можно реализовать все что хошь от процов класса АРМ кортекс-м0, до апликайшен оут оф ордер процов.
AVR
Цитата(Golikov A. @ Feb 21 2018, 20:25) *
Процу надо же откуда то программу брать. Так что что-то типа памяти вам все равно надо. Хотя бы собранная на регистрах, но память

Что если будет внешняя SRAM, хоть мегабайт?
Про RISC-V я понял, про OpenRISC пишут "Low resource usage: basic implementation fits easily in Spartan-6 LX9" - действительно low, но для меня уже не подходит.

Есть еще варианты? Пока думаю какое-нибудь AVR засунуть или подобное.
Leka
Цитата(AVR @ Feb 21 2018, 20:38) *
Есть еще варианты?

Калькулятор с делением, число цифр подбирается под требуемые ресурсы.
Golikov A.
Цитата(AVR @ Feb 21 2018, 20:38) *
Что если будет внешняя SRAM, хоть мегабайт?
Про RISC-V я понял, про OpenRISC пишут "Low resource usage: basic implementation fits easily in Spartan-6 LX9" - действительно low, но для меня уже не подходит.

Есть еще варианты? Пока думаю какое-нибудь AVR засунуть или подобное.


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

То что какой-то проц влезает в ПЛИС это не говорит что он ей подходит. Чаще всего это просто как демонстрация верности реализации проца, он там работает на 8 МГц и это край. Если вам нужен проц в ФПГА, то вам нужен проц для нее, и лучше использовать процы от производителей, они тоже небольшие и весьма производительные. Все остальное по ресурсам будет хуже. Вид памяти не должен определять проц.

iosifk
Цитата(AVR @ Feb 21 2018, 17:30) *
Подскажите, какой самый сложный софт-процессор можно засунуть в ПЛИС, в которой вообще нет блоков памяти. Т.е. только регистры и логика. Даже PLL нет.
Просто логика и входы-выходы. Ориентировочно 2000-4000 логических элементов есть.

Тут вопрос не до конца раскрыт.
Если речь идет о Си, то для сишных процессоров нужны пересылки "регистр-регистр". А сделать много регистров на триггерах - это значит угробить все интерконнекты. Поэтому регистры делают в виде регистровых файлов и для них используют блоки памяти...
А вот если не надо Си, тогда есть варианты. Например можно сделать процессор "порт + память". Либо стековый процессор...
Leka
Цитата(AVR @ Feb 21 2018, 17:30) *
Поэтому интересует наиболее сложный тест который только возможен для проверки такой простой ПЛИС, и хотелось бы именно на soft-CPU это опробовать.

На это никто не обратил внимание?

Мне не совсем понятно, почему именно софт-процессор, если не планируется использовать в рабочих проектах.
Лишние сложности с компилятором, прошивкой, вводом-выводом, и тп.
RobFPGA
Приветствую!
Цитата(iosifk @ Feb 21 2018, 22:08) *
...
Если речь идет о Си, то для сишных процессоров нужны пересылки "регистр-регистр". А сделать много регистров на триггерах - это значит
...

Совсем необязательно - смотрите хотя бы ZPU на opencores. 32 бит, стековая архитектура, проще некуда и при этом рабочий порт для GCC.

Успехов! Rob.
AVR
Цитата(Leka @ Feb 21 2018, 22:43) *
На это никто не обратил внимание? Мне не совсем понятно, почему именно софт-процессор, если не планируется использовать в рабочих проектах. Лишние сложности с компилятором, прошивкой, вводом-выводом, и тп.

Не хотелось бы вызывать преждевременную критику, поэтому я не раскрываю что за ПЛИС я собираюсь тестировать. Она экспериментальная, пока что есть лишь прототипы кристаллов. Но библиотеки для моделирования уже в наличии и они подходят для запуска на симуляторе совместно с выхлопом САПР.

Поэтому мне показалось софт-процессор будет идеальной демонстрацией работы такой микросхемы.

Цитата(RobFPGA @ Feb 21 2018, 23:15) *
Совсем необязательно - смотрите хотя бы ZPU на opencores. 32 бит, стековая архитектура, проще некуда и при этом рабочий порт для GCC.

Про ZPU не слышал. Надо бы посмотреть, спасибо за подсказку, наличие GCC как раз гигантский плюс.
Именно проц с компилятором был бы хорошей демонстрацией и проверкой.
Leka
ZPU - маленький по ресурсам стековый проц.


Почему предложил калькулятор с делением:
1) простой калькулятор (+ - * / ) с последовательным вводом и выводом потребует мало текста на HDL,
2) "q=a/b" Квартус синтезирует в ~1К ЛЕ для 32-разрядных операндов, и ~4К ЛЕ для 64-разрядных,
3) от блока деления (и тп) м/б больше пользы в реальных проектах, чем от непрактичного софт-процессора.

bb-offtopic.gif
Кстати, сравнение моего софт-процессора (~200 ЛЕ) с STM32F103C8 на Си-программе (N-ферзей):
http://forum.ixbt.com/topic.cgi?id=48:11468:1915#1915
Kapsik
https://marsohod.org/projects/66-makeavr
alexPec
Цитата(AVR @ Feb 21 2018, 21:38) *
Есть еще варианты? Пока думаю какое-нибудь AVR засунуть или подобное.


Если производительности не требуется, то можно реализацию 8051 затолкнуть - для латтиса в 1к вентилей присматривал, где-то в рекламах было (точно не помню), что проц 8051 занимает 150-300 LE. Но как там реализовывали регистры не смотрел. Не думаю что регистровый файл 8051 много съест.
AVR
Цитата(Leka @ Feb 22 2018, 00:46) *
ZPU - маленький по ресурсам стековый проц.

Увы, экспериментальная ПЛИС настолько сурова, что не умеет в VHDL, а ZPU это VHDL.
Ваш процессор тоже посмотрю, тоже интересно.

2 Kapsik: makeavr гляну.

2: alexPec: ну и 8051, почему бы и нет.
Leka
Цитата(AVR @ Feb 24 2018, 23:04) *
Ваш процессор тоже посмотрю, тоже интересно.

Там используется 2х-портовая внутренняя блочная память.
Golikov A.
Ну напишите память на регистрах, в чем беда то?
iosifk
Цитата(Golikov A. @ Feb 25 2018, 10:16) *
Ну напишите память на регистрах, в чем беда то?

Беда только в интерконнектах... Их потребуется очень много.
Правда если в этой ПЛИС есть что-то похожее на ксайлинсовский SRL - это когда часть битов конфигурации в ячейке можно использовать как память 16х1 или 32х1, то тогда будет все проще....
AVR
Цитата(alexPec @ Feb 22 2018, 15:38) *
Если производительности не требуется, то можно реализацию 8051 затолкнуть - для латтиса в 1к вентилей присматривал, где-то в рекламах было (точно не помню), что проц 8051 занимает 150-300 LE. Но как там реализовывали регистры не смотрел. Не думаю что регистровый файл 8051 много съест.

Кстати, Вы про какую реализацию? Нужно чтобы код от GCC пошел на нем.
RobFPGA
Приветствую!

Цитата(alexPec @ Feb 22 2018, 15:38) *
Если производительности не требуется, то можно реализацию 8051 затолкнуть - для латтиса в 1к вентилей присматривал, где-то в рекламах было (точно не помню), что проц 8051 занимает 150-300 LE. Но как там реализовывали регистры не смотрел. Не думаю что регистровый файл 8051 много съест.

Если грубо прикидывать то реализация RAM 8051 (128 байт) на регистрах требует 1K регистров и ~1.5K логики (4-input lut) для организации декодера записи и мультиплексора для чтения. А с учетом того что вход регистра без логики обычно не подключишь то логики надо будет все ~2.5K. sad.gif

Удачи! Rob.


alexPec
Цитата(RobFPGA @ Feb 26 2018, 13:52) *
Приветствую!


Если грубо прикидывать то реализация RAM 8051 (128 байт) на регистрах требует 1K регистров и ~1.5K логики (4-input lut) для организации декодера записи и мультиплексора для чтения. А с учетом того что вход регистра без логики обычно не подключишь то логики надо будет все ~2.5K. sad.gif

Удачи! Rob.


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

Кстати, а на 8051 думаю GCC-то есть. И симуляторов, и дизассемблеров полно. Архитектура стандартная и распространенная.
AVR
Речь про эту реализацию? https://opencores.org/project,8051
Есть еще https://opencores.org/project,light52 но оно на противном VHDL.
Doka
Цитата(Leka @ Feb 22 2018, 00:46) *
bb-offtopic.gif
Кстати, сравнение моего софт-процессора (~200 ЛЕ) с STM32F103C8 на Си-программе (N-ферзей):
http://forum.ixbt.com/topic.cgi?id=48:11468:1915#1915

bb-offtopic.gif
а можно ссылку непосредственно на ваш софт-процессор,
а то чувствую себя как-то не в теме laughing.gif

Цитата(alexPec @ Feb 27 2018, 12:39) *
Кстати, а на 8051 думаю GCC-то есть. И симуляторов, и дизассемблеров полно. Архитектура стандартная и распространенная.

что-то не слышал об gcc для 8051... есть SDCC
Leka
Цитата(Doka @ Feb 27 2018, 13:22) *
а можно ссылку непосредственно на ваш софт-процессор

Последняя версия, которую выкладывал:
http://marsohod.org/forum/proekty-polzovat...a?start=80#5161
Это пробный проект, зачем его делал - описано на том форуме, и только недавно с небольшими изменениями/исправлениями использовал в реальном проекте.
alexPec
Цитата(Doka @ Feb 27 2018, 14:22) *
что-то не слышал об gcc для 8051... есть SDCC


Ну это не утверждение, а предположение sm.gif Сам давно занимался 8051, тогда досовые тулчейны были, не много. А через некоторое время их столько развелось, но мне уже не нужны стали. Вот я и подумал, что уж GCC-то всяко есть. А на самом деле, сходу только "no oficial GCC for 8051"...
Doka
Цитата(Leka @ Feb 27 2018, 14:01) *
Последняя версия, которую выкладывал:
http://marsohod.org/forum/proekty-polzovat...a?start=80#5161
Это пробный проект, зачем его делал - описано на том форуме, и только недавно с небольшими изменениями/исправлениями использовал в реальном проекте.

спасибо, скачал архив.
а можно где-то почитать в html|doc описание того что это и под какой лицензией?
Leka
Цитата(Doka @ Mar 1 2018, 16:14) *
а можно где-то почитать в html|doc описание того что это и под какой лицензией?

Отдельного описания у меня нет, есть только обсуждение на форуме марсохода.
По поводу лицензии - не разбираюсь в этом вопросе, поэтому выкладываю код без какого-либо лицензионного текста и тп.
Alexxxxey
Вот интересный вариант - https://github.com/cliffordwolf/picorv32

Кэша у него нет, а память можно подключить внешнюю.
Leka
Цитата(Alexxxxey @ Apr 2 2018, 22:44) *
Вот интересный вариант

Код не смотрел, но в описании увидел табличку: "LUTs as Memory" - 48штук.
Похоже, используется "распределенная" память, это не во всех ПЛИСах есть.
AVR
Цитата(Leka @ Apr 3 2018, 01:01) *
Код не смотрел, но в описании увидел табличку: "LUTs as Memory" - 48штук.
Похоже, используется "распределенная" память, это не во всех ПЛИСах есть.

Это вообще шикарный вариант, только вот LUTs as memory смущает. Насколько оно прибито к Xilinx?
В общем, буду изучать. Вопрос без особой срочности.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.