Forth http://fforum.winglion.ru/ |
|
Как сделать форт-процессор 2022 http://fforum.winglion.ru/viewtopic.php?f=3&t=3322 |
Страница 1 из 28 |
Автор: | Hishnik [ Чт янв 20, 2022 02:01 ] | ||
Заголовок сообщения: | Как сделать форт-процессор 2022 | ||
Собственно, материалы по форт-процессору.
|
Автор: | Total Vacuum [ Чт янв 20, 2022 19:48 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
Кстати, интересная идея родилась. Если нужен небольшой стек и разрядность ячеек тоже небольшая, то можно для реализации стека использовать один большой регистр. А по командам dup/drop/add/..., которые должны смещать указатель, тупо вращаем весь регистр влево/вправо. Например, в 64-битный регистр можно впихнуть стек из 8 8-битных ячеек. И указатель стека вообще не нужен, т.к. вершина всегда лежит в младшем байте, подвершина - в чуть более старшем байте и т.д... И stack overflow/underflow проверять не обязательно. Не знаю правда, насколько такая идея в плис применима. |
Автор: | KPG [ Чт янв 20, 2022 20:11 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
Total Vacuum писал(а): Если нужен небольшой стек и разрядность ячеек тоже небольшая, то можно для реализации стека использовать один большой регистр.. В плане реализации "экзотических" вариантов управления стeком данных, как пример такой архитектуры и системы команд реализованной, то расшифрована схема управляющего автомата калькулятора MK-61 а, если учесть что в рамках этой системы команд реализован и вариант Форт-системы Калисто (MK-161), то есть повод и для размышлений и с таким "исходным" вариантом. P.S. На Хабр публикуются и некоторые статьи по вопросам понимания построения процессоров в архитектуре FPGA FIFO для самых маленьких (вместе с вопросами на интервью) Х.З. как полезна популяризируемая книга Харрис Д.М, но так её пролистать не дошли руки. |
Автор: | Hishnik [ Чт янв 20, 2022 21:03 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
Total Vacuum писал(а): Если нужен небольшой стек и разрядность ячеек тоже небольшая, то можно для реализации стека использовать один большой регистр. А по командам dup/drop/add/..., которые должны смещать указатель, тупо вращаем весь регистр влево/вправо. Например, в 64-битный регистр можно впихнуть стек из 8 8-битных ячеек. И указатель стека вообще не нужен, т.к. вершина всегда лежит в младшем байте, подвершина - в чуть более старшем байте и т.д... Технически возможно. Другое дело, что иногда надо снимать два числа, поэтому режим аппаратного сдвигового регистра в LUT перестает автоматически применяться. Так что получается примерно то же. |
Автор: | Hishnik [ Чт янв 20, 2022 21:07 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
KPG писал(а): то есть повод и для размышлений и с таким "исходным" вариантом. Нет тут никаких поводов для размышлений, это шаг назад с точки зрения проектирования. Есть Verilog и VHDL, они позволяют создать схему по приведенному описанию. В приклеенном документе на реализацию стека отведен один слайд. Этого недостаточно для того, чтобы уже начать что-то делать? KPG писал(а): На Хабр публикуются и некоторые статьи по вопросам понимания построения процессоров в архитектуре FPGA "Кое-где кое-что кое-зачем"... KPG писал(а): как полезна популяризируемая книга Харрис Д.М, но так её пролистать не дошли руки Вот-вот - "не дошли руки". А когда дойдут? Паттерсон+Хеннесси еще есть. Если уж от моих материалов нос так упорно воротится. |
Автор: | KPG [ Чт янв 20, 2022 21:34 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
Hishnik писал(а): Вот-вот - "не дошли руки". А когда дойдут? Паттерсон+Хеннесси еще есть. Если уж от моих материалов нос так упорно воротится. Нет, не так, но как всякая презентация она не показывает конкретные шаги по достижению, к примеру, и реализации учебного Форт процессора, как тогоже J1 популярного в рамках Github, а, чтобы понять идеи изложенные в презентации, а не рабочего конспекта, то всё равно придётся погрузится в чтение книг по FPGA. P.S. Мало ли до чего руки у кого то не доходят, но разве это повод останавливаться в объяснении чего то кому то, если гордость не препятствие этому? (или нет и желательны апплодисменты из зала) Hishnik писал(а): В приклеенном документе на реализацию стека отведен один слайд. Этого недостаточно для того, чтобы уже начать что-то делать?. Sory. Ничего не достаточно, пока кто то не повторит результат авторского проекта и не начнёт с ним работать. |
Автор: | Hishnik [ Чт янв 20, 2022 23:59 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
KPG писал(а): Ничего не достаточно, пока кто то не повторит результат авторского проекта и не начнёт с ним работать. Во-первых, уже повторено, и не раз. Материалы с 2020 года, за это время заинтересованные люди уже осмыслили, и даже доклад был по мотивам этого проекта (но на System Verilog). Во-вторых, что за субъективизм? Оно работает, потому что так устроено, и это проверяется независимыми методами. |
Автор: | KPG [ Пт янв 21, 2022 11:50 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
Ссылка на перевод книги (из раздела книг по Форт местного форума) Стековые компьютеры |
Автор: | Hishnik [ Пт янв 21, 2022 12:12 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
1) Дошел до первого рисунка с обозначением latch на схеме. Можно забывать - начиная с 90 нм (состояние ПЛИС 15-летней давности), latch не используются в силу нестабильной работы на тонких техпроцессах. 2) Где схемы в RTL? Где вообще маршрут проектирования и разъяснения? 3) Привязки к ПЛИС нет как таковой. Вывод - книга на сегодняшний день представляет максимум историческую ценность как иллюстрация соответствующей вехи в развитии интереса к стековым процессорам. |
Автор: | KPG [ Пт янв 21, 2022 14:12 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
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. |
Автор: | Hishnik [ Пт янв 21, 2022 15:08 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
Сравнительный анализ будет? |
Автор: | Hishnik [ Сб янв 22, 2022 15:39 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
Ну раз анализа не будет, сделаю я. Что мы видим в ПЛИС в частности и в электронике вообще. Видим периодические смещения стилей проектирования - т.н. "технологические сдвиги". Если когда-то типичные ПЛИС представляли собой микросхемы на 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 "монолитным", поправить что-то можно только в мелочах, поскольку при попытке серьезных модификаций рассыпается все кодирование команды, жестко завязанное на битовые поля. |
Автор: | Total Vacuum [ Пн янв 24, 2022 11:40 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
Вообще-то "ущербные" литералы - общая беда практически всех современных архитектур, в которых используются моноширинные команды... В 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 имеются, так что буду тренироваться на том, что есть... |
Автор: | KPG [ Пн янв 24, 2022 12:59 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
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 |
Автор: | Hishnik [ Вт янв 25, 2022 17:26 ] |
Заголовок сообщения: | Re: Как сделать форт-процессор 2022 |
KPG писал(а): Number used for 32x1 RAMs 372 Выше пропущены главные показатели - количество LUT. Начинается с того, что 372 из них использованы в режиме распределенной памяти (что в целом плюс). KPG писал(а): Реализация на VHDL системы на чипе (SoC), основанной на J1 — По сути это демонстрация технологии. Хорошо, когда форт-процессор помогает управлять чем-то... а чем? Показать, что там и дисплей, и кнопки, и индикаторы - это неплохо, но это должно стать первым шагом цепочки рассуждений "и вот если процессор может реализовать такие очевидные вещи, его можно начать адаптировать под ....". А так это напрашивается на встречный вопрос "ну и почему так дорого и сложно?". |
Страница 1 из 28 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |