www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Case-When Fehlermeldung brauche Hilfe


Autor: Christian Fischer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ich weiss momentan nichtmehr weiter bei dieser Fehlermeldung ,
er soll bei einen Uebergegeben Bitvector "B" die erste stelle 
ueberpruefen per Fallunterscheidung und dann dementsprechend reagieren!
Also bei einer 1 von der ersten Bitstelle bei B den Vektor A ind H 
kopieren und bei einer 0 dann H mit nullen auffuellen.

Mfg. !

PP1: process (A,B,H)
begin
case B(0)
when B(0)= '1'
=> H(0)<=A(0);
=> H(1)<=A(1);
=> H(2)<=A(2);
=> H(3)<=A(3);
when others => H <=(others=>'0');
end case;
end process PP1;


FEHLERMESSAGE :

ERROR:HDLParsers:164 - "C:/MU.vhd" Line 51. parse error, unexpected 
WHEN, expecting IS

Autor: Iulius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PP1: process (A,B,H)
begin

case B(0) is
when '1' =>
H(0)<=A(0);
H(1)<=A(1);
H(2)<=A(2);
H(3)<=A(3);
when others => H <=(others=>'0');
end case;

end process PP1;


nicht geprüft, sollte aber klappen.

Autor: Christian Fischer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huhu,
Vielen Dank schonmal!

Nun setzt er da keine Fehler mehr, jedoch sagt er nun

Error Signal H has a multi source.

Wobei das Signal so deklariert wurde :

signal H : bit_vector ( 7 downto 0 );

Autor: Christian Fischer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal die komplette Datei

Der Background ist das ein 4x4 Multiplizierer mithilfe eines 
Ripple-Carry-Adders realisiert werden soll.


Mfg

Autor: Iulius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Signal h hat in dem von dir verlinkten Code keine multiple drivers, 
compiliert bei mir auch ohne probleme wenn ich die 3 anderen 
case-statements(pp2-4) rausnehme die noch falsch beschrieben sind.


Ich würde das zwar ohnehin anders beschreiben :

H <= A when B(0)='1' else (others => '0');

aber du hast explizit nach dem "case" gefragt...



allgemein solltest du Vektoren auch Vektoren zuweisen und nicht alle 
Strippen einzeln ziehen :

statt

L(0)<= SUM1(0);
...
L(7)<= SUM1(7);

einfach L <= Sum1;



weitere tipps :

als Library verwendet man heute aktuellere :

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;


und damit dann auch "std_logic_vector" oder am besten gleich "unsigned" 
anstatt bit_vector.

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.