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

Tutorial - Schreiben von kombinatorischem und sequentiellem Code

VHDL-Prozess oder Verilog Always Blocks verwenden

Dieses Tutorial zeigt, wie Sie entweder VHDL- oder Verilog-Blöcke schreiben, die in einem Prozess enthalten sind oder ein Immer blockieren beziehungsweise. Prozesse (in VHDL) und Always Blocks (in Verilog) sind grundlegend und müssen gut verstanden werden. Sie verhalten sich genau gleich, daher werden beide hier für Sie vorgestellt. Wenn Sie gerade nur eine Sprache lernen, achten Sie auf die Beispiele, die sich auf diese bestimmte Sprache konzentrieren. Prozesse oder Always Blocks werden in zwei Hauptszenarien verwendet:

  1. Um einen Block von kombinatorisch zu definieren Logik
  2. Um einen Block sequenziell zu definieren Logik

Das erste Szenario ist das, was häufig in Lehrbüchern zu sehen ist, wenn einem neuen Schüler Prozesse oder Immer-Blöcke vorgestellt werden. Es wird hier für Sie präsentiert, um Sie auf seine Existenz aufmerksam zu machen. Aber in Wirklichkeit wird ein Process/Always-Block, der zur Definition eines Blocks kombinatorischer Logik verwendet wird, weitaus seltener in „realem“ Code verwendet als ein Process/Always-Block, der zur Definition sequentieller Logik verwendet wird.

Die erste Frage, die Sie sich vielleicht stellen, ist, was ist der Unterschied zwischen kombinatorischer und sequentieller Logik? Kombinatorische (oder kombinatorische) Logik ist eine Logik, für deren Betrieb keine Uhr erforderlich ist. Das obige Beispiel des Und-Gatters ist ein Kombinationsbeispiel. Sequentielle Logik ist eine Logik, für deren Betrieb eine Uhr erforderlich ist. Der grundlegendste Baustein der sequentiellen Logik ist das D-Flip-Flop (siehe Abbildung unten).

Der D-Flip-Flop!

Wenn Sie nicht wissen, wie ein D-Flip-Flop funktioniert, hören Sie sofort auf, dies zu lesen! Sie müssen verstehen, wie Flip-Flops in FPGAs verwendet werden, bevor Sie weiterlesen. Alles bereit? Gut.

Kombiverfahren in VHDL:

process (input_1, input_2)
begin
    and_gate <= input_1 and input_2;
end process;

Combinational Always Block in Verilog:

always @ (input_1 or input_2)
  begin
    and_gate = input_1 & input_2;
  end

Sowohl im obigen VHDL- als auch im Verilog-Code befinden sich input_1 und input_2 in einer sogenannten Vertraulichkeitsliste . Die Sensitivitätsliste ist eine Liste aller Signale, die die Ausführung des Process/Always-Blocks bewirken. Im obigen Beispiel führt eine Änderung an input_1 oder input_2 dazu, dass der Process/Always-Block ausgeführt wird. Dieser Process/Always-Block nimmt die beiden Eingänge, führt eine "und"-Operation an ihnen durch und speichert das Ergebnis im Signal and_gate. Dies ist genau dieselbe Funktionalität wie dieser Code:

-- VHDL:
and_gate <= input_1 and input_2;
// Verilog:
assign and_gate = input_1 & input_2;

Beide Codebeispiele dienen demselben Zweck:das Signal and_gate zuzuweisen. Der Unterschied besteht darin, dass sich einer in einer Kombination aus Process/Always Block befindet und der andere nicht. Da das gleiche Ergebnis auch ohne die Verwendung einer Kombination aus Process/Always Block erzielt werden kann, empfehle ich dem beginnenden Digitaldesigner daher nicht, diese Anweisungen auf diese Weise zu verwenden.

Die zweite Möglichkeit, einen Process- oder Always-Block zu verwenden (und das weitaus interessantere Beispiel), besteht darin, einen Block mit sequentieller Logik zu definieren. Auch hier ist die sequentielle Logik eine getaktete Logik.


VHDL

  1. Tutorial - Schreiben von kombinatorischem und sequentiellem Code
  2. Vor- und Nachteile von Infrastructure-as-Code
  3. Einführung in kombinatorische Logikfunktionen
  4. Was ist Programmieren:Arbeiten, Sprachen und ihre Herausforderungen
  5. Verwenden von Integrated Logic Analyzer (ILA) und Virtual Input/Output (VIO)
  6. Java Stack und Heap:Lernprogramm zur Java-Speicherzuweisung
  7. So lesen Sie eine CSV-Datei in Python | Lesen und Schreiben von CSV-Dateien
  8. Leiterlogik 102:Die Vor- und Nachteile
  9. Schreibverfahren:einfach und effizient durch Digitalisierung
  10. Die Unterschiede zwischen G-Code und M-Code