www.mikrocontroller.net

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


Autor: Gabriel (Gast)
Datum:

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

Gibt es so etwas??

DANKE

Autor: tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if a > 0
   x <= 1
else
   x <= -1

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und einfacher?

das soll in einer if Abfrage stehen.

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

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven P. (haku) Benutzerseite
Datum:

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

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

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

if ( A != B )

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
  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:
  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
  if ( ((a>0)&&(b<=0)) || ((a<=0)&&(b<0)) )

Das wäre dann also in VHDL
   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 ...  :-(

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if ( (a>0) != (b>0) )

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
  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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Der Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: max (Gast)
Datum:

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

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. ;)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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  ;-)

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst ja vielleicht eine Schulung rausschlagen ...

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gabriel schrieb:

> Damit gehe ich Euch nicht mehr auf die Nerven.

Na Gottseidank, so viel Selbstmitleid erträgt kein Mensch

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, er holt einen Spezialisten der meine Arbeit macht.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...  ;-)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

Autor: Der Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Der Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.