Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср май 25, 2022 07:54

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 205 ]  На страницу 1, 2, 3, 4, 5 ... 14  След.
Автор Сообщение
 Заголовок сообщения: Как сделать форт-процессор 2022
СообщениеДобавлено: Чт янв 20, 2022 02:01 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7515
Благодарил (а): 21 раз.
Поблагодарили: 142 раз.
Собственно, материалы по форт-процессору.


Вложения:
Разработка форт-процессора.pdf [1.33 Мб]
Скачиваний: 129

За это сообщение автора Hishnik поблагодарили - 4: 4myke, pk-fr-76-2, Sotnik, Total Vacuum
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Чт янв 20, 2022 19:48 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 253
Откуда: Москва
Благодарил (а): 44 раз.
Поблагодарили: 7 раз.
Кстати, интересная идея родилась. :) Если нужен небольшой стек и разрядность ячеек тоже небольшая, то можно для реализации стека использовать один большой регистр. А по командам dup/drop/add/..., которые должны смещать указатель, тупо вращаем весь регистр влево/вправо. Например, в 64-битный регистр можно впихнуть стек из 8 8-битных ячеек. И указатель стека вообще не нужен, т.к. вершина всегда лежит в младшем байте, подвершина - в чуть более старшем байте и т.д... И stack overflow/underflow проверять не обязательно. :)
Не знаю правда, насколько такая идея в плис применима.


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1661
Благодарил (а): 6 раз.
Поблагодарили: 62 раз.
Total Vacuum писал(а):
Если нужен небольшой стек и разрядность ячеек тоже небольшая, то можно для реализации стека использовать один большой регистр..

В плане реализации "экзотических" вариантов управления стeком данных,
как пример такой архитектуры и системы команд реализованной,
то расшифрована схема управляющего автомата калькулятора MK-61
а, если учесть что в рамках этой системы команд реализован и вариант Форт-системы Калисто (MK-161), то есть повод и для размышлений и с таким "исходным" вариантом. :)

P.S. На Хабр публикуются и некоторые статьи по вопросам понимания построения процессоров в архитектуре FPGA
FIFO для самых маленьких (вместе с вопросами на интервью)
Х.З. как полезна популяризируемая книга Харрис Д.М, но так её пролистать не дошли руки. :)


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7515
Благодарил (а): 21 раз.
Поблагодарили: 142 раз.
Total Vacuum писал(а):
Если нужен небольшой стек и разрядность ячеек тоже небольшая, то можно для реализации стека использовать один большой регистр. А по командам dup/drop/add/..., которые должны смещать указатель, тупо вращаем весь регистр влево/вправо. Например, в 64-битный регистр можно впихнуть стек из 8 8-битных ячеек. И указатель стека вообще не нужен, т.к. вершина всегда лежит в младшем байте, подвершина - в чуть более старшем байте и т.д...

Технически возможно. Другое дело, что иногда надо снимать два числа, поэтому режим аппаратного сдвигового регистра в LUT перестает автоматически применяться. Так что получается примерно то же.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7515
Благодарил (а): 21 раз.
Поблагодарили: 142 раз.
KPG писал(а):
то есть повод и для размышлений и с таким "исходным" вариантом.

Нет тут никаких поводов для размышлений, это шаг назад с точки зрения проектирования. Есть Verilog и VHDL, они позволяют создать схему по приведенному описанию. В приклеенном документе на реализацию стека отведен один слайд. Этого недостаточно для того, чтобы уже начать что-то делать?

KPG писал(а):
На Хабр публикуются и некоторые статьи по вопросам понимания построения процессоров в архитектуре FPGA

"Кое-где кое-что кое-зачем"... :))

KPG писал(а):
как полезна популяризируемая книга Харрис Д.М, но так её пролистать не дошли руки


