VHDL сцепление разных типов - PullRequest
0 голосов
/ 09 октября 2018

У меня есть следующий существующий код FPGA

fpga_avr32_data       : INOUT STD_LOGIC_VECTOR(15 DOWNTO 0);

SIGNAL read_sensor                       : INTEGER;

TYPE meas_type IS ARRAY (7 DOWNTO 0) OF STD_LOGIC_VECTOR(11 DOWNTO 0);
TYPE meas_reg_type IS ARRAY (NATURAL RANGE <>) OF meas_type;



fpga_avr32_data <= "0000" & meas_reg(read_sensor)(read_channel)

-

Я хочу заменить «0000» младшими 4 «битами» read_sensor, что-то вроде этого

fpga_avr32_data <= read_sensor(3 DOWNTO 0) & meas_reg(read_sensor)(read_channel)

Возможно ли это?

С уважением

1 Ответ

0 голосов
/ 09 октября 2018

Да, это возможно.Но не так, как вы это делаете.read_sensor - это целое число, а fpga_avr32_data - это STD_LOGIC_VECTOR, поэтому вы должны сначала преобразовать целое число в вектор:

library ieee;
use ieee.numeric_std.all;
...
signal rsv: std_logic_vector(31 downto 0);
...
rsv <= std_logic_vector(to_signed(read_sensor, 32));

, а затем извлечь 4 младших бита:

fpga_avr32_data <= rsv(3 DOWNTO 0) & meas_reg(read_sensor)(read_channel);
...