initial commit

This commit is contained in:
2026-04-12 22:20:18 +08:00
commit 190c2edbb2
155 changed files with 36314 additions and 0 deletions

View File

@@ -0,0 +1,101 @@
module digitaltube_controller(
// 输入配置寄存器 默认 32
// [1:0] 控制右边的数码管 00 01仅显示数字 10显示数字和小数点
// [3:2] 控制左边数码管
input wire [31:0] control_reg,
// 数据寄存器 [15:0]
// 0x0000_000X [3:0] 对应第一个灯的显示
// 0x0000_00X0 [7:4] 对应第二个灯的显示
inout wire [31:0] data_reg,
input wire clk,
input wire rst_n,
output wire [7:0] dpy0, // dpy0
output wire [7:0] dpy1 // dpy1
);
// 内部寄存器定义
reg [7:0] dpy0_reg;
reg [7:0] dpy1_reg;
assign dpy0 = dpy0_reg;
assign dpy1 = dpy1_reg;
reg [3:0] dpy0_data; // dpy0 显示内容4 0-F
reg [3:0] dpy1_data; // dpy1 显示内容4 0-F
// 数码管段码存储
reg [6:0] seg_code [0:15]; // 存储 0-F 的编码
// 初始化数码管段码
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
seg_code[0] <= 7'b1000000; // 0
seg_code[1] <= 7'b1110110; // 1
seg_code[2] <= 7'b0100001; // 2
seg_code[3] <= 7'b0100100; // 3
seg_code[4] <= 7'b0010110; // 4
seg_code[5] <= 7'b0001100; // 5
seg_code[6] <= 7'b0001000; // 6
seg_code[7] <= 7'b1100110; // 7
seg_code[8] <= 7'b0000000; // 8
seg_code[9] <= 7'b0000110; // 9
seg_code[10] <= 7'b0000010; // A
seg_code[11] <= 7'b0011000; // B
seg_code[12] <= 7'b1001001; // C
seg_code[13] <= 7'b0110000; // D
seg_code[14] <= 7'b0001001; // E
seg_code[15] <= 7'b0001011; // F
end
end
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
dpy0_reg <= 8'b0000_0000;
end
else begin
// 解析数据寄存器中的显示内容
dpy0_data <= data_reg[3:0]; // dpy0 显示的内容
// 根据 control_reg 控制显示
case (control_reg[1:0])
2'b01: begin
dpy0_reg <= {~seg_code[dpy0_data], 1'b0}; // 显示 dpy0
end
2'b10: begin
dpy0_reg <= {~seg_code[dpy0_data], 1'b1}; // 显示 dpy0和小数点
end
default: begin
dpy0_reg <= 8'b0000_0000;
end
endcase
end
end
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
dpy1_reg <= 8'b0000_0000;
end
else begin
// 解析数据寄存器中的显示内容
dpy1_data <= data_reg[7:4]; // dpy0 显示的内容
// 根据 control_reg 控制显示
case (control_reg[3:2])
2'b01: begin
dpy1_reg <= {~seg_code[dpy1_data], 1'b0}; // 显示 dpy0
end
2'b10: begin
dpy1_reg <= {~seg_code[dpy1_data], 1'b1}; // 显示 dpy0和小数点
end
default: begin
dpy1_reg <= 8'b0000_0000;
end
endcase
end
end
endmodule