Вот-вот - "не дошли руки". А когда дойдут? Паттерсон+Хеннесси еще есть. Если уж от моих материалов нос так упорно воротится.


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1661
Благодарил (а): 6 раз.
Поблагодарили: 62 раз.
Hishnik писал(а):
Вот-вот - "не дошли руки". А когда дойдут? Паттерсон+Хеннесси еще есть. Если уж от моих материалов нос так упорно воротится.

Нет, не так, но как всякая презентация она не показывает конкретные шаги по достижению, к примеру, и реализации учебного Форт процессора, как тогоже J1 популярного в рамках Github, а, чтобы понять идеи изложенные в презентации, а не рабочего конспекта, то всё равно придётся погрузится в чтение книг по FPGA. :)

P.S. Мало ли до чего руки у кого то не доходят, но разве это повод останавливаться в объяснении чего то кому то, если гордость не препятствие этому? (или нет и желательны апплодисменты из зала)

Hishnik писал(а):
В приклеенном документе на реализацию стека отведен один слайд. Этого недостаточно для того, чтобы уже начать что-то делать?.

Sory.
Ничего не достаточно, пока кто то не повторит результат авторского проекта и не начнёт с ним работать.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7515
Благодарил (а): 21 раз.
Поблагодарили: 142 раз.
KPG писал(а):
Ничего не достаточно, пока кто то не повторит результат авторского проекта и не начнёт с ним работать.

Во-первых, уже повторено, и не раз. Материалы с 2020 года, за это время заинтересованные люди уже осмыслили, и даже доклад был по мотивам этого проекта (но на System Verilog). Во-вторых, что за субъективизм? Оно работает, потому что так устроено, и это проверяется независимыми методами.


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1661
Благодарил (а): 6 раз.
Поблагодарили: 62 раз.
Ссылка на перевод книги (из раздела книг по Форт местного форума)
Стековые компьютеры


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7515
Благодарил (а): 21 раз.
Поблагодарили: 142 раз.
1) Дошел до первого рисунка с обозначением latch на схеме. Можно забывать - начиная с 90 нм (состояние ПЛИС 15-летней давности), latch не используются в силу нестабильной работы на тонких техпроцессах.
2) Где схемы в RTL? Где вообще маршрут проектирования и разъяснения?
3) Привязки к ПЛИС нет как таковой.

Вывод - книга на сегодняшний день представляет максимум историческую ценность как иллюстрация соответствующей вехи в развитии интереса к стековым процессорам.


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1661
Благодарил (а): 6 раз.
Поблагодарили: 62 раз.
Chad - A self-hosting Forth for J1-style CPU
репа Brad Eckert -a (автора и ff303 и какого то по памяти Форт процессора с симулятором)

ultratechnology.com/chips.htm

