Error (10327): VHDL error can't determine definition of operator ""+""

Gast #3728657
Die Überschrift beschreibt unser Problem.
Wieso können wir auf den Vektor nicht addieren? In einem anderen Code 
haben wir dies getan und es hat funktioniert.
Wo liegt das Problem?


signal transmission_count : std_logic_vector(4 downto 0):= "00000";

------------------------------------------------------------------------ 
---


if rising_edge(SCLK_internal) then
  transmission_count <= transmission_count + 1;
  if state = pause then
    transmission_count <= "00000";
  end if;
end if;
Gast #3728724
signal transmission_count : std_logic_vector(4 downto 0):= "00000";

if rising_edge(SCLK_internal) then

  if (state = pause ) then
    transmission_count <= "00000";
  else
        transmission_count <= transmission_count + "00001";
  end if;
end if;
Moderator (Firma: Titel) Persönliche Seite #3728795
tmn schrieb:
> Die Überschrift beschreibt unser Problem.
> Wieso können wir auf den Vektor nicht addieren?
Welche Bibliotheken verwendest du?

Mit uneingeschränkten Vektoren rechnet man nicht:
1
  signal transmission_count : std_logic_vector(4 downto 0):= "00000";
2
  :
3
     transmission_count <= transmission_count + 1
Sieh dir mal das mit der numeric_std an:
http://www.lothar-miller.de/s9y/categories/16-Numeric_Std
Gast #3728802
Das funktioniert nicht. Da kommt der gleiche Fehler. Wir hatten dies so 
ähnlich davor schon getestet.

Wir haben eine Lösung gefunden, ob es die beste ist wissen wir nicht, 
aber es funktioniert.



    if rising_edge(SCLK_internal) and state /= pause then
      transmission_count <= 
std_logic_vector(unsigned(transmission_count) + 1);
    elsif rising_edge(SCLK_internal) and state = pause then
      transmission_count <= "00000";
    end if;


Wo ist Lothar Miller?
Kann Lothar Miller die Frage beantworten?
Gast #3728876
tmn schrieb:
> library ieee;
> use ieee.std_logic_1164.all;
> use ieee.numeric_std.all;

Dann verwendet man die Typen unsigned und signed zum Rechnen:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4

5
...
6

7
signal transmission_count : unsigned(4 downto 0):= "00000";
8

9
------------------------------------------------------------------------ 
10

11
process(SCLK_internal)
12
begin
13
  if rising_edge(SCLK_internal) then
14
    transmission_count <= transmission_count + 1;
15
    if state = pause then
16
      transmission_count <= (others => '0');
17
    end if;
18
  end if;
19
end process;

Btw: rising_edge(SCLK_internal) --> Wieviele Takte habt Ihr in Eurem 
Design?

Duke
Gast #3728904
Ja daran haben wir auch gedacht, aber in der Aufgabe steht, dass wir 
transmission_count als 5 Bit Vektor deklarieren sollen.



Wir haben eine 50MhZ Clock und eine 1MhZ Clock
Moderator (Firma: Titel) Persönliche Seite #3728941
tmn schrieb:
> Ja daran haben wir auch gedacht, aber in der Aufgabe steht, dass wir
> transmission_count als 5 Bit Vektor deklarieren sollen.
Auch ein unsigend-Vektor ist ein Vektor. Er ist aber kein 
uneingeschränkter Vektor mehr und man kann damit Rechnen.

tmn schrieb:
> Wir haben eine Lösung gefunden, ob es die beste ist wissen wir nicht,
> aber es funktioniert.
>     if rising_edge(SCLK_internal) and state /= pause then
Naja, wieder mal diese unübliche Beschreibung eines Clock-Enables...

tmn schrieb:
> Wir haben eine 50MhZ Clock und eine 1MhZ Clock
Das ist ein Takt zuviel.
Nehmt den 50MHz, der reicht dann locker für alles.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 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.