Frage

Ich habe immer irgendwie wollte meinen eigenen Mikroprozessor machen .. Ich habe gelesen,

War es hilfreich?

Lösung

Denken Sie daran, wurden HDLs beabsichtigte Hardware zu modellieren. Mit Hardware geschieht alles auf einmal. Durch Hardware, meine ich eine Sammlung von Logikgattern mit den Eingängen und den Ausgängen der anderen Logikgattern in irgendeiner Weise. Dies ist im Wesentlichen, was ein FPGA oder ein ASIC ist (in einem FPGA dieser Verbindungen sind programmierbar). Wiggle einen Eingang und die Auswirkungen Welligkeit durch die Kette von Logikgattern -. Denken jedes Logikgatter als kleiner Prozessor, es ist Eingänge ständig ist die Bewertung

So in einem HDL das erste, was Sie beachten müssen, ist, dass alle Aufgaben zur gleichen Zeit geschehen. Der einzige Ort, Dinge passieren in der „normalen“ Sinn (eine Aussage eine andere als in einer regulären Programmiersprache folgenden) ist innerhalb eines Prozessblocks (in VHDL oder ein Block immer in Verilog). Aber dann müssen Sie alle Prozessblöcke erkennen, dass (oder immer Blöcke in Verilog) auch gleichzeitig ausgeführt werden.

HDLs sind nur versuchen, die Gleichzeitigkeit von Hardware zu modellieren.

Was Bücher, die versuchen HDLs zu Software-Entwicklern zu unterrichten ... Ich glaube nicht, dass es welche gibt. Die meisten sind an Hardware-Ingenieure richtet.

Sie haben erwähnt, dass Sie einige Ruby-Programmierung gemacht haben. Wenn Sie mit einem HDL in Ruby geschrieben spielen möchten, können Sie ausprobieren rHDL: http://rhdl.rubyforge.org/ Die grundlegenden HDL-Konzepte gibt es und es sieht viel wie VHDL, aber es ist Rubin, so dass Sie ein bisschen mehr mit den Innereien experimentieren. Sie können Modelle schreiben und sie dann simulieren. Es gibt einige Beispiele enthalten.

Andere Tipps

Debugging mit dem Simulator und seiner Wellenform-Viewer getan - man kann sehen, was alle Einbauten im Laufe der Zeit tun. Darüber hinaus mit Modelsim können Sie auch Software-ähnlichen Stützpunkte innerhalb Prozesse tun.

Sie können die Dinge drucken mit VHDL der „Bericht“ Anweisung, aber Sie haben Ihre Formatierung in einer sehr Nicht-SW Art und Weise zu tun:

report "The value is not " & integer'image(some_integer_variable);

Für etwas leichten Druck, verwenden Sie das textio Paket .

Ein weiterer Tipp - viel Code da draußen hat es use ieee.std_logic_arith.all;. Das Bibliothek ist nicht-Standard (trotz des IEEE Moniker), verwendet ieee.numeric_std.all statt.

Starten Sie einfach - schaffen einen Zähler, der die Uhr (verwenden Sie die if rising_edge(clk) then Idiom) Zecken jedes Mal um eins nach oben geht. Wenn der Zähler auf einen bestimmten Wert bekommt, um ein Signal umzuschalten.

Erstellen Sie eine Testumgebung zu simulieren, was im Grunde bedeutet nur das Signal clk go machen '0', '1', '0', '1'.

Eine einfache Möglichkeit, zu verstehen, ist dies:

process:
begin
    clk <= '0';
    wait for 5 ns;
    clk <= '1'; 
    wait for 5 ns;
end process;

Führen Sie das sim, sehen Sie Ihre Zähler nach oben, und das Umschaltsignal Knebel. Wenn Sie Ihren Zähler groß genug machen, können Sie dann ein FPGA bauen und einen LED-Blitz und Ausschalten beobachten mit entsprechend verdrahteten dass Toggle-Signal an einen LED-Stift.

Das ist das FPGA äquivalent zu "Hallo Welt!"