P.S. Процессор языка Forth в FPGA
(эту статью автор проекта публиковал и на Хабре https://habr.com/en/post/523348/ 14 October 2020 )

Forth Cpu на Github.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7515
Благодарил (а): 21 раз.
Поблагодарили: 142 раз.
Сравнительный анализ будет?


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7515
Благодарил (а): 21 раз.
Поблагодарили: 142 раз.
Ну раз анализа не будет, сделаю я.

Что мы видим в ПЛИС в частности и в электронике вообще. Видим периодические смещения стилей проектирования - т.н. "технологические сдвиги". Если когда-то типичные ПЛИС представляли собой микросхемы на 1-2 тыс. ячеек с 4-входовыми LUT и памятью блоками 4 кбит, то примерно 10 лет назад они превратились в 5-10 тыс. ячеек, 6-входовые LUT и 18 кбит блоки, а главное - остро встал вопрос синхронизации. Поэтому отличить старые проекты от "условно новых" можно по наличию специфических для еще дискретной логики решений, которые после 90 нм следует тщательно вычищать из проекта.

Второй момент, связанный уже с современной ситуацией, когда даже 10 тыс. ячеек - не предел и даже не кристалл начального уровня. Он связан уже с методологией проектирования и планируемой ролью процессора. Если это просто "смотрите, процессор!", это неинтересно, и альтернативой может быть как софт-Microblaze, так и аппаратный ARM (внешний или накристальный). Имея 35 тыс. ячеек на недорогой учебной плате, вполне можно тратить их на процессоры. А вот к памяти это не очень относится, поскольку памяти всегда не хватает.

Что мы видим в J1. Достаточно приемлемый стиль кодирования, однако же с асинхронным сбросом, который дает большие шансы получить проблемы при практической работе современных ПЛИС. Проблемы не уровня "ни разу не заработало", а более вредные "иногда половина процессора уже работает, а другая еще в сбросе". 16-разрядная команда - заурядное решение. Можно брать 8 или уже тогда 18 (по фактической разрядности блоков памяти). А так ни экономии дефицитной памяти, ни нормальной работы с литералами. J1 может загрузить на стек только 15 бит, расширенные нулями. Остальное догружать сдвигами? Опять же, из 16 бит 3 отведены под поле признака команды, остается 13 на адрес. Это 8192 команды, и архитектурного резерва просто не предусмотрено - это надо всю систему команд перепроектировать, а она жестко разложена по отдельным битовым полям. А более крупные проекты "никому не нужны"? Или тут проще - никто и не пробовал?

Смотрим систему команд. Умножения нет. Ладно, пусть это из-за старых ПЛИС, но хотя бы сдвиг-сложение можно было оставить. Зато есть barrel shifter (спасибо, что отключаемый директивой, поскольку он ресурсоемкий). RET, совмещаемый с любой командой - технически возможно, но странновато с точки зрения проекта. Это при эмуляции Форта процессор будет постоянно вызывать программы, но когда слова Форта в основном представляют собой аппаратные примитивы, RET вызывается не очень-то часто.

В целом, если откатиться на два крупных поколения ПЛИС назад (где-то до Spartan-3 и Cyclone-II), такое решение было бы соответствующим общему уровню аппаратуры. Куда его сегодня - непонятно. Особенности архитектуры делают J1 "монолитным", поправить что-то можно только в мелочах, поскольку при попытке серьезных модификаций рассыпается все кодирование команды, жестко завязанное на битовые поля.


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

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 253
Откуда: Москва
Благодарил (а): 44 раз.
Поблагодарили: 7 раз.
Вообще-то "ущербные" литералы - общая беда практически всех современных архитектур, в которых используются моноширинные команды... :) В ARM, например, все команды 32-битные, при этом в одной инструкции MOV можно закодировать 8-битную "мантиссу" и 4-битное вращение (с шагом 2 бита), т.е. за раз в регистр можно поместить 000000FF, C000003F, F000000F, 003FC000, 00000FF0 и т.д. и т.п., а в Thumb (Cortex-XX), где подавляющее число команд имеет размер 16-бит (спасибо, что хоть call у них состоит из двух 16-битных команд, но простые прыжки опять же 16-битные, 8/11-битное смещение для условного/безусловного jmp), вообще не разгуляешься: в регистр можно поместить ровно байт и ни битом больше... :) В DSP Blackfin можно залить в регистр любое нужное значение за 2 32-битные команды (по команде на старшую и младшую половину регистра). В MIPS, предполагаю, плюс-минус примерно все то же самое... Так что J1 в этом плане не самый ущербный... :)
Ну а с call они действительно погорячились. Впрочем, можно, наверное поменять местами команды call и lit, тогда можно будет подальше запрыгнуть... Или сделать адресацию не абсолютной, а относительной, тогда до любого места программы можно будет доскакать за несколько прыжков... Почитал статью про m02mini, на которой экспериментировали, в установленной там ПЛИС (Intel/Altera 10M02), оказывается, всего 2K ячеек, из которых J1 съел 1K, так что довольно компактное решение получилось... Очень порадовало наличие в FPGA встроенной flash... Кстати, размер flash 12K, т.е. 6K команд, так что J1 идеально подходит для этой ПЛИС... :) Что-то тоже такую плату захотелось...
А вообще на данный момент под рукой только платы со Spartan-3 имеются, так что буду тренироваться на том, что есть... :)


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1661
Благодарил (а): 6 раз.
Поблагодарили: 62 раз.
Total Vacuum писал(а):
А вообще на данный момент под рукой только платы со Spartan-3 имеются, так что буду тренироваться на том, что есть... :)

