2016-10-18 11 views
0

У меня есть код в 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"?

+0

Вам необходимо [Минимальный полный и проверенный пример] (http://stackoverflow.com/help/mcve). Ваш «код» выше недействителен VHDL. – user1155120

+0

поддерживается влево-вправо (при этом вы не указываете значение S_HITS_SRC1 или его объявление). IEEE Std 1076-2008 9.2.5 Добавление операторов, пункт 2. – user1155120

+0

К сожалению, * обновлено – weider

ответ

1

Что касается самого конкатенации, вы, кажется, делаете это правильно, но помимо других ошибок (вы назначаете вход, как отметил Брайан Драммонд, и у вас нет компилируемого синтаксиса) у вас возникнет проблема, поскольку назначения сигнала VHDL вне процесса параллельны (т.е. они оцениваются непрерывно и параллельно).

Так что, если вы:

A <= "1111"; 
A <= A(2 DOWNTO 0) & B; 

Вы будете назначая каждый бит с двумя водителями - «1», и немного слева от него для наименьшего значащего бита, который получает за исключением назначен «B». Представьте, что конструируйте это с помощью реальных медных проводов. Вы связываете все биты A вместе и привязываете их к положительному источнику напряжения. Если B «1», это должно быть разрешено для всех «1», но если B «0», вы эффективно подключите положительные и отрицательные клеммы напряжения, например, короткое замыкание. Ваш симулятор скажет вам, что результат «X» - неизвестен.

Смежные вопросы