2013-08-13 2 views
3

То, что я хочу сделать:Использовать общий параметр, как длина массива порт

entity FIRfilter is 
    generic (
     NTAPS : integer); 
    port (
     -- ... 
     h : in array(0 to NTAPS-1) of std_logic_vector(15 downto 0)); 
end FIRfitler; 

Но синтаксис на линии с h не является правильным.

Этот вопрос похож: How to specify an integer array as generic in VHDL? Но это не дает мне общее количество кранов при создании экземпляров. Возможно ли это?

ответ

7

Если объявить неограниченный тип массива в пакете, то можно ограничить массив, основанный на родовом, как показано в коде ниже:

library ieee; use ieee.std_logic_1164.all; 

package FIRfilter_pkg is 
    type x_t is array(natural range <>) of std_logic_vector(15 downto 0); 
end package; 


library ieee; use ieee.std_logic_1164.all; 
library work; use work.FIRfilter_pkg.all; 

entity FIRfilter is 
    generic (
     NTAPS : integer); 
    port (
    x : in x_t(0 to NTAPS-1); 
    z : out std_logic_vector(15 downto 0)); -- For simple example below 
end FIRfilter; 


library ieee; use ieee.numeric_std.all; 

architecture syn of FIRfilter is 
begin 
    z <= std_logic_vector(unsigned(x(0)) + unsigned(x(1))); -- Usage example 
end architecture; 
+2

Декларация порта может содержать декларацию сигнала интерфейса, где следующий предусмотрен режим (in) индикации подтипа, состоящий из необязательного объявления функции разрешения (none), метки типа (x_t) и ограничения, диапазона или индекса (показано). Оперативная идея заключается в том, что объявление сигнала интерфейса объявляет именованный подтип не типом. Объявление декларации декларации части объекта для типа не может быть обращено назад, поэтому тип объявляется в пакете. – user1155120

+0

Отлично. Я новичок в VHDL и раньше никогда не создавал неограниченный тип. Все это имеет смысл, и добавление Давида также помогло. –

+2

Приятно слышать; если вы можете использовать книгу, а затем взгляните на [Руководство для дизайнера VHDL] (http://books.google.com/books?isbn=0080568858), и вам может не понадобиться ни один другой ;-) –

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