Применение языка VHDL при проектировании специализированных СБИС. Ивченко В.Г. - 31 стр.

UptoLike

Составители: 

32
2.2.3. Шины и регистры
Архитектура DataFlow для Businterface на рисунке 7 хорошо отражает схему шинного интерфейса. Ее
соответствие словесному описанию шинного интерфейса гораздо хуже. Словесное описание дает разработчику
последовательность состояний. Каждое состояние обусловлено некоторым множеством условий. В каждом
состоянии сигналам присваиваются определенные значения. В DataFlow эта упорядоченная последовательность
не совсем ясна. Управляющая логика и передача данных не разделены.
Ниже приведена модификация потокового стиля описания, в которой управляющая логика и передача
данных строго разделены.
use Work.Defs.all;
architecture RT of Businterface is
type state_value is (IDLE, NEED_DATA, NEED_SYS, DRIVE_SYS);
signal RDY,REQ,MRQ: wbit bus;
signal DBR: byte bus;
signal ABR: half_word register;
signal state: state_value register;
begin
.
.
Рис. 10. Архитектура на уровне регистровых передач для шинного интерфейса
На рис. показана новая архитектура для Businterface. Объект типа state_value может принимать одно из
четырех значений, представляющих состояния управляющей логики. Сигнал state будет хранить имя текущего
состояния. Приведем значения состояний и их смысл:
IDLE - ожидание запроса на память, устройство отключено от шины данных;
NEED_DATA - запрос получен, ожидание готовности данных для ROM;
NEED_SYS - данные для ROM готовы, запрашивается использование шины данных;
DRIVE_SYS - подтверждение шины получено, управляемая шина данных.
Одно состояние будет следовать за другим в данном порядке, точно так же, как в словесном описании. Когда
арбитр шины отменит разрешение на управление шиной, то управляющая логика вернется в состояние IDLE.
Большинство сигналов в архитектуре RT для Businterface являются управляемыми сигналами (guarded
signals). Имеется два вида управляемых сигналов: регистры и шины. Не нужно путать это специализированное
понятие "шина" с инженерным термином "шина", применяемым для любой связанной группы сигналов.
Управляемые сигналы и обычные сигналы имеют следующие различия:
1) все управляемые сигналы должны быть разрешенными, то есть с каждым сигналом через его подтип
должна быть связана функция разрешения;
2) если управляемому сигналу присваивается значение в предложении присваивания сигнала, то
предложение должно быть управляемым, то есть его правая часть должна начинаться ключевым словом
guarded; управляемое назначение почти всегда содержится внутри управляемого блока;
3) если управляющее выражение, контролирующее назначение - ложно, то сигнал становится
отсоединенным (disconnected) и драйвер не может влиять на значение сигнала; массив, переданный функции
разрешения, не должен включать значения, соответствующего отключенному драйверу.
Различия регистра и шины заключаются в следующем:
1) если ни один драйвер не подсоединен к шине, то функция разрешения должна вызываться с массивом
нулевой длины. Функция должна тогда возвращать некоторое разрешенное значение для шины, которое
представляет абсолютное отключение (например 'Z');
2) если ни один драйвер не подсоединен к регистру, то в регистре сохраняется состояние, которое было
занесено в него при последнем подключении, а функция разрешения даже не вызывается.
Раздел предложений архитектуры RT состоит из трех секций. Первая секция (рис. 11) содержит управляемые
назначения, которые определяют потоки данных, которые появятся в каждом состоянии шинного интерфейса.
Каждый блок с метками от F1 до F4 соответствует одному из управляющих состояний. Блок содержит
множество назначений, которые являются активными, только когда контроллер находится в соответствующем
состоянии. Это обеспечивается управляющим выражением для блока.
.
.
F1:block (state = IDLE) -- Управляющие выражения для
-- каждого блока определяют
-- состояние
begin
ABR<=guarded Abus (0 to 15) after 12 ns;
end block;
F2:block (state = NEED_DATA)