LFSR im FPGA – VHDL & Verilog Code Funktionsweise eines Linear Feedback Shift Register im FPGA LFSR steht für Linear Feedback Shift Register – ein Design, das sich im FPGA als nützlich erweist. LFSR lassen sich einfach synthetisieren, benötigen also relativ wenige Ressourcen und können im FPGA m
DesignEin synchrones Single-Port-RAM mit gemeinsamer Datenleitung (inout) für Lesen und Schreiben. Die Steuerung erfolgt über Chip-Select (cs), Write-Enable (we) und Output-Enable (oe). Schreib- und Lesezugriff sind beide taktflankensynchron.module single_port_sync_ram #( parameter int ADDR_WIDT
Ein Addierer ist eine digitale Komponente, die die Addition zweier Zahlen durchführt. Er ist die Hauptkomponente innerhalb einer ALU eines Prozessors und wird verwendet, um Adressen, Tabellenindizes, Buffer-Pointer und an vielen anderen Stellen zu inkrementieren, wo Addition erforderlich ist. Ein V
Was ist ein Mux oder Multiplexer? Ein Multiplexer (kurz Mux) ist ein digitales Element, das Daten von einem der N Eingänge basierend auf dem Selekt-Signal an den Ausgang weiterleitet. Der unten gezeigte Fall ist für N=4. Ein 4-Bit-Multiplexer hätte N Eingänge à 4 Bits, wobei jeder Eingang über das S
DesignDas Modul pr_en wirkt wie ein 4-zu-1-Multiplexer mit 8-Bit-Dateneingängen. Der 2-Bit-Selektor sel bestimmt, welcher Eingang (a, b, c oder d) auf den Ausgang out durchgereicht wird. Die Sensitivitätsliste enthält alle Eingänge, was eine kombinatorische Logik impliziert.module pr_en ( input
In der Digitaltechnik ist ein Schieberegister eine Kaskade von Flipflops, bei der der Ausgangspin q eines Flops mit dem Dateneingangspin (d) des nächsten verbunden ist. Da alle Flops am gleichen Takt arbeiten, verschiebt sich das im Schieberegister gespeicherte Bit-Array um eine Position. Beispiel:
DesignEin Gray-Code-Zähler erzeugt eine Folge, in der sich benachbarte Werte nur in genau einem Bit unterscheiden. Die Implementierung nutzt einen binären Zähler q und wandelt dessen Wert kombinatorisch in Gray-Code um: 1). Ein `ifdef zeigt zwei äquivalente Implementierungen (Schleife vs. Vektor-Op
DesignEin Mod-N-Zähler zählt von 0 bis N-1 und springt dann wieder auf 0. Die Parameter N (Modulo) und WIDTH (Bitbreite) machen das Modul flexibel für beliebige Zählbereiche.module modN_ctr #( parameter int N = 10, parameter int WIDTH = 4 ) ( input logic clk, input logic
DesignEin Johnson-Counter (auch „Twisted Ring Counter“) verbindet den negierten Ausgang des letzten Flip-Flops mit dem Eingang des ersten. Bei n Stufen erzeugt er eine Folge von 2n Zuständen. Der folgende Code zeigt einen parameterisierten 4-Bit-Johnson-Counter mit aktiv-tiefem Reset.module johnson_
DesignEin Ring Counter (Ringzähler) ist ein Schieberegister, bei dem der Ausgang des letzten Flip-Flops mit dem Eingang des ersten verbunden ist. Dadurch zirkuliert ein einzelnes Bit (oder ein Bitmuster) kontinuierlich durch die Registerkette. Der folgende parameterisierte Verilog-Code implementiert
Ein Ripple-Counter ist ein asynchroner Zähler, bei dem alle Flipflops außer dem ersten durch den Ausgang des vorherigen Flipflops getaktet werden. Design module dff ( input d, input clk, input rstn, output reg q, output qn ); always @ (posedge clk or negedge rstn) if (!rstn) q <=
Der 4-Bit-Zähler inkrementiert von 4b0000 bis 4h1111 und rollt dann zurück zu 4b0000. Er zählt solange weiter, wie ihm ein laufender Takt und ein high-gehaltener Reset zur Verfügung gestellt werden. Der Überlauf tritt auf, wenn das höchstwertige Bit (MSB) der finalen Addition verworfen wird. Wenn d
Ein Flipflop erfasst Daten an seinem Eingang an der positiven oder negativen Flanke eines Taktsignals. Wichtig zu beachten ist: Was auch immer mit den Daten nach der Taktflanke bis zur nächsten Taktflanke geschieht, wird nicht im Ausgang widergespiegelt. Ein Latch hingegen erfasst nicht an der Taktf
Design module tff ( input clk, input rstn, input t, output reg q ); always @ (posedge clk) begin if (!rstn) q <= 0; else if (t) q <= ~q; else q <= q; end endmodule Testbench module tb; reg clk; reg rstn; reg t; wire q; tff u0 ( .clk(clk), .rstn(rstn),
Ein D-Flipflop ist ein sequenzielles Element, das dem Eingangspin d an der gegebenen Flanke eines Taktsignals folgt. Design #1: Mit asynchronem Active-Low-Reset module dff ( input d, input rstn, input clk, output reg q ); always @ (posedge clk or negedge rstn) if (!rstn) q <= 0; e
Design module jk_ff ( input j, input k, input clk, output q ); reg q; always @ (posedge clk) case ({j,k}) 2b00 : q <= q; 2b01 : q <= 0; 2b10 : q <= 1; 2b11 : q <= ~q; endcase endmodule Hardware-Schaltplan Testbench module tb_jk; reg j; reg k; reg
Es ist immer am besten, mit einem sehr einfachen Beispiel zu beginnen, und keines eignet sich besser als Hello World!. // Einzeilige Kommentare beginnen mit doppeltem Schrägstrich // // Verilog-Code wird immer innerhalb von Modulen geschrieben, // und jedes Modul repräsentiert einen digitalen Block
Verilog stellt System-Tasks und -Funktionen bereit, um Dateien zu öffnen, Werte in Dateien zu schreiben, Werte aus Dateien zu lesen und in Variablen zu laden sowie Dateien wieder zu schließen. Dateien öffnen und schließen module tb; // Variable für den Datei-Handle deklarieren integer fd; ini
Standard-Timescale Obwohl Verilog-Module erwartungsgemäß einen Timescale vor dem Modul definiert haben sollten, können Simulatoren einen Standard-Timescale einfügen. Der tatsächliche Timescale, der an einem beliebigen Scope in einer elaborierten Verilog-Hierarchie angewendet wird, kann mit dem Syste
Die Verilog-`timescale-Direktive spezifiziert Zeiteinheit und Präzision für Simulationen. Die Verilog-Systemfunktion $timeformat spezifiziert den %t-Format-Spezifizierer-Berichtsstil in Display-Anweisungen wie $display und $strobe. Syntax $timeformat(<unit_number>, <precision>, <suf
Verilog
Beschleunigte, richtungsgesteuerte Silizium-Nanodraht-Arrays durch elektrisch feldunterstütztes metallunterstütztes chemisches Ätzen
Das essenzielle Commitment hinter erfolgreichem Industrial Blogging
Python-Version prüfen unter Linux, macOS und Windows: Kurzanleitung
Inside Motoman UP50: Wie Schlüsselkomponenten Präzision treiben