Verwandte Themen: Wo fange ich an, wenn ich erwäge, eine GPU zu bauen?
Ich bin ein ziemlich starker Programmierer, aber ich bin sehr neu im Hardwaredesign, also entschuldigen Sie, wenn ich seltsame Terminologie verwende.
Mein langfristiges Ziel ist es, eine benutzerdefinierte GPU zu schreiben, aber ich beginne mit einem einfachen Framebuffer, um mich mit dem Hardwaredesign vertraut zu machen. Hier ist ein Überblick darüber, was ich mit meinem Projekt zu tun erwarte:
Ich kann Nr. 1 und Nr. 2 herausfinden, aber ich habe noch nie so etwas wie Nr. 3 gemacht. Ich denke, das optimale Entwicklungs-Setup wäre ein virtuelles Display, das an die Ausgangspins meines Designs (VGA oder DVI) angeschlossen und in einem Fenster auf meinem Computer angezeigt wird. Ich könnte dies wahrscheinlich mit einem FPGA und einem kleinen LCD tun, aber ich denke, es wird für die Entwicklung (insbesondere auf Reisen) einfacher sein, alles simulieren zu lassen.
Gibt es dafür schon eine Lösung? Wenn ja, wonach kann ich suchen, um weitere Informationen darüber zu erhalten? Wenn nicht, was ist das übliche Entwicklungs-Setup für so etwas?
Ich entwickle unter Linux mit Icarus Verilog, daher wäre eine Lösung, die damit funktioniert, vorzuziehen.
Eine Alternative wäre, PLI/VPI zu verwenden, um einen C-Code aufzurufen. Rufen Sie also, anstatt die Pin-Steuerung auf oberster Ebene durchzuführen, eine Systemtask auf, die das Pixel in einem Software-Frame-Puffer speichert und in einem Fenster rendert.
Ich habe die gleiche Technik kürzlich für einen UART verwendet - einen anderen UART mit gekreuztem TX + RX instanziiert, und wenn der in der Testbench Daten empfängt - füttere ihn mit einem Systemtask, der in einen PTY schreibt (und und umgekehrt).
Da die Simulation wahrscheinlich nicht so schnell läuft, kann das Schreiben von Bilddateien oder Binärdaten und die anschließende Nachbearbeitung nützlicher sein.
Tim
pjc50
beatgammit
Tim
beatgammit