Двоичное представление
Часть раздела Основы путешествия по Verilog на Coddy — урок 13 из 90.
В Verilog мы работаем с цифровыми схемами, которые понимают только 0 и 1. Они представляются в двоичном виде.
В двоичной системе используются только две цифры: 0 и 1. Каждая двоичная цифра называется битом.
| Десятичная | Двоичная | Биты |
|---|---|---|
| 0 | 0 | 1 бит |
| 1 | 1 | 1 бит |
| 2 | 10 | 2 бита |
| 3 | 11 | 2 бита |
| 4 | 100 | 3 бита |
| 5 | 101 | 3 бита |
Запись двоичных чисел в Verilog
Для записи двоичных чисел в Verilog используйте префикс 'b:
4'b1010 // 4-битное двоичное число 1010 (десятичное 10)
8'b11110000 // 8-битное двоичное число 11110000 (десятичное 240)
2'b01 // 2-битное двоичное число 01 (десятичное 1)Число перед 'b сообщает Verilog, сколько бит содержит значение.
Как перевести десятичное число в двоичное
Последовательно делите десятичное число на 2 и записывайте остатки снизу вверх.
Пример: Перевод 9 в двоичную систему
| Шаг | Деление | Частное | Остаток |
|---|---|---|---|
| 1 | 9 ÷ 2 | 4 | 1 |
| 2 | 4 ÷ 2 | 2 | 0 |
| 3 | 2 ÷ 2 | 1 | 0 |
| 4 | 1 ÷ 2 | 0 | 1 |
Читайте остатки от последнего к первому: 1001
9 = 4'b1001
Пример в коде
module binary_example;
reg [3:0] a;
initial begin
a = 4'b1010; // Двоичное 1010 = десятичное 10
$display("a = %b (binary)", a);
$display("a = %d (decimal)", a);
$display("a = %h (hex)", a);
$finish;
end
endmoduleВывод:
a = 1010 (binary)
a = 10 (decimal)
a = a (hex)Задание
Завершите код, вписав недостающие двоичные значения.
Что нужно сделать:
- Запишите двоичное число для десятичного 5 (4 бита)
- Запишите двоичное число для десятичного 14 (4 бита)
Шпаргалка
Двоичная система использует только 0 и 1. Каждая цифра — это бит.
В Verilog двоичные числа записываются с префиксом 'b — число перед ним указывает разрядность (количество бит):
4'b1010 // 4-битное двоичное число = десятичное 10
8'b11110000 // 8-битное двоичное число = десятичное 240Форматы отображения: %b (двоичный), %d (десятичный), %h (шестнадцатеричный).
Из десятичной в двоичную: последовательно делите на 2, записывая остатки снизу вверх.
// 9 ÷ 2 → 4 r1 → 2 r0 → 1 r0 → 0 r1 ⟹ 1001
// 9 = 4'b1001Попробуйте сами
module binary_challenge;
reg [3:0] a, b;
initial begin
// Запишите двоичное число для десятичного 5 (4 бита)
a = 4'b______;
// Write binary for decimal 14 (4 bits)
b = 4'b______;
$display("5 = %b", a);
$display("14 = %b", b);
$finish;
end
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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