14
Рис. 6. Функциональное моделирование конечного автомата Мили в САПР Xilinx ISE
14
ЛАБОРАТОРНАЯ РАБОТА № 2
Проектирования автомата Мура с использованием методологии Black Boxes Xilinx System Generator
Цель работы: освоение методологии Black Boxes Xilinx System Generator используемой для разработки цифровых автоматов
Задание:
1)используя одно, двух – и трехпроцессные шаблоны разработайте VHDL-код конечного автомата согласно выбранному заданию c применением атрибута syn_encoding "onehot";
2)реализуйте функциональную модель конечного автомата в любом из доступных вам САПР (САПР Altera Quartus II или Xilinx ISE) и убедитесь в правильности ее функционирования;
3)разработайте имитационную модель конечного автомата в Matlab/Simulink с использованием единственного
VHDL-файла и методологии Black Boxes Xilinx System Generator;
4)осуществите имитационное моделирование и убедитесь в правильности функционирования конечного автомата;
5)извлеките в автоматическом режиме VHDL-код и осуществите функциональное моделирование в Xilinx ISE
Теоретические сведения
Рассмотрим трехпроцессный шаблон описания работы конечного автомата Мура (рис. 7, пример 5). В данном случае используются два сигнала state и next_state перечисляемого типа и три оператора Process. Проект разработаем в САПР ПЛИС Altera Quartus II v13.1 Build 162 c использованием ModelSim Altera Started Edition 10.1 d. Для кодирования состояний цифрового автомата будем использовать метод one
15
hot encoding (ОНЕ - кодирование с одним активным, или горячим состоянием или унитарное кодирование). Кодирование по методу OHE будет определено явно в коде языка VHDL с использованием атрибута syn_encoding "onehot" [2,5].
Рис. 7. Трехпроцессный шаблон описания работы конечного автомата Мура на языке VHDL
LIBRARY ieee;
USE ieee.std_logic_1164.all; ENTITY counter2 IS
PORT(
en,res,clk,ce : IN STD_LOGIC; Max : OUT STD_LOGIC
); END counter2;
ARCHITECTURE a OF counter2 IS
TYPE state_values IS (Stage0, Stage1, Stage2, Stage3); signal state, next_state: state_values;
attribute syn_encoding: string;
attribute syn_encoding of state, next_state: signal is "onehot";
BEGIN
statereg: process(clk,ce,res) begin
if res = '1' then state<=Stage0; 16
elsif (clk'event and clk='1') then
if ce = '1' then state<=next_state; end if;
end if;
end process statereg; process(state, en) begin
case state is when Stage0=>
IF en='1' THEN next_state<=Stage1; else next_state<=Stage0;
END IF; when Stage1=>
IF en='1' THEN next_state<=Stage2; else next_state<=Stage1;
END IF; when Stage2=>
IF en='1' THEN next_state<=Stage3; else next_state<=Stage2;
END IF; when Stage3=>
IF en='1' THEN next_state<=Stage0; else next_state<=Stage3;
END IF; when others=>
next_state<=Stage0; end case;
end process; process (state) begin
case state is when Stage0=> MAX <= '0'; when Stage1=> MAX <= '0'; when Stage2=>
17
MAX <= '0'; when Stage3=> MAX <= '1'; end case;
end process; END a;
Пример 5. Трехпроцессный шаблон описания конечного автомата на языке VHDL использованием атрибута syn_encoding "onehot"
Метод получил такое название потому, что в каждый конкретный момент времени активным (hot) может быть только один триггер состояния. Применение метода ОНЕ для ПЛИС по архитектуре ППВМ наиболее перспективно [4,5]. Метод ОНЕ применительно к ПЛИС по архитектуре ППВМ, дает возможность строить конечные автоматы, которые в общем случае требуют меньших ресурсов и отличаются более высокими скоростными показателями, чем аналогичные конечные автоматы с двоичным кодированием состояний. Повышенное быстродействие по методу ОНЕ обеспечивается меньшим числом уровней логики между рабочими фронтами синхросигналов, чем в случае двоичного кодирования. Логические схемы при этом упрощаются, поскольку метод ОНЕ практически не требует логики декодирования состояний. Получающийся в результате построения конечного автомата набор триггеров похож на структуру типа сдвигового регистра.
Быстродействие конечного автомата типа ОНЕ остается постоянным с увеличением числа состояний. И напротив, быстродействие конечного автомата с высокой степенью кодирования состояний снижается с увеличением количества состояний, поскольку в этом случае для декодирования требуется большее число уровней логики с большим числом линий.
По умолчанию в настройках САПР Quartus II категория
Analysis & Synthesis Settings /More Settings в разделе State 18