/ / Multiplikation der Gleitkommazahlen in Verilog - Gleitkommazahl, Verilog, Multiplikation

Gleitkommazahlen Multiplikation in Verilog - Gleitkomma, Verilog, Multiplikation

Ich möchte die 16-Bit-Daten für die Fließkommamultiplikation erhalten, aber die Ergebnisse waren falsch und nicht das, was ich gefordert habe.

module calc(input [15:0]a, b,
output [15:0]o);

assign o = a * b;

endmodule

hier ist die testbench:

module calc_tb();

real a,b,o;

calc U1 (.a(a),.b(b),.o(o));
initial begin
a <= 2.2;
b <= 2.5;
#2;
a <= -4.8;
b <= 2.9;
#2;
end
endmodule

Antworten:

0 für die Antwort № 1

Wenn Sie das ausführen, sollten Sie folgende Warnungen erhalten:

Port size (16 or 16) does not match connection size (64)
for port "a". The port definition is at: calc.sv(2).

Zuma,b und o, wie Sie sie als 16 Bit definiert haben und reelle 64 Bit.

Wenn Sie nur den Port auf 64 Bit ändern, wird Verilog bei der Übergabe einer 64-Bit-Ganzzahl denken. Sie müssen die Ports des Typs real machen:

module calc(
input  real a,
input  real b,
output real o
);

assign o = a * b;

endmodule

Beachten Sie, dass dies nicht synthetisierbar ist. Synthesisable Verilog kann Floating Point nicht sofort verarbeiten. Sie müssen einen Gleitkommakern implementieren oder importieren.