Forum: FPGA, VHDL & Co. CONV_INTEGER


von danny w. (weisti)


Lesenswert?

hi kurze frage:

ich habe als eingang eines entity eine binärzahl und will diese als 
integer benutzen.

1
library IEEE;
2
use IEEE.std_logic_1164.all; 
3
use ieee.std_logic_arith.all; 
4
5
entity Teiler_Motor is
6
  
7
  port (
8
    CLK: in STD_LOGIC;
9
    clk_m: out STD_LOGIC;
10
    drehzahl: in STD_LOGIC_VECTOR(7 downto 0)   -- Binärzahl
11
  );
12
end Teiler_Motor ;
13
14
architecture behavior of Teiler_Motor is
15
16
signal n : integer :=1;
17
18
begin
19
20
  process(drehzahl) -- wenn sich drehzahl ändert, wird teiler verhätlnis über for-schleife neu berechnet
21
  
22
  variable dez_dz : integer := conv_integer(drehzahl); -- Konvertierung
23
.
24
.
25
.

Fehlermeldung: "Type integer is not an array type and cannot be 
indexed."

Aber sämtliche beispiele im intnernet funktionieren so.
Wo ist also der Fehler?

von danny w. (weisti)


Lesenswert?

problem gelöst.

ich musste noch die ieee.std_logic_unsigned.all einbinden

wenn ich allerding die simulation starte hat dez_dz den wert 0.

kann sich da einer ein reim drauf machen?

von Mustafa (Gast)


Lesenswert?

danny w. schrieb:
> wenn ich allerding die simulation starte hat dez_dz den wert 0.

Dein Stück code is nur ein haufen von Deklarationen.

kann leider keiner erraten was im process so abläuft ohne den gesamten 
code gesehen zu haben.

Mus.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

danny w. schrieb:
> ich musste noch die ieee.std_logic_unsigned.all einbinden
Hättest du doch besser gleich die numeric_std genommen.

> wenn ich allerding die simulation starte hat dez_dz den wert 0.
> kann sich da einer ein reim drauf machen?
Ja.
danny w. schrieb:
> variable dez_dz : integer := conv_integer(drehzahl); -- Konvertierung
Teil das doch besser mal so auf:
1
  process(drehzahl) -- wenn sich drehzahl ändert, wird teiler verhätlnis über for-schleife neu berechnet
2
  variable dez_dz : integer; -- Deklaration
3
  begin
4
     dez_dz := conv_integer(drehzahl); -- Konvertierung
5
     :
6
  end process;

Du sollltest dir eines zwingend vergegenwärtigen:
Das ist NICHT C, was du hier "programmierst"!
Sondern es ist VHDL, mit der du eine Hardware beschreibst.
Die Unterschiede sind wesentlich größer als du denkst. Die 
Gemeinsamkeiten sind bestenfalls bei einzelnen Sprachelementen (wie 
for, while...). Das Verhalten dieser Sprachelemente ist KOMPLETT 
anders!


> hi kurze frage:
Warum schon wieder ein neuer Thread?
Haben dir die Antworten im alten 
Beitrag "vhdl: signalinitialisierung funktioniert nicht" nicht gefallen?
Oder hast du die Antworten gar nicht gelesen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.