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

UptoLike

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

43
Необходимость использовать только параллельные назначения сигналов затрудняет создание моделей шин,
управляемых несколькими драйверами. Это вызвано тем, что каждый драйвер может быть назначен сигналу
лишь один раз. Поэтому для определения эффективного значения сигнала используют уже обсуждавшиеся
выше функции разрешения.
Управляемые сигналы (guarded_signals) являются разрешенными сигналами, они связаны с некоторой
функцией разрешения, которая позволяет драйверам быть отключенными. Управляемый сигнал должен быть
назначен внутри оператора блока (block_statement) с помощью управляемого назначения
(guarded_signal_assignment). В качестве примера приведем описание распределенного мультиплексора:
signal Distributed_Mux : mux_bit bus;
begin
first_driver_of_mux : block (Sel1 = '1')
begin
Distributed_Mux <= guarded Data1;
end block;
second_driver_of_mux : block (Sel2 = '1')
begin
Distributed_Mux <= guarded Data2;
end block;
Последовательностные элементы, такие как триггеры и регистры, должны быть явно объявлены с
предопределенными типами reg_bit и reg_vector в качестве регистров (register). Назначения этим элементам
должны выполняться внутри оператора блока (block_statement) с помощью управляемого назначения
(guarded_signal_assignment):
-- Falling edge triggered D flip flop :
signal Reg : reg_bit register;
begin
flip_flop : block (ck = '0' and not ck'STABLE)
begin
Reg <= guarded Din;
end block;
-- Level sensitive latch:
signal Lat : reg_bit register;
begin
latch : block (ck = '1')
begin
Lat <= guarded Din;
end block;
В обоих случаях, рассмотренных в последнем примере, управляющее выражение должно зависеть только от
одного сигнала, если описание будет использоваться в качестве исходного задания для утилит логического
синтеза Alliance.
В САПР Alliance потоковое описание задействуется при достижении следующих целей:
1) моделирование и проверка правильности ввода описания (спецификации) устройства;
2) синтез аппаратных структур на основе исходного описания.
На этих этапах в предлагаемом маршруте проектирования не используется информация о реальных
временных интервалах, поэтому потоковое подмножество VHDL САПР не поддерживает временные
спецификации, в частности, выражение after не обрабатывается, а моделирование выполняется с
использованием дельта-задержки.
Ниже приведен пример сумматора с аккумулятором, выполненном на основе регистра. Описание выполнено
в потоковом стиле.
entity add_accu is
port (
clk : in bit;
command : in bit;
data_in : in bit_vector (31 downto 0);
data_out : out bit_vector (31 downto 0); cry_out : out bit;
vdd : in bit;
vss : in bit );
end add_accu;
architecture data_flow of add_accu is
signal eff_data : bit_vector (31 downto 0);
-- effective operand
signal adder_out : bit_vector (31 downto 0);
-- adder's result