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