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