Ich habe zwei Module nämlich main.v und signal.v.Fehler beim Versuch, Signal an externes Modul zu übertragen
In main.v, habe ich ein paar Zeilen Code, die 16-Bit-Reg-tx mit einem Wert entsprechend einer Rechteckwelle aktualisieren.
reg [1:0] counter;
reg [15:0] tx;
always @(posedge clk) begin
counter = counter + 1;
if (counter[1] == 1) begin
tx[15:0] <= 16'b1010101010101010;
else
tx[15:0] <= 16'b0000000000000000;
end
Das funktioniert gut. Letztendlich möchte ich dieses Signal jedoch in eine andere Datei verschieben: signal.v, weil das Signal, das ich an tx übergebe, immer komplizierter wird. Ich habe Fehler bekommen, wenn ich das versucht habe. Anfangs habe ich versucht, den obigen Code in die Datei signal.v zu verschieben. Dann verwendete ein Draht zwischen den beiden Dateien wie gezeigt.
module signal(clk, get_tx);
input clk;
output reg get_tx;
reg [1:0] counter;
always @(posedge clk) begin
counter = counter + 1;
if (counter[1] == 1) begin
get_tx[15:0] <= 16'b1010101010101010;
else
get_tx[15:0] <= 16'b0000000000000000;
end
Dann in main.v, versuchte ich
wire get_tx;
reg [15:0] tx;
signal my_signal(.clk(clk), .get_tx(get_tx));
always @(get_tx) begin
tx <= get_tx;
end
Basierend hinzufügen, was ich in der Ausgabe Oszilloskop sehen, ist diese Methode nicht funktioniert, und ich bin nicht sicher, warum das ist. Der erste Fall scheint gut zu funktionieren, also weiß ich nicht, warum es scheitert, wenn ich zum zweiten Fall übergehe (die Signale sehen einfach völlig anders aus). Ich würde mich über jede Hilfe/Beratung freuen!
Ausgänge können Register in Verilog sein. – Laleh
Ok, du hast recht, ich habe die Aussage entfernt. – Roman
Das funktioniert - danke! –