`timescale 1ns/1ns module tb_dt(); // 我们如果上板验证, 需要再 .xdc文件中, 添加时钟约束 // create_clock -period 20.000 -name sys_clk [get_ports sys_clk] // 创建一个时钟, 周期是20纳秒, 对应的端口是系统时钟 reg sys_clk; reg sys_rst; initial begin sys_clk <= 1'b0; // 复位 sys_rst <= 1'b0; #200 // 结束复位 sys_rst <= 1'b1; end // 每20ns 产生一个时钟周期, 所以需要10ns 翻转一次 always #10 sys_clk = ~sys_clk; reg [5:0] CNT; always @(posedge sys_clk or negedge sys_rst) begin if (sys_rst == 1'b0) begin CNT <= 5'd0; end else if (CNT < (5'd25 - 5'd1)) begin CNT <= CNT + 5'd1; end else begin CNT <= 5'b0; end end reg [7:0] data; always @(posedge sys_clk or negedge sys_rst) begin if (sys_rst == 1'b0) begin data <= 8'b1_00_0_0000; end else if (CNT == (5'd25 - 5'd1)) begin data[3:0] <= data[3:0] + 4'b1; data[6:5] <= data[6:5] + 2'b1; end else begin end end wire [7:0] D; wire [3:0] S; dt u_dt( .data (data), .A (D[0]), .B (D[1]), .C (D[2]), .D (D[3]), .E (D[4]), .F (D[5]), .G (D[6]), .DP (D[7]), .S1 (S[0]), .S2 (S[1]), .S3 (S[2]), .S4 (S[3]) ); endmodule