möchte ein ADD-Modul zweier 16 bit Zahlen realisieren, wobei der Ausgang wieder eine 16bit Zahl sein soll. Deswegen die Modulo 2^16-Operation danach. Hab das so versucht:
CODE: architecture arch_addop of addop is begin process (A,B) begin O <= ( A + B )(15 downto 0); end process; end arch_addop;
Der Analyzer meldet jedoch einen Syntax-Fehler bei der Signalzuweisung "O <= (A+B)(15 downto 0)".
Weiß jemand, wie das richtig heißt? Merci.
Re: 16bit ADD-Modul modulo 2^16
Auf die Schnelle würde ich mir da so helfen:
architecture arch_addop of addop is
begin process (A,B) variable C: std_logic_vector(16 downto 0); begin C := ( A + B ); O <= C(15 downto 0); end process;
end arch_addop;
Aber bin auch noch nicht so führend in VHDL, gibt bestimmt ne bessere Lösung als das.
Re: 16bit ADD-Modul modulo 2^16
erst mal danke für den schnellen tip. leider bringt der simulator diese fehlermeldung:
# trace -all / # run 400 **Error: vhdlsim,4: Array index range length mismatch. quit
Re: 16bit ADD-Modul modulo 2^16
Ich hab da ne Idee:
Hänge mal an die Summanden vorne immer ein Bit an. Dann addieren. Dann nur die ersten 16 Bits nehmen. Also ungefähr so:
architecture arch_addop of addop is
begin process (A,B) variable C: std_logic_vector(16 downto 0); begin C := ('0' & A) + ('0' & B); O <= C(15 downto 0); end process;
end arch_addop;
Dadurch entsteht bei der Addition auch wirklich ein 17 Bit Vektor, dessen 16 untere Bits dann an O zugewiesen werden
Re: 16bit ADD-Modul modulo 2^16
mei, du bist ein "gott". es funktioniert..
Re: [gelöst] 16bit ADD-Modul modulo 2^16
Fein.
Den Gott kannste aber knicken, stehe noch ni so tief in der Materie wie ich es mir wünschen würde. Bin nur vor kurzem über selbiges Problem gestolpert in einem Buch. Naja, und man lernt ja stets dazu, also fiel mir es hier wieder ein.