Hallo Lothar
Vielen Dank für deinen Antwort.
Mit deiner Antwort habe ich nun ein wenig an
mir selbst gezweifelt, ich dachte mindestens deine
erste Version mit:
1 | summ <= std_logic_vector(unsigned(Din1)+unsigned(Din2));
|
Hätte ich bereits schon selbst einmal getestet.
Nun habe ich beide deiner Versionen noch ausprobiert.
Entweder habe ich einen zweiten Fehler in der Toolchain
oder deine beiden Varianten funktionieren nicht?
Ich habe meine lauffähige Version an deine 1. angepasst.
Altera Quartus II (Standart Synthese Altera) meldet:
"Error expression has 3 elements, but must have 4 elements"
Und nein Quartus meint damit nicht etwa "summ" sondern die
beiden Din's. Passe ich summ auf (2 downto 0) an funktionierts.
Dann stimmt aber die Addition nicht mehr. 3bit vec + 3bit vec = 4bit vec
Nun gut...
Zur Sicherheit habe ich noch Synplify befragt:
"Error Width mismatch, location has width 4, value 3"
Dann konnte ich gar nix mehr glauben...
Zur Sicherheit habe ich Copy & Paste deine überarbeitete Version
aus dem Forum genommen. Fehlanzeige, auch deine zweite
Variante mit unsigned definierten Port's brachte das selbe
Resultat.
Hast du noch eine Idee, was da ev. in der Toolchain
fehlerhaft sein könnte?
Gruss Richard
PS. Xilinx ISE meldet keinen Error, nur eine Warning.
Schlimm ist jedoch, das im RTL der summ Vector an GND
angebunden wird! :-( Dann lieber ein klarer Error.