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

UptoLike

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

44
signal adder_cry : bit_vector (32 downto 0);
-- adder's carry
signal accum_reg : reg_vector (31 downto 0) register;
-- accumulator
constant initialize : bit := '0';
constant accumulate : bit := '1';
begin
-- select the effective operand
with command select
eff_data <= X"0000_0000" when initialize,
accum_reg when accumulate;
-- compute the result out of the adder
adder_out <= eff_data xor data_in xor adder_cry;
adder_cry (0) <= '0';
adder_cry (32 downto 1) <= (eff_data and adder_cry (31 downto 0)) or
(data_in and adder_cry (31 downto 0)) or
(eff_data and data_in);
-- write the result into the register on the falling
-- edge of clk
write : block (clk = '0' and not clk'STABLE)
begin
accum_reg <= guarded adder_out;
end block;
-- assign outputs
cry_out <= adder_cry (32);
data_out <= accum_reg ;
-- check power supply
assert (vdd = '1' and vss = '0')
report "power sypply is missing"
severity ERROR;
end;
4.2.2.2. Структурное подмножество
Структурное описание - это набор предложений конкретизации компонентов. Порты отдельных экземпляров
соединяются между собой через сигналы с помощью карты портов (port map). В фактической части
спецификации карты портов из операторов допускается использовать только оператор конкатенации (&).
В описываемой версии компилятора VHDL не допускается оставлять неподсоединенные порты.
В соответствии со стандартом VDHL, декларативная часть (область объявлений) структурного описания в
Alliance включает объявления сигналов и компонент.
Допускается объявлять сигналы всех предопределенных типов, кроме reg_bit и reg_vector, которые не имеют
смысла в контексте структурного стиля.
Компоненты должны объявляться с такими же описаниями портов, какие были в их описаниях объектов
(entity), то есть должны совпадать имена портов, порядок их перечисления, их виды (in, out) и типы.
Описание в структурном стиле сумматора с аккумулятором, выполненном на основе регистра, приведено в
следующем примере.
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 structural of add_accu is
signal eff_data : bit_vector (31 downto 0);
-- effective operande
signal adder_out : bit_vector (31 downto 0);
-- adder's result
signal accu_out : bit_vector (31 downto 0);
-- accumulator