Menu
Coddy logo textTech

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

Часть раздела Основы путешествия по Verilog на Coddy — урок 88 из 90.

challenge icon

Задание

Конечный автомат — это схема, которая может находиться в одном из нескольких состояний. Для UART у нас есть разные состояния для каждого бита: ожидание (idle), стартовый бит, биты данных 0-7 и стоповый бит. Счетчик бит (cnt) сообщает нам, в каком состоянии мы находимся. На основе cnt мы решаем, какое значение отправить по линии tx.

У вас есть счетчик бит из предыдущего урока. Вам нужно модифицировать его для работы в качестве передатчика UART.

Значения бит для отправки (для буквы 'A')

cntзначение tx
01
10
21
30
40
50
60
70
80
91
101

Что нужно сделать

  1. Добавьте входной сигнал с именем start
  2. Добавьте выходной регистр reg с именем tx
  3. В блоке initial установите tx = 1 (состояние ожидания — высокий уровень)
  4. Измените логику счетчика:
    • Когда cnt == 0 и start == 1, установите cnt <= 1 (начало передачи)
    • Когда cnt находится в диапазоне от 1 до 9, увеличивайте его: cnt <= cnt + 1
    • Когда cnt == 10, сбросьте его в 0

Попробуйте сами

module uart_tx (
  input clk,
  output reg [3:0] cnt
);

  initial begin
    cnt = 0;
  end

  always @(posedge clk) begin
      cnt <= cnt + 1;
  end

endmodule

Все уроки раздела Основы