Тестовый стенд
Часть раздела Основы путешествия по Verilog на Coddy. Урок 90 из 90.
Задание
testbench подаёт входные данные на вашу схему и создаёт файл временных диаграмм. У него нет собственных портов.
Ваша задача
Создайте testbench, который:
- Объявляет
regдляclk,startиdata_in(8 бит) - Объявляет
wireдляtxиwire [3:0]дляcnt - Создаёт экземпляр модуля
uart_tx, подключая все порты:.clk,.start,.data_in,.tx,.cnt - Генерирует тактовый сигнал (переключение каждые 5 единиц времени)
- Внутри блока
initial:- Создаёт файл временных диаграмм с именем
uart.vcdс помощью$dumpfileи$dumpvars - Устанавливает
clk = 0,start = 1,data_in = 8'b01000001в момент времени 0 - Сбрасывает
startчерез 10 единиц времени (start = 0) - Затем ждёт ещё 200 единиц времени и вызывает
$finish(так что симуляция завершается в момент времени 210)
- Создаёт файл временных диаграмм с именем
После запуска testbench откройте временную диаграмму, чтобы проверить сигнал tx.
Попробуйте сами
module uart_tx (
input clk,
input start,
input [7:0] data_in,
output reg tx,
output reg [3:0] cnt
);
reg [9:0] shift_reg;
initial begin
cnt = 0;
tx = 1;
shift_reg = 0;
end
always @(posedge clk) begin
if (cnt == 0 && start) begin
shift_reg <= {1'b1, data_in, 1'b0};
cnt <= 1;
end
else if (cnt > 0 && cnt < 9) begin
tx <= shift_reg[0];
shift_reg <= shift_reg >> 1;
cnt <= cnt + 1;
end
else if (cnt == 9) begin
tx <= shift_reg[0];
shift_reg <= shift_reg >> 1;
cnt <= 0;
end
end
endmoduleВсе уроки раздела Основы
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