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

Условная компиляция в VHDL

Если я правильно понял вопрос, то в VHDL-е есть возможность выбора реализации enyity через описание в разных архитектурах, а затем определить использование того или другого архитектурного тела через конфигурацию.

configuration xxx of zzz is --xxx имя конфигурации

for yyy --имя архитектурного тела

for vvv:nnn

use entity work.nnn(архитектура);

end for;

Извините, писал по памяти

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


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

Если я правильно понял вопрос, то в VHDL-е есть возможность выбора реализации enyity  через описание в разных архитектурах, а затем определить использование того или другого архитектурного тела через конфигурацию.

configuration xxx of zzz is --xxx имя конфигурации

for yyy  --имя архитектурного тела

for vvv:nnn

use entity work.nnn(архитектура);

end for;

Извините, писал по памяти

 

Это получается, что если у меня в 3-х местах есть по 2 варианта, то надо делать 8 entity?

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


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

Это получается, что если у меня в 3-х местах есть по 2 варианта, то надо делать 8 entity?

 

1 entity

2 architecture

3 три раза деклирировать по приведенному образцу.

 

Так же можно использовать generic и строить исключающую логику.

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


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

Это получается, что если у меня в 3-х местах есть по 2 варианта, то надо делать 8 entity?

 

1 entity

2 architecture

3 три раза деклирировать по приведенному образцу.

 

Так же можно использовать generic и строить исключающую логику.

 

Спасибо.

я глюкнул малость и в голове entity c architecture спутал.:-)

Но тем не менее. Если мне надо внести изменение в дизайн в той части что повторяется во всех architecture, то надо править все architecture? Я правильно понял?

Оно понятно, что надо дробить дизайн до мелких кусков чтоб этого не делать, но все же лень...

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


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

В стиле C препроцессора - generate statement с if схемой наиболее близок. Правда, он только параллельная конструкция, в процесс не вставишь. Но в процессе можно if false написать...

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


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

entity test is

generic(switch : boolean);

end test;

 

architecture....is

if switch generate

q: adder1 port map();

else

d: adder2 port map();

end if;

end;

 

(переписано из небезизвестного FAQ)

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


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

Тот же FAQ рекомендует еще одну неплохую идею:

использовать директивы препроцессора обычного компилятора С(#ifdef #endif) с остановкой оного после препроцессора. Можно написать командный файл который будет обрабатывать исходник перед VHDL-компиляцией (пропускать через препроцессор С) результат чего поступает на VHDL-компиляцию.

от себя добавлю что VHDL-исходник содержащий оные директивы не будет соответствовать требованиям VHDL :(

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


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

А ещё можно управлять синтезатором:

 

-- synopsys synthesis_off

"синтезить не надо"

-- synopsys synthesis_on

Именно так - как комментарий

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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