#vhdl
#vhdl
Вопрос:
Data_Int<='0' amp; Data_Int(7 downto 1); --if shift then shift it right
Как конкатенация используется для сдвига позиции? Я думал, что в VHDL есть оператор сдвига вправо. Может кто-нибудь, пожалуйста, объяснить мне это?
Предположим
Data_Int : std_vector(10 downto 0);
-- and Data_Int has "1010010011"
Большое вам спасибо.
Ответ №1:
Операторы сдвига (sll, srl, sla, sra, rol и ror) не предусмотрены в VHDL-87, поэтому вы увидите, что много кода явно сдвигается с использованием конкатенации и частичных массивов. Более универсальным методом записи приведенного выше сдвига (который будет работать с различными размерами массива) было бы:
Data_Shift <= ‘0’ amp; Data_Int(data_int’влево вниз до data_int’вправо 1);
Конкатенация обеспечивает сдвиг, поскольку вы отбрасываете один бит (в данном случае бит 0) и заменяете его на стороне старшего порядка чем-то другим (здесь логический ноль, хотя вы также можете сдвинуть логическую 1, расширить знак и т. Д.).