Счетчик битов
Часть раздела Основы путешествия по 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(4bits, типreg)
- Один вход:
- Внутри модуля (
inside):- Установите
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