![](/img/trans.png)
[英](Nand2tetris CPU) (What/How much) happens in each clock cycle?
[英]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...
但是,在實現處理器時,我不清楚有幾件事:
這些是我目前正在努力解決的主要問題。 您能否指出對完全新手有用的任何資源?
謝謝,
我在一個小型 fpga (ice40HX8K) 上完成了 nand2tetris 硬件的實現,以下是我的建議:
A. Memory 原裝 nand2tetris 使用兩個 memory 零件:
兩者都可以使用 fpga 的 BRAM 單元來實現。 它們具有很好的特性,即 BRAM 可以在啟動時預加載數據。 這對於使用您的指令代碼預加載 ROM 很有用。 如果你有足夠的 BRAM 就可以了。 我的主板(來自 Olimex 的 ice40HX8K-EVB)只有 8K x 16 位的 BRAM。 所以我做了以下事情:
你的主板有一個單獨的 DRAM 芯片。 您也可以將其用作 Memory,但請注意:使用 DRAM 比使用 SRAM 復雜得多。
B. 輸入/輸出 nand2tetris 有一個屏幕和一個鍵盤。
一個易於實現的替代方案可能如下: 實現一個小型 UART,以便您可以通過終端連接您的 PC(例如 screen /devttyACM0)。 現在您可以在運行時與您的 Hack-CPU(在 fpga 中運行)對話。 我還使用 UART 在啟動時上傳 Hack-Application。
對於像 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.