Добавил:
Lobov4ever
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Бабак VHDL
.pdf
110
Глава 10. Структурная форма проекта
Пример 10.1. Проект со структурной формой, состоящий из мастер
проекта и субпроекта
Файл Top_file.vhd, содержащий VHDLкод мастерпроекта
top:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
entity top is
port(w_in, x_in, y_in :IN std_logic;
clock :IN std_logic;
z_out :OUT std_logic);
end top;
architecture a of top is
component logic Объявление компонента logic.
port(a,b,c :IN std_logic;
x :OUT std_logic);
end component;
signal w_reg, x_reg, y_reg, z_reg :std_logic;
begin
Оператор port MAP, реализующий межкомпонентные связи
экземпляра low_logic компонента logic.
low_logic : logic port MAP(a => w_reg,
b => x_reg,
c => y_reg,
x => z_reg);
process(clock)
begin
if (clock'event and clock='1') then
Операторы установки значений внутренних сигналов
мастерпроекта в соответствии со значениями на
внешних портах.
w_reg<=w_in;
x_reg<=x_in;
y_reg<=y_in;
z_out<=z_reg;
end if;
end process;
end a;
Файл Logic_lower.vhd, содержащий VHDLкод субпроекта
logic:

10.2. Оператор PORT MAP
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
entity logic is
port(a,b,c : in std_logic;
x: out std_logic);
end logic;
architecture a of logic is
begin
process (a, b, c)
begin
x<=(a and b) or c;
end process;
END;
111
Теперь разберем более сложный пример, основанный на использо
вании двух субпроектов в одном мастерпроекте. Предположим, нам
требуется построить VHDLпроект ЦУ, структурная схема которого
показана на Рис. 10.1. Такой VHDLпроект удобно реализовать в
структурной форме, поскольку при этом мы можем использовать в ка
честве компонентов ранее созданные субпроекты ЦУ.
з
з
Рис. 10.1. Структурная схема VHDLпроекта ЦУ
Программный код VHDLпроекта представлен в примере 10.2.
Мастерпроект D_FF использует два субпроекта — INV_e и DL_e, ко
торые применяются в мастерпроекте в качестве компонентов.

112
Глава 10. Структурная форма проекта
Пример 10.2. Проект со структурной формой, состоящий из мастер
проекта и двух разных субпроектов
Файл D_FF.VHD, содержащий VHDLкод мастерпроекта D_FF:
entity D_FF is
port (D_in : in bit;
CLK : in bit;
Q_out : in bit);
end D_FF;
architecture D_FF_a of D_FF is
component INV_e Оператор объявления компонента INV_e.
port (X : in bit;
Y : out bit);
end component;
component DL_e Оператор объявления компонента DL_e.
port (D, C : in bit;
Q : out bit);
end component;
signal q_t, inv_t, inv_t1 : bit; Объявление внутренних сигналов.
begin
Реализация экземпляров U1 и U2 компонента INV_e.
U1 : INV_e port map (CLK, inv_t);
U2 : INV_e port map (inv_t, inv_t1);
Реализация экземпляров U3 и U4 компонента DL_e.
U3 : DL_e port map (D => D_in, C => inv_t, Q => q_t);
U4 : DL_e port map (D => q_t, C => inv_t1, Q => Q_out);
end D_FF_a;
Файл DL_E.VHD, содержащий VHDLкод субпроекта DL_e:
entity DL_e is
port (D,C : in bit;
Q : out bit);
end DL_e;
architecture DL_a of DL_e is
begin
U1 : process (C)
begin
if C = '1' then Q <= D;
end if;
end process;
end DL_a;

10.2. Оператор PORT MAP
113
Файл INV_E.VHD, содержащий VHDLкод субпроекта INV_e:
entity INV_e is
port (X : in bit;
Y : out bit);
end INV_e;
architecture INV_a of INV_e is
begin
U1: process (C)
begin
Y <= not X;
end process;
end INV_a;
В примере 10.3 мы рассмотрим VHDLпроект 4битного регистра
на базе Dтриггера с асинхронным сбросом (Рис. 10.2). Его имеет
смысл создать в виде проекта со структурной формой, поскольку в
этом случае в мастерпроекте можно использовать 4 экземпляра суб
проекта Dтриггера.
Рис. 10.2. Структурная схема мастерпроекта 4битного регистра
Пример 10.3. Проект 4битного регистра со структурной формой,
состоящий из мастерпроекта, в котором реализуется
4 экземпляра одного компонента
Файл Reg4_CO.VHD, содержащий VHDLкод мастерпроекта
Reg4_CO:

114
Глава 10. Структурная форма проекта
entity Reg4_CO is
port (RedD : in bit_vector (3 downto 0);
clk, rst : in bit;
RegQ : out bit_vector (3 downto 0);
end Reg4_CO;
architecture Reg4_CO_arch of Reg4_CO is
component DFF_RST is Объявление компонента DFF_RST.
port (D, clk, rst : in bit;
Q : out bit);
end component;
begin
Реализация четырех экземпляров компонента.
bit0 :component DFF_RST port map (D => RedD(0),
clk => clk, rst => rst, Q => RegQ(0));
bit1 :component DFF_RST port map (D => RedD(1),
clk => clk, rst => rst, Q => RegQ(1));
bit2 :component DFF_RST port map (D => RedD(2),
clk => clk, rst => rst, Q => RegQ(2));
bit3 :component DFF_RST port map (D => RedD(3),
clk => clk, rst => rst, Q => RegQ(3));
end Reg4_CO_arch ;
Файл DFF_RST.VHD, содержащий VHDLкод субпроекта Dтриг
гера с асинхронным сбросом DFF_RST :
entity DFF_RST is
port (D, clk, rst : in bit;
Q : out bit);
end DFF_RST;
architecture DFF_RST_arch of DFF_RST is
begin
process (rst, clk)
begin
if rst = '1' then Q <= '0';
else
if clk’event and clk = '1' then
Q <= D;
end if;
end if;
end process;
end DFF_RST _arch;

11.1. Проекты ЦУ общего назначения
115
ГЛ А В А
11
ПРИМЕРЫ VHDLПРОЕКТОВ ЦУ
РАЗЛИЧНОГО НАЗНАЧЕНИЯ
11.1. Проекты ЦУ общего назначения
11.1.1. Логический элемент AND на 4 входа
Работа 4входового логического элемента and описывается таб
лицей истинности, представленной в Та б л . 1 1 . 1 .
Таблица 11.1. Таблица истинности логического элемента AND на 4 входа
Вход Выход
I0 I1 I2 I3 O
00000
00010
00100
00110
01000
01010
01100
01110
10000
10010
10100
10110
11000
11010
11100
11111
Гл

116
Глава 11. Примеры VHDL"проектов ЦУ различного назначения
Работа 4входового элемента and может быть также представлена
такой булевой функцией:
O = I0 and I1 and I2 and I3
Ее программная реализация имеет следующий вид:
Проект gate_AND
+++++ Copyright © 19922007 by Yuriy Kovtanyuk +++++
++++++++++++++++++ www.yskbooks.com +++++++++++++++
Заголовок проекта (раздел подключения библиотек и пакетов).
library ieee; Оператор подключения библиотеки.
use ieee.std_logic_1164.all; Оператор подключения пакета.
Раздел объявлений проекта.
entity gate_and is Оператор объявления интерфейса компонента.
port ( Оператор объявления портов интерфейса.
I0 : in std_logic;
I1 : in std_logic;
I2 : in std_logic;
I3 : in std_logic;
O : out std_logic);
end entity;
Раздел архитектуры проекта.
architecture gate_arch of gate_and is Оператор объявления архитектуры.
Раздел объявлений архитектуры проекта.
begin
Раздел выполняемых ОПО архитектуры проекта.
O <= I0 and I1 and I2 and I3; ОПО ПУЗС.
end architecture gate_arch;
Примечание. В VHDL"проектах значения входных и выходных портов
часто имеют тип bit, boolean, std_logic. В проекте полужир"
ным шрифтом выделены ключевые слова языка VHDL.
11.1.2. Логический элемент OR на 2 входа
Работа 2входового элемента or описывается таблицей истиннос
ти (Табл. 11.2).

11.1. Проекты ЦУ общего назначения
Таблица 11.2. Таблица истинности логического элемента OR на 2 входа
Вход Выход
I0 I1 O
000
011
101
111
Работа 2входового элемента or может быть также представлена
булевой функцией:
O = I0 or I1
Ее программная реализация имеет следующий вид:
Проект gate_OR
+++++ Copyright © 19922007 by Yuriy Kovtanyuk +++++
++++++++++++++++++ www.yskbooks.com +++++++++++++++
library ieee;
use ieee.std_logic_1164.all;
entity gate_or is
port (
I0 : in std_logic;
I1 : in std_logic;
O : out std_logic
);
end entity;
architecture gate_arch of gate_or is
begin
O <= I0 or I1;
end architecture gate_arch;
117
11.1.3. Логический элемент OR на 4 инверсных входа
Работа 4входового элемента or c 4 инверсными входами описы
вается таблицей истинности (Табл. 11.3).

118
Глава 11. Примеры VHDL"проектов ЦУ различного назначения
Таблица 11.3. Таблица истинности логического элемента OR на 4 инверсных входа
Вход Выход
I0 I1 I2 I3 O
00001
00011
00101
00111
01001
01011
01101
01111
10001
10011
10101
10111
11001
11011
11101
11110
Работа 4входового элемента or может быть также представлена
булевой функцией:
O = not(I0) or not(I1) or not(I2) or not(I3)
Ее программная реализация имеет следующий вид:
Проект gate_NOT_OR
+++++ Copyright © 19922007 by Yuriy Kovtanyuk +++++
++++++++++++++++++ www.yskbooks.com +++++++++++++++
library ieee;
use ieee.std_logic_1164.all;
entity gate_not_or is
port (
I0 : in std_logic;
I1 : in std_logic;
I2 : in std_logic;
I3 : in std_logic;

11.1. Проекты ЦУ общего назначения
O : out std_logic);
end entity;
architecture gate_arch of gate_not_or is
begin
O <= not I0 or not I1 or not I2 or not I3;
end architecture gate_arch;
11.1.4. Логический элемент NOR на 3 входа
Работа элемента nor c 3 входами описывается таблицей истиннос
ти (Табл. 11.4).
Таблица 11.4. Таблица истинности элемента NOR на 3 входа
Вход Выход
I0 I1 I2 O
0001
0010
0100
0110
1000
1010
1100
1110
119
Работа 3входового элемента NOR может быть также представлена
булевой функцией:
O = not(I0 or I1 or I2)
Ее программная реализация имеет следующий вид:
Проект gate_NOR
+++++ Copyright © 19922007 by Yuriy Kovtanyuk +++++
++++++++++++++++++ www.yskbooks.com +++++++++++++++
library ieee;
use ieee.std_logic_1164.all;
entity gate_nor is
port (
I0 : in std_logic;
Соседние файлы в предмете Микропроцессорные устройства
