Wenn ich zwei negative Zahlen mit numeric_std. multipliziere, was
geschieht dann mit den beiden VZ's?
x1 = x2 sind zwei vorzeichenbehaftete 6Bit Zahlen
x1 * x2 => VZ VZ 12Bit <- stimmt das?
1 | library IEEE;
|
2 | use IEEE.numeric_std.all;
|
3 | ...
|
4 |
|
5 |
|
6 | process(rst, clk)
|
7 | variable product : std_logic_vector(13 downto 0);
|
8 | begin
|
9 | if(rst = '1')then
|
10 | first_product <= (others => '0');
|
11 | elsif(rising_edge(clk))then
|
12 | product := numeric_std.signed(x1) * numeric_std.signed(x2)
|
13 | frist_product <= std_logic_vector(product(13) & product(11 downto 0));
|
14 | end if;
|
15 | end process
|
Ist diese Zuweisung so korrekt?
1 | frist_product <= std_logic_vector(product(13) & product(11 downto 0));
|
MSB ist das VZ (product(13)).
MSB-1 wird verworfen.
MSB-2 bis LSB, product(11 downto 0), ist der Betrag der Zahl (bei neg.
natürlich im 2er-Komp)
Danke für die Hilfe.
LG