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

UptoLike

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

33
begin
MRQ<=guarded '0' after 5 ns;
end block;
F3:block (state = NEED_SYS)
begin
REQ<=guarded '0' after 5 ns;
end block;
F4:block (state = DRIVE_SYS)
begin
RDY<=guarded '0' after 5 ns;
DBR<=guarded Data after 9 ns;
end block;
.
.
Рис. 11. Архитектура регистровых передач для шинного интерфейса. Функциональные блоки
Объявления на рис. 10 включают четыре локальных шины и один локальный регистр, каждому выходному
порту соответствует один сигнал. Только один или два из этих сигналов задействованы в каждом блоке. Когда
контроллер находится в состоянии, которое не влияет на данный регистр, то этот регистр остается в
предыдущем состоянии. Если контроллер должен ввести новое состояние, которое установит в регистре новое
значение, то значение регистра должно измениться соответствующим образом. Когда контроллер находится в
состоянии, которое не управляет данной шиной, тогда этой шине по умолчанию присваивается 'неуправляющее'
(not driving) значение функцией разрешения сигнала, которая вызывалась с массивом аргументов нулевой
длины.
Например, шина RDY является управляемой только в состоянии DRIVE_SYS. Как только система выходит
из состояния DRIVE_SYS, функция разрешения типа wbit (функция wired_and) должна будет вызываться с
массивом нулевой длины. Функция wired_and будет возвращать '1' в качестве значения сигнала. В результате
RDY, когда отсоединяется, то переходит в состояние '1', подобно ТТЛ логике с открытым коллектором.
Каждый элемент DBR имеет тип tribit, которому соответствует функция разрешения tristate. Когда все
драйверы элементов типа tribit отсоединены, вызывается функция tristate со входным массивом нулевой длины,
которая возвращает высокоимпедансное состояние 'Z' и имитирует трехзначную ТТЛ логику.
Напротив, ABR является регистром. Он сохраняет значение, установленное на адресных входах в момент,
когда контроллер покидает состояние IDLE. Он не изменится до тех пор, пока машина состояний опять не
войдет в состояние, в котором ABR является управляемым. В примере имеется только одно такое состояние
IDLE, но в общем случае любое число различных состояний может изменять значение ABR.
state <= NEED_DATA when
state = IDLE and
MemReq = '0' and ABus(16 to 18) = Board_id
else NEED_SYS when
state = NEED_DATA and
state'stable(175 ns)
else DRIVE_SYS when
state = NEED_SYS and
BusAck = '0'
else IDLE when
state = DRIVE_SYS and
MemReq = '1'
else state;
Рис.12. Переходы между состояниями
За потоковыми блоками следуют по одному условному предложению параллельного назначения сигналов,
они составляют управляющую логику для RT (рис. 12). Имеется по одному условному предложению для
каждого перехода в каждое новое состояние. Условием является конъюнкция текущего состояния и условия,
сигнализирующего о переходе в следующее состояние.
Последний блок предложений параллельного назначения сигналов в RT (рис. 13) просто передает текущие
значения сигналов в соответствующие порты.