Ich bin neu in Verilog und ich stecke in einem Problem fest. Ich tue nicht, was ich falsch mache. Ich habe zwei Module (A und B). Modul B führt eine Verarbeitung durch und setzt den Wert in das Register 'Data', das von Modul B ausgegeben wird und als Eingang von Modul A dient. Modul A vergleicht den Wert in Data und sendet ein Signal zum Zurücksetzen des Registers 'Data' in Modul B. Daten verarbeitet B in Modul vorhanden und korrekt ist, während es nicht in Modul A.Daten nicht kopiert, um zu registrieren
erscheinenModuleB (address,indata,Data,reset,clk,ResetSignal,Out)
input [15:0] address;
input [15:0] indata;
input ResetSignal;
output [5:0] Data;
output [15:0] Data;
reg[15:0] DataReceived;
reg[0:5] Data = 6'b000000;
reg[15:0] Out;
if(address == 16'h01a0)
begin
DataReceived<= indata;
Data = (Data| 6'b000001); // all 6 values will be copied on basis of some address
end
.
.
.
ModuleA (...)
reg[15:0] address;
reg[15:0] indata;
reg[15:0] Out;
reg ResetSignal;
reg[5:0] Data; //it is an internal register of module B which contains data received from module B
wire reset,clk;
ModuleB (.address(address),.indata(indata),.Data(Data),.clk(clk),.reset(reset),.ResetSignal(ResetSignal),.Out(Out));
always @ (posedge clk or posedge reset)
begin
if (reset)
ResetSignal = 1'b0;
else if (Data == 6'b111111)
begin
//set some signals
ResetSignal = 1'b1; // send signal back to reset the buffer Data
end
end
ich habe Daten als reg erklärt so Werte von Modul B abgebildet werden soll. Sollten sie nicht?
ja das war das Problem! Ich habe reg in Modul A geändert und es funktioniert jetzt. Vielen Dank. Ich habe Instanznamen, ich habe ein Stück problematischen Code nur so kopiert, dass ich vermisse :) – Eshaal