VHDL lection
.pdf
Структура программы
<VHDL-программа>::= { {<объявление библиотеки>} {<объявление использования>} <первичный модуль>
}
{<вторичный модуль>}
<объявление библиотеки>::= library <имя библиотеки>;
<объявление использования>::=
use <имя библиотеки>.<имя пакета>.<имя модуля>;
Например:
Library IEEE;
Use IEEE.std_logic_1164.all;
Декларации сущностейй
<Декларация сущности>::= entity <имя проекта> is
[<объявление параметров настройки>] [<объявление портов>] [<раздел деклараций>]
[begin <раздел опреаторов>] end [entity] <имя проекта>;
<объявление параметров настройки>::= generic (<имя>:<тип> [:=<выражение>] {;<имя>:<тип> [:=<выражение>]});
<объявление портов>::=
port (<имя>:<режим> <тип> [:=<выражение>] {;<имя>:<режим> <тип> [:=<выражение>]};
<режим>::= in | out | inout
Архитектурные тела
<Архитектурное тело>::=
architecture <имя архитектуры> of <имя сущности> is <раздел деклараций>
begin
<раздел операторов>
end [architecture] <имя архитектуры>;
Архитектурные тела
Архитектурные тела представляют содержательное описание проекта. Архитектурное тело в некотором смысле подчинено соответствующей сущности. Различают структурные архитектурные тела (описывают проект в виде совокупности компонентов и их соединений), поведенческие архитектурные тела (описывающие проект как совокупность исполняемых действий) и смешанные тела.
Формальных признаков, по которым тело можно было бы отнести к тому или иному типу, не существует — речь идёт скорее не о чёткой классификации, а о стилях описания, для каждого из которых характерными являются определённые операторы и которые лучше отражают разные аспекты одного и того же объекта (структурный и поведенческий соответственно).
Синхронный D-триггер
T
D Q
CnQ
Синхронный D-триггер
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity D_trigger is port(
D : in STD_LOGIC;
C : in STD_LOGIC; Q : out STD_LOGIC; nQ : out STD_LOGIC
); end D_trigger;
Синхронный D-триггер
architecture D_trigger of D_trigger is begin
Q <= D after 10 ns; nQ <= not Q;
end D_trigger;
architecture D_trigger of D_trigger is signal State : STD_LOGIC;
begin
State <= D;
Q <= State after 10 ns;
nQ <= not State after 10 ns; end D_trigger;
Синхронный D-триггер
architecture D_trigger of D_trigger is signal State : STD_LOGIC;
begin
process (C) begin
if (C='1') then State <= D; end if;
end process;
Q <= State after 10 ns;
nQ <= not State after 10 ns; end D_trigger;
Синхронный D-триггер
D |
|
& |
|
& |
|
|
S1
1 3
C 
&
&
S2
2 4
S3
Q
Q
S4
Синхронный D-триггер
architecture D_trigger2 of D_trigger is signal S1, S2, S3, S4 : STD_LOGIC; component na2
port(
X1 : in STD_LOGIC;
X2 : in STD_LOGIC; Y : out STD_LOGIC
);
end component na2; begin
na2_1: na2 port map (D, C, S1); na2_2: na2 port map (S1, C, S2); na2_3: na2 port map (S1, S4, S3); na2_4: na2 port map (S2, S3, S4); Q <= S3;
nQ <= S4; end D_trigger;
