|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Графический "сопроцессор" на ардуино - реально ли?
Author |
Message |
Santa
Novelist
Joined: 18 Feb 2006 08:19 Posts: 25
|
Вспомнилась старая идея - прикрутить ардуину или что-то пошустрей к Спектруму для ускорения отрисовки графики. Например, нужно быстро нарисовать окружность - отправляем в отдельный порт код "окружность", X, Y и R, ардуинка это ловит, рассчитывает, и кладёт получившиеся байтики напрямки в видеопамять. С электроникой сто лет не игрался, всё позабыл, так что даже не знаю, с какой стороны подойти. Такое вообще реально реализовать?
Было бы интересно, если бы реализовать не только графические примитивы типа окружности и линий, но и заштрихованные треугольники - было бы отлично для быстрой 3D графики. Послал X1,Y1,X2,Y2,X3,Y3, код заливки, и у тебя уже на экране закрашенный треугольник.
|
27 Nov 2021 12:17 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вполне реально. Почему бы и нет? Но вылезет много подводных камней с разделением памяти и т.п. Ещё в далёкое время, когда ардуинок не придумали, и был у меня лишь "Специалист" на 580ВМ80, мне тоже очень хотелось поставить второй 580ВМ80 для ускорения отрисовки графики... Но не срослось... На эту тему мы тут уже много лет рассуждаем вот где: http://www.nedopc.org/forum/viewtopic.php?f=46&t=7540
_________________ iLavr
|
27 Nov 2021 12:32 |
|
|
Santa
Novelist
Joined: 18 Feb 2006 08:19 Posts: 25
|
Мне бы кто схемку нарисовал, а с программщиной я буду дальше сам разбираться. Я так понимаю, на время записи в ОЗУ надо проц как-то паузить? И как правильно прикрутить ардуинку к работающей ОЗУ, чтобы ничего не спалить? И уж самое для меня недоступное - как организовать новый порт, и прикрутить его к ардуинке? У меня есть живая "Дельта-С02"
|
27 Nov 2021 12:47 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Схемку нарисовать - это надо ориентироваться на то, какая память, какое её быстродействие. Опять же - смотря как сделана память. Общая вся память, или видео-память отдельно. Есть ли к ней доступ ЦП, или всё - через ардуинку... Лучше всего, конечно, АККУРАТНО! Это и для меня сейчас недоступно, пока не определились со всем остальным. Единственное, что без лишних вопросов радует... P.S. В принципе можно вот это почитать: https://demid.net/2018/07/26/графический-vga-модуль-для-микроконтрол/
_________________ iLavr
|
27 Nov 2021 14:20 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
А чего ардуинка то? Она тормозная Люди сразу Raspberry Pi ставят - она ведь с HDMI выходом Там даже можно подать команду "запустить линух" P.S. Вообще я хотел чото такое поделать, но на FPGA - чтобы был честный 3D движок (на полигонах с одноцветной заливкой или хотя бы на треугольниках), причём опенсорсный
|
27 Nov 2021 21:05 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
в классическом ZX-спектруме с видеопамятью всё просто - на шину (в edge-коннектор сзади) вешается слушатель, который ловит все операции записи в область видеопамяти - этой информации достаточно, чтобы построить нормальную копию экрана для выплёвывания её в нормальный видеовыход (VGA, HDMI и т.д.), а вот под дополнительные команды можно отвести 256-байтовую зону буфера принтера, которая идёт непосредственно за видеопамятью - запись туда тоже можно ловить и если там команда, то можно тормозить проц (либо не тормозить проц, а использовать какой-то порт для индикации головному процу того факта, что команда отрисовки звершилась). P.S. в 128кб ZX-спектруме и клонах (типа Пентагона) всё несколько запутаннее т.к. там есть теневая видеостраница, запись в которую отловить будет сложнее
|
27 Nov 2021 21:14 |
|
|
Santa
Novelist
Joined: 18 Feb 2006 08:19 Posts: 25
|
Видеопамять самого Спектрума, монохром, без области атрибутов. Читаем байтик, накладываем на него наш результат, кладём обратно, читаем следующий байтик, и т.д.
|
28 Nov 2021 07:27 |
|
|
Santa
Novelist
Joined: 18 Feb 2006 08:19 Posts: 25
|
Не, это будет слишком сложно, добавлять видеовыход. Именно сопроцессор - скармливаем ему задание, он просчитывает, и выдаёт результат напрямую в видеопамять. Пока лучше ограничиться 48к версией, чтоб не усложнять, а про 128к подумать потом.
|
28 Nov 2021 07:34 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Не - ненадо так делать. Я выше написал как надо - просто слушать шину и в "сопроцессоре" строить копию экрана в памяти "сопроцессора" - вывод на телевизор/дисплей с сопроцессора (т.е. видеовыход самого спектрума повисает в воздухе и никуда не подключается)
|
28 Nov 2021 13:13 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Это как раз самое простое
|
28 Nov 2021 13:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Shaos, мне кажется, ты не понял... это не будет графический сопроцессор. Потому как процессор как рисовал в памяти ZX-спектрум, так и рисует - а его дублируют. Человек, насколько я понял, хочет избавить ЦП от рисования графики...
_________________ iLavr
|
28 Nov 2021 16:45 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
А что же это? Математический сопроцессор? Ведь задача "нужно быстро нарисовать окружность"
|
28 Nov 2021 19:36 |
|
|
askfind
Doomed
Joined: 04 Jan 2016 09:15 Posts: 662 Location: Russia, S.- Peterburg
|
Графические ускорители сейчас имеются в микроконтроллерах. Например, 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/ecosystems/stm32-graphic-user-interface.htmlИспользовал в проектах. Скорость вывода > 60 fps. Включается аппаратный графический вывод области памяти. Далее, как в ZX управляется области памяти SRAM., которое 128 кБ поместить.
_________________ "Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
|
28 Nov 2021 21:30 |
|
|
Santa
Novelist
Joined: 18 Feb 2006 08:19 Posts: 25
|
Не избавить, а дополнить. Пусть Z80 пишет в видеопамять Спектрума чего хочет. Но тут программа посылает в порт нашей ардуинки серию байтов "код окружности", "Х", У", "R". Ардуинка высчитывает эту окружность, берёт нужный байт из видеопамяти Спектрума, накладываает на него нужные пиксели для рисования окружности, кладёт обратно в видеопамять. И так, пока содержимое видеопамяти не будет модифицировано так, что там появится окружность. Мне почему-то кажется, что ничего сложного не должно быть. Организовать порт и реализовать прямой доступ ардуинки к видеопамяти. Единственно, по тактам придётся втиснуться, чтобы не сильно замедлялась работа остального добра.
|
29 Nov 2021 02:32 |
|
|
Santa
Novelist
Joined: 18 Feb 2006 08:19 Posts: 25
|
Окружности, линии, треугольники с/без заливкой, можно спрайты заранее подгруженные. Чтобы освободить проц от большинства нагрузки на графику, не потерять совместимость с уже имеющимися программами, очень быстро рисовать графику. При этом чтобы по минимуму модифицировать сам Спектрум, не добавляя ничего в его ПЗУ, не сложнее подключения AY.
|
29 Nov 2021 02:40 |
|
|
Who is online |
Users browsing this forum: No registered users and 3 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|