Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт дек 05, 2024 05:28

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 413 ]  На страницу Пред.  1 ... 23, 24, 25, 26, 27, 28  След.
Автор Сообщение
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт дек 06, 2022 00:03 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 479
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 23 раз.
В перерыве футбола... :D

Проверил в примитивном тестовом варианте (с десяток строк на верилоге) работу VGA на Spartan-3E Starter Kit, процессором оно пока не управляется, но красный квадратик на экране уже рисует. Завел 5 ножек (red, green, blue, hsync, vsync), уменьшил частоту тактов до 25MHz, чтобы не пересчитывать, взял цифры из User Guide к этой плате, возможно где-то и ошибся на традиционную плюс/минус единицу, но главное, что монитор распознал картинку и нарисовал. Теперь надо подумать, как общаться с этим VGA: встроенной памяти BRAM в ПЛИС для графики мало, но для текстового режима или спрайтов/тайлов вполне должно хватить. Ну или попробовать задействовать отдельную RAM, она вроде есть на этой плате. Внезапно одна проблема вылезла: мониторов/телевизоров с разъемом VGA в шаговой доступности ни на работе, ни дома нет. :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт дек 06, 2022 11:21 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 479
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 23 раз.
Hishnik писал(а):
Есть такая, только у САПР не хочет обновляться лиценZия...
Ох... Побродил по форумам, например, на electronix.ru много свежих постов по говинам, т.е. люди как-то проблему решают и вроде как лечение не слишком сложное :) Ладно, привезут плату - будем разбираться :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт дек 06, 2022 23:14 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Freecores Хаб на Github.

P.S. Форт в "картинках" при поисковом запросе на Github в гугле картинках.
(ya.ru почему то, так не может)

:)
IRCIS
Цитата:
IRCIS — это эзотерический язык программирования, в котором программа существует в двумерной сетке ячеек, где каждая ячейка содержит одну инструкцию, и выполнение может происходить в любом кардинальном направлении по этой сетке — не только слева направо, но и справа налево, сверху вниз и снизу вверх.

Он имеет визуализатор, который создает анимированное представление выполнения программы в HTML и CSS.

Вдохновленный Befunge.

Из подборки Programming Languages for Enthusiasts
Изображение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Чт дек 08, 2022 19:04 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 479
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 23 раз.
LCD на Starter Kit, кстати, тоже завелся, причем не стал делать специальный отдельный блок на верилоге, а работаю с дисплеем программно через обычный GPIO. И даже бродилка завелась, правда на текстовом экране 16x2 выглядит ну очень забавно :) Если быть точным, фактическое разрешение 16x8, для рисования задействовал 8 символов пользователя, имеющихся на борту этого LCD. Не совсем понятно, почему в User Guide пишут, что LCD медленный. У меня бродилка летает так, что пришлось паузу ставить. :D
Изображение
ссылка на изображение



За это сообщение автора Total Vacuum поблагодарил: Hishnik
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср янв 04, 2023 15:19 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 479
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 23 раз.
Hishnik писал(а):
Total Vacuum писал(а):
Заказал себе в Китае для тренировок плату Tang Nano 9K (там стоит ПЛИС Gowin GW1NR-LV9), должны прислать в этом году. Там вроде какие-то подводные камни с лицензиями и синтезом, но буду решать проблемы по мере их поступления
Кто-нибудь имел дело с такой плисиной? Поделитесь опытом...

Есть такая, только у САПР не хочет обновляться лиценZия...
А тем временем плата пришла... Точнее, пришла перед НГ, но руки дошли только сейчас.
При подаче питания от USB светодиоды однократно загораются и гаснут один за другим. Подключил ради интереса к телевизору через HDMI и с удивлением обнаружил красивую цветную картинку (там что-то типа настроечной ТВ-таблицы), по всей видимости, какой-то тест от PicoRV зашит. Скачал с gowinsemi среду разработки (Education), а с сайта sipeed программатор и драйвера. Взял тестовый пример с гитхаба, несколько раз менял его и заливал в плату. Все прекрасно. Кстати, очень удобно, что среда разработки чем-то напоминает Xilinx ISE, так что ползать по меню и искать где что не пришлось. Можно шить или в SRAM (тогда после рестарта загружается старая прошивка из flash), или во flash (тогда после рестарта будет запускаться уже новая прошивка).
Вот и думаю теперь, что я делаю не так? И чем меня не устраивает Education Version? Есть ли какие-то подводные камни? Говинцы пишут, что
Цитата:
Our Education Version does not require license but support only a small number of GOWIN Devices. Not recommended for business use.
Но GW1NR-9 вроде как поддерживается, а другие девицы мне (пока) и не нужны...
Так что буду развлекаться после праздников... :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср янв 04, 2023 15:38 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7988
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Total Vacuum писал(а):
И чем меня не устраивает Education Version? Есть ли какие-то подводные камни?

