Нет возможных записей для инфиксного оператора "+". Как понять требования / преобразования типов данных? - PullRequest
0 голосов
/ 18 января 2020

У меня продолжают возникать проблемы / понимание с типами данных в VHDL. У кого-нибудь есть хороший ресурс, где я могу узнать больше об этом? Основная проблема, которую я имею, это понимание того, что такое тип данных. Например, каков тип данных при конкатенации '0' к типу данных std_logi c? Это продолжает быть std_logi c или это теперь std_logic_vector? При поиске оператора «+» в ieee numeric_std я вижу, что он принимает 2 типа данных без знака и должен выводить тип данных без знака. Не уверен, что лучший способ преобразования одного типа данных в другой. Зависит ли это от того, какой пакет вы используете? Должен ли я делать "unsigned ('0' & A)" ??? Я действительно расстроен этими ошибками из-за неправильных типов данных ... Любая помощь будет оценена. Я хочу узнать, как интерпретировать типы данных и что оператор / функции хочет / требует.:

 library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity FullAdd is port (
    A, B, Cin : in std_logic;
    Sum, Cout : out std_logic);

end FullAdd;

architecture arch_FullAdd of FullAdd is
signal input : unsigned(1 downto 0);
begin
    input <= ('0' &  A) + ('0' & B) + Cin;
    sum <= input(0);
    Cout <= input(1);
end architecture arch_FullAdd;
...