96 lines
1.8 KiB
Verilog
96 lines
1.8 KiB
Verilog
`timescale 1ns / 1ps
|
||
//////////////////////////////////////////////////////////////////////////////////
|
||
// Company:
|
||
// Engineer:
|
||
//
|
||
// Create Date: 2026/03/22 18:54:47
|
||
// Design Name:
|
||
// Module Name: TB
|
||
// Project Name:
|
||
// Target Devices:
|
||
// Tool Versions:
|
||
// Description:
|
||
//
|
||
// Dependencies:
|
||
//
|
||
// Revision:
|
||
// Revision 0.01 - File Created
|
||
// Additional Comments:
|
||
//
|
||
//////////////////////////////////////////////////////////////////////////////////
|
||
|
||
|
||
`timescale 1ns / 1ps
|
||
|
||
module tb_digital_thermometer;
|
||
|
||
reg clk;
|
||
reg rst_n;
|
||
reg vin;
|
||
reg mode;
|
||
wire [19:0] freq_x100hz;
|
||
wire [15:0] temp_out;
|
||
wire temp_valid;
|
||
|
||
// 例化待测模块
|
||
digital_thermometer uut (
|
||
.clk (clk),
|
||
.rst_n (rst_n),
|
||
.vin (vin),
|
||
.mode (mode),
|
||
.freq_x100hz (freq_x100hz),
|
||
.temp_out (temp_out),
|
||
.temp_valid (temp_valid)
|
||
);
|
||
|
||
// 时钟:50MHz
|
||
initial clk = 0;
|
||
always #10 clk = ~clk;
|
||
|
||
|
||
|
||
|
||
// 测试流程
|
||
initial begin
|
||
// 复位
|
||
rst_n = 0;
|
||
mode = 0;
|
||
#100;
|
||
rst_n = 1;
|
||
gen_pulse(52,20);
|
||
gen_pulse(74,20);
|
||
gen_pulse(104.7,20);
|
||
gen_pulse(130,20);
|
||
mode = 1;
|
||
gen_pulse(52,20);
|
||
gen_pulse(74,20);
|
||
gen_pulse(104.7,20);
|
||
gen_pulse(130,20);
|
||
|
||
#10000;
|
||
$finish;
|
||
end
|
||
|
||
//
|
||
task gen_pulse;
|
||
input real freq_kHz;
|
||
input [7:0] time_ms;
|
||
integer cycles;
|
||
integer i;
|
||
begin
|
||
//操控reg vin
|
||
cycles = time_ms * freq_kHz;
|
||
vin = 0;
|
||
for (i = 0; i < cycles; i = i + 1) begin
|
||
vin = 1;
|
||
#(500000/freq_kHz);
|
||
vin = 0;
|
||
#(500000/freq_kHz);
|
||
end
|
||
end
|
||
endtask
|
||
|
||
|
||
|
||
endmodule
|