Если вопрос только в размере ПЛИС, то никаких проблем быть не должно. Xilinx тоже так делает, тут вопрос только в том, какая плата куплена и поддерживается ли установленная на ней ПЛИС бесплатной лицензией. Мелкие явно поддерживаются.

А education надо скачать... а то у меня старая лицензия кончилась. Tang Nano, соответственно, лежит и пылится.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср янв 11, 2023 11:19 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 479
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 23 раз.
А тем временем где-то в параллельной вселенной... :D
Процессор хоть и со скрипом, но уже запустился на Tang Nano 9K. Пусть в примитивном одноядерном варианте с выводом тестов на светодиоды, но уже видно, что дышит и слушается. Теперь надо разбираться с PLL и частотами, с BSRAM (аналог Block RAM у Xilinx), с UART (почему-то с наскока не заработал вывод в терминал) и т.д. и т.п. Разберусь рано или поздно :)
upd. Вывод в терминал заработал, бродилка бродит. И двухъядерный основной процессор тоже завелся без проблем. Забавно, что потребление ресурсов практически такое же, как и в Xilinx. Единственное заметное отличие - использование BRAM: в Xilinx для двухъядерного процессора получилось 5 блоков (4 общих для двух ядер блока BRAM в качестве RAM и еще один общий для двух ядер блок BRAM для хранения прошивки), а в Gowin почему-то получилось 6 блоков (4 общих для RAM и почему-то 2 отдельных (?) для прошивки).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт янв 17, 2023 04:43 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Немного оффтопика. :)
Agon
Цитата:
Z80 (eZ80F92-18,432МГц 24 address bus) компьютер в 2-3раза быстрее ZX-Next -28МГц с графикой на основе ESP32.

Форт на него тоже сделали Agon-Forth

P.S. А, железных Форт контроллеров даже сравнимых с eZ80 ещё нет, поэтому Форт и запускают на всём стороннем железе
и реализуют на всяких языках пpограммирования. :)
Есть только вариант FPGA для Форт процессорв не составляющий массовку изделий с железным Форт.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт янв 17, 2023 10:26 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7988
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
Есть только вариант FPGA для Форт процессорв не составляющий массовку изделий с железным Форт.

Не вполне понимаю, чем это плохо. FPGA позволяют заниматься именно разработкой, а не монтажом существующей элементной базы с ее последующим программированием.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт янв 17, 2023 15:41 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
Не вполне понимаю, чем это плохо. FPGA позволяют заниматься именно разработкой, а не монтажом существующей элементной базы с ее последующим программированием.

Для разработчика, на определённом этапе прототипироваия/разработки, конечно же хорошо, но это решение, в итоге как то должно привести и к созданию ниши ASIC решений пользовательской электроники, в том числе и для стороннего разработчика использующего этот ASIC.

P.S. Вот почему в магазинах продажи ASIC нет роосийской элементной МК базы чипов микросхем?
(даже безотносительно Форт)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт янв 17, 2023 20:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7988
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
Вот почему в магазинах продажи ASIC нет роосийской элементной МК базы чипов микросхем?
(даже безотносительно Форт)

