Пример синтеза конечного автомата.
// описание переходов – формирование состояний always @ (posedge clk or posedge reset)
begin
if (reset) state <= Res; else
begin
case (state)
Res: state <= red;
red: if(cnt==4'd10) state <= Y; Y: if(!key) state <= red;
else state <= Gr;
Gr: if(cnt==4'd10) state <= Y; endcase
end end
// формирование событий – состояний выхода ИУ always @ (posedge clk)
begin
case (state) Res:
Begin
cnt <= 4'd0; out <= 2'b00; end
Конечный автомат в реализуемом проекте
Внутренние регистры этого устройства:
-регистр для состояния (state);
-регистр для счетчика ячеек буфера (data_cnt);
-регистры для хранения состояний формируемых управляющих сигналов (wr, rd и [1:0] adr).
Состояния последних трех регистров передать на линии выходов устройства.
Описать через параметры значения кодов всех состояний, а также значения формируемых адресов для мультиплексора. Каждый адрес можно трактовать как посылку определенной команды для пересылки данных в линию: CMD_START=0, CMD_DATA=1, CMD_STOP=2, CMD_IDLE=3.