Forum: FPGA, VHDL & Co. Signed Fractional Multiplikation in Verilog


von Oliver (Gast)


Lesenswert?

Einen schönen guten Abend,
ich sitze hier und spiele mit meinem neuen Xilinx Bord rum meine Verilog 
und VHDL Kenntnisse nach über zehn Jahren mal wieder etwas aufzupeppeln. 
Mein Problem betrifft folgendes:

Ich habe zwei vorzeichenbehaftete 18-bit Zahlen im Format Q2.16, die ich 
nun (in Verilog) multiplizieren möchte. Ich habe hier ein Codesegment 
aus alten Studi-Zeiten gefunden, welches ich in diesem Zusammenhang 
nicht mehr ganz nachvollziehen kann.


1
module signed_multiplication (out, d_a, d_b);
2
3
  output [17:0]  out;
4
  input signed [17:0] d_a;
5
  input signed [17:0] d_b;
6
  
7
  wire signed  [17:0]  out;
8
  wire signed  [35:0]  mult_out_temp;
9
10
  assign mult_out_temp = a * b;
11
  assign out           = {mult_out[35], mult_out_temp[32:16]};
12
endmodule

Bit-35 ist mein Vorzeichen, so weit klar. Warum fange ich jedoch mit Bit 
32 an was den restlichen Teil betriftft ? Danke,
Oli

von Oliver (Gast)


Lesenswert?

Keiner ne Idee ???

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Oliver schrieb:
>   assign out           = {mult_out[35], mult_out_temp[32:16]};
>
> Bit-35 ist mein Vorzeichen, so weit klar. Warum fange ich jedoch mit Bit
> 32 an was den restlichen Teil betriftft ?

Vielleicht, weil Du eine zusätzliche Skalierung mit dem Faktor 4 
einsparen wolltest?

--
Marcus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.