У меня проблема с вычитанием STD_LOGIC_VECTOR из целого числа.
Это код, который у меня есть прямо сейчас:
entity ROM is
Port ( hcount: in STD_LOGIC_VECTOR(9 downto 0);
vcount: in STD_LOGIC_VECTOR(9 downto 0);
hpos: in integer;
vpos: in integer;
clk25: in STD_LOGIC;
Pixeldata: out std_logic);
end ROM;
architecture Behavioral of ROM is
signal romtemp : std_logic_vector(9 downto 0);
shared variable yas : integer range 0 to 9 := 0;
shared variable xas : integer range 0 to 9 := 0;
Type RomType is array (9 downto 0) of std_logic_vector(9 downto 0);
Constant Rom: RomType :=
( "0001111000", "0111111110", "0111111110", "1111111111", "1111111111"
, "1111111111", "1111111111", "0111111110", "0111111110", "0001111000");
begin
process(clk25)
begin
if(hpos > hcount - 10) and (hpos <= hcount) and (vpos > vcount - 10) and (vpos <= vcount) then
xas := hpos - to_integer(unsigned(hcount));
end if;
end process;
end Behavioral;
Проблема заключается в следующей строке кода:
xas := hpos - to_integer(unsigned(hcount));
Я пытаюсь поместить вычитание в целое число с именем xas.
В этой строке возникают следующие ошибки:
Ошибка: Несколько объявлений без знака, включенных через несколько предложений использования; ни один не сделан непосредственно видимым
Ошибка: ожидается тип unsigned для ‹ unsigned(hcount) ›.
Ошибка: формальный ‹ аргумент › не имеет фактического значения или значения по умолчанию.
Ошибка: тип integer не является типом массива и не может быть проиндексирован
Ошибка: найдено «0» определений оператора =, невозможно определить точное определение соответствия перегрузки для -
Кто-то, кто может помочь мне с этой ошибкой? (Я новичок в VHDL)