Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Бабак VHDL

.pdf
Скачиваний:
9
Добавлен:
05.06.2026
Размер:
2 Мб
Скачать
☆
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 © 19922007 by Yuriy Kovtanyuk +++++  ++++++++++++++++++ www.yskbooks.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 © 19922007 by Yuriy Kovtanyuk +++++  ++++++++++++++++++ www.yskbooks.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 © 19922007 by Yuriy Kovtanyuk +++++  ++++++++++++++++++ www.yskbooks.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 © 19922007 by Yuriy Kovtanyuk +++++  ++++++++++++++++++ www.yskbooks.com +++++++++++++++  
library ieee; use ieee.std_logic_1164.all; entity gate_nor is
port ( I0 : in std_logic;