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

Бабак VHDL

.pdf
Скачиваний:
0
Добавлен:
05.06.2026
Размер:
2.21 Mб
Скачать

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 111

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;

Теперь разберем более сложный пример, основанный на использо вании двух субпроектов в одном мастер проекте. Предположим, нам требуется построить 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

ГЛ А В А Гл

ПРИМЕРЫ VHDL9ПРОЕКТОВ ЦУ РАЗЛИЧНОГО НАЗНАЧЕНИЯ

11.1. Проекты ЦУ общего назначения

11.1.1. Логический элемент AND на 4 входа

Работа 4 входового логического элемента and описывается таб лицей истинности, представленной в Табл. 11.1.

Таблица 11.1. Таблица истинности логического элемента AND на 4 входа

 

 

Вход

 

Выход

 

 

 

 

 

 

I0

I1

 

I2

I3

O

 

 

 

 

 

 

0

0

 

0

0

0

 

 

 

 

 

 

0

0

 

0

1

0

 

 

 

 

 

 

0

0

 

1

0

0

 

 

 

 

 

 

0

0

 

1

1

0

 

 

 

 

 

 

0

1

 

0

0

0

 

 

 

 

 

 

0

1

 

0

1

0

 

 

 

 

 

 

0

1

 

1

0

0

 

 

 

 

 

 

0

1

 

1

1

0

 

 

 

 

 

 

1

0

 

0

0

0

 

 

 

 

 

 

1

0

 

0

1

0

 

 

 

 

 

 

1

0

 

1

0

0

 

 

 

 

 

 

1

0

 

1

1

0

 

 

 

 

 

 

1

1

 

0

0

0

 

 

 

 

 

 

1

1

 

0

1

0

 

 

 

 

 

 

1

1

 

1

0

0

 

 

 

 

 

 

1

1

 

1

1

1

 

 

 

 

 

 

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. Проекты ЦУ общего назначения 117

Таблица 11.2. Таблица истинности логического элемента OR на 2 входа

 

Вход

Выход

 

 

 

 

I0

 

I1

O

 

 

 

 

0

 

0

0

 

 

 

 

0

 

1

1

 

 

 

 

1

 

0

1

 

 

 

 

1

 

1

1

 

 

 

 

Работа 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;

11.1.3. Логический элемент OR на 4 инверсных входа

Работа 4 входового элемента or c 4 инверсными входами описы вается таблицей истинности (Табл. 11.3).

118 Глава 11. Примеры VHDL"проектов ЦУ различного назначения

Таблица 11.3. Таблица истинности логического элемента OR на 4 инверсных входа

 

 

Вход

 

Выход

 

 

 

 

 

 

I0

I1

 

I2

I3

O

 

 

 

 

 

 

0

0

 

0

0

1

 

 

 

 

 

 

0

0

 

0

1

1

 

 

 

 

 

 

0

0

 

1

0

1

 

 

 

 

 

 

0

0

 

1

1

1

 

 

 

 

 

 

0

1

 

0

0

1

 

 

 

 

 

 

0

1

 

0

1

1

 

 

 

 

 

 

0

1

 

1

0

1

 

 

 

 

 

 

0

1

 

1

1

1

 

 

 

 

 

 

1

0

 

0

0

1

 

 

 

 

 

 

1

0

 

0

1

1

 

 

 

 

 

 

1

0

 

1

0

1

 

 

 

 

 

 

1

0

 

1

1

1

 

 

 

 

 

 

1

1

 

0

0

1

 

 

 

 

 

 

1

1

 

0

1

1

 

 

 

 

 

 

1

1

 

1

0

1

 

 

 

 

 

 

1

1

 

1

1

0

 

 

 

 

 

 

Работа 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. Проекты ЦУ общего назначения 119

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

 

 

 

 

0

0

0

1

 

 

 

 

0

0

1

0

 

 

 

 

0

1

0

0

 

 

 

 

0

1

1

0

 

 

 

 

1

0

0

0

 

 

 

 

1

0

1

0

 

 

 

 

1

1

0

0

 

 

 

 

1

1

1

0

 

 

 

 

Работа 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;