簡體   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