Forum: FPGA, VHDL & Co. Binärzahl und integer addieren


von Fränkie (Gast)


Lesenswert?

Hallo...
Ich muss noch ein mal eine Frage loswerden.
Ich habe eine Binäre Zahl die ich mit einem Integer addieren möchte.
Das ergebniss soll wieder ein Signal sein.
Der relevante auszug aus dem Programm schaut so aus.

entity Screen_editor is
    Port ( Clock40   : in std_logic;
           x     : in std_logic_vector(9 downto 0);
           y     : in std_logic_vector(9 downto 0);
:
:
usw
:
:

SIGNAL x_k1     : std_logic_vector(7 downto 0);
SIGNAL y_k1     : std_logic_vector(7 downto 0);
SIGNAL x_k2     : std_logic_vector(7 downto 0);
SIGNAL y_k2     : std_logic_vector(7 downto 0);
SIGNAL x_k3     : std_logic_vector(7 downto 0);
SIGNAL y_k3     : std_logic_vector(7 downto 0);

constant achse_k1_x : integer := 15;
constant achse_k1_y : integer := 10;
constant l_linie : integer := 257;
constant raster : integer := 300;

begin

x_k1 <= x - achse_k1_x;
y_k1 <= y - achse_k1_y;
x_k2 <= x - achse_k1_x + raster;
y_k2 <= y - achse_k1_y;
x_k3 <= x - achse_k1_x;
y_k3 <= y - achse_k1_y + raster;

Anscheinent funktioniert es aber nicht eine Constante mit einem Signal
zu addieren und es einem Signal zuzuweisen oder???
Das Webpack meldet keinen Fehler, aber die Funktion ist nicht gegeben.
Wo liegt der Fehler, bzw habt ihr einen Tipp wie ich aus einer
Variablen oder einer Constanten ein Signal machen kann?

Danke euch

von John-Eric (Gast)


Lesenswert?

Hallo.
Kannst du die Constante nicht einfach als std_logic_vector
deklarieren?
oder muss es unbedingt integer sein.
sprich
======
constant achse_k1_x : std_logic_vector(7 downto 0) := x"0E";
constant achse_k1_y : std_logic_vector(7 downto 0) := X"0A";
usw.
vieleicht geht das ja.
denke mal aber schon, da beide im gleichen format sind.

mfg
john-eric

von Zennehoy (Gast)


Lesenswert?

Wenn du IEEE.STD_LOGIC_ARITH und IEEE.ST_LOGIC_UNSIGNED noch nicht
"use"est, probier das mal. Ich glaube das sollte gehen.

Wenn nicht, kannst du aus einem "integer" einen "std_logic_vector"
machen:
x_k1 <= x - CONV_STD_LOGIC_VECTOR(achse_k1_x,9);

Zen

von Fränkie (Gast)


Lesenswert?

Hmmm also erstmal danke... die libs werden schon geused :-)

Bei
x_k1 <= x - CONV_STD_LOGIC_VECTOR(achse_k1_x,9);
steht das ,9 für die Binärstellen?
Das ist ja nicht blöde... ich habe den vorschlag von John Eric auch
schon beherzigt... ich denke die vorschläge sollten mich
weiterbringen.
Danke rstmal... meld mich dann wenn es klappt... oder auch nicht :-)

von Zennehoy (Gast)


Lesenswert?

Hmm, ich habs ausprobiert, und mit ieee.std_logic_1164.all und
ieee.std_logic_unsigned.all geht es auch einfach mit Konstanten
Integern. Bei mir jedenfalls...
Zen

von Fränkie (Gast)


Lesenswert?

Jupp super... jetzt scheint es zu klappen... also bei mir lags aber
nicht an den Libs sondern ich habe die konstanten nun direkt als
std_logic_vector definiert. Nun scheint es zu klappen. Nun hab ich
eigendlich nur noch ein problem, aber ich denke da werd ich mal nen
neuen Thread aufmachen. Sonst wird es glaub ich zu unübersichtlich.
Aber danke für die hilfe...

von john-eric (Gast)


Lesenswert?

bitte bitte.
mfg

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.