2014-12-16 3 views
2

Чтобы поддерживать масштабируемость в моем проекте VHDL, я начал использовать записи как входы и выходы для своих компонентов. В настоящее время я нахожусь в точке, где я хочу связать свой компонент с внешним использованием карт портов в архитектуре верхнего уровня. Проблема в том, что записи имеют несколько переменных, которые должны быть связаны с разными источниками.

В настоящее время мои записи, используемые в коде VHDL выглядеть следующим образом (имена заменены подделками):
Верхний уровень с использованием карт портов с записями в VHDL

TYPE some_record_input IS RECORD 
    input_one : sfixed(3 downto -32); 
    input_two : sfixed(3 downto -32); 
    input_rst : std_logic; 
END RECORD; 

TYPE some_record_output IS RECORD 
    output_one : std_logic_vector(15 downto 0); 
    output_dn : std_logic; 
END RECORD; 

Следовательно, что я использую библиотеку fixed_pkg для неподвижных точек.
Эти записи используются в карте порта сущности следующим образом.

ENTITY my_component IS 
port 
(
    clk  : IN std_logic; 
    data : IN some_record_input; 
    result : OUT some_record_output 
); 
END my_component; 

Теперь о той части, где возникают проблемы. Я использую этот компонент на своем верхнем уровне, чтобы связать его с кнопками и светодиодами, доступными для моего Altera Board. Это в настоящее время осуществляется с помощью карты порта в теле моего верхнего уровня лица:

A0 : my_component PORT MAP(clk => CLK, data => (input_one => IONE, input_two => ITWO, input_rst => RST), result => (output_one => OONE, output_dn => ODN)); 

Следовательно, что сигналы капитала исходящих из них. Очевидно, что это не так, потому что modelsim не компилирует это. Мне было интересно, может ли кто-нибудь сказать мне, как порт сопоставляет запись для объекта верхнего уровня в VHDL. Заранее спасибо.

+2

Объявлять сигналы ваших типов записей и сопоставлять их непосредственно с портами. –

+0

Я не уверен, в чем ваш вопрос. Вы имеете в виду, как назначить выводы для записей верхнего уровня/Как записи на карте портов верхнего уровня сопоставляются с именами контактов UCF? – Paebbels

ответ

7

Вместо агрегатов, использовать отдельные ассоциации звукозаписывающих элементов:

A0 : my_component 
PORT MAP(
    clk => CLK, 
    data.input_one => IONE, 
    data.input_two => ITWO, 
    data.input_rst => RST, 
    result.output_one => OONE, 
    result.output_dn => ODN 
); 

Когда вы сделаете это, убедитесь, что в индивидуальном порядке связать все части данных и результата. Также не следует смешивать другие вещи между отдельными ассоциациями объекта, поэтому все части данных должны быть смежными друг с другом.