Изначально проект пpоцессора J1 появился в авторской реализации Gameduino 1 на XC3S200A
У меня такая плата Gameduino 1 (без распаянной микросхемы памяти)
Она же с распаянной микросхемой памяти

Весь полный проект по сборки брал с этого сайта

Собирал под Xilinx Ise 14.7
Код:
Number used for 32x1 RAMs   372                  
Number used as Shift registers   70                  
Number of bonded IOBs   23   68   33%            
Number of BUFGMUXs   1   24   4%            
Number of DCMs   1   4   25%            
Number of ICAPs   1   1   100%            
Number of DNA_PORTs   1   1   100%            
Number of ICAP_SPARTAN3As   1   1   100%            
Number of MULT18X18SIOs   7   16   43%            
Number of RAMB16BWEs   16   16   100%            
Average Fanout of Non-Clock Nets   3.77               
 
Performance Summary            [-]      
Final Timing Score:   0 (Setup: 0, Hold: 0, Component Switching Limit: 0)   Pinout Data:   Pinout Report         
Routing Results:   All Signals Completely Routed   Clock Data:   Clock Report         
Timing Constraints:   All Constraints Met            
 
Detailed Reports                  [-]      
Report Name   Status   Generated   Errors   Warnings   Infos         
Synthesis Report                        
Translation Report   Current   Ñð 4. äåê 02:02:24 2019   0   0   2 Infos (0 new)         
Map Report   Current   Ñð 4. äåê 02:02:32 2019   0   21 Warnings (0 new)   5 Infos (0 new)         
Place and Route Report   Current   Ñð 4. äåê 02:03:16 2019   0   0   0         
Power Report                        
Post-PAR Static Timing Report   Current   Ñð 4. äåê 02:03:25 2019   0   0   5 Infos (0 new)         
Bitgen Report                     
 
Secondary Reports         [-]      
Report Name   Status   Generated      

[/spoiler]
Код:
All Implementation Messages Ïò 19. èþí 18:34:52 2020

--------------------------------------------------------------------------------

