Как мне скомпилировать код Forth для процессора J1? - PullRequest
0 голосов
/ 10 ноября 2018

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

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

Я не понимаю, как скомпилировать программу Forth, которая может быть загружена в память FPGA и выполнена.

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

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

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

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

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

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

0 голосов
/ 11 ноября 2018

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

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

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

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

...