Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> VHDL

Modelsim für FPGA/ASIC-Simulation: Einsteigerleitfaden

Tutorial – Modelsim für Simulation, für Einsteiger

Modelsim ist ein Programm von Mentor Graphics zur Simulation von VHDL- und Verilog-Designs. Es ist das am weitesten verbreitete Simulationsprogramm in Industrie und Ausbildung. Dieses Tutorial erklärt zunächst, warum Simulation wichtig ist, und zeigt dann, wie Sie die Modelsim Student Edition kostenlos für den privaten Gebrauch erhalten.

Simulation ist ein kritischer Schritt beim Design von FPGAs und ASICs. Sie ermöglicht es dem Designer, sein Design anzuregen und zu beobachten, wie der geschriebene Code auf den Reiz reagiert. Eine gute Simulation durchläuft alle möglichen Zustände des Designs, um sicherzustellen, dass alle Eingangsszenarien korrekt behandelt werden. Haben Sie eine if-Anweisung vergessen? Haben Sie jeder case-Anweisung eine Zuweisung gegeben? Das sind typische Fehler, die ohne Simulation leicht passieren. Legen wir los.

Haben Sie Modelsim bereits heruntergeladen und installiert? Holen Sie es sich hier. Führen Sie die Installation mit den Standardeinstellungen durch. Beachten Sie: Sie müssen eine Lizenz bei Mentor Graphics anfordern. Am Ende der Installation wählen Sie Finish – ein Browserfenster öffnet sich mit dem Lizenzantragsformular. Ein Klick auf einen bestehenden Lizenzantragslink aus Ihren Lesezeichen oder aus dem Web funktioniert nicht.

Der Code, den wir simulieren, ist das folgende VHDL-Design. Der eigentliche Code ist nicht entscheidend – wenn Sie Verilog lernen, ist das okay! Sie müssen VHDL für dieses Tutorial nicht kennen. Der VHDL-Code erstellt ein einfaches UND-Gatter und versorgt es über ein Testbench mit Eingängen. Kopieren Sie den Code unten in and_gate.vhd und das Testbench in and_gate_tb.vhd.

and_gate.vhd:

library ieee;
use ieee.std_logic_1164.all;
entity and_gate is
  port (
    input_1    : in  std_logic;
    input_2    : in  std_logic;
    and_result : out std_logic
  );
end and_gate;

architecture rtl of and_gate is
  signal and_gate : std_logic;
begin
  and_gate    <= input_1 and input_2;
  and_result  <= and_gate;
end rtl;

and_gate_tb.vhd:

library ieee;
use ieee.std_logic_1164.all;
entity and_gate_tb is
end and_gate_tb;

architecture behave of and_gate_tb is
  signal r_SIG1   : std_logic := '0';
  signal r_SIG2   : std_logic := '0';
  signal w_RESULT : std_logic;
  component and_gate is
    port (
      input_1    : in  std_logic;
      input_2    : in  std_logic;
      and_result : out std_logic
    );
  end component and_gate;
begin
  and_gate_INST : and_gate port map (
    input_1    => r_SIG1,
    input_2    => r_SIG2,
    and_result => w_RESULT
  );
  process is
  begin
    r_SIG1 <= '0'; r_SIG2 <= '0'; wait for 10 ns;
    r_SIG1 <= '0'; r_SIG2 <= '1'; wait for 10 ns;
    r_SIG1 <= '1'; r_SIG2 <= '0'; wait for 10 ns;
    r_SIG1 <= '1'; r_SIG2 <= '1'; wait for 10 ns;
  end process;
end behave;

Öffnen Sie Modelsim. Sie sehen ein Fenster wie dieses:

Modelsim Hauptfenster

Um Ihre Simulation zu starten, müssen Sie ein Projekt anlegen. Klicken Sie auf File → New → Project. Wählen Sie einen Speicherort und geben Sie dem Projekt den Namen and_gate. Modelsim-Projekte haben die Endung .prj. Belassen Sie die anderen Einstellungen auf Standard – das bedeutet lediglich, dass der gesamte Code in die Bibliothek work kompiliert wird.

