T
TekUT
Guest
Шановні все,
Я вивчаю VHDL, після деяких простих прикладу, я буду уважно дивитися на реалізацію цього один генератор затримки пострілу, ось код:
Код:бібліотека IEEE;
ieee.std_logic_1164.all використання;
ieee.numeric_std.all використання;- Визначення особиорганізація є pulse_5clk
порт (
CLK, скидання: у std_logic;
йти, зупинити: в std_logic;
імпульсу: з std_logic
);
кінець pulse_5clk;- Визначення архітектуриархітектури fsmd_arch з pulse_5clk є
постійна P_WIDTH: натуральний: = 5;
Тип fsmd_state_type є (в режимі очікування, затримки);
сигнал state_reg, state_next: fsmd_state_type;
сигнал c_reg, c_next: непідписані (3 downto 0);
починати
- Державні і даних регістрів
процес (CLK, скидання)
починати
якщо (скидання = '1 '), то
state_reg <= простою;
c_reg <= (інші => '0 ');
ELSIF (clk'event і CLK = '1 '), то
state_reg <= state_next;
c_reg <= c_next;
кінець, якщо;
закінчення процесу;
- Наступного логічного стану і канал передачі даних функціональних підрозділів і маршрутизації
процесу (state_reg, іди, зупинка c_reg)
починати
імпульсу <= '0 ';
c_next <= c_reg;
state_reg випадку є
при простої =>
якщо йти = '1 ', то
state_next <= затримок;
ще
state_next <= простою;
кінець, якщо;
c_next <= (інші => '0 ');
, Коли зволікання =>
якщо зупинити = '1 ', то
state_next <= простою;
ще
якщо (= c_reg P_WIDTH - 1), то
state_next <= простою;
ще
state_next <= затримок;
c_next <= c_reg 1;
кінець, якщо;
кінець, якщо;
імпульсу <= '1 ';
кінець справі;
закінчення процесу;
кінець fsmd_arch;
Я вивчаю VHDL, після деяких простих прикладу, я буду уважно дивитися на реалізацію цього один генератор затримки пострілу, ось код:
Код:бібліотека IEEE;
ieee.std_logic_1164.all використання;
ieee.numeric_std.all використання;- Визначення особиорганізація є pulse_5clk
порт (
CLK, скидання: у std_logic;
йти, зупинити: в std_logic;
імпульсу: з std_logic
);
кінець pulse_5clk;- Визначення архітектуриархітектури fsmd_arch з pulse_5clk є
постійна P_WIDTH: натуральний: = 5;
Тип fsmd_state_type є (в режимі очікування, затримки);
сигнал state_reg, state_next: fsmd_state_type;
сигнал c_reg, c_next: непідписані (3 downto 0);
починати
- Державні і даних регістрів
процес (CLK, скидання)
починати
якщо (скидання = '1 '), то
state_reg <= простою;
c_reg <= (інші => '0 ');
ELSIF (clk'event і CLK = '1 '), то
state_reg <= state_next;
c_reg <= c_next;
кінець, якщо;
закінчення процесу;
- Наступного логічного стану і канал передачі даних функціональних підрозділів і маршрутизації
процесу (state_reg, іди, зупинка c_reg)
починати
імпульсу <= '0 ';
c_next <= c_reg;
state_reg випадку є
при простої =>
якщо йти = '1 ', то
state_next <= затримок;
ще
state_next <= простою;
кінець, якщо;
c_next <= (інші => '0 ');
, Коли зволікання =>
якщо зупинити = '1 ', то
state_next <= простою;
ще
якщо (= c_reg P_WIDTH - 1), то
state_next <= простою;
ще
state_next <= затримок;
c_next <= c_reg 1;
кінець, якщо;
кінець, якщо;
імпульсу <= '1 ';
кінець справі;
закінчення процесу;
кінець fsmd_arch;