Forum: FPGA, VHDL & Co. Gibt es das auch in VHDL? a>0?1:(-1)


von Gabriel (Gast)


Lesenswert?

Ich kenne diesen Befehl nur aus C und würde ihn in VHDL benötigen.
1
(a>0 ? 1:(-1))

Gibt es so etwas??

DANKE

von tobi (Gast)


Lesenswert?

if a > 0
   x <= 1
else
   x <= -1

von Gabriel (Gast)


Lesenswert?

und einfacher?

das soll in einer if Abfrage stehen.
1
if ((a>0?1:(-1))!=((b>0?1:(-1))
2
...

von MaWin (Gast)


Lesenswert?

Was ist daran einfacher ?

> if ((a>0?1:(-1))!=((b>0?1:(-1))

Das ist so was von überflüssig blöd, das schreit förmlich nach einem 
Grundkursbesuch.

von Gabriel (Gast)


Lesenswert?

Lieber Meister des VHDL!

Nicht jeder ist so toll wie du! Ich habe leider nur diese Lösung 
gefunden und würde sie gerne in VHDL umsetzen. Die Frage dazu war ob das 
geht nicht ob ich mich gut auskenne oder ob Du besser bist als ich. 
Würde ich in VHDL sehr erfahren sein würde ich nicht um Hilfe bitten.

von Sven P. (Gast)


Lesenswert?

Das ist trotzdem Blödsinn. Drösel das in zwei Variablen auf oder so, 
kostet im FPGA nix. Oder mach mal ein KV-Diagramm mit den Zuständen.

von D. I. (Gast)


Lesenswert?

Das ist absoluter Murksstil und nein es gibt keinen solchen Operator in 
VHDL, aber man kann das ohne weiteres mit einem (einfach zu lesenderen) 
if-Konstrukt bauen

von Sven P. (Gast)


Lesenswert?

Nachtrag:
> if ((a>0?1:(-1))!=((b>0?1:(-1))

Man könnte auch einfach
1
if ( (a > 0) != (b > 0) )
schreiben.

Ich kann leider kein VDHL, dürfte aber etwa so aussehen:
1
A <= (a > 0);
2
B <= (b > 0);
3
4
if ( A != B )

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

1
  if ((a>0?1:(-1))!=((b>0?1:(-1))
Diese Zeile ist schon in C absoluter Hirnriss!
Das hat noch gar nichts mit VHDL zu tun.

Diese Zeile könntest du auch so schreiben:
1
  if ( (a>0) != (b>0) )

Also steht da: wenn der eine größer 0 ist, aber der andere 
kleiner/gleich 0, dann mach das, was folgt.
Das wäre dann also in C
1
  if ( ((a>0)&&(b<=0)) || ((a<=0)&&(b<0)) )

Das wäre dann also in VHDL
1
   if ((a>0 and b<=0) or (a<=0 and b>0)) then


BTW:
wenn du den triffst, der diesen Originalcode geschrieben hat, gratuliere 
ihm zum trickreichsten, undurchsachulichsten Programmierstil, oder 
(alternativ) gib ihm eine auf die Nase   ;-)

EDIT:
Pech, Zweiter ...  :-(

von Gabriel (Gast)


Lesenswert?

Naja, in a bzw b soll auch 1 bzw. -1 stehen. Das Ganze wird mit einem 
Array durchgeführt. Ich werde also mit for... ein paar mal drübergehen. 
Deshalb wollte ich das so machen. Ich fürchte mir wird nichts 
übrigbleiben als vorher die Werte zuzuweisen und dann abzufragen.

Danke für die Hilfe

von Gabriel (Gast)


Lesenswert?

Ich glaube wenn ich meinen Chef schlage hat er mich nicht mehr lieb gg

Der Code geht über 4 A4 Seiten und ich versuche das in VHDL zu lösen. 
Schwierig aber ich kann eine Menge lernen!!

von Entwickler (Gast)


Lesenswert?

if ( (a>0) != (b>0) )

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Naja, in a bzw b soll auch 1 bzw. -1 stehen.
Wird es aber nicht. Das Zwischenergebnis der Berechnung wird schon im 
C-Code einfach verworfen. Sonst müsstest du schreiben:
1
  if ( (a=(a>0?1:(-1))) != (b=(b>0?1:(-1))) )

> Ich werde also mit for... ein paar mal drübergehen.
In VHDL?
Du weißt schon, was eine for-Schleife in VHDL macht?

EDIT:
@ Entwickler:
Leider nur Dritter... :-o

von Klaus (Gast)


Lesenswert?

Der schlimmste Fehler, den man mit VHDL machen kann, ist zu versuchen, 
C-Code (oder Code einer beliebeigen anderen normalen Programmiersprache) 
eins zu eins in VHDL umzusetzen!

Ganz besonders schlimm ist dieser Fehler als Anfänger, da man dann 
gleich mit ner ganz falschen Sichtweise an das Thema VHDL ran geht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Und urigerweise dauert es ziemlich lange, bis es demjenigen Anfänger 
dann auffällt, dass er (bildlich gesprochen) mit 180 auf eine massive 
Betonwand zudonnert  :-o

von Christian R. (supachris)


Lesenswert?

Oha, eine For-Schleife aus C in in VHDL umsetzen. Lerne erst mal 
Kombinatorik und denke in FlipFlops, dann lerne VHDL, dann versuch zu 
verstehen, was der C Code macht und erst dann kannst du eine Hardware 
mit VHDL beschrieben, die etwas ähnliches macht.

von yalu (Gast)


Lesenswert?

Das da

  (a>0?1:(-1))!=((b>0?1:(-1)

ist =8-o

Das da

  a>0?1:(-1)

geht zwar nicht in VHDL, dafür aber in Verilog, das die Syntax von
Ausdrücken im Wesentlichen von C geerbt (und erweitert) hat.

Du brauchst also dein Design nur nach Verilog zu portieren, dann kommst
du auch in den Genuss seiner im Vergleich zu VHDL deutlich knackigeren
Syntax ;-)

von Gabriel (Gast)


Lesenswert?

Schön wie man in diesem Forum gleich angegriffen wird. Wie schon einmal 
gesagt, ich bin ein Anfänger. Wenn ich etwas dazulernen kann mache ich 
das auch wenn ich dadurch viel Arbeit habe. Einige der anwesenden 
Personen dürften mit perfektem VHDL Wissen auf die Welt gekommen sein 
und verstehen das nicht.

Es tut mir leid, dass ich die Idee hatte mich an ein Forum zu wenden. 
Keine Angst, ich werde das sicher nie wieder tun.

@Chris: Was soll ich Deiner Meinung nach machen? Meinem Chef sagen er 
soll jemanden einstellen der das super kann wenn er mir die Chance gibt 
es zu lernen?

von Der Besucher (Gast)


Lesenswert?

Wie wäre es mal mit einem kleinen Wettewerb um die unleserlichste 
Beschreibung in VHDL?
Am besten es gibt ein kleines Vorgabedesign, das bei gleicher 
Funktionalität, möglichste undurchschaubar beschrieben werden soll. :)

Der Besucher

von max (Gast)


Lesenswert?

in c würde es wohl eher so ausschaun:
if ((a>0)!=(b>0))

von MaWin (Gast)


Lesenswert?

> Was soll ich Deiner Meinung nach machen?

Wurde dir schon gesagt:
Ein VHDL Grundlagenbuch holen und lesen und verstehen.
Erst begreifen, was VHDL ist, dann versuchen, etwas in VHDL zu 
formulieren (und dann kontrollieren, welcher Murks dabei rauskommt).

von Gast (Gast)


Lesenswert?

Eines der ganz wichtigen Designziele bei VHDL war die eindeutige und 
übersichtliche Beschreibung des Quelltextes allein schon "durch sich 
selbst" - also die Syntax. Derartige Konstrukte aus dem Gruselkabinett 
schlechter C-Programmierer sollen damit vermieden werden.

Im Übrigen schließe ich mich den Vorrednern an: Bitte mache Dir erstmal 
klar, was der Unterschied zwischen Softwareprogrammierung und 
Hardwarebeschreibung ist. Dann lösen sich auch solche Fragen ganz 
schnell in Wohlgefallen auf. ;)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

@  Gabriel
> Es tut mir leid, dass ich die Idee hatte mich an ein Forum zu wenden.
> Keine Angst, ich werde das sicher nie wieder tun.
Es wird dir nicht helfen, wenn du wegen eines (deiner Meinung nach) 
ruppigen Tons jetzt sagst: die sind doch doof, ich werde das schon 
können.

Sieh dir mal deinen Original-Post an:
>>>> Ich kenne diesen Befehl nur aus C und würde ihn in VHDL benötigen.
>>>> (a>0 ? 1:(-1))
>>>> Gibt es so etwas??
Hätte damals einer vermuten können, worauf das Ganze rausläuft?


> Was soll ich Deiner Meinung nach machen? Meinem Chef sagen er
> soll jemanden einstellen der das super kann wenn er mir die Chance
> gibt es zu lernen?
Dann soll dich dein Chef auf ein entsprechendes VHDL-Seminar schicken. 
Und auch nach diesem Seminar wirst du noch weit weg von der direkten 
Umsetzung eines C-Codes auf eine VHDL-Beschreibung sein. Aber durch den 
Kurs wirst du nicht an jedem kleinen Kiesel stolpern...

> Was soll ich Deiner Meinung nach machen?
Das kommt darauf an, welchen Zeitrahmen du hast...

> Was soll ich Deiner Meinung nach machen?
Das kommt darauf an, was du bisher gemacht hast...

Als grobe Zeitplanung:
wenn du bisher noch kein VHDL und kein FPGA verwendet hast, dann wirst 
du frühestens zum ersten Schnee was Sinnvolles herausbekommen. Und wenn 
die Blumen wieder blühen wirst du verstehen, was in der Hardware noch 
klemmt...

Das solltest du deinem Chef auf jeden Fall klarmachen.


@  max (Gast)
> in c würde es wohl eher so ausschaun:
Leider nur Vierter  ;-)

von Gabriel (Gast)


Lesenswert?

Habe mit meinem Chef gesprochen und er hat eingesehen, dass er einen 
Fehler gemacht hat. Er wird einen Spezialisten holen und überlegt sich 
wohin er mich gibt. Spätestens Montag erfahre ich ob ich noch einen Job 
habe oder nicht.

Damit gehe ich Euch nicht mehr auf die Nerven.

von Peter (Gast)


Lesenswert?

kannst ja vielleicht eine Schulung rausschlagen ...

von D. I. (Gast)


Lesenswert?

Gabriel schrieb:

> Damit gehe ich Euch nicht mehr auf die Nerven.

Na Gottseidank, so viel Selbstmitleid erträgt kein Mensch

von Christian R. (supachris)


Lesenswert?

Gabriel schrieb:
> Habe mit meinem Chef gesprochen und er hat eingesehen, dass er einen
> Fehler gemacht hat. Er wird einen Spezialisten holen und überlegt sich
> wohin er mich gibt.

Wenn du ungeschickt verhandelt hast, zur ARGE. Wenn du geschickt 
verhandelt hast, zu PLC2 o.ä. zu einem VHDL Kurs, das nutzt allen.

von Gabriel (Gast)


Lesenswert?

Nein, er holt einen Spezialisten der meine Arbeit macht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gabriel schrieb:
> Habe mit meinem Chef gesprochen und er hat eingesehen, dass er einen
> Fehler gemacht hat.
Das ist mal nicht der schlechteste Chef. Manche sehen sowas nicht ein.

> Nein, er holt einen Spezialisten der meine Arbeit macht.
Hast du deinem Chef evtl. zuviel versprochen?

> Nein, er holt einen Spezialisten der meine Arbeit macht.
Sei doch ehrlich zu dir selbst:
du hättest (derzeit) die Arbeit doch gar nicht machen können.

> Nein, er holt einen Spezialisten der meine Arbeit macht.
Und das nur wegen ein paar Posts in einem Forum?

> Nein, er holt einen Spezialisten der meine Arbeit macht.
Falls der gut ist, und du noch lange genug in der Firma bist, kannst du 
einiges lernen.

> Spätestens Montag erfahre ich ob ich noch einen Job habe oder nicht.
So, dann wäre ich, der ich meine Zeit darauf verwendet habe, dir helfen 
zu wollen, mit Schuld daran, dass du auf der Strasse sitzt? Ist das 
deine tiefe innere Überzeugung? Sind immer die Anderen schuld? Oh, 
Mann...

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Lothar Miller schrieb:
> Das wäre dann also in VHDL
>    if ((a>0 and b<=0) or (a<=0 and b>0)) then

Ein XOR hätte es da auch getan.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Ein XOR hätte es da auch getan.
Ja, das steht im C-Code schon da (ein != ist ein Exor)

Aber ich dachte, Christian wäre mehr geholfen, wenn er verstanden hätte, 
was da eigentlich im C-Sourcecode dasteht.
Aber wie man sieht: Denken kann Fehlen...  ;-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lothar Miller schrieb:
> ... Christian wäre mehr geholfen ...
Typo: soll heißen Gabriel

von Der Besucher (Gast)


Lesenswert?

@Gabriel:

10:32 - erstes Post
13:38 - Chef sucht jemand anders

Das alles in 3 Stunden!

In welchem Bundesland wird denn der "Spezialist" gesucht?
Die wachsen nämlich nicht auf Bäumen...

Kleiner Tipp:
Versuche doch erstmal alles etwas besonnener anzugehen. Dann bleibt dir 
in Zukunft sowas erspart. Und bloß nicht alles gleich persönlich nehmen!

Der Besucher

von Der Besucher (Gast)


Lesenswert?

Nachtrag:

Vielleicht liegt ja deine Stärke dadrin den eigentlichen Algorythmus aus 
dem Programmcode zu extrahieren und in eine allgemeinere 
Darstellungsform zu bringen. Das würde dem "VHDL-Spezialisten" 
sicherlich ungemein helfen, da er eben auf VHDL und nicht auf C 
spezialisiert ist.
Und deinem Chef hilft es auch, da dann die Umsetzung schneller von 
statten geht. Nur mal so als kleiner Tipp.

Der Besucher

von berndl (Gast)


Lesenswert?

>Habe mit meinem Chef gesprochen und er hat eingesehen, dass er einen
>Fehler gemacht hat. Er wird einen Spezialisten holen und überlegt sich
>wohin er mich gibt. Spätestens Montag erfahre ich ob ich noch einen Job
>habe oder nicht.
>
>Damit gehe ich Euch nicht mehr auf die Nerven.

Na super! Du sollst etwas aus C in eine HW umsetzen, hast keine Ahnung 
wie das geht (ich rede hier nicht von VHDL oder Verilog, vorher musst du 
erstmal begreifen 'wie' HW im Vergleich zu SW tickt!) und machst dann 
den Leuten hier noch ein schlechtes Gewissen!

Und als Eingangspost schmeisst du ein einzelnes C-Statement in den Raum 
und beschwerst dich ueber Loesungen/Tipps/Tricks die dir Leute geben, 
die mit sowas tagtaeglich zu tun haben...

Kopfschuettel...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.