End block Bl;
B2: block (sel = 2) is begin
с <= guarded D;
End block b2;
выдают в общую шину, представленную сигналом с, целое значение А при условии равенства 1 управляющего сигнала sel (т.е. когда сигнал guard<=(sel = 1) равен true) и значение сигнала D при другом условии в выражении сдерживания. Если guard = false, то источник сигнала отключается от шины, т.е. выполняется его сдерживание. Отключение источника может происходить с задержкой, устанавливаемой в объявлении disconnect, которое следует за объявлением сигнала. В приведенном примере отключение происходит с задержкой 2 не.
В случае, когда не выбран ни один источник, сигнал принимает свое предыдущее значение, если источник сигнала типа register или предварительно заданное значение, если источник сигнала типа bus. Ключевыми словами register и bus сигналы обозначаются при их объявлении. Благодаря механизму сдерживания, один сигнал может иметь несколько источников - выходов блоков. При этом правильное поведение этого сигнала состоит в выборке не более одного источника сигнала одновременно, т.е. сигнал guard защищает (guards) общую шину от неправильного функционирования. Таким образом,
еще одной основной функцией блоков в VHDL является организация нескольких источников для одного сигнала.
Обычно трансляция операторов блоков поддерживается компиляторами-синтезаторами. Но использование механизма подключения к общей шине, обеспечиваемого блоками, а также программирование поведения модели, связанное с ключевыми словами register, bus, disconnect, как правило, запрещаются. Также не поддерживаются связывания портов и настроечных констант в блоках.
Стили программирования
Операторы процесса задают поведение сигналов в зависимости от событий, происходящих во времени. Поэтому если архитектура включает только операторы процесса, то говорят, что такая архитектура описана поведенческим стилем.
Операторы параллельного присваивания, вызова процедуры, условного и селективного параллельного присваивания указывают потоки данных между линиями связи, обозначенными идентификаторами сигналов, а также обработку этих потоков. Поэтому если в теле архитектуры встречаются только такие операторы, то говорят, что эта архитектура написана стилем потоков данных.
Наконец, в архитектуре, описанной только операторами вставки компонента, закодирована структура проектируемого устройства. Сами операторы отвечают структурным блокам, а сигналы, связанные с портами — линиям связи между этими блоками. Поэтому говорят, что такая архитектура описана структурным стилем.
Естественно, архитектуры, описанные различными стилями, могут иметь произвольное количество операторов generate и block. Часто встречаются архитектуры, описанные смешанным стилем.
В программах, предназначенных для синтеза, регистры и другие схемы с памятью можно описать только с помощью оператора процесса или вставкой компонента с памятью. Так как в архитектуре, описанной стилем потоков данных, нет операторов процессов, то такая архитектура описывает комбинационную схему. Исключением является случай, поддерживаемый некоторыми компиляторами, когда регистр задается оператором block со сдерживаемыми операторами параллельного присваивания, выражение сдерживания которого является условием разрешения записи.
Хорошим стилем программирования считается, когда в иерархическом проекте объекты верхних уровней описываются структурным стилем.