Forum: FPGA, VHDL & Co. Fehler beim Vergleichen zweier Signale


von Marcel (Gast)


Lesenswert?

Hallo,

ich habe ein Modul welches zwei eingehende Signale(STD_LOGIC_VECTOR) 
vergleichen soll. Um zu sehen ob ein gewisser Schwellwert(threshold) 
überschritten wird, werden beide Signale in Integer umgewandelt.
 Gleichzeitig soll 'in_valid' und 'avail' gesetzt sein.

Im Xilinx ISE klappt der Syntaxcheck, aber bei der Simulation bekomme 
ich den Fehler "ERROR: In process chk_magn.vhdl:31"
1
library IEEE;
2
  use IEEE.STD_LOGIC_1164.all;
3
  use IEEE.NUMERIC_STD.all;
4
5
6
entity MAGNITUDE is
7
  generic(
8
    addr_width : integer := 22;
9
    magn_width : integer := 11;
10
    amp_width  : integer := 10
11
  );
12
  port(
13
  -- address    45 downto 23
14
  -- magnitude  22 downto 11
15
  -- amplitude  10 downto  1
16
  tuble       : in  STD_LOGIC_VECTOR(addr_width+magn_width+amp_width downto 0);
17
  in_valid    : in  STD_LOGIC;
18
  threshold   : in  STD_LOGIC_VECTOR(magn_width-1 downto 0);
19
20
  valid       : out STD_LOGIC
21
  );
22
end entity MAGNITUDE;
23
24
25
architecture behv_magn of MAGNITUDE is
26
  signal avail   : STD_LOGIC;
27
  signal magn_s  : STD_LOGIC_VECTOR(threshold'range);
28
begin
29
  avail    <= tuble(0);
30
  magn_s   <= tuble(magn_width+amp_width downto amp_width+1);
31
  valid    <= '1' when (((to_integer(unsigned(magn_s)) > to_integer(unsigned(threshold))) AND in_valid='1') AND avail='1')
32
          else '0';
33
34
end architecture behv_magn;

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


Lesenswert?

Marcel schrieb:
> den Fehler "ERROR: In process chk_magn.vhdl:31"
Und wo ist die Zeile 31?
1
  valid    <= '1' when (((to_integer(unsigned(magn_s)) > to_integer(unsigned(threshold))) AND in_valid='1') AND avail='1')
2
          else '0';
Der Operator > ist auch für unsigned definiert und du kannst ein paar 
Klammern sparen:
1
  valid    <= '1' when (unsigned(magn_s) > unsigned(threshold)) AND in_valid='1' AND avail='1'
2
          else '0';

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.