【问题标题】:How do I compile Forth code for the J1 CPU? [closed]如何为 J1 CPU 编译 Forth 代码? [关闭]
【发布时间】:2018-11-09 22:19:18
【问题描述】:

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

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

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

我知道SwapForth,我相信它是一个在J1 CPU 本身上运行的Forth 解释器。这不是我想要的。我希望能够在我的 PC 上将 Forth 代码编译成 J1 机器代码,以便稍后将其上传到 FPGA 的 RAM 并在本地执行。

这样的工具存在吗?

【问题讨论】:

  • 根据J1 Forth CPU网页,以及他们提供的demo program,看起来他们使用的工具是gforth在PC上编译的。
  • j1demo 固件 Makefile 教授了一种使用 gforth 生成 j1 可执行内存映像的方法。 j1.mem 包含一个偏移量和 16 位十六进制值,j1.bin 一个二进制值,它是用于包含在 FPGA 编程映像中的 RAM 大小。它们是固件目录中第四和 python 代码的解释性执行产品。代替使用每个新“程序”加载新的 FPGA 映像,您可以使用固件加载程序和 HW I/O(例如,top.v 有一个注释掉的 UART,loader.fs 中有一个以太网引导加载程序最初用于该平台用过,...)。

标签: compilation fpga forth


【解决方案1】:

我知道 SwapForth,我相信它是一个在 J1 CPU 本身上运行的 Forth 解释器

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

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

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

【讨论】:

    【解决方案2】:

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

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

    为了用新词编译代码,我使用了J1B的Verilator emulation。因此,您不需要硬件中的真正 J1B 来准备代码。 整个过程也描述了in the README of AFCK_J1B_FORTH

    【讨论】:

      【解决方案3】:

      它是一个解释器,它也可以编译,在你的电脑上尝试模拟的 swapforth,在 python 上运行。或者你可以在电脑上写源码来加载/解释/编译。

      【讨论】:

        猜你喜欢
        • 2014-01-10
        • 2014-03-23
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多