Für das Debuggen Verilog bietet printf wie Systemaufgaben wie $ Display oder Monitor $. Diese sind natürlich nicht synthetisierbaren, aber jeder Simulator sollte sie verstehen. Debuggen dann ist auf der einer Seite getan, so wie SW-Debugging, durch Signalwerte auszudrucken und was sonst an die Konsole des bereits erwähnten $ diplay und Sachen mit. Und auf der anderen Seite, indem Signalwellenformen starren, bis Sie die kranke Stelle zu finden. Für diese Dinge, die Sie nicht einmal ein FPGA benötigen, ist ein guter Simulator alles, was Sie brauchen. Aber ein FPGA mit einigen LEDs zu machen blinken ist immer wieder schön:)

Für die Simulation sollten Sie einen Blick auf Modelsim haben. Wenn Sie auf Fenster gibt es eine Studentenversion kostenlos zur Verfügung.
http://www.model.com/content/modelsim- pe-Student-edition-hdl-Simulation

Eine weitere Option ist Xilinx‘ISE Web Pack. Dies funktioniert auch unter Linux und beinhaltet den kompletten FPGA-Flow. http://www.xilinx.com/tools/webpack.htm
Aber ich empfehle Modelsim für die Simulation.

Einige Ansatzpunkte ich bei der Hand haben, sind:
http://www.asic-world.com/
http://www.doulos.com/knowhow/verilog_designers_guide/

Meine Antwort könnte Jahre zu spät sein, aber das ist für zukünftige Zuschauer, die die gleiche Abfrage haben könnten.

Ich kam auch aus einem C ++ / C # Hintergrund. Meine Antwort bezieht sich nur mit Verilog HDL und nicht obwohl VHDL. Ich bin derzeit einen Kurs, diesen Begriff zu nehmen und hier die Bücher sind, die mir geholfen, verstehen Verilog besser:

Sie können eine Menge Bücher finden hier wie aufgeführt in asic-Welt Website.

Wie skorgon geantwortet hatte, können Sie Xilinx ISE für die Simulation verwenden. Es ist in der Nähe von Visual Studio mit C ++ / C # zu Verilog. Aber für ein primitives Gefühl (kein IDE), mögen Sie vielleicht iVerilog oder Icarus Verilog versuchen. Es ist die in unserem Kurs verwendet. Hier ist, wie Verilog-Dateien mit iVerilog auszuführen:

Geben Sie Ihren Code auf einem Text-Editor, speichern als .vl innerhalb des Binärordner     von iVerilog. Auf Eingabeaufforderung, wechseln Sie zum Ordner ist. Geben Sie dann wie folgt vor:

iverilog -o <name of exe file you want for your .vl file> <your .vl file>
vvp <name of exe file>

Beispiel:

iverilog -o samp sample.vl
vvp samp

Hope, das hilft!

Manchmal braucht man die Instanznamen zu drucken. Dies ist nützlich, wenn viele Instanz derselben Komponente in einem Design verwendet: “... Während es in VERILOG (% m in der Anzeige Systemfunktion), in VHDL ein bisschen mehr Code schreibt einfach ist erforderlich. $ Anzeige ( "DBG Instanzname% m at% d", $ time); Ein Beispiel, wie ein Instanznamen in SystemC zu drucken, ist auch auf dieser Seite zur Verfügung.

Die Bedeutung solcher Debug-Informationen ist, wenn ein Design viele Instanzen der gleichen Komponente enthält.

Erster Text IO Bibliothek wird genannt werden und Zeilenvariablen erklärt werden sollten. Siehe Beispiel zum Drucken Detail zu sehen.

Als nächstes müssen Sie zwischen zwei Optionen wählen: Eine davon ist: Instanzname nur im Debug-String und die andere Option gibt weitere Informationen wie Ein- und Architektur Namen ...“ http://bknpk.ddns.net/my_web/MiscellaneousHW/vhdl_path_name_print.html

Wenn Sie in C-Programmierung stark sind, können Sie eine beliebige andere Programmiersprache lernen sehr leicht. Hardware-Beschreibungssprachen sind nicht sehr verschieden. Aber Sie müssen die Grundlagen der am häufigsten verwendeten Hardware-Komponenten kennen. Zum Beispiel ist der Entwurf eines Volladdierer sehr einfach, wenn Sie wissen, Was sind die Ein- und Ausgänge des Volladdierers. Auch müssen Sie die Beziehung zwischen Ein- und Ausgängen kennen. Die pdf für einen Anfänger nützlich sein kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top