2016-12-07 3 views
1

Я уверен, что это можно сделать, но застревание в названии типа.VHDL: Может ли функция вызываться с массивом как параметром и может ли она возвращать массив?

VHDL функция = функция имя_функции (параметров: тип) возвращает типа является

*parameters* = a label for an input parameter to the function. 
    *type* = the type of the parameter, like std_logic, std_logic_vector, string or other. 

VHDL массив = типа type_name является массивом (диапазона) от ELEMENT_TYPE

*range* = The range of elements the array is going to occupy. 
    *element_type* = The type of each element in the array. "type" is like the type discussed for the function. 

Массив определяет свой собственный тип.

Как его назначить как тип параметра функции?

Когда в функции используется массив, как назначить его как возвращаемое значение функции?

Может ли кто-нибудь предоставить какие-либо примеры?

Заранее спасибо.

+1

Насколько я помню, 'std_logic_vector' является массивом. – mouviciel

ответ

2

Одна из замечательных особенностей VHDL заключается в том, что это очень продуманный и последовательный язык. Если имеет смысл что-то делать, вы, как правило, можете; если вы можете что-то сделать в одном месте, вы можете сделать это в другом. Все входные данные для функции должны иметь тип; возвращаемое значение функции должно иметь тип. Как вы говорите, массив является типом. Следовательно, входы и возврат значения из функции могут быть массивами. Вот пример:

type MY_ARRAY is array (0 to 9) of integer; 

    function MY_ARRAY_FUNC (I : MY_ARRAY) return MY_ARRAY is 
    begin 
    return (9,8,7,6,5,4,3,2,1,0); 
    end function; 

https://www.edaplayground.com/x/njv

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