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 1156 of /home/c/cl69836/mainsite/public_html/includes/bootstrap.inc).

VHDL. Знакомство.

Знакомство с VHDL.

Тут я не хочу много рассказывать о том, что и так хорошо описано во многих книжках. Просто кратко расскажу о VHDL и дам пару концепций для помощи в старте изучения этого языка. VHDL - это язык описания интегральных схем. Собственно, с его помощью можно описать структуру внутренней логики ПЛИС (FPGA и любых иных интегральных схем). Мне проще говорить о ПЛИС. Причём, вы описываете не схему, а обычную логику, похожую на программу на Pascal или C. Сам язык похож на Pascal.
Почему именно VHDL а не Verilog? Честно, Verilog имеет C - подобный синтаксис, что мне ближе, но когда я встретился с ПЛИС ребята посоветовали VHDL, так как порой нужно точно знать с каким типом ты работаешь... VHDL строже, а в железе всё железно и нельзя, на мой взгляд позволять тут Сишные вольности.

Итак....
Как я уже советовал, по VHDL и ПЛИС есть хорошая книжка: Сергиенко А. М. "VHDL для проектирования вычислительных устройств". Собственно там есть отражение того, о чём я буду говорить дальше и даже намного больше.
А потом, книжка на английском, но очень классная Ben Cohen "VHDL Coding Styles and Methodologies
Second Edition"
- её можно почитать после предыдущей, для справки очень хороша.

В общем, вы создаёте некую "СУЩНОСТЬ" так переводится "entity", что является некоторым описанием интерфейсов вашего устройства. Там вы описываете порты и настроечные константы Generics. Ваше entity можеь быть составным из иных entity))). Потом каждому entity сопоставляется одна или несколько архитектур "architecture", может быть реализованна только одна из нескольких архитектур в железе. Ну а в архитектуре сама логика и внутренние сигналы. В общем вышесказанное, так болтовня.

То что нужно уяснить, это научиться "мыслить аппаратурой". Прикладным программистам, привыкшим к C++, C, Pascal, сложно подразумевать, что всё что напишете, должно быть потом синтезировано специальной программой в аппаратурную схему из вашего VHDL описания. В RTL. Так вот. Представьте, что всё что вы пишете в аппаратуре реализуется и постарайтесь в уме это моделировать. И поймите, что сигналы текут по соединениям, то есть параллельно. Вот наличие параллельных операторов и затрудняет программирование. Поймите, что сигналы текут параллельно. Хотя там всё сложно, из-за ригеров и так далее. Но по-началу, я мыслил так, что всё течёт параллельно и асинхронная логика..... короче... не касаясь ПЛИС, где лучше отказаться от асинхронной логики, всё что вы напишете будет исполняться одновременно. Хотя это не совсем так, но полезно для начала так думать.
Вот к примеру параллельный оператор присваивания, применяется к сигналам (<=):

a <= b;
b <= a;
c <= a + b;

Что тут особого, а то, что записав такое, вы просто соедините сигналы, и все эти строчки выполняется одновременно, не сначала сигналу a присвоится сигнал b, а одновременно сигналу a присвоится то, что в b, а b сигал a, а сигналу c присвоится их сумма одновременно.
Предположим в a было 2, в b было 1, а в c 0, то после выполнения станет так a=1, b=2, c=3. Хотя там всё сложнее, есть параллельные и последовательные операторы. Вот переменные, внутри процесса(это создание синхронной логике по списку чувствительности, по чути - это D тригеры между которыми оператор), изменяюся последовательно и поэтому если сигналу присваивается выражение с участвующими переменными, надо следить, до или после происходит изменение переменных, так как в этом случае это важно.

Итак, рассказывать о языке я не вижу смысла. Кратко я о нём сказал, мол такое существует. В дальнейшем я ишь расскажу об острых моментах, с которыми я повозился. И дам советы.

Слякоть, пауки, тучки, "Гадкие лебеди", а тут этот VHDL.....
Доброго мышления.

--
PS. <пусто>