Школа_цифрового_синтеза_2022_4_день

Содержание

Слайд 2

Открытие проекта в Quartus

В Quartus откройте в меню “File” → “Open Project...”

ИЛИ

Запустите

Открытие проекта в Quartus В Quartus откройте в меню “File” → “Open
файл top.qpf из директории run

Слайд 3

Работа с проектом Quartus

Иерархия проекта

Редактора кода

Окно задач

Работа с проектом Quartus Иерархия проекта Редактора кода Окно задач

Слайд 4

Генерация прошивки для ПЛИС

1. Запустите компиляцию проекта через кнопку “Start Compilation”

Генерация прошивки для ПЛИС 1. Запустите компиляцию проекта через кнопку “Start Compilation”

Слайд 5

Генерация прошивки для ПЛИС

2. Проверьте наличие ошибок и исправьте их

Генерация прошивки для ПЛИС 2. Проверьте наличие ошибок и исправьте их

Слайд 6

Генерация прошивки для ПЛИС

2. Проверьте наличие ошибок и исправьте их

Нажмите на “Show Error

Генерация прошивки для ПЛИС 2. Проверьте наличие ошибок и исправьте их Нажмите
Messages” чтобы отобразить только сообщения об ошибках.

Слайд 7

Запись прошивки в ПЛИС

3. Нажмите на кнопку “Programmer”

Запись прошивки в ПЛИС 3. Нажмите на кнопку “Programmer”

Слайд 8

Запись прошивки в ПЛИС

4. В открывшемся окне нажмите на “Start”

Запись прошивки в ПЛИС 4. В открывшемся окне нажмите на “Start”

Слайд 9

Упражнение с логическими элементами

Altera Cyclone IV EP4CE6 FPGA

Вывод результатов логических операций над

Упражнение с логическими элементами Altera Cyclone IV EP4CE6 FPGA Вывод результатов логических
входными воздействиями с кнопок на светодиоды.

Слайд 10

Упражнение с логическими элементами

module top
(

    input  [3:0] key_sw,
    output [3:0] led,

);

    // Exercise 1: Change the code below.
    // Assign to led [2] the result of AND operation
    assign led [2] = 1'b0;
endmodule

module top
(

    input  [3:0] key_sw,
    output [3:0] led,

);
…     // Exercise 2: Change the code below.
    // Assign to led [3] the result of XOR operation
    // without using "^" operation.
    // Use only operations "&", "|", "~" and parenthesis
    assign led [3] = 1'b0;
endmodule

Упражнение с логическими элементами module top ( … input [3:0] key_sw, output

Слайд 11

Основные операции Verilog HDL

Основные операции Verilog HDL

Слайд 12

Основные операции Verilog HDL

Основные операции Verilog HDL

Слайд 13

Основные операции Verilog HDL

Основные операции Verilog HDL

Слайд 14

Упражнение с логическими элементами
Присвойте led[2] результат операции И (AND).
Присвойте led[3] результат операции

Упражнение с логическими элементами Присвойте led[2] результат операции И (AND). Присвойте led[3]
исключающего ИЛИ (XOR) без использования ее оператора.

Слайд 15

Упражнение с логическими элементами

Упражнение с логическими элементами

Слайд 16

Упражнение с выводом буквы на семисегментный индикатор

Altera Cyclone IV EP4CE6 FPGA

Вывод статичных

Упражнение с выводом буквы на семисегментный индикатор Altera Cyclone IV EP4CE6 FPGA
значений на семисегментый индикатор. Взаимодействие с семисегментым индикатором через кнопки.

Слайд 17

Семисегметный индикатор

Семисегметный индикатор

Слайд 18

Семисегметный индикатор

Семисегметный индикатор

Слайд 19

Семисегметный индикатор

Семисегметный индикатор

Слайд 20

Упражнение с выводом буквы на семисегментный индикатор
module top
(

    input  [3:0] key_sw,
    output [3:0] led,     output [7:0] abcdefgh,
    output [3:0] digit,

);
…     // Exercise 1: Display the first letters
    // of your first name and last name instead.     assign abcdefgh =
    assign digit    =  endmodule
module top
(

);

Упражнение с выводом буквы на семисегментный индикатор module top ( … input
…     // Exercise 2: Display letters of a 4-character word
    // using this code to display letter of ChIP as an example     reg [7:0] letter;
    always @*
      case (key_sw)
4'b0111: letter = C;

     endcase
assign abcdefgh = letter;
endmodule

Слайд 21

Verilog HDL. Case
//многовходовые мультиплексоры и дешифраторы можно описывать через case
reg [3:0]

Verilog HDL. Case //многовходовые мультиплексоры и дешифраторы можно описывать через case reg
c; wire [1:0] option; wire [7:0] a, b, c, d; reg [7:0] e; always @(a or b or c or d or option) begin case (option)  0: e = a;   1: e = b;   2: e = c;   3: e = d; endcase end

Слайд 22

Упражнение с выводом буквы на семисегментный индикатор
Выведите первые буквы своего имени и

Упражнение с выводом буквы на семисегментный индикатор Выведите первые буквы своего имени
фамилии на семисегментный индикатор.
Выведите слово CHIP на семисегментный индикатор.

Слайд 23

Упражнение с выводом буквы на семисегментный индикатор

Упражнение с выводом буквы на семисегментный индикатор

Слайд 24

Последовательностная логика

Входы

Выходы

Комбинационная логика

Последовательностная логика Входы Выходы Комбинационная логика

Слайд 25

Проблема вычислений в комбинационной логике.

Вычисления начинаются при изменении входов логики.
Как понять когда

Проблема вычислений в комбинационной логике. Вычисления начинаются при изменении входов логики. Как
результат на выходе комбинационной логики будет готов для дальнейших вычислений?

Слайд 26

Contamination and propagation delays.

Contamination delay
Входы изменились, но на выходе результат пока

Contamination and propagation delays. Contamination delay Входы изменились, но на выходе результат
что нестабильный.
Propagation delay
Стабильный результат на выходе комбинационной схемы.

Слайд 27

Использование тактового сигнала.

Перед завершением вычислений выходные данные могут содержать случайные значения.
Как логике

Использование тактового сигнала. Перед завершением вычислений выходные данные могут содержать случайные значения.
узнать когда результаты готовы и могут использоваться на следующем этапе вычислений?
Вычисления можно синхронизировать с помощью специального сигнала – сигнала тактирования.

Слайд 28

Последовательностная логика

Входы

Выходы

ПЛ

ПЛ

Комбинационная логика

Тактирование

Тактирование

Последовательностная логика Входы Выходы ПЛ ПЛ Комбинационная логика Тактирование Тактирование

Слайд 29

D-триггер

D

CLK

Q

Q

D-триггер D CLK Q Q

Слайд 30

D-триггер. Сигнал сброса

D

CLK

Q

Q

RST

D-триггер. Сигнал сброса D CLK Q Q RST

Слайд 31

D-триггер. Сигнал разрешения

D

CLK

Q

Q

RST

EN

D-триггер. Сигнал разрешения D CLK Q Q RST EN

Слайд 32

D-триггер. Verilog HDL

D

CLK

Q

Q

RST

EN

module my_reg
(
input CLK,
input RST,
input EN,
input D,
output Q
);
reg OUT;
always @(posedge CLK) begin

D-триггер. Verilog HDL D CLK Q Q RST EN module my_reg (
if(RST) OUT <= 1’b0; else OUT <= D;
end
assign Q = OUT;
endmodule

Слайд 33

D-триггер. Новый синтаксис

D

CLK

Q

Q

RST

EN

module my_reg
(
input CLK,
input RST,
input EN,
input D,
output Q
);
reg OUT;
always @(posedge CLK) begin

D-триггер. Новый синтаксис D CLK Q Q RST EN module my_reg (
if(RST) OUT <= 1’b0; else OUT <= D;
end
assign Q = OUT;
endmodule

Использование ключевого
слова reg

Использование конструкции
If-else

Слайд 34

Упражнение со счетчиком

Altera Cyclone IV EP4CE6 FPGA

Вывод значений счетчика на светодиоды. Использование
кнопок

Упражнение со счетчиком Altera Cyclone IV EP4CE6 FPGA Вывод значений счетчика на
для изменения направления счета.

Слайд 35

Упражнение со счетчиком
module top
(

);

reg [31:0] cnt;
    always @ (posedge clk or posedge reset)
      if (reset)
        cnt <= 32'b0;
      else
        cnt <= cnt + 32'b1;
    assign led = ~ cnt [27:24];
endmodule
module top
(

);
… wire key = key_sw [0];
reg key_r;
     always @ (posedge clk or posedge reset)
      if (reset)
        key_r <= 1'b0;
      else
        key_r <= key;
wire key_pressed = ~ key & key_r;
endmodule

Упражнение со счетчиком module top ( … ); … reg [31:0] cnt;

Слайд 36

Упражнение со счетчиком
Свободно запустите счетчик. Как изменить скорость мигания светодиодов?
Измените дизайн. Например,

Упражнение со счетчиком Свободно запустите счетчик. Как изменить скорость мигания светодиодов? Измените
добавьте управление направлением счета кнопками.

Слайд 37

Упражнение со счетчиком

Упражнение со счетчиком

Слайд 38

Упражнение со сдвиговым регистром

Altera Cyclone IV EP4CE6 FPGA

Управление мерцанием светодиодов и семисегментоного индикатора

Упражнение со сдвиговым регистром Altera Cyclone IV EP4CE6 FPGA Управление мерцанием светодиодов
при помощи последовательностной логики и воздействий на кнопки управления на плате.

Слайд 39

Упражнение со сдвиговым регистром
module top
(

);

reg [31:0] cnt;
always @ (posedge

Упражнение со сдвиговым регистром module top ( … ); … reg [31:0]
clk or posedge reset)
if (reset)
cnt <= 32'b0;
else
cnt <= cnt + 32'b1;
wire enable = (cnt [22:0] == 23'b0);
endmodule
module top
(

);
… wire button_on = ~ key_sw [0];
reg [3:0] shift_reg;
always @ (posedge clk or posedge reset)
if (reset)
shift_reg <= 4'b0;
else if (enable)
shift_reg <= { button_on, shift_reg [3:1] };
assign led = ~ shift_reg;
endmodule

Слайд 40

Упражнение со сдвиговым регистром
“Заставьте” светодиоды изменить направление мерцания.
Зациклите мерцание светодиодов.
Измените состояние семисегментного

Упражнение со сдвиговым регистром “Заставьте” светодиоды изменить направление мерцания. Зациклите мерцание светодиодов.
индикатора, “заставив” его поочередно зажигать светодиоды по кругу.

Слайд 41

Упражнение со сдвиговым регистром

Упражнение со сдвиговым регистром

Слайд 42

Сдвиговый регистр

Сдвиговый регистр

Слайд 43

Упражнение: вывод слова на семисегментый индикатор

Altera Cyclone IV EP4CE6 FPGA

Вывод слова на

Упражнение: вывод слова на семисегментый индикатор Altera Cyclone IV EP4CE6 FPGA Вывод
семисегментный индикатор при помощи
последовательностной логики.

Слайд 44

Семисегметный индикатор

Семисегметный индикатор

Слайд 45

Упражнение: вывод слова на семисегментый индикатор
module top
(

);

reg [7:0] letter;
always

Упражнение: вывод слова на семисегментый индикатор module top ( … ); …
@*
case (shift_reg)
4'b1000: letter = C;

default: letter = E;
endcase
assign abcdefgh = letter; endmodule
module top
(

);
… reg [31:0] cnt;
always @ (posedge clk or posedge reset)
if (reset)
cnt <= 32'b0;
else
cnt <= cnt + 32'b1;
wire enable = (cnt [22:0] == 23'b0); endmodule

Слайд 46

Упражнение со сдвиговым регистром
Увеличьте частоту сигала enable, чтобы текст на семисегментном индикаторе

Упражнение со сдвиговым регистром Увеличьте частоту сигала enable, чтобы текст на семисегментном
был легко читаем и не мерцал.
Выведите на семисегментном индикаторе любое другое слово.
Закомментируйте строчку со словом default в конструкции case-endcase и попробуйте заново синтезировать дизайн; постарайтесь объяснить появившееся сообщения САПРа.

Слайд 47

Упражнение: вывод слова на семисегментый индикатор

Упражнение: вывод слова на семисегментый индикатор
Имя файла: Школа_цифрового_синтеза_2022_4_день.pptx
Количество просмотров: 28
Количество скачиваний: 0