Школа_цифрового_синтеза_2021_5_день_конечные_автоматы

Содержание

Слайд 2

Конечные автоматы. Автомат Мура

Текущее
состояние

Конечные автоматы. Автомат Мура Текущее состояние

Слайд 3

Конечные автоматы. Автомат Мили

Текущее
состояние

Конечные автоматы. Автомат Мили Текущее состояние

Слайд 4

Конечные автоматы

Конечные автоматы

Слайд 5

Конечные автоматы. Verilog HDL

module my_fsm
(

);
reg [1:0] STATE;
always @(posedge CLK) begin
if (RST)

Конечные автоматы. Verilog HDL module my_fsm ( … ); reg [1:0] STATE;
STATE <= 2’d0;
else begin
case (STATE)
2'd0: if (IN == 1'b1) STATE <= 2'd2;
else STATE <= 2'd1;
2'd1: if (IN == 1'b1) STATE <= 2'd3;
else STATE <= 2’d2;
...
endcase
end
end
endmodule

Слайд 6

Упражнение: кодовый замок
wire [3:0] key_db;
sync_and_debounce # (.w (4), .depth (debounce_depth))
i_sync_and_debounce_key
(clk,

Упражнение: кодовый замок wire [3:0] key_db; sync_and_debounce # (.w (4), .depth (debounce_depth))
reset, ~ key_sw, key_db);
...
wire shift_strobe;
strobe_gen # (.w (shift_strobe_width)) i_shift_strobe
(clk, reset, shift_strobe);

Слайд 7

Упражнение: кодовый замок
wire [3:0] out_reg;
shift_register # (.w (4)) i_shift_reg
(

Упражнение: кодовый замок wire [3:0] out_reg; shift_register # (.w (4)) i_shift_reg (
.clk ( clk ),
.reset ( reset ),
.en ( shift_strobe ),
.in ( key_db [3] ),
.out_reg ( out_reg )
);
assign led = ~ out_reg;

Слайд 8

Упражнение: кодовый замок
wire [7:0] shift_strobe_count;
counter # (8) i_shift_strobe_counter
(
.clk

Упражнение: кодовый замок wire [7:0] shift_strobe_count; counter # (8) i_shift_strobe_counter ( .clk
( clk ),
.reset ( reset ),
.en ( shift_strobe ),
.cnt ( shift_strobe_count )
);

Слайд 9

Упражнение: кодовый замок


wire out_moore_fsm;
moore_fsm i_moore_fsm (
.clk ( clk

Упражнение: кодовый замок wire out_moore_fsm; moore_fsm i_moore_fsm ( .clk ( clk ),
),
.reset ( reset ),
.en ( shift_strobe ),
.a ( out_reg [0] ),
.y ( out_moore_fsm )
);

Если конечный автомат в
состоянии “S2”, то выход
out_moore_fsm равен “1”.

Как долго конечный автомат может находиться в состоянии S2?

Слайд 10

Упражнение: кодовый замок


wire out_moore_fsm;
moore_fsm i_moore_fsm (
.clk ( clk

Упражнение: кодовый замок wire out_moore_fsm; moore_fsm i_moore_fsm ( .clk ( clk ),
),
.reset ( reset ),
.en ( shift_strobe ),
.a ( out_reg [0] ),
.y ( out_moore_fsm )
);
wire [3:0] moore_fsm_out_count;
counter # (4) i_moore_fsm_out_counter (
.clk ( clk ),
.reset ( reset ),
.en ( shift_strobe & out_moore_fsm ),
.cnt ( moore_fsm_out_count ) );

Слайд 11

Упражнение: кодовый замок

Если конечный автомат в
состоянии “S1” И если входное значение равно

Упражнение: кодовый замок Если конечный автомат в состоянии “S1” И если входное
“1”, то выход out_mealy_fsm равен “1”.
wire out_mealy_fsm;
mealy_fsm i_mealy_fsm (
.clk ( clk ),
.reset ( reset ),
.en ( shift_strobe ),
.a ( out_reg [0] ),
.y ( out_mealy_fsm )
);

Слайд 12

Упражнение: кодовый замок
wire out_mealy_fsm;
mealy_fsm i_mealy_fsm (
.clk ( clk ),

Упражнение: кодовый замок wire out_mealy_fsm; mealy_fsm i_mealy_fsm ( .clk ( clk ),
.reset ( reset ),
.en ( shift_strobe ),
.a ( out_reg [0] ),
.y ( out_mealy_fsm )
);
wire [3:0] mealy_fsm_out_count;
counter # (4) i_mealy_fsm_out_counter (
.clk ( clk ),
.reset ( reset ),
.en ( shift_strobe & out_mealy_fsm ),
.cnt ( mealy_fsm_out_count )
);

Слайд 13

Упражнение: кодовый замок
Модифицируйте конечный автомат Мура так, чтобы он распознавал последовательность входного

Упражнение: кодовый замок Модифицируйте конечный автомат Мура так, чтобы он распознавал последовательность
сигнала «1, 0, 1, 1, 0».
Модифицируйте конечный автомат Мили так, чтобы он распознавал последовательность входного сигнала «1, 0, 1, 1, 0».

Слайд 14

Конечные автоматы. Источники информации
Материалы для это части презентации взяты из материалов:
Clifford

Конечные автоматы. Источники информации Материалы для это части презентации взяты из материалов:
E. Cummings The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC-Verilog and BuildGates
Clifford E. Cummings Finite State Machine (FSM) Design & Synthesis using SystemVerilog - Part I
Примеры кода из статьи приводятся на SystemVerilog! Обратите на это внимание! Тоже самое применимо и для Verilog кроме enum.

Слайд 15

Конечные автоматы. Кодирование

Clifford E. Cummings Finite State Machine (FSM) Design & Synthesis

Конечные автоматы. Кодирование Clifford E. Cummings Finite State Machine (FSM) Design &
using SystemVerilog - Part I

Слайд 16

Конечные автоматы. Требования к описанию FSM

Clifford E. Cummings Finite State Machine (FSM)

Конечные автоматы. Требования к описанию FSM Clifford E. Cummings Finite State Machine
Design & Synthesis using SystemVerilog - Part I
Описание конечного автомата должно быть легко модифицируемым.
Описание конечного автомата должно быть компактным.
Описание конечного автомата должно быть легким для понимания.
Описание конечного автомата должно облегчать отладку.
Описание конечного автомата должно давать эффективные результаты синтеза.
Больше кода = больше ошибок

Слайд 17

Конечные автоматы. One Always Block FSM

Clifford E. Cummings Finite State Machine (FSM)

Конечные автоматы. One Always Block FSM Clifford E. Cummings Finite State Machine
Design & Synthesis using SystemVerilog - Part I

Слайд 18

Конечные автоматы. Two Always Block FSM

Clifford E. Cummings Finite State Machine (FSM)

Конечные автоматы. Two Always Block FSM Clifford E. Cummings Finite State Machine
Design & Synthesis using SystemVerilog - Part I

Слайд 19

Конечные автоматы. Three Always Block FSM coding style

Clifford E. Cummings Finite State

Конечные автоматы. Three Always Block FSM coding style Clifford E. Cummings Finite
Machine (FSM) Design & Synthesis using SystemVerilog - Part I

Слайд 20

Конечные автоматы. Four Always Block FSM

Clifford E. Cummings Finite State Machine

Конечные автоматы. Four Always Block FSM Clifford E. Cummings Finite State Machine
(FSM) Design & Synthesis using SystemVerilog - Part I

Слайд 21

Конечные автоматы. Enum. Только для SystemVerilog!

Clifford E. Cummings Finite State Machine (FSM)

Конечные автоматы. Enum. Только для SystemVerilog! Clifford E. Cummings Finite State Machine
Design & Synthesis using SystemVerilog - Part I

Слайд 22

Конечные автоматы. Регистр состояния

Clifford E. Cummings Finite State Machine (FSM) Design &

Конечные автоматы. Регистр состояния Clifford E. Cummings Finite State Machine (FSM) Design
Synthesis using SystemVerilog - Part I

Слайд 23

Конечные автоматы. Читаемость

Clifford E. Cummings Finite State Machine (FSM) Design & Synthesis

Конечные автоматы. Читаемость Clifford E. Cummings Finite State Machine (FSM) Design &
using SystemVerilog - Part I

Слайд 24

Конечные автоматы. Петля в графе состояний

Clifford E. Cummings Finite State Machine (FSM)

Конечные автоматы. Петля в графе состояний Clifford E. Cummings Finite State Machine
Design & Synthesis using SystemVerilog - Part I

Слайд 25

Конечные автоматы. Значения по умолчанию

Clifford E. Cummings Finite State Machine (FSM) Design

Конечные автоматы. Значения по умолчанию Clifford E. Cummings Finite State Machine (FSM)
& Synthesis using SystemVerilog - Part I

Слайд 26

Конечные автоматы. Сравнение способов кодирования

Clifford E. Cummings Finite State Machine (FSM) Design

Конечные автоматы. Сравнение способов кодирования Clifford E. Cummings Finite State Machine (FSM)
& Synthesis using SystemVerilog - Part I

Слайд 27

Упражнение: игра
Есть игровое устройство с 4 индикаторами на HEX.
На каждом циклически изменяется

Упражнение: игра Есть игровое устройство с 4 индикаторами на HEX. На каждом
выводимое значение с счетчика.
Изменение счетчика останавливается при зажатии соответствующей кнопки. Для HEX0 это key[0]. Для HEX1 это key[1] и т.д.
Необходимо модифицировать упражнение добавив к нему конечный автомат. У упражнения есть несколько уровней сложности.

Слайд 28

Упражнение: игра, первый уровень
Цель игры набрать на индикаторах последовательность цифр заданную в

Упражнение: игра, первый уровень Цель игры набрать на индикаторах последовательность цифр заданную
проекте. Например, 7489. Если игрок правильно набрал последовательность то он выиграл.
Изменение значений на индикаторе останавливается при нажатии на соответствующую кнопку. И не начинается заново до начала новой игры.
Остановка индикаторов возможно только в порядке от младшего к старшему. То есть если не остановился HEX0 нет реакции на key[1] key[2] key[3].
Как только останавливают все 4 индикатора то последовательность цифр сравнивается с этой которую должен был выбрать игрок и выводится сообщение о том проиграл или выиграл игрок.
Если при выводе результата игры на индикаторы нажать любую кнопку игра начнется заново.

Слайд 29

Упражнение: игра, второй уровень
Измените логику работы конечного автомата так чтобы неправильная последовательность

Упражнение: игра, второй уровень Измените логику работы конечного автомата так чтобы неправильная
нажатия кнопок приводила к завершению игры. То есть если нажать key[1] раньше key[0]. Игра завершится поражением.

Слайд 30

Упражнение: игра, третий уровень
Добавьте дополнительные модули генерации стробов для того чтобы скорость

Упражнение: игра, третий уровень Добавьте дополнительные модули генерации стробов для того чтобы
изменения индикаторов была разной.
Чем старше номер индикатора тем быстрее меняются цифры.

Слайд 31

Упражнение: игра, четвёртый уровень
Хорошо если бы цифры менялись на индикаторах не последовательно

Упражнение: игра, четвёртый уровень Хорошо если бы цифры менялись на индикаторах не
а случайно.
Модифицируйте модуль счетчика так чтобы значения из него генерировались по псевдослучайной последовательности.

Слайд 32

Генерация псевдослучайной последовательности чисел в RTL
Материалы для это части презентации взяты из

Генерация псевдослучайной последовательности чисел в RTL Материалы для это части презентации взяты
лекции Patrick Schaumont ECE 4514 Digital Design II Lecture 6: A Random Number Generator in Verilog
В прошлом году про генератор чисел читал лекцию Илья Кудрявцев из Самарского университета. Очень интересно, посмотрите. https://youtu.be/8lYVOb2JZOU?t=7622

Слайд 33

Генерация псевдослучайной последовательности чисел в RTL

Patrick Schaumont ECE 4514 Digital Design II

Генерация псевдослучайной последовательности чисел в RTL Patrick Schaumont ECE 4514 Digital Design
Lecture 6: A Random Number Generator in Verilog

Слайд 34

Генерация псевдослучайной последовательности чисел в RTL

Patrick Schaumont ECE 4514 Digital Design II

Генерация псевдослучайной последовательности чисел в RTL Patrick Schaumont ECE 4514 Digital Design
Lecture 6: A Random Number Generator in Verilog

Слайд 35

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog

Слайд 36

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog

Слайд 37

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog

Слайд 38

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog

Слайд 39

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog

Слайд 40

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog

Слайд 41

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog

Слайд 42

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog

Слайд 43

Linear Feedback Shift Register

Patrick Schaumont ECE 4514 Digital Design II Lecture 6:

Linear Feedback Shift Register Patrick Schaumont ECE 4514 Digital Design II Lecture
A Random Number Generator in Verilog
Имя файла: Школа_цифрового_синтеза_2021_5_день_конечные_автоматы.pptx
Количество просмотров: 17
Количество скачиваний: 0