Использование конкатенации для сдвига в VHDL - PullRequest
0 голосов
/ 08 октября 2011
Data_Int<='0' & 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 Ответ

2 голосов
/ 09 октября 2011

Операторы сдвига (sll, srl, sla, sra, rol и ror) не предусмотрены в VHDL-87, поэтому вы увидите много кода, явно сдвигающего с помощью конкатенации и частичных массивов. Более универсальный метод записи вышеуказанного сдвига (который будет работать с различными размерами массива) будет выглядеть так:

Data_Shift <= '0' & Data_Int (data_Int'left down to Data_Int'right + 1); </p>

Конкатенация обеспечивает сдвиг, поскольку вы отбрасываете один бит (в данном случае бит 0) и заменяете его на стороне старшего разряда чем-то другим (здесь логический ноль, хотя вы также можете сдвигать в логическую 1, знак-расширение и т. д.).

...