Error message

User warning: The following modules is missing from the file system: bbb. For information about how to fix this, see the documentation page. in _drupal_trigger_error_with_delayed_logging() (line 1181 of /home/c/cl69836/mainsite/public_html/includes/bootstrap.inc).

VHDL Generate statement

Разрабатывая FPGA используя VHDL, я наткнулся на очень интересное выражение Generate. О нём я и хочу сказать, так как мучился с ним сильно.
Для понимания статьи нужно иметь базовые знания VHDL и немного понимать в FPGA. Интересно - прошу под кат.

Полезные ссылки:
http://kanyevsky.kpi.ua/resourse/All/VHD...
http://www.ics.uci.edu/~jmoorkan/vhdlref...
http://we.easyelectronics.ru/plis/opisan...

Важно понимать, что Generate, это структура языка, которая влияет на синтез схемы. Т.е. это не элемент исполняемый в FPGA логики, а это способ более гибкого создания частоиспользуемых блоков. Generate очень удобно использовать, да и нужно использовать с константами настройки - generic's.

Для чего можно использовать Generate:
1) Например, в generic вы задаёте некое количество экземпляров какого-либо подключаемого блока или компонента, используя выражение generate с циклом:

for i in 0 to 10 generate
-- подключаем кокой-нибудь блок, можно также "играть" с параметром цикла, формируя интересные скажем лейблы
end generate;

2) Для асинхронной логики (для FPGA использование асинхронной логики нежелательно!!!): к примеру подключим в зависимости от константы настройки блока сигнал или к одному выходу или к другому для этого используем условный generate:

if config = 1 generate
out1 <= led;
end generate;
if config = 2 generate
out2 <= led;
end generate;

3) для генерирования иного кода используя как циклические так и условные generate.

Но!!! Область действия generate очень ограничена. Однажды мне хотелось в зависимости от константы в generic менять в архитектуре определение константы, не получилось так как generate действует только в теле архитектуры и нигде больше - исходя из моего опыта - так что для генерации кусков кода он плох, в process его тоже нельзя использовать, я так хотел, в зависимости от разрядности шины, генерировать нужное количество элементов when в case. Конечно как выкрутиться, в итоге догадался, но потратил много времени. Но как быть если никак иначе, то можно разбить тот же case и представить отдельными if в отдельном process и ставить их нужное количество прямо блоками с помощью generate. Это довольно производительное но немного дороговатое с точки зрения использования площади FPGA решение. Конечно не надо забывать про советы.

Удачных вам экспериментов.