1 | |
2 | |
Ich will die Stelle universal schreiben und gegen ungleich 0 vergleichen. Die Bitbreite von mul_execute kann variieren. Ich wurde gerade belehrt, dass die Variante mit others an der Stelle nicht zulässig ist. Bin auf Vorschläge gespannt.
|
Anzeige
|
if Abfrage others=>'0' nicht erlaubt
Ich will die Stelle universal schreiben und gegen ungleich 0 vergleichen. Die Bitbreite von mul_execute kann variieren. Ich wurde gerade belehrt, dass die Variante mit others an der Stelle nicht zulässig ist. Bin auf Vorschläge gespannt. Ok, GWBASIC ist es vermutlich eher nicht ... Eine Geheinsprache ?
Gast
#2915534
Joachim Drechsel schrieb: > Eine Geheinsprache ? Ich glaube, dass soll irgendwann mal VHDL werden.
Gast
#2915535
vhdl? troll schrieb: > vhdl? Ja vhdl soll es werden.
Gast
#2915538
René D. schrieb: > if mul_execute(mul_execute'high downto 1) /= (others=>'0') then Keine Ahnung, ob das überhaupt geht, aber woher soll die Synthese wissen, wie breit others=>'0' werden soll?
Gast
#2915542
Warte mal bis der Lothar kommt. Der wird es schon richten. Aber vielleicht geht sowas :(17 downto 0 => '0') Paul schrieb: > René D. schrieb: >> if mul_execute(mul_execute'high downto 1) /= (others=>'0') then > > Keine Ahnung, ob das überhaupt geht, aber woher soll die Synthese > wissen, wie breit others=>'0' werden soll? es weiss doch wie breit das Signal auf der anderen Seite des Relationszeichen ist. Es kann nur gleichbreite Signale bewerten.
Gast
#2915544
Edit: 17 soll hier Deine Bit-Breite sein. > Aber vielleicht geht sowas :(17 downto 0 => '0')
Oh, das sieht gut aus. Geht erst einmal durch den Simulator. Dann schreiben ich es erst einmal wie folgt.
Lothar kann es bestimmt noch schöner schreiben. René D. schrieb: >
> > Ich will die Stelle universal schreiben und gegen ungleich 0 > vergleichen. > Die Bitbreite von mul_execute kann variieren. Ich wurde gerade belehrt, > dass die Variante mit others an der Stelle nicht zulässig ist. > > Bin auf Vorschläge gespannt. Type definieren und damit signal und constant
Gast
#2915709
also sowas geht if mul_execute /= (mul_execute'range=>'0') then oder auch so if mul_execute /= 0 then user schrieb: > also sowas geht > > if mul_execute /= (mul_execute'range=>'0') then Es ist aber nicht die range. Bit 0 soll nicht überprüft werden. > if mul_execute /= 0 then Geht auch nicht. Weil mul_execute von type std_logic_vector ist. 0 ist vom type integer. Somit muss noch eine Typumwandlung erfolgen.
Gast
#2915871
René D. schrieb: > if mul_execute(mul_execute'high downto 1) /= (others=>'0') then Prüfe doch einfach ob das Signal größer als 0 ist: if to_integer(unsigned((mul_execute(mul_execute'high downto 1))) > 0 then René D. schrieb: >> Keine Ahnung, ob das überhaupt geht, aber woher soll die Synthese >> wissen, wie breit others=>'0' werden soll? > es weiss doch wie breit das Signal auf der anderen Seite des > Relationszeichen ist. Es kann nur gleichbreite Signale bewerten. Könnte er wissen. Aber dafür müsste er eine implizite Annahme treffen. Aber der Synthesizer geht her und rechnet erst die linke, dann die rechte Seite aus, und danach vergleicht er die beiden. Und dabei tritt die Gretchenfrage auf: wie breit soll denn der Vektor denn überhaupt sein? http://www.lothar-miller.de/s9y/archives/28-Vektor-Vergleich.html
Gast
#2922413
finde ich die hübscheste variante dired schrieb: >
> > finde ich die hübscheste variante Ich nicht, da IMHO unnötige Konvertierung in einem haüfig benutzten IF-Zweig benutzt wird, macht die Simu langsamer. Und falls das interne zahlenformat irgendwann geändet wird (Umstellung auf signed bei Re-Use) dann ist an x-Stellen der Code zu ändern. Besser Constant statt magic numbers verwenden und mit einem Typ intern arbeiten und möglichst nur am Übergang zum Reallife nach/von std_logic_vector konvertieren. MfG, Was haltet ihr von
? Andreas B. schrieb: > Was haltet ihr von >
? Von der Logik her passend -> Or-Gatter; einfacher gehts net. VHDL-mäßig gibt es aber einiges zu meckern: -Welches package wird benutzt? ("use" fehlt, wahrscheinlich ist das reduce_Pack gemeint) - return type passt nicht. Gemeint ist wohl std_logic ('1'), benutzt ist aber integer (1). MfG, Hallo, Fritz Jaeger schrieb: > -Welches package wird benutzt? ("use" fehlt, wahrscheinlich ist das > reduce_Pack gemeint)
> - return type passt nicht. Gemeint ist wohl std_logic ('1'), benutzt > ist aber integer (1). Korrekt - in der Schnelle die '' vergessen :) Viele Grüße, Andi Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|