Forum: FPGA, VHDL & Co. VHDL - type signed does not match with the integer literal


von Simon W. (simon1711)


Lesenswert?

Hallo zusammen,

ich hoffe hier ist ein VHDL-Guru unter uns.

Ich ärgere mich bei fast allen meinen Anfängerprojekten mit diesem 
Fehler rum:
1
ERROR: (VHDL-1278) type signed does not match with the integer literal

Sobald ich einen Wert vergleichen möchte, taucht dieser Fehler auf.
Ich habe schon einige Varianten an Datentypen und casts versucht...

Aber hier der konkrete Fall eines Dividierers:

1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all; 
4
use work.all;
5
6
entity div3bit is
7
port (
8
A,B: in signed (2 downto 0);
9
z: out signed (3 downto 0)
10
);
11
end entity div3bit;
12
13
architecture main of div3bit is
14
15
begin
16
div: process(A,B) is
17
variable a_s : signed (3 downto 0);
18
variable b_s : signed (3 downto 0);
19
variable z_s : signed (3 downto 0);
20
begin
21
a_s(3) := A(2);
22
a_s(2) := A(2);
23
a_s(1) := A(1);
24
a_s(0) := A(0);
25
b_s(3) := B(2);
26
b_s(2) := B(2);
27
b_s(1) := B(1);
28
b_s(0) := B(0);
29
30
IF (B = 0) THEN      
31
z_s := 7;            <== FEHLER
32
ELSE
33
z_s := a_s / b_s;    -- Dividieren der 2 Eingangsvektoren
34
END IF;
35
36
z <= z_s;
37
38
end process div;
39
end architecture main;

Toll wäre auch noch eine sauberere Lösung, wie ich von einem 3Bit Vektor 
auf einen 4Bit Vektor komme.

Vielen Dank!

Simon

: Bearbeitet durch User
von PittyJ (Gast)


Lesenswert?

variable z_s : signed (3 downto 0);

wie kann man da eine 7 zuweisen, wenn es nur bis 3 geht?

von Simon W. (simon1711)


Lesenswert?

Das sind doch 4 Bits?! Od. bin ich falsch?

von berndl (Gast)


Lesenswert?

Simon W. schrieb:
> Toll wäre auch noch eine sauberere Lösung, wie ich von einem 3Bit Vektor
> auf einen 4Bit Vektor komme.

schau dir mal die resize function an. Die propagiert auch das 
Vorzeichenbit richtig

Zu der Zuweisung: Du kannst keinen Integerwert an einen 
signed/unsigned/std_logic_vector zuweisen. Konvertierungen siehe hier: 
http://www.lothar-miller.de/s9y/categories/16-Numeric_Std

von Simon W. (simon1711)


Lesenswert?

Genial, das Diagramm! Vielen Dank!

Bin erstmal Glücklich... ;)

von Duke Scarring (Gast)


Lesenswert?

PittyJ schrieb:
> variable z_s : signed (3 downto 0);
>
> wie kann man da eine 7 zuweisen, wenn es nur bis 3 geht?
Du solltest Dich bei Guru noch nicht angesprochen fühlen.

Der Typ "signed(3 downto 0)" besteht aus 4 Bit (inklusive Vorzeichen).
Signale oder Variablen mit diesem Typ können Werte von -8 bis 7 
annehmen.

Duke

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.