Klicken Sie auf Add Existing File (wie im rechten Bild gezeigt). Navigieren Sie zu dem Ordner, in dem Sie and_gate.vhd und and_gate_tb.vhd gespeichert haben, und fügen Sie beide Dateien dem Projekt hinzu. Belassen Sie die anderen Einstellungen auf Standard. Klicken Sie auf OK.

Modelsim Projektfenster – Dateien zum Projekt hinzugefügt

Sehen Sie die zwei blauen Fragezeichen im Projektfenster? Das bedeutet, Modelsim hat die Dateien noch nicht kompiliert. Sie müssen die Quelldateien kompilieren. Rechtsklick auf and_gate.vhd, dann Compile → Compile All. Im Konsolenfenster sollten grüne Meldungen über erfolgreiche Kompilierung erscheinen.

Ergebnis einer erfolgreichen Kompilierung

Um die Simulation zu starten, klicken Sie in der Menüleiste auf Simulate → Start Simulation. Das Fenster Start Simulation öffnet sich. Klicken Sie auf das Pluszeichen neben work, dann auf das Pluszeichen neben and_gate_tb. Wählen Sie and_gate_tb aus (nicht and_gate), da wir auf Testbench-Ebene simulieren wollen. Klicken Sie auf OK.

Modelsim Simulationsfenster – Simulation bereit

Fast geschafft! Die Simulation ist bereit und wartet. Die meiste Zeit in Modelsim verbringen Sie im Waveform View. Dieser zeigt Wellenformen (Binärwerte 0/1, Hexadezimal, binär, enumerierte Typen etc.) für alle Signale Ihres Designs – wie Ihr Modul auf verschiedene Reize reagiert. Das nächste Bild zeigt Ihren Waveform View, aber zuerst müssen Sie Signale zum Monitoring hinzufügen. In diesem Beispiel überwachen wir alle Signale im Testbench. Dazu rechtsklicken Sie auf and_gate_tb im Sim-Fenster und wählen Add Wave. Sie können Signale auch per Drag & Drop aus anderen Fenstern in das Waveform-Fenster ziehen.

Hier ist Ihr Waveform-Fenster. Alle Testbench-Signale wurden als überwachbare Signale hinzugefügt. Um die Simulation zu starten, klicken Sie auf das Symbol mit dem Blatt und dem Pfeil nach unten neben 100 ns. Das führt die Simulation für 100 Nanosekunden aus. Beobachten Sie, wie sich die Signale ändern! Glückwunsch – Sie haben Ihre erste Modelsim-Simulation erstellt!

Dieses Tutorial zeigte Ihnen, wie Sie ein eigenes Projekt in Modelsim anlegen, Dateien hinzufügen, Quelldateien kompilieren, die Simulation starten und Wellenformen anzeigen. Sie sind bereit, alle Beispiele auf dieser Seite zu erkunden und die Simulationen selbst auszuführen. Nutzen Sie die Sidebar oben zur Navigation.

VHDL

  1. Ein robuster VHDL-Ringpuffer-FIFO im Block-RAM entwerfen
  2. VHDL Generate Statements meistern: Wiederverwendbare Debouncer einfach erstellen
  3. Einführung in VHDL: Ihr erstes AND-Gate bauen
  4. VHDL Procedure Beispiel: Inkrementieren eines Standard Logic Vectors
  5. Signed vs. Unsigned in VHDL meistern: Praktische Einblicke
  6. Kostenloser VHDL-Simulator & Editor: Ein Leitfaden für Studierende
  7. VHDL-Testbenches mit externen Stimulus-Dateien über TEXTIO steuern
  8. VHDL-Grundlagen-Quiz – Teil 4: Verständnis testen
  9. Concurrent Statements in VHDL meistern: Praktischer Leitfaden
  10. Testen Sie Ihre VHDL-Grundkenntnisse – Interaktives Quiz Teil 1