std_logic_vector counter probleme

Gast #203386
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
Gast #203390
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;
Gast #203391
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
Gast #203392
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren