Перейти к содержанию
    

Как это делается в Xilinx ISE 9.2i

Сам до недавнего времни работал в Quartus. Пишу на VHDL. Тем не менее, часто использовал VHDL-описания блоков, сгенерированные Megawizard-ом. При этом я дорабатывал такие описания так, чтобы я мого их использовать в своем проекте с произвольной разрядностью. Например, для аккумулятора фрагмент его исходного описания от Megawizard-а было такми:

 

.............................................

LIBRARY altera_mf;

USE altera_mf.all;

 

ENTITY acc IS

PORT

(

aclr : IN STD_LOGIC := '0';

add_sub : IN STD_LOGIC := '1';

clock : IN STD_LOGIC := '0';

data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);

result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)

);

END acc;

..................................................

Я дорабатываю так:

 

LIBRARY altera_mf;

USE altera_mf.all;

 

ENTITY acc IS

GENERIC (n: natural);

PORT

(

aclr : IN STD_LOGIC := '0';

add_sub : IN STD_LOGIC := '1';

clock : IN STD_LOGIC := '0';

data : IN STD_LOGIC_VECTOR (n-1 DOWNTO 0);

result : OUT STD_LOGIC_VECTOR (n-1 DOWNTO 0)

);

END acc;

 

И в проекте спокойно вызываю как:

acc_x_inst : acc generic map (n=>8) PORT MAP (

 

В среде Xilinx ISE аналогично я использую IP Coregen для аккумулятора. Я игнорирую то, что он в настройках дает только фиксированную разрядность, а в сгенерированном им VHDL-описании пытаюсь аналогично скорректировать его для произвольной разрядности через generic.

Но если установить такой аккумулятор в проекте с разрядностью, отличной от той, что я задал в настройках IP Coregen, то компилятор сообщает мне об ошибке. Конечно, я могу написать свой аккумулятор с соответсвующим generic, но такой варинат меня сейчас не устраивает.

В общем, как правильно это делать в Xilinx ISE? Или из какой библиотеки (аналогично altera_mf) можно вытягивать описание компонент с возможностью конкретизировать разрадность и другие параметры через generic? Или только писать свои реализации блоков?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не все компоненты можно вставлять из библиотеки (Xilinxcorelib), вот например BinaryCounter v8.0 можно (о чем написанно в DataSheet на эту корку). Т.к. я IPCore аккумулятор не использую, то не знаю можно ли его тоже вставить напрямую из библиотеки, обойдясь без GUI интерфейса (в любом случае в библиотеке должен быть симуляционный эквивалент). Но во многих VHDL файлах сгенерированных корок написанно, что этот файл можно использовать только для behavioral моделирования, т.к. при компиляции такого VHDL файла код получиться субоптимальный, поищите нет ли такого предупреждения в Вашем файле.

 

Когда Вы пользуетесь GUI интерфейсом и создаяте конкретную корку, то Вы задаете параметры по которым генерируется NGC файл (а VHDL прилагающийся к нему используется для целей behavioral симуляции, о чем обычно сверху и написано). При Translate в Ваш проект засасывается сильно оптимизированный NGC файл, как правило, плотненько набитый constraint'ами, а не одноименный VHDL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...