繁体   English   中英

如何在真正的 FPGA 上实现 nand2tetris 处理器?

[英]How to implement nand2tetris processor on a real FPGA?

我学习了 nand2tetris 课程( https://www.nand2tetris.org/course ),主要目的是学习如何在真正的 FPGA 上构建软处理器。

虽然课程很简单,但现在我开始使用 FPGA 实现,我感到有点失落。

我买了一个 Intel de10 nano FPGA( http://de10-nano.terasic.com/ ),并且从 Uni 那里获得了一些 Verilog 知识,我能够下载“Quartus Prime Lite”并使用简单的东西(如 LED 闪烁)进行引导, ETC...

但是,在实现处理器时,我不清楚有几件事:

  • 如何实现数据 memory? 我看到有一个 DDR3 模块连接到 FPGA 的 HPS。 这是我需要直接使用的东西吗? 我可以简单地在 HDL 中使用一个大的 16 位寄存器向量吗?
  • 如何从读取程序的位置实现 ROM? 以及如何存储我组装的二进制文件,然后引导 fetch-decode-execute 循环?
  • 如何实现屏幕和键盘? 确实,板上还有一个HDMI controller:我必须自己实现所有逻辑吗?

这些是我目前正在努力解决的主要问题。 您能否指出对完全新手有用的任何资源?

谢谢,

我在一个小型 fpga (ice40HX8K) 上完成了 nand2tetris 硬件的实现,以下是我的建议:

A. Memory 原装 nand2tetris 使用两个 memory 零件:

  1. 指令码ROM
  2. 数据 RAM memory

两者都可以使用 fpga 的 BRAM 单元来实现。 它们具有很好的特性,即 BRAM 可以在启动时预加载数据。 这对于使用您的指令代码预加载 ROM 很有用。 如果你有足够的 BRAM 就可以了。 我的主板(来自 Olimex 的 ice40HX8K-EVB)只有 8K x 16 位的 BRAM。 所以我做了以下事情:

  1. 我使用 512 x 16 位的 BRAM 作为 ROM 预加载了引导加载程序(用 Hack-Assembler 编写)
  2. BRAM 的 rest 用作 RAM (7680 x 16 bit)
  3. 我的开发板有一个外部 SRAM 芯片(256 kx 16 位)。 我将此用作指令 memory。 启动时,引导加载程序用应用程序代码填充 SRAM,然后将 SRAM “切换”为指令 memory。

你的主板有一个单独的 DRAM 芯片。 您也可以将其用作 Memory,但请注意:使用 DRAM 比使用 SRAM 复杂得多。

B. 输入/输出 nand2tetris 有一个屏幕和一个键盘。

一个易于实现的替代方案可能如下: 实现一个小型 UART,以便您可以通过终端连接您的 PC(例如 screen /devttyACM0)。 现在您可以在运行时与您的 Hack-CPU(在 fpga 中运行)对话。 我还使用 UART 在启动时上传 Hack-Application。

看看我的回购: https://gitlab.com/x653/nand2tetris-fpga

对于像 nand2tetris 的 CPU 这样简单的东西,您可以使用块 RAM,DE10Nano 上有很多它,可能足以满足您的所有需求。 加上一些更分布的 memory。

如果您仍想访问 DDR,DE10Nano 是一款 SoC,具有由处理器子系统管理的硬 DDR controller。 通过 Avalon 总线与它进行交互非常容易(除非您真的需要最大可能的性能,否则不要打扰 AXI)。

对于 ROM,只需使用 LUT。 Verilog 中的一个简单 static 案例将被翻译成一个高效的基于 LUT 的 ROM。

在 DE10Nano 上访问 HDMI,你可以看看这个例子: https://github.com/combinatorylogic/soc/blob/a1d282d793548030cba940496bed90ff3a29c0ba/backends/c2/hw/de10nano/vgav1080p .同一项目中的 DDR 访问)。 在使用 HDMI 之前,您需要通过 i2c 设置 ADV7513 芯片,请参阅同一项目下 Terasic 的库副本。

对于单色 800x600 视频,您可以使用块 RAM。 对于更高的分辨率,如上例所示,您必须使用 DDR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM