我如何为 J1 CPU 编译 Forth 代码?

How do I compile Forth code for the J1 CPU?

我有兴趣在 FPGA 项目中使用 J1 CPU

我知道要使用 J1 CPU 本身,我需要综合(等)Verilog 代码,并将比特流加载到我的 FPGA 中。我可以使用 IceStorm 或 FPGA 供应商自己的工具来完成这项工作。没问题。

我不明白如何编译一个可以上传到FPGA内存并执行的Forth程序。

我知道 SwapForth,我认为它是在 J1 CPU 本身上运行的 Forth interpreter。这不是我想要的。我希望能够在我的 PC 上将 Forth 代码编译成 J1 机器代码,以便稍后我可以将它上传到 FPGA 的 RAM 中并在本机执行。

有这样的工具吗?

I am aware of SwapForth, which I believe is a Forth interpreter which runs on the J1 CPU itself

你错了。 SwapForth 是一个交互式编译器,而不是解释器。

也许它做的比你需要的更多——处理字典,接受来自 UART 的新代码(毕竟,它是一个完整的 Forth 系统),你可能根本不需要这些,但这并不能使它成为解释器.

要编译您自己的代码,运行 gforth cross.fs basewords.fs your_prog.fs。请注意 cross.fs 非常简约,甚至不提供 variable/value 单词。但是您可以轻松地将这些(以及更多)直接添加到 cross.fs.

请看一下github repository with swapforth。它包含 FPGA 的完整实现,如 J1A 和 J1B。

我什至用 J1B 创建了一个完整的系统,用于对相对复杂的基于 FPGA 的板进行初始化和诊断 - AFCK_J1B_FORTH

为了生词编译代码,我用的是J1B的Verilator emulation。所以你不需要硬件中真正的 J1B 来准备代码。 整个过程也有描述in the README of AFCK_J1B_FORTH.

它是一个解释器,它也可以编译,在您的电脑上尝试模拟 swapforth,运行 在 python 上。或者你可以在电脑上写源码到load/interpret/compile.