Program  All Implementation Messages - Errors, Warnings, and Infos New
map WARNING  Pack:266 - The function generator occ/ramx[2].ramx/r6 failed to merge with F5 multiplexer occ/ramx[2].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[2].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[2].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  Pack:266 - The function generator occ/ramx[8].ramx/r6 failed to merge with F5 multiplexer occ/ramx[8].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[8].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[8].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  Pack:266 - The function generator occ/ramx[3].ramx/r6 failed to merge with F5 multiplexer occ/ramx[3].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[3].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[3].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  Pack:266 - The function generator occ/ramx[4].ramx/r6 failed to merge with F5 multiplexer occ/ramx[4].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[4].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[4].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  Pack:266 - The function generator occ/ramx[5].ramx/r6 failed to merge with F5 multiplexer occ/ramx[5].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[5].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[5].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  Pack:266 - The function generator occ/ramx[0].ramx/r6 failed to merge with F5 multiplexer occ/ramx[0].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[0].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[0].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  Pack:266 - The function generator occ/ramx[6].ramx/r6 failed to merge with F5 multiplexer occ/ramx[6].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[6].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[6].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  Pack:266 - The function generator occ/ramx[1].ramx/r6 failed to merge with F5 multiplexer occ/ramx[1].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[1].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[1].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  Pack:266 - The function generator occ/ramx[7].ramx/r6 failed to merge with F5 multiplexer occ/ramx[7].ramx/Mmux__COND_109_3_f5. The function generator occ/ramx[7].ramx/r6 is unable to be placed in the G position because the output signal doesn't match other symbols' use of the G signal. The signal occ/ramx[7].ramx/Mmux__COND_109_5 already uses G. The design will exhibit suboptimal timing.   
map WARNING  PhysDesignRules:372 - Gated clock. Clock net local_j1_read_not0001 is sourced by a combinatorial pin. This is not good design practice. Use the CE pin to control the loading of data into the flip-flop.   
map WARNING  PhysDesignRules:372 - Gated clock. Clock net mem_data_rd_reg_or0000 is sourced by a combinatorial pin. This is not good design practice. Use the CE pin to control the loading of data into the flip-flop.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
map WARNING  PhysDesignRules:812 - Dangling pin  on block::.   
ngdbuild INFO  ConstraintSystem:178 - TNM 'CLKA', used in period specification 'TS_clk', was traced into DCM_SP instance DCM_SP. The following new TNM groups and period specifications were generated at the DCM_SP output(s): CLKFX:   
ngdbuild INFO  NgdBuild:1222 - Setting CLKIN_PERIOD attribute associated with DCM instance DCM_SP to 40.000000 ns based on the period specification ( [top.ucf(74)]).   
map INFO  LIT:243 - Logical network j/Mram_dstack10/SPO has no load.   
map INFO  LIT:395 - The above info message is repeated 79 more times for the following (max. 5 shown): j/Mram_dstack11/SPO, j/Mram_dstack12/SPO, j/Mram_dstack13/SPO, j/Mram_dstack14/SPO, j/Mram_dstack15/SPO To see the details of these info messages, please use the -detail switch.   
map INFO  MapLib:562 - No environment variables are currently set.   
map INFO  LIT:244 - All of the single ended outputs in this design are using slew rate limited output drivers. The delay on speed critical single ended outputs can be dramatically reduced by designating them as fast outputs.   
map INFO  PhysDesignRules:772 - To achieve optimal frequency synthesis performance with the CLKFX and CLKFX180 outputs of the DCM comp vga_ck_gen/DCM_inst/DCM_SP, consult the device Interactive Data Sheet.   
trce INFO  Timing:3412 - To improve timing, see the Timing Closure User Guide (UG612).   
trce INFO  Timing:2752 - To get complete path coverage, use the unconstrained paths option. All paths that are not constrained will be reported in the unconstrained paths section(s) of the report.   
trce INFO  Timing:3339 - The clock-to-out numbers in this timing report are based on a 50 Ohm transmission line loading model. For the details of this model, and for more information on accounting for different loading conditions, please see the device datasheet.   
trce INFO  Timing:3390 - This architecture does not support a default System Jitter value, please add SYSTEM_JITTER constraint to the UCF to modify the Clock Uncertainty calculation.   
trce INFO  Timing:3389 - This architecture does not support 'Discrete Jitter' and 'Phase Error' calculations, these terms will be zero in the Clock Uncertainty calculation. Please make appropriate modification to SYSTEM_JITTER to account for the unsupported Discrete Jitter and Phase Error.   


P.S. Проект в плату после его пересборки в плату не заливал т.к. не подключил к загрузчику с платы Digilent, но примеры с Gameduino 1 повыводил при подключении к Arduino (Genuino 101)
Немного размышлял, что можно улучшить в кодировании команд J1
На Github есть некоторые вариации J1 - J1A, J1B.

Реализация на VHDL системы на чипе (SoC), основанной на J1 —
полноценный Форт-компьютер, разработанный Richard Howe:
Цитата:
Целевая FPGA — Spartan 6 — плата для разработки Nexys 3.


Авторский форт SwapForth Джеймса Боумэна (автора Gameduino 1)
В последней своей разработке Gameduino Dazzler с этим процессором J1 в FPGA для связки с FTDI 3D оставлен.

UPduino (v1, v2) FPGA board with Mecrisp-Ice Forth ICE40UP5K ~5-6$)
система команд может чем то отличаться от SwapForth
Код:
Mecrisp-Ice 1.2

ok.