Потому что производство окупается при большой партии микросхем. Делать в надежде на закупку по одной штуку нерационально. Для экспериментов в области электроники есть ПЛИС.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср янв 18, 2023 10:36 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 479
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 23 раз.
KPG писал(а):
Немного оффтопика. :)
Agon
Цитата:
Z80 (eZ80F92-18,432МГц 24 address bus) компьютер в 2-3раза быстрее ZX-Next -28МГц с графикой на основе ESP32.
Прикольная штука. Только не совсем понятно, почему центральным процессором сделан ez80, а не в разы более шустрый esp32. Чтобы оставаться в более легком весе (8 бит) и носить гордое звание "ретро"? :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт янв 24, 2023 00:49 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Некоторая заметка с reddit по реализации UM/MOD на Форт в составе FPGA.
Автоперевод


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт янв 24, 2023 13:48 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7988
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Последовательное деление занимает не так уж много места. Проще сделать команду "шаг деления", которая будет давать бит за такт, и повторять ее 16/32 раз.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пт авг 11, 2023 01:42 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 479
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 23 раз.
Вернемся ненадолго к нашим баранам. :)
Было:
Калькуляторный тест про 8 ферзей, решения задачи на разных языках и платформах и литературный перевод под мой Форт-процессор ассемблерного решения для ARM. В режиме эмуляции ARM мой процессор уступал ARM'у в 8.92 раз (фактическое отставание было меньше, после оптимизации прыжков вперед стало 8.28). Далее были другие версии ядра, отставание уменьшилось до 7.80, 7.10 и наконец до 6.51 для текущей боевой версии системы команд.
Код:
0 nibble byte + word jz call ret @ ! swap pick nand - * rshift
Для чуть упрощенной версии теста (без пары лишних загрузок/сохранений переменных r7/r8) проигрыш в 5.32 раза. Неплохо, но можно лучше.

Как победить ARM?
Надо бить в его слабые места (а у него оно по сути только одно - команды перехода, которые весят 3 такта), а также по максимуму подчищать свои хвосты. Делаем у себя за такт n (литерал), n call, n jz, 0 pick, n +, n -, а кроме того делаем за такт n @ и n ! для первых 16 адресов. В случае @/! пришлось немного схитрить (а кто мне может запретить? :) ) и закешировать короткие (0-15) адреса на регистрах ПЛИС. Компилируем, запускаем...
Код:
0 09                       [2] 0 r1 !                            [1] MOV R1,#0
0 149                      [2] 0 r0 !                            [1] MOV R0,#0
0 129                      [2] 0 r6 !                            [1] MOV R6,#0
                           [ ] : line40                          [ ] LINE40:
