Was ist falsch ?=) (kurz)

Gast #1922423
Hallo zusammen,

habe seit einer std die fehlermeldungen:

ERROR:HDLCompiler:806 Line 48: Syntax error near "=".
ERROR:HDLCompiler:9  Line 46: Found 0 definitions for operator "=".
ERROR:HDLCompiler:854  Line 41: Unit <behavior> ignored due to previous 
errors.

ich weiss nicht mehr wirklich weiter...

hilfe ?:/  danke schonmal
1
entity mehrBitAdder is
2
    Port ( a : in  unsigned (31 downto 0);
3
           b : in  unsigned (31 downto 0);
4
           cout : out  unsigned (31 downto 0);
5
           controlBit : in  STD_LOGIC);
6
end mehrBitAdder;
7

8
architecture behavior of mehrBitAdder is
9

10
begin
11
    process(controlBit)
12
begin
13
if controlBit ="0" then
14
    cout <= a+b;
15
  else controlBit ="1" then
16
    cout <= a-b;
17
end if;
18
    end process;
19
end behavior;
Gast
mh... ist schon weniger aber nun bekomm ich noch diese fehlermeldungen.



ERROR:HDLCompiler:806 Line 48: Syntax error near "=".
ERROR:HDLCompiler:854  Line 41: Unit <behavior> ignored due to previous 
errors.


1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3

4
use IEEE.NUMERIC_STD.ALL;
5

6
-- Uncomment the following library declaration if instantiating
7
-- any Xilinx primitives in this code.
8
--library UNISIM;
9
--use UNISIM.VComponents.all;
10

11
entity mehrBitAdder is
12
    Port ( a : in  unsigned (31 downto 0);
13
           b : in  unsigned (31 downto 0);
14
           cout : out  unsigned (31 downto 0);
15
           controlBit : in  STD_LOGIC);
16
end mehrBitAdder;
17

18
architecture behavior of mehrBitAdder is
19

20
begin
21
    process(controlBit,a,b)
22
begin
23
if controlBit ='0' then
24
    cout <= a+b;
25
(44)  else controlBit ='1' then
26
    cout <= a-b;
27
end if;
28
    end process;
29
end behavior;
Moderator (Firma: Titel) Persönliche Seite
Duke Scarring schrieb:
> end architecture behavior;
Das ist nicht nötig...
nicht Gast schrieb:
> Du solltest zwischen = und ' ein Leerzeichen machen!!!!!!!!!!!!!!
Auch das ist nicht nötig...

Die Fehlerursache wurde schon genannt:
Florian V. schrieb:
> Da sollte sicherlich ein "elsif" anstatt ein "else" hin.

gabs schrieb:
> mh... ist schon weniger aber nun bekomm ich noch diese fehlermeldungen.
Naja....
Kauf dir mal das Buch "VHDL-Synthese" oder leih es dir aus...
Gast
@ duke  bringt nichts,selbe fehlermeldungen.
@ gast  bringt  ebenso keine veränderung.

... ich verstehs nich. hab den syntax von if-caluses in vhdl ein paar 
mal gegooglet...der scheint richtig...:/
Gast
Versuchs mal so:

begin
    process(controlBit,a,b)
begin
if controlBit ='1' then
    cout <= a-b;
else
    cout <= a+b;
end if;
    end process;
end behavior;

Grüße, Muggel
Gast
hatte zu anfang elseif benutzt anstatt elsif und mich gewundert wieso 
xilinx es nich als schlüsselwort erkannte...

hat das problem aber nicht gelöst. ...

hab tutorials durchgeschaut und finde :

process (sel, a, b)
begin
  if sel = '1' then
    f <= a;
  else
    f <= b;
  end if;
end process;

sieht nich unbedingt sehr anders zu meinem aus...
Gast
Naja, immerhin fehlt die Abfrage hinter dem else, die man eigentlich nur 
dahinschreibt, wenn man mit einem elsif arbeiten möchte.

Hast du es denn mal auspropiert?

Grüße, Muggel
Gast
hey muggel,

hab deine idee probiert, spuckt aber auch nur fehler aus. hab mir nun 
ein buch gesucht.vllt hilft das weiter... meld mich zurück falls ich 
eine lösung hab=)

lg
Gast
Hi gabs,

ich habs bei mir nochmal durch die ISE laufen lassen und der 
Syntax-Check spuckt mir nen ok aus. Ich poste hier nochmal alles so, wie 
ich es stehen habe, denn soweit müsste das eigentlich hinhauen.

Grüße, Muggel
Angehängte Dateien:
Gast
gabs schrieb:
> else controlBit ='1' then


ein else erwartet keinen vergleich, also ohne "controlBit = '1' then"

else machts automatisch wenn vorher if nicht true war.

if var = '1' then
   cout <= a+b;
else --und hier kommt nichts...
   cout <= a-b;
end if;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.