У меня есть код в VHDL. Я не понимаю, как работает конкатенация.VHDL, как работает конкатенация?
A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B : IN IN STD_LOGIC;
A <= "1111";
B <= '0';
A <= A(2 DOWNTO 0) & B;
Есть ли у "0111" или "1110"?
У меня есть код в VHDL. Я не понимаю, как работает конкатенация.VHDL, как работает конкатенация?
A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B : IN IN STD_LOGIC;
A <= "1111";
B <= '0';
A <= A(2 DOWNTO 0) & B;
Есть ли у "0111" или "1110"?
Что касается самого конкатенации, вы, кажется, делаете это правильно, но помимо других ошибок (вы назначаете вход, как отметил Брайан Драммонд, и у вас нет компилируемого синтаксиса) у вас возникнет проблема, поскольку назначения сигнала VHDL вне процесса параллельны (т.е. они оцениваются непрерывно и параллельно).
Так что, если вы:
A <= "1111";
A <= A(2 DOWNTO 0) & B;
Вы будете назначая каждый бит с двумя водителями - «1», и немного слева от него для наименьшего значащего бита, который получает за исключением назначен «B». Представьте, что конструируйте это с помощью реальных медных проводов. Вы связываете все биты A вместе и привязываете их к положительному источнику напряжения. Если B «1», это должно быть разрешено для всех «1», но если B «0», вы эффективно подключите положительные и отрицательные клеммы напряжения, например, короткое замыкание. Ваш симулятор скажет вам, что результат «X» - неизвестен.
Вам необходимо [Минимальный полный и проверенный пример] (http://stackoverflow.com/help/mcve). Ваш «код» выше недействителен VHDL. – user1155120
поддерживается влево-вправо (при этом вы не указываете значение S_HITS_SRC1 или его объявление). IEEE Std 1076-2008 9.2.5 Добавление операторов, пункт 2. – user1155120
К сожалению, * обновлено – weider