Счетчик битов
Часть раздела Основы путешествия по Verilog на Coddy — урок 87 из 90.
Задание
В этой главе вы шаг за шагом создадите UART-передатчик. UART расшифровывается как Universal Asynchronous Receiver-Transmitter (Универсальный асинхронный приемопередатчик). Это простой аппаратный протокол, который позволяет двум устройствам обмениваться данными, используя всего один провод (для передачи) и еще один провод (для приема).
Представьте это как разговор двух людей по телефону: один говорит (передает), другой слушает (принимает). UART передает данные по одному биту за раз, используя стартовый и стоповый биты для обозначения начала и конца каждого байта.
UART-передатчик отправляет 10 бит: стартовый бит (1), биты данных (8), стоповый бит (1). Чтобы отслеживать, какой бит мы отправляем, нам нужен счетчик бит, который считает от 0 до 10.
Как работает счетчик бит
- Начинает с 0
- Каждый тактовый цикл прибавляет 1
- Когда достигает 10, возвращается к 0
- Повторяет бесконечно
В этом задании мы пока не будем его сбрасывать: мы будем только увеличивать его значение.
Что нужно сделать:
- Создайте модуль с именем
uart_tx, содержащий:- Один вход:
clk - Один выход:
cnt(4 бита, типreg)
- Один вход:
- Внутри модуля:
- Установите
cntв 0 в самом начале внутри блока initial - Добавьте блок
always @(posedge clk) - Сделайте так, чтобы
cntувеличивался на 1 по каждому фронту тактового сигнала
- Установите
Попробуйте сами
// TODO: Создать модуль uart_tx с входным сигналом clk и выходным сигналом cnt (4 бита)
// TODO: Установить cnt в 0 в начале внутри блока initial
// TODO: Добавить блок always @(posedge clk)
// TODO: Увеличить cntВсе уроки раздела Основы
1Введение
Что такое VerilogHardware против SoftwareУровни абстракции проектированияВаш первый модульКомментарии4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияОператоры сравненияПовторение: простая математикаПобитовые операторы7Оператор Assign и логические вентили
Непрерывное присваиваниеAssign с операторамиВстроенные примитивы вентилейВентили AND, OR, NOTВентили XOR, XNORИтоги: Схемы на логических вентилях10Принятие решений
Оператор ifКонструкция if - elseПовторение: простой компараторОператор caseОператоры casex и casezПовторение: проектирование ALU5Операторы. Часть 2
Логические операторыОператоры редукцииОператоры сдвигаОператор конкатенацииУсловный операторПовторение — Испытание по операторам3Системы счисления
Двоичное представлениеЧисла с заданным размеромЧисла без заданного размераОтрицательные числаСпециальные значения X и ZИтоги — форматы чисел6Модули
Структура модуляВходные и выходные портыПорты InoutИнстанцирование модуляПодключение портов по имениПодключение портов по порядкуИтоги: создание модуля9Процедурные блоки
Блок alwaysБлок initialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеИтоги: always против initial