vhdl - can't determine definition of operator ""-"" -


i've got error operator "-". using signed type , ieee.numeric_std. ask if usage of "for" correct.


library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_signed.all; use ieee.std_logic_textio.all; use ieee.numeric_std.all;     entity stage_1 port (  clk : in bit; imagem: in signed (19999 downto 0); imagemanterior: in signed (19999 downto 0); ix: out signed (24999 downto 0); iy: out signed (24999 downto 0); it: out signed (24999 downto 0) ); end stage_1;  architecture behavioral of stage_1 begin  process (clk)   begin  if (clk 'event , clk = '1')  in 0 2448 loop  ix(i*10+9 downto i*10) <= 1/4 * (imagemanterior((i+1)*8+7 downto (i+1)*8) -       imagemanterior(i*8+7 downto i*8) + imagemanterior ((i+1)*8+407 downto   (i+1)*8+400) - imagemanterior(i*8+407 downto i*8+400) + imagem((i+1)*8+7 downto(i+1)*8) - imagem(i*8+7 downto i*8)+ imagem((i+1)*8+407 downto(i+1)*8) - imagem((i)*8+407 downto i*8 +400));  iy(i*10+9 downto i*10) <= 1/4*(imagemanterior((i*8)+407 downto (i)*8+400) - imagemanterior(i*8+7 downto i*8) + imagemanterior((i+1)*8+407 downto (i+1)*8) - imagemanterior((i+1)*8+7 downto(i+1)*8) + imagem(i*8+407 downto i*8+400) - imagem(i*8+7 downto i*68) + imagem((i+1)*8+407 downto (i+1)*8+400) -imagem((i+1)*8+7 downto(i+1)*8));  it(i*10+9 downto i*10) <= 1/4 * (imagem(i*8+7 downto i*8)- imagemanterior((i*8+7)-i*8) + imagem((i*8)+407 downto i*8+400)- imagemanterior(i*8+407 downto i*8+400) +imagem((i+1)*8+7 downto(i+1)*8)- imagemanterior((i+1)*8+7 downto(i+1)*8) + imagem((i+1)*8+407 downto (i+1)*8+400)- imagemanterior((i+1)*8+407 downto (i+1)*8+400));  end loop; end if ; end process; end behavioral; 

i commented out assignments not involved in error.

you have provided indication of (pointed line) error associated with.

you had - operator instead of downto in specifying range of right hand operand of - operator error complaining about. marked comment:

 -- downto "-" 

you have provided minimal, complete, , verifiable example, in case have implied throwing things out not associated error.

library ieee; use ieee.std_logic_1164.all; -- use ieee.std_logic_signed.all; -- use ieee.std_logic_textio.all; use ieee.numeric_std.all;     entity stage_1     port (          clk:            in  bit;         imagem:         in  signed (19999 downto 0);         imagemanterior: in  signed (19999 downto 0);         ix:             out signed (24999 downto 0);         iy:             out signed (24999 downto 0);         it:             out signed (24999 downto 0)     ); end entity stage_1;  architecture behavioral of stage_1 begin     process (clk)     begin         if (clk 'event , clk = '1')             in 0 2448 loop                  --ix(i*10+9 downto i*10) <= 1/4 * (imagemanterior((i+1)*8+7 downto (i+1)*8) -       imagemanterior(i*8+7 downto i*8) + imagemanterior ((i+1)*8+407 downto                      -- (i+1)*8+400) - imagemanterior(i*8+407 downto i*8+400) + imagem((i+1)*8+7 downto(i+1)*8) - imagem(i*8+7 downto i*8)+ imagem((i+1)*8+407 downto(i+1)*8) - imagem((i)*8+407 downto i*8 +400));                  --iy(i*10+9 downto i*10) <= 1/4*(imagemanterior((i*8)+407 downto (i)*8+400) - imagemanterior(i*8+7 downto i*8) + imagemanterior((i+1)*8+407 downto (i+1)*8) - imagemanterior((i+1)*8+7 downto(i+1)*8) + imagem(i*8+407 downto i*8+400) - imagem(i*8+7 downto i*68) + imagem((i+1)*8+407 downto (i+1)*8+400) -imagem((i+1)*8+7 downto(i+1)*8));                  it( i*10 + 9 downto * 10) <=                   1/4 * (                       imagem(i * 8 + 7 downto * 8) -                       imagemanterior( (i * 8 + 7) downto * 8) +   -- downto "-"                       imagem((i * 8 )+ 407 downto * 8 + 400) -                        imagemanterior( * 8 + 407 downto * 8 + 400) +                       imagem((i + 1) * 8 + 7 downto( + 1) * 8) -                        imagemanterior((i + 1) * 8 + 7 downto(i + 1) * 8) +                        imagem((i + 1) * 8 + 407 downto (i + 1) * 8 + 400) -                        imagemanterior((i + 1) * 8 + 407 downto (i + 1) * 8 + 400)                   ) ;               end loop;          end if ;      end process; end architecture behavioral; 

after change of - operator reserved word downto code analyzes (and make no claim run, requires test bench drive clk).

adding rudimentary testbench drive clk

shows first assignment:

            ix(i*10+9 downto i*10) <= 1/4 * (imagemanterior((i+1)*8+7 downto (i+1)*8) -       imagemanterior(i*8+7 downto i*8) + imagemanterior ((i+1)*8+407 downto                  (i+1)*8+400) - imagemanterior(i*8+407 downto i*8+400) + imagem((i+1)*8+7 downto(i+1)*8) - imagem(i*8+7 downto i*8)+ imagem((i+1)*8+407 downto(i+1)*8) - imagem((i)*8+407 downto i*8 +400)); 

produces range error (the range of expression on right hand side doesn't match range of slice on left hand side).

the same occurs second assignment:

            iy(i*10+9 downto i*10) <= 1/4*(imagemanterior((i*8)+407 downto (i)*8+400) - imagemanterior(i*8+7 downto i*8) + imagemanterior((i+1)*8+407 downto (i+1)*8) - imagemanterior((i+1)*8+7 downto(i+1)*8) + imagem(i*8+407 downto i*8+400) - imagem(i*8+7 downto i*68) + imagem((i+1)*8+407 downto (i+1)*8+400) -imagem((i+1)*8+7 downto(i+1)*8)); 

as last (having - operator instead of downto, corrected).

these run time errors.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -