Testbench
Часть раздела Основы путешествия по 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 единиц времени
- Создаёт файл с временной диаграммой с именем
После запуска 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Аппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog