www.mikrocontroller.net

Forum: FPGA, VHDL & Co. std_logic_vector counter probleme


Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich hab mal ne frage, in den Counterbeispielen hier programmiert ihr
fleißig bit-counter.
Problem
1. Meines wissens kann das VHDL nicht, also bitte klärt mich da auf, ab
wann das geht, eventuell mit library oder ähnlichem.
2. ISE Webpackage mag das auch nicht.

"ERROR:HDLParsers:808 - "*.*" Line 115. + can not have such operands
in this context."

alternative währe für mich nur eine umsetzung von integer auf
std_logic_vector, habe aber 19 bit counter.

schon mal im vorraus danke

steffen

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schwer zu sagen was bei dir schief geht, wenn du keinen Code anhängst.

Was für Bibliothelken hast du eingebunden?

Gruß Jörn

Autor: Michael Noll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit
use ieee.std_logic_arith.all;
solltest du auch mit bit-typen rechnen (also auch addieren) koennen ...

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum arbeitest Du nicht mit Integer ?

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wäre das nicht was ? man muss nur 1 Konstante
ändern, um die Bitbreite des Counters zu ändern

use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
...

constant BIT_WIDTH : integer := 8;
signal cnt_q : integer range 0 to 2**BIT_WIDTH-1;

process(reset, clk)
begin
   if reset='1' then
      cnt_q <= 0;
   elsif rising_edge(clk) then
      if cnt_q = 0 then
         cnt_q <= 2**BIT_WIDTH-1;
      else
         cnt_q <= cnt_q -1;
         ...
      end if;
   end if;
end process;

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo und Danke erstmal,

so richtig befriedigt hat mich das leider noch nicht, also hier mein
Problem.
Ich habe ein Cesys USB2FPGA mit einem Spartan 2 drauf(www.cesys.de).
Habe 1024 kb Ram und nen Usb2.0 port. Der Counter soll halt dazu
benutzt werden die Adressen im Ram hochzuzählen, daher
std_logic_vector.
Bibliotheken hab ich:
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

und geh echt am stock, auch bei allen Beispielen läuft ein Bit Counter,
aber ich kriegs net synthetisiert.

Laut VHDL'93 Spex geht das nämlich auch nicht, baut der dann nen 19
Bit-Volladierer auf, wenn das gehen soll, dann wird nämlich mein Platz
langsam etwas eng.

Gruß nSteffen

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und geh echt am stock, auch bei allen Beispielen läuft ein Bit
Counter,
>aber ich kriegs net synthetisiert.

Das gibt's nicht, das muss funktionieren, solange die Bibliotheken
einbindest.

Poste doch mal den Code der nicht geht.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

hier die auszüge die net gehe:

signal ram_adr : std_ulogic_vector(18 downto 0);
...
Process(sclk,reset)
begin
if ...
elsif rising_edge(sclk) then
...
ram_adr<=ram_adr +1;
...
end if;

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haha.

Klaro. Du benutzt "ulogic". Nimm "logic" dann geht's.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

na wenns nur daran liegt. Is ja aber komisch, std_logic ist ja auch nur
ein subtype von std_ulogic, manchmal ist so was ganz schön
frustrierend.

aber auf jeden Fall erstmal Vielen Dank

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.