Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИЧНА РОБОТА4.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
111.68 Кб
Скачать

Variable cnt:integer range 0 to 65535;

begin

if (res_c='0') then

cnt:=0;

elsif (c_in'event and c_in='1') then

if (enab_c='1') then cnt:=cnt+1;

end if;

end if;

c_out<=cnt;

end process;

end count;

architecture a of one_element is

component counter

port (

c_in,enab_c,res_c:in bit;

c_out:out integer range 0 to 65535

);

end component;

begin

mc: counter

port map (c_in=>main_clk, enab_c=>enab, res_c=>res, c_out=>counter_out);

end a;

Лічильник готовий.

Для опису тригерних схем в VHDL використовуються оператори wait і if разом з процесом, що використовує атрибути переднього або заднього фронтів синхроімпульсу. Нижче наведені приклади створення описів спрацьовування по фронту:

(Clk'event and clk = '1 ') - атрибут спрацьовування по передньому фронту;

(Clk'event and clk = '0 ') - атрибут спрацьовування по задньому фронту;

rising_edge (clock) - виклик функції по передньому фронту;

falling_edge (clock) - виклик функції по задньому фронту;

У цих прикладах ілюструється застосування атрибута переднього фронту (rising edge 'event attribute). Використання атрибутів слід рекомендувати в тих випадках, коли система проектування не підтримує виклик функції за подією. Однак, використання функцій дозволяє уникнути колізій, пов'язаних з переходом з невизначеного стану, оскільки функція визначає тільки переходи рівнів (з 0 в 1 або з 1 в 0), не не перехід з невизначеного стану в 1 або 0. Це стає досить важливим у випадку використання багатозначних типів даних, наприклад std_logic, який має 9 можливих значень (U, X, 0, 1, Z, W, L, H, -).

Далі розглянемо основні типи тригерів.

Тригери, тактовані переднім фронтом (Rising Edge Flip-Flop) (рис. 4.2.)

Рис. 4.2 Структура тригера, тактованого переднім фронтом.

Опис на VHDL:

library IEEE;

use IEEE.std_logic_1164.all;

entity dff is

port (

data, clk : in std_logic;

q :out std_logic);

end dff;

architecture behav of dff is

begin

process (clk) begin

if (clk'event and clk = '1') then

q <= data;

end if;

end process;

end behav;

Тригери, тактовані переднім фронтом з асинхронним скиданням (Rising Edge Flip-Flop with Asynchronous Reset) (рис. 4.3)

Рис. 4.3 Структура тригера, тактованого переднім фронтом з асинхронним скиданням.

Приклад опису на VHDL.

library IEEE;

use IEEE.std_logic_1164. all;

entity dff_async_rst is

port

(data, clk, reset: in std_logic;

q: out std_logic);

end dff_async_rst;

architecture behav of dff_async_rst is

begin

process (clk, reset) begin

if (reset = '0 ') then

q <= '0 ';

elsif (clk'event and clk = '1 ') then

q <= data;

end if;

end proces s;

end behav;

Тригери, тактовані переднім фронтом з асинхронною передустановкою (Rising Edge Filp-Flop with Asynchronous Preset) (рис. 4.4).

Рис. 4.4. Структура тригера, тактованого переднім фронтом з асинхронною передустановкою.

Опис на VHDL

library IEEE;

use IEEE.std_logic_1164. all;

entity dff_async_pre is

port

(data, clk, preset: in std_logic;

q: out std_logic);

end dff_async_pre;

architecture behav of dff_async_pre is

begin

process (clk, preset) begin

if (preset = '0 ') then

q <= '1 ';

elsif (clk'event and clk = '1 ') then

q <= data;

end if;

end process;

end behav;

Тригери, тактовані переднім фронтом з синхронним скиданням (Rising Edge Filp-Flop with Synchronous Reset) (рис. 4.5).

Рис. 4.5. Структура тригера, тактованого переднім фронтом з синхронним скиданням.

Опис на VHDL

library IEEE;

use IEEE.std_logic_1164. al l;

entity dff_sync_rst is

port

(data, clk, reset: in std_logic;

q: out std_logic);

end dff_sync_rst;

architecture behav of dff_sync_rst is

begin

process (clk) begin

if (clk'event and clk = '1 ') then

if (reset = '0 ') then

q <= '0 ';

else q <= data;

end if;

end if;

end process;

end behav;

Тригери, тактовані переднім фронтом з синхронною передустановки (Rising Edge Filp-Flop with Synchronous Preset) (рис. 4.6).

Рис. 4.6. Структура тригера, тактованого переднім фронтом з синхронною передустановкою.

Опис на VHDL

library IEEE;

use IEEE.std_logic_1164. al l;

entity dff_sync_pre is

port

(data, clk, preset: in std_logic;

q: out std_logic);

end dff_sync_pre;

architecture behav of dff_sync_pre is

begin

process (clk) begin

if (clk'event and clk = '1 ') then

if (preset = '0 ') then

q <= '1 ';

else q <= data;

end if;

end іf;

end process;

end behav;

Тригери, тактовані переднім фронтом з асинхронним скиданням і дозволом тактового сигналу (Rising Edge Filp-Flop with Asynchronous Reset and Clock Enable) (рис. 4.7).

Рис. 4.7. Структура тригера, тактованого переднім фронтом з асинхронним скиданням та дозволом тактового сигналу.

Опис на VHDL

library IEEE;

use IEEE.std_logic_1164. al l;

entity dff_ck_en is

port

(data, clk, reset, en: in std_logic;

q: out std_logic);

end dff_ck_en;

architecture behav of dff_ck_en is

begin

process (clk, reset) begin

if (reset = '0 ') then

q <= '0 ';

elsif (clk'event and clk = '1 ') then

if (en = '1 ') then

q <= data;

end if;

end if;

end process;

end behav;