Счётчик битов
Часть раздела Основы путешествия по Verilog на Coddy. Урок 87 из 90.
Задание
В этой главе ты шаг за шагом создашь передатчик UART. UART расшифровывается как Universal Asynchronous Receiver-Transmitter. Это простой аппаратный протокол, который позволяет двум устройствам обмениваться данными, используя только один провод (для передачи) и ещё один провод (для приёма).
Представь, что два человека разговаривают по телефону: один говорит (передаёт), другой слушает (принимает). UART отправляет данные по одному биту за раз, используя start- и стоповые биты, чтобы обозначить начало и end каждого байта.
Передатчик UART отправляет 10 битов: start-бит (1), биты данных (8), стоп-бит (1). Чтобы отслеживать, какой бит мы отправляем, нам нужен счётчик битов, который считает от 0 до 10.
Как работает счётчик битов
- Начать с 0
- В каждом такте добавить 1
- Когда значение достигнет 10, вернуться к 0
- Повторять бесконечно
В этом задании мы пока не будем выполнять сброс: мы только будем увеличивать значение.
Что нужно сделать:
- Create module с именем
uart_tx, содержащий:- Один input:
clk - Один output:
cnt(4 бита, типreg)
- Один input:
- Внутри module:
- Установить
cntв 0 в начале, внутри initial block - Add block
always @(posedge clk) - Make
cntувеличиваться на 1 при каждом тактовом фронте
- Установить
Попробуйте сами
// TODO: Создать модуль uart_tx с входом clk и выходом cnt (4 бита)
// TODO: Установить cnt в 0 в начале внутри блока initial
// TODO: Добавить блок always @(posedge clk)
// TODO: Инкрементировать cntВсе уроки раздела Основы
1Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog