Графический "сопроцессор" на ардуино - реально ли?
Moderator: Shaos
-
- Novelist
- Posts: 25
- Joined: 18 Feb 2006 08:19
Графический "сопроцессор" на ардуино - реально ли?
Вспомнилась старая идея - прикрутить ардуину или что-то пошустрей к Спектруму для ускорения отрисовки графики.
Например, нужно быстро нарисовать окружность - отправляем в отдельный порт код "окружность", X, Y и R, ардуинка это ловит, рассчитывает, и кладёт получившиеся байтики напрямки в видеопамять.
С электроникой сто лет не игрался, всё позабыл, так что даже не знаю, с какой стороны подойти.
Такое вообще реально реализовать?
Было бы интересно, если бы реализовать не только графические примитивы типа окружности и линий, но и заштрихованные треугольники - было бы отлично для быстрой 3D графики. Послал X1,Y1,X2,Y2,X3,Y3, код заливки, и у тебя уже на экране закрашенный треугольник.
Например, нужно быстро нарисовать окружность - отправляем в отдельный порт код "окружность", X, Y и R, ардуинка это ловит, рассчитывает, и кладёт получившиеся байтики напрямки в видеопамять.
С электроникой сто лет не игрался, всё позабыл, так что даже не знаю, с какой стороны подойти.
Такое вообще реально реализовать?
Было бы интересно, если бы реализовать не только графические примитивы типа окружности и линий, но и заштрихованные треугольники - было бы отлично для быстрой 3D графики. Послал X1,Y1,X2,Y2,X3,Y3, код заливки, и у тебя уже на экране закрашенный треугольник.
-
- Supreme God
- Posts: 16682
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Графический "сопроцессор" на ардуино - реально ли?
Вполне реально. Почему бы и нет? Но вылезет много подводных камней с разделением памяти и т.п.Santa wrote:Вспомнилась старая идея - прикрутить ардуину или что-то пошустрей к Спектруму для ускорения отрисовки графики.
Например, нужно быстро нарисовать окружность - отправляем в отдельный порт код "окружность", X, Y и R, ардуинка это ловит, рассчитывает, и кладёт получившиеся байтики напрямки в видеопамять.
С электроникой сто лет не игрался, всё позабыл, так что даже не знаю, с какой стороны подойти.
Такое вообще реально реализовать?
Ещё в далёкое время, когда ардуинок не придумали, и был у меня лишь "Специалист" на 580ВМ80,
мне тоже очень хотелось поставить второй 580ВМ80 для ускорения отрисовки графики...
Но не срослось...
На эту тему мы тут уже много лет рассуждаем вот где:
viewtopic.php?f=46&t=7540
iLavr
-
- Novelist
- Posts: 25
- Joined: 18 Feb 2006 08:19
Re: Графический "сопроцессор" на ардуино - реально ли?
Мне бы кто схемку нарисовал, а с программщиной я буду дальше сам разбираться.Lavr wrote: Вполне реально. Почему бы и нет? Но вылезет много подводных камней с разделением памяти и т.п.
Я так понимаю, на время записи в ОЗУ надо проц как-то паузить?
И как правильно прикрутить ардуинку к работающей ОЗУ, чтобы ничего не спалить?
И уж самое для меня недоступное - как организовать новый порт, и прикрутить его к ардуинке?
У меня есть живая "Дельта-С02"
-
- Supreme God
- Posts: 16682
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Графический "сопроцессор" на ардуино - реально ли?
Схемку нарисовать - это надо ориентироваться на то, какая память, какое её быстродействие.Santa wrote:Мне бы кто схемку нарисовал, а с программщиной я буду дальше сам разбираться.
Опять же - смотря как сделана память.Santa wrote:Я так понимаю, на время записи в ОЗУ надо проц как-то паузить?
Общая вся память, или видео-память отдельно. Есть ли к ней доступ ЦП, или всё - через ардуинку...
Лучше всего, конечно, АККУРАТНО!Santa wrote:И как правильно прикрутить ардуинку к работающей ОЗУ, чтобы ничего не спалить?

Это и для меня сейчас недоступно, пока не определились со всем остальным.Santa wrote:И уж самое для меня недоступное - как организовать новый порт, и прикрутить его к ардуинке?

Единственное, что без лишних вопросов радует...Santa wrote:У меня есть живая "Дельта-С02"

P.S. В принципе можно вот это почитать: https://demid.net/2018/07/26/графический-vga-модуль-для-микроконтрол/
iLavr
-
- Admin
- Posts: 24028
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Графический "сопроцессор" на ардуино - реально ли?
А чего ардуинка то? Она тормозная
Люди сразу Raspberry Pi ставят - она ведь с HDMI выходом
Там даже можно подать команду "запустить линух"
P.S. Вообще я хотел чото такое поделать, но на FPGA - чтобы был честный 3D движок (на полигонах с одноцветной заливкой или хотя бы на треугольниках), причём опенсорсный

Люди сразу Raspberry Pi ставят - она ведь с HDMI выходом

Там даже можно подать команду "запустить линух"

P.S. Вообще я хотел чото такое поделать, но на FPGA - чтобы был честный 3D движок (на полигонах с одноцветной заливкой или хотя бы на треугольниках), причём опенсорсный

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24028
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Графический "сопроцессор" на ардуино - реально ли?
в классическом ZX-спектруме с видеопамятью всё просто - на шину (в edge-коннектор сзади) вешается слушатель, который ловит все операции записи в область видеопамяти - этой информации достаточно, чтобы построить нормальную копию экрана для выплёвывания её в нормальный видеовыход (VGA, HDMI и т.д.), а вот под дополнительные команды можно отвести 256-байтовую зону буфера принтера, которая идёт непосредственно за видеопамятью - запись туда тоже можно ловить и если там команда, то можно тормозить проц (либо не тормозить проц, а использовать какой-то порт для индикации головному процу того факта, что команда отрисовки звершилась).Lavr wrote:Общая вся память, или видео-память отдельно. Есть ли к ней доступ ЦП, или всё - через ардуинку...
P.S. в 128кб ZX-спектруме и клонах (типа Пентагона) всё несколько запутаннее т.к. там есть теневая видеостраница, запись в которую отловить будет сложнее
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Novelist
- Posts: 25
- Joined: 18 Feb 2006 08:19
Re: Графический "сопроцессор" на ардуино - реально ли?
Видеопамять самого Спектрума, монохром, без области атрибутов. Читаем байтик, накладываем на него наш результат, кладём обратно, читаем следующий байтик, и т.д.Lavr wrote:Схемку нарисовать - это надо ориентироваться на то, какая память, какое её быстродействие.Santa wrote:Мне бы кто схемку нарисовал, а с программщиной я буду дальше сам разбираться.Опять же - смотря как сделана память.Santa wrote:Я так понимаю, на время записи в ОЗУ надо проц как-то паузить?
Общая вся память, или видео-память отдельно. Есть ли к ней доступ ЦП, или всё - через ардуинку...
-
- Novelist
- Posts: 25
- Joined: 18 Feb 2006 08:19
Re: Графический "сопроцессор" на ардуино - реально ли?
Не, это будет слишком сложно, добавлять видеовыход.Shaos wrote:в классическом ZX-спектруме с видеопамятью всё просто - на шину (в edge-коннектор сзади) вешается слушатель, который ловит все операции записи в область видеопамяти - этой информации достаточно, чтобы построить нормальную копию экрана для выплёвывания её в нормальный видеовыход (VGA, HDMI и т.д.)
Именно сопроцессор - скармливаем ему задание, он просчитывает, и выдаёт результат напрямую в видеопамять.
Пока лучше ограничиться 48к версией, чтоб не усложнять, а про 128к подумать потом.Shaos wrote:P.S. в 128кб ZX-спектруме и клонах (типа Пентагона) всё несколько запутаннее т.к. там есть теневая видеостраница, запись в которую отловить будет сложнее
-
- Admin
- Posts: 24028
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Графический "сопроцессор" на ардуино - реально ли?
Не - ненадо так делать. Я выше написал как надо - просто слушать шину и в "сопроцессоре" строить копию экрана в памяти "сопроцессора" - вывод на телевизор/дисплей с сопроцессора (т.е. видеовыход самого спектрума повисает в воздухе и никуда не подключается)Santa wrote:Видеопамять самого Спектрума, монохром, без области атрибутов. Читаем байтик, накладываем на него наш результат, кладём обратно, читаем следующий байтик, и т.д.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24028
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Графический "сопроцессор" на ардуино - реально ли?
Это как раз самое простоеSanta wrote:Не, это будет слишком сложно, добавлять видеовыход.Shaos wrote:в классическом ZX-спектруме с видеопамятью всё просто - на шину (в edge-коннектор сзади) вешается слушатель, который ловит все операции записи в область видеопамяти - этой информации достаточно, чтобы построить нормальную копию экрана для выплёвывания её в нормальный видеовыход (VGA, HDMI и т.д.)

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16682
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Графический "сопроцессор" на ардуино - реально ли?
Shaos, мне кажется, ты не понял... это не будет графический сопроцессор.Shaos wrote:Это как раз самое простоеSanta wrote:Не, это будет слишком сложно, добавлять видеовыход.Shaos wrote:в классическом ZX-спектруме с видеопамятью всё просто - на шину (в edge-коннектор сзади) вешается слушатель, который ловит все операции записи в область видеопамяти - этой информации достаточно, чтобы построить нормальную копию экрана для выплёвывания её в нормальный видеовыход (VGA, HDMI и т.д.)
Потому как процессор как рисовал в памяти ZX-спектрум, так и рисует - а его дублируют.
Человек, насколько я понял, хочет избавить ЦП от рисования графики...
iLavr
-
- Admin
- Posts: 24028
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Графический "сопроцессор" на ардуино - реально ли?
А что же это? Математический сопроцессор? 
Ведь задача "нужно быстро нарисовать окружность"

Ведь задача "нужно быстро нарисовать окружность"
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Devil
- Posts: 800
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Графический "сопроцессор" на ардуино - реально ли?
Графические ускорители сейчас имеются в микроконтроллерах.
Например,
The STM32F469 and STM32F479 lines deliver the highest ARM® Cortex®-M4 performance and embed large memories and rich peripherals to enable the most advanced consumer, industrial and medical
applications. The ART Accelerator™ for Flash memory and the Chrom-ART Accelerator™ for graphics coupled with LCD-TFT and MIPI-DSI display interfaces enables an advanced user interface while granting enough resources for demanding real-time processing.
https://www.st.com/content/st_com/en/ec ... rface.html
Использовал в проектах. Скорость вывода > 60 fps.
Включается аппаратный графический вывод области памяти. Далее, как в ZX управляется области памяти SRAM., которое 128 кБ поместить.
Например,
The STM32F469 and STM32F479 lines deliver the highest ARM® Cortex®-M4 performance and embed large memories and rich peripherals to enable the most advanced consumer, industrial and medical
applications. The ART Accelerator™ for Flash memory and the Chrom-ART Accelerator™ for graphics coupled with LCD-TFT and MIPI-DSI display interfaces enables an advanced user interface while granting enough resources for demanding real-time processing.
https://www.st.com/content/st_com/en/ec ... rface.html
Использовал в проектах. Скорость вывода > 60 fps.
Включается аппаратный графический вывод области памяти. Далее, как в ZX управляется области памяти SRAM., которое 128 кБ поместить.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Novelist
- Posts: 25
- Joined: 18 Feb 2006 08:19
Re: Графический "сопроцессор" на ардуино - реально ли?
Не избавить, а дополнить.Lavr wrote:Shaos, мне кажется, ты не понял... это не будет графический сопроцессор.
Потому как процессор как рисовал в памяти ZX-спектрум, так и рисует - а его дублируют.
Человек, насколько я понял, хочет избавить ЦП от рисования графики...
Пусть Z80 пишет в видеопамять Спектрума чего хочет.
Но тут программа посылает в порт нашей ардуинки серию байтов "код окружности", "Х", У", "R". Ардуинка высчитывает эту окружность, берёт нужный байт из видеопамяти Спектрума, накладываает на него нужные пиксели для рисования окружности, кладёт обратно в видеопамять. И так, пока содержимое видеопамяти не будет модифицировано так, что там появится окружность.
Мне почему-то кажется, что ничего сложного не должно быть. Организовать порт и реализовать прямой доступ ардуинки к видеопамяти. Единственно, по тактам придётся втиснуться, чтобы не сильно замедлялась работа остального добра.
-
- Novelist
- Posts: 25
- Joined: 18 Feb 2006 08:19
Re: Графический "сопроцессор" на ардуино - реально ли?
Окружности, линии, треугольники с/без заливкой, можно спрайты заранее подгруженные.Shaos wrote:А что же это? Математический сопроцессор?
Ведь задача "нужно быстро нарисовать окружность"
Чтобы освободить проц от большинства нагрузки на графику, не потерять совместимость с уже имеющимися программами, очень быстро рисовать графику. При этом чтобы по минимуму модифицировать сам Спектрум, не добавляя ничего в его ПЗУ, не сложнее подключения AY.