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

Verilog - In einer Nussschale

Der gesamte Verhaltenscode ist in module geschrieben und endmodule . Welches digitale Design Sie auch immer erstellen möchten, es passt in module Block. Es können Ports definiert sein oder nicht - erlauben Sie Signalen, in den Block als input einzutreten oder entkomme dem Block als output .

Modul

Das leere Modul im Beispiel unten heißt testbench . Sie können es beliebig benennen, außer dass es alphanumerisch sein sollte und '_' enthalten darf.

  
  
module testbench;

endmodule

  

Schauen wir uns ein anderes Modul an. Es hat ein paar Signale (d, clk, rstb ) als Eingaben deklariert und q als Ausgabe deklariert.

  
  
module dff (input d,
                  clk,
                  rstb,
            output q);
endmodule

  

Datentypen

Nachdem wir nun gesehen haben, wie ein Modul aussieht, sehen wir uns an, was in ein Modul gesteckt werden kann, indem wir uns das Testbench-Modul noch einmal ansehen. Es gibt hauptsächlich zwei Arten von Datentypen in Verilog:

Ein reg Der Datentyp wird verwendet, um Werte wie eine Variable festzuhalten, während ein wire ist nur analog zu einem elektrischen Draht, der kontinuierlich angetrieben werden muss. Also typischerweise wire wird verwendet, um zwischen mehreren Modulen und anderen Signalen zu verbinden.

  
  
module testbench;
	
	reg d;
	reg rst_b;
	reg clk;
	
	wire q;
endmodule

  

Aufgaben

Verilog hat drei grundlegende Blöcke:

always @ (Bedingung ) wird immer ausgeführt, wenn die Bedingung erfüllt ist
initial wird nur einmal ausgeführt, wenn die Simulation beginnt
assign [LHS] =[RHS] Der LHS-Wert wird aktualisiert, wenn sich die RHS ändert

Beim Schreiben von Verilog sind einige Regeln zu beachten:

  
  
module testbench;
	
	reg d;
	reg rst_b;
	reg clk;
	
	wire q;
	
	initial begin
		d = 0;
		rst_b = 0;
		clk = 0;
		
		#100 $finish;
	end
	
	always begin
		#10 clk = ~clk;
	end
endmodule

  

Hinweis Folgendes aus dem oben gezeigten Beispiel:


Verilog

  1. Verilog-Tutorial
  2. Verilog-Verkettung
  3. Verilog-Aufgaben
  4. Verilog-Blockierung und Nicht-Blockierung
  5. Verilog-Funktionen
  6. Verilog-Aufgabe
  7. Verilog Hierarchischer Referenzbereich
  8. Verilog-Taktgenerator
  9. Verilog Math-Funktionen
  10. Verilog-Zeitformat