BEGIN
IF reset = '1' THEN MAX_reg <= '0'; is_Chart <= IN_st0;
ELSIF clk'EVENT AND clk = '1' THEN IF enb = '1' THEN
is_Chart <= is_Chart_next; MAX_reg <= MAX_reg_next; END IF;
END IF;
END PROCESS Chart_process;
Chart_output : PROCESS (is_Chart, En, MAX_reg) BEGIN
is_Chart_next <= is_Chart; MAX_reg_next <= MAX_reg; CASE is_Chart IS
WHEN IN_st0 => IF En = '1' THEN
MAX_reg_next <= '0'; is_Chart_next <= IN_st1; END IF;
WHEN IN_st1 => IF En = '1' THEN
MAX_reg_next <= '0'; is_Chart_next <= IN_st2; END IF;
WHEN IN_st2 => IF En = '1' THEN
MAX_reg_next <= '0'; is_Chart_next <= IN_st3; END IF;
WHEN OTHERS =>
IF En = '1' THEN MAX_reg_next <= '1'; is_Chart_next <= IN_st0; END IF;
END CASE;
END PROCESS Chart_output; MAX_1 <= MAX_reg_next;
9
ce_out <= clk_enable; MAX <= MAX_1; END rtl;
Пример 3. Отредактированный код автомата Мили на языке VHDL полученный с использованием Simulink HDL Coder системы Matlab/Simulink
LIBRARY ieee;
USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; LIBRARY UNISIM;
USE UNISIM.Vcomponents.ALL; ENTITY avt_sch_avt_sch_sch_tb IS END avt_sch_avt_sch_sch_tb;
ARCHITECTURE behavioral OF avt_sch_avt_sch_sch_tb IS
COMPONENT avt_sch |
|
||
PORT( clk |
: |
IN |
STD_LOGIC; |
ares |
: |
IN |
STD_LOGIC; |
clk_ena |
: |
IN |
STD_LOGIC; |
en |
: |
IN |
STD_LOGIC; |
ce_out |
: |
OUT |
STD_LOGIC; |
MAX |
: |
OUT |
STD_LOGIC); |
END COMPONENT; |
|
|
|
SIGNAL clk : |
STD_LOGIC; |
||
SIGNAL ares: |
STD_LOGIC:= '0'; |
||
SIGNAL clk_ena |
: |
STD_LOGIC:= '1'; |
|
SIGNAL en |
: |
STD_LOGIC:= '1'; |
|
SIGNAL ce_out |
: |
STD_LOGIC; |
|
SIGNAL MAX |
: |
STD_LOGIC; |
|
-- Clock period definitions constant clk_period : time := 100 ns; BEGIN
UUT: avt_sch PORT MAP( clk => clk, ares => ares,
clk_ena => clk_ena, en => en,
ce_out => ce_out,
10
MAX => MAX
);
-- Clock process definitions clk_process :process begin
clk <= '0';
wait for clk_period/2; clk <= '1';
wait for clk_period/2;
end process; tb : process
begin
wait for 100 ns; en <= '1'; wait for 100 ns; en <= '1'; wait for 100 ns; en <= '1'; wait for 100 ns; en <= '1';
wait; end process;
END;
Пример 4. Испытательный стенд автомата Мили
Вопросы для отчета
1.Дайте определение автомата Мили, Мура?
2.Приведите структурная схема синхронного конечного автомата Мили?
3.Какие функции выполняет цифровой автомат?
4.Методы кодирования автоматов?
5.Нарисуйте схему счетчика-делителя на три с двоичным кодированием
11
12
Рис. 4. Модель конечного автомата Мили в системе Matlab/Simulink с использованием Stateflowдиаграммы: а) верхний уровень; б) нижний уровень иерархии; в) диаграмма переходов, разработанная с помощью пакета расширения Stateflow; г) свойства диаграммы
12
13
Рис. 5. Имитационное моделирование конечного автомата Мили в системе Matlab/Simulink
13