words falog f** flog fln (log) fraction integer> >integer lbase epsilon fexp ^fraction
^integer (!) d>u d0< fpow fatan2 facos fasin (fasin) fatan dom2|3 dom3 dom2 (fatan) (taylor2)
2degrees ftan fsincos fcos fsin >range -taylor +taylor (taylor) >taylor rad>deg deg>rad e pi
F# (f#) _f# F.S fd abort" FVARIABLE FCONSTANT >FLOAT -trailing flfrac flexp flint fdigit? flgood
fsign FSQRT d< FE. FS. (E.) R. F. (F.) fsplit F~ F/ F* FMAX FMIN FROUND FLOOR F= F< F- F+ tneg
FROT FNIP FPICK FOVER FSWAP FALIGNED FALIGN FABS F0> F0< F0= F0<> FSIGN? F! F@ FLOATS FLOAT+ S>F
F>D D>F FNEGATE FDROP FDUP FDEPTH FCLEAR SET-PRECISION PRECISION F2/ F2* normalize fshift >exp1
ftemp' expx2 expx1 m1sto m1get fmove 'e2 'e1 'm3 'm2 'm1 longdiv *norm lstemp t+ t2/ t2* sign>exp
exp>sign frshift ud2/ d2/ du< ferror &esign &sign &unsign mxdig bicl ftemp fstak fsp digits -byfp
byfp fpmxst see seec disasm-step memstamp alu. name. disasm-cont disasm-$ insight .s dump new
cornerstone save erase spiwe waitspi m*/ t/ t* 2r@ 2r> 2>r tnegate 2constant 2variable timer1 random
randombit tickshh ticksh ticksl now ms endcase endof of case s" within pad unused ." mod / /mod move
u.r .r d.r rtype u. . d. ud. (d.) #> #s # sign hold <# hld BUF BUF0 pick roll spaces */ */mod fm/mod
sm/rem sgn constant variable m* >body create repeat while else <= >= u<= u>= ( [char] ['] eint? dint
eint load spi> >spi spix idle xor! bic! bis! quit evaluate refill accept number \ char ' postpone
literal abort rdrop r@ r> >r hex binary decimal unloop j i +loop loop ?do leave do recurse does>
until again begin then if ahead ; exit :noname : ] [ immediate foldable sliteral s, compile, c, ,
allot parse parse-name source 2! 2@ cmove> cmove fill sfind align aligned words here tib init forth
>in base state /string type count .x .x2 bl cr space c! c@ emit key key? emit? um/mod * um* d2* d0=
m+ s>d dabs d- dnegate d+ depth io@ io! nip over dup swap u< < = invert not or and xor - + ! 2/ 2*
cells abs bounds umax umin max min 2over 2swap +! 2dup ?dup 2drop tuck -rot rot true false drop u>
0> 0< > 0<> <> cell+ 0= rdepth @ 1- negate 1+ arshift rshift lshift execute  ok.
  ok.
here . 11828  ok.
unused . 3532  ok.
  ok.
pi fs. 3.141593e0  ok.
pi f# 1.23456e-775 f/ fs. 2.544706e775  ok.




Сама плата: https://github.com/tinyvision-ai-inc/UPduino-v2.1



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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7515
Благодарил (а): 21 раз.
Поблагодарили: 142 раз.
KPG писал(а):
Number used for 32x1 RAMs   372   

Выше пропущены главные показатели - количество LUT. Начинается с того, что 372 из них использованы в режиме распределенной памяти (что в целом плюс).

KPG писал(а):
Реализация на VHDL системы на чипе (SoC), основанной на J1 —

По сути это демонстрация технологии. Хорошо, когда форт-процессор помогает управлять чем-то... а чем? Показать, что там и дисплей, и кнопки, и индикаторы - это неплохо, но это должно стать первым шагом цепочки рассуждений "и вот если процессор может реализовать такие очевидные вещи, его можно начать адаптировать под ....". А так это напрашивается на встречный вопрос "ну и почему так дорого и сложно?".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 205 ]  На страницу 1, 2, 3, 4, 5 ... 14  След.

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


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

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


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

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