08 158 D                   [3] r1 @ r3 @ -                       [1] CMP R1,R3
2C15                       [2] line180 jz                        [3] BEQ LINE180
128 08 173 9               [4] r6 @ r1 @ s + !                   [?] STR R6,[SP,R1,LSL #2]
08 113 09                  [3] r1 @ 1 + r1 !                     [1] ADD R1,R1,#1
158 129                    [2] r3 @ r6 !                         [1] MOV R6,R3
                           [ ] : line70                          [ ] LINE70:
148 113 149                [3] r0 @ 1 + r0 !                     [1] ADD R0,R0,#1
08 119                     [2] r1 @ r2 !                         [1] MOV R2,R1
                           [ ] : line90                          [ ] LINE90:
118 11D 0B 119             [4] r2 @ 1 - dup r2 !                 [1] SUBS R2,R2,#1
2105                       [1] line40 jz                         [3] BEQ LINE40
118 173 8 139              [4] r2 @ s + @ r7 !                   [?] LDR R7,[SP,R2,LSL #2]
128 138 D 0B 139           [5] r6 @ r7 @ - dup r7 !              [1] SUBS R7,R6,R7
2925                       [1] line140 jz                        [3] BEQ LINE140
138 0B 1F F 0B 3 113 E 139 [9] r7 @ abs r7 !                     [1] RSBMI R7,R7,#0
08 118 D 169               [4] r1 @ r2 @ - r8 !                  [1] SUB R8,R1,R2
138 168 D                  [3] r7 @ r8 @ -                       [1] CMP R7,R8
2925 0 23E5                [3] skip90 jz 0 line90 jz : skip90    [3] BNE LINE90
                           [ ] : line140                         [ ] LINE140:
128 11D 0B 129             [4] r6 @ 1 - dup r6 !                 [1] SUBS R6,R6,#1
2A65 0 2305                [3] skip70 jz 0 line70 jz : skip70    [3] BNE LINE70
08 11D 0B 09               [4] r1 @ 1 - dup r1 !                 [1] SUBS R1,R1,#1
08 173 8 129               [4] r1 @ s + @ r6 !                   [?] LDR R6,[SP,R1,LSL #2]
2C15 0 2925                [3] skip140 jz 0 line140 jz : skip140 [3] BNE LINE140
                           [ ] : line180                         [ ] LINE180:
Отставание от ARM уже в 2.59 раз, а для упрощенного теста и того меньше - 2.17. Отлично, но можно еще лучше.

Боевая система команд не очень хорошо заточена под решение тестовой задачи - затачиваем. Хуже всего дела обстоят с abs - добавляем, так же печально с jnz - тоже добавляем. В итоге имеем такую суррогатную систему команд:
Код:
xxx xxx xxx abs word jz call ret @ ! dec dup inc - + jnz
Здесь 3 свободных слота, при желании можно чем-то нужным наполнить. При этом не сказать, что команды очень уж экзотические, любой из них (кроме, может быть, abs) найдется место в чуть более развитой системе команд, например, в процессоре с 6-битными командами. Отставание в 4.5/3.4 раза для штатного/упрощенного теста.
И в 1.98/1.52 раз, если делать за такт n, n call, n jz, 0 pick, n +, n -, а также n @ и n ! для коротких адресов.
Ну и наконец чуть меняем логику работы inc/dec и делаем n inc, n dec и n abs за такт.
Код:
40000 400099               [2] 0 r1 !                 [1] MOV R1,#0
40000 4000D9               [2] 0 r0 !                 [1] MOV R0,#0
40000 4000B9               [2] 0 r6 !                 [1] MOV R6,#0
                           [ ] `: line40`             [ ] LINE40:
400098 40008D              [2] r1 @ r3 -              [1] CMP R1,R3
400D05                     [1] `line180` jz           [3] BEQ LINE180
4000B8 400098 9            [3] r6 @ r1 @ !            [?] STR R6,[SP,R1,LSL #2]
40009C                     [1] r1 inc                 [1] ADD R1,R1,#1
40008 4000B9               [2] r3 r6 !                [1] MOV R6,R3
                           [ ] `: line70`             [ ] LINE70:
4000DC                     [1] r0 inc                 [1] ADD R0,R0,#1
400098 4000A9              [2] r1 @ r2 !              [1] MOV R2,R1
                           [ ] `: line90`             [ ] LINE90:
4000AA                     [1] r2 dec                 [1] SUBS R2,R2,#1
400285                     [1] `line40` jz            [3] BEQ LINE40
                           [ ]                        [?] LDR R7,[SP,R2,LSL #2]
4000B8 4000A8 8 D B 4000C9 [6] r6 @ r2 @ @ - dup r7 ! [1] SUBS R7,R6,R7
400AB5                     [1] `line140` jz           [3] BEQ LINE140
4000C3                     [1] r7 abs                 [1] RSBMI R7,R7,#0
400098 4000A8 D            [3] r1 @ r2 @ -            [1] SUB R8,R1,R2
D                          [1] -                      [1] CMP R7,R8
4006AF                     [1] `line90` jnz           [3] BNE LINE90
                           [ ] `: line140`            [ ] LINE140:
4000BA                     [1] r6 dec                 [1] SUBS R6,R6,#1
40058F                     [1] `line70` jnz           [3] BNE LINE70
40009A                     [1] r1 dec                 [1] SUBS R1,R1,#1
400098 8 4000B9            [3] r1 @ @ r6 !            [?] LDR R6,[SP,R1,LSL #2]
400ABF                     [1] `line140` jnz          [3] BNE LINE140
                           [ ] `: line180`            [ ] LINE180:
Отставание от ARM всего в 1.17 раз на упрощенном тесте. :)
Кстатати, уже вижу пару-тройку мест, где есть возможность ускорить прошивки и под боевой процессор, и под суррогатный. Но уже лень пересчитывать, может позже при случае :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 413 ]  На страницу Пред.  1 ... 23, 24, 25, 26, 27, 28  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB