Как мне скомпилировать код Forth для процессора J1?

Я заинтересован в использовании ЦП J1 в проекте FPGA.

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

Я не понимаю, как скомпилировать программу на Форте, которую можно загрузить в память ПЛИС и выполнить.

Мне известно о SwapForth, который, по моему мнению, является Forth интерпретатор, который работает на самом процессоре J1. Это не то, чего я хочу. Я хотел бы иметь возможность скомпилировать код Forth на своем ПК в машинный код J1, чтобы позже загрузить его в ОЗУ FPGA и выполнить его в исходном коде.

Существует ли такой инструмент?


person Rocketmagnet    schedule 09.11.2018    source источник
comment
Согласно веб-странице J1 Forth CPU и демонстрационная программа, которую они предоставляют, похоже, что инструмент, который они используют, предназначен для компиляции на ПК.   -  person lurker    schedule 11.11.2018
comment
Makefile прошивки j1demo обучает методу создания исполняемых образов памяти j1 с использованием gforth. j1.mem содержит смещение и 16-битные шестнадцатеричные значения, j1.bin — двоичное значение размера оперативной памяти, предназначенной для включения в программный образ FPGA. Они являются продуктами интерпретационного выполнения кода четвертого и python в каталоге встроенного ПО. Вместо загрузки нового образа FPGA с каждой новой «программой» вы можете использовать загрузчик прошивки и аппаратный ввод-вывод (например, в top.v есть закомментированный UART, в loader.fs есть загрузчик Ethernet, изначально предназначенный для платформы использовал,...).   -  person    schedule 11.11.2018


Ответы (2)


Я знаю о SwapForth, который, как мне кажется, является интерпретатором Forth, работающим на самом процессоре J1.

Вы ошибаетесь здесь. SwapForth — это интерактивный компилятор, а не интерпретатор.

Возможно, он делает больше, чем вам нужно — обрабатывает словари, принимает новый код от UART (в конце концов, это полноценная Форт-система), что вам может вообще не понадобиться, но это не делает его интерпретатором.

Чтобы скомпилировать собственный код, запустите gforth cross.fs basewords.fs your_prog.fs. Обратите внимание, что cross.fs довольно минималистичный и не содержит даже variable/value слов. Но вы можете легко добавить их (и многое другое) прямо в cross.fs.

person Vlad    schedule 11.11.2018

Пожалуйста, взгляните на репозиторий github с swapforth. Он содержит полные реализации для FPGA, таких как J1A и J1B.

С J1B я даже создал полную систему для инициализации и диагностики относительно сложной платы на основе FPGA - AFCK_J1B_FORTH.

Чтобы скомпилировать код с новыми словами, я использую эмуляцию Verilator J1B. Таким образом, вам не нужен настоящий аппаратный J1B для подготовки кода. Весь процесс также описан в README для AFCK_J1B_FORTH.

person wzab    schedule 15.12.2018