Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Изучение методики реализации конечных автоматов среде Intel Quartus Prime на языке SystemVerilog

Автор:   •  Май 16, 2023  •  Лабораторная работа  •  5,571 Слов (23 Страниц)  •  133 Просмотры

Страница 1 из 23

ОГЛАВЛЕНИЕ

ЦЕЛЬ РАБОТЫ        3

ЧАСТЬ 1        3

ЧАСТЬ 2        4

ЧАСТЬ 3        5

ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ        12

ВЫВОД        17

ЦЕЛЬ РАБОТЫ: изучение методики реализации конечных автоматов в среде Intel Quartus Prime на языке SystemVerilog. Реализация и моделирование конечного автомата согласно варианту.

ЧАСТЬ 1

Счетчик в виде уравнений

Задание:

[pic 1]

Код

module ka(

        input logic clk, reset, ena,

        output logic [2:0] q

);

always_ff @(posedge clk or negedge reset)

begin

        if (!reset) q<=0;

        else

        begin

        q[0]<=((!q[1]&!q[2]&ena)|(q[1]&q[2]&ena));

        q[1]<=((!q[0]&q[1]&ena)|(q[0]&!q[2]&ena));

        q[2]<=((!q[0]&q[1]&ena)|(q[0]&q[2]&ena));

        end

end

endmodule

Тестбэнч

module ka_tb;

logic clk, reset, ena;

logic [2:0] q;

initial begin

clk = 0;

reset = 0;

#10 reset = 1;

forever #5 clk=~clk;

end

initial begin

ena = 1;

#130 ena = 0;

end

initial begin

#150 $stop;

end

ka uut_inst(clk, reset, ena, q);

endmodule

Моделирование

        [pic 2]

Рис. 1. Временная диаграмма работы счетчика.

ЧАСТЬ 2

Счетчик в виде конечного автомата

Задание:

[pic 3]

Код

module ka(

        input logic clk, clrn, t,

        output logic [2:0] q

);

enum logic [2:0]{S0,S1,S2,S3,S4,S5,S6,S7} state, next_state;

always_ff @(posedge clk or negedge clrn)

begin

                if (!clrn) state<=S0;

                else state<=next_state;

end

always_comb begin

        case(state)

                S0: if (t)

                                next_state=S1;

                        else

                                next_state=S0;

                S1: if (t)

                                next_state=S2;

                        else

                                next_state=S0;

                S2: if (t)

                                next_state=S3;

                        else

                                next_state=S0;

                S3: if (t)

                                next_state=S4;

                        else

                                next_state=S0;

                S4: if (t)

                                next_state=S5;

                        else

                                next_state=S0;

                S5: if (t)

                                next_state=S6;

                        else

                                next_state=S0;

                S6: if (t)

                                next_state=S7;

                        else

                                next_state=S0;

                S7: if (t)

                                next_state=S0;

                        else

                                next_state=S0;

                endcase

        end

always_comb begin

        case(state)

                S0:q=3'b000;

                S1:q=3'b001;

                S2:q=3'b011;

                S3:q=3'b010;

                S4:q=3'b110;

                S5:q=3'b111;

                S6:q=3'b101;

                S7:q=3'b100;

                endcase

        end

        endmodule

Тестбэнч

module ka_tb;

logic clk, reset, ena;

logic [2:0] q;

initial begin

clk = 0;

reset = 0;

#10 reset = 1;

forever #5 clk=~clk;

end

initial begin

ena = 1;

#130 ena = 0;

...

Скачать:   txt (17.9 Kb)   pdf (906.6 Kb)   docx (1.1 Mb)  
Продолжить читать еще 22 страниц(ы) »
Доступно только на Essays.club