📄 demux.v
字号:
module demux(
wire_encod_0_out_0,
wire_encod_0_out_1,
wire_encod_0_out_2,
wire_encod_0_out_3,
wire_encod_1_out_0,
wire_encod_1_out_1,
wire_encod_1_out_2,
wire_encod_1_out_3,
wire_encod_2_out_0,
wire_encod_2_out_1,
wire_encod_2_out_2,
wire_encod_2_out_3,
wire_encod_3_out_0,
wire_encod_3_out_1,
wire_encod_3_out_2,
wire_encod_3_out_3,
wire_encod_4_out_0,
wire_encod_4_out_1,
wire_encod_4_out_2,
wire_encod_4_out_3,
wire_encod_5_out_0,
wire_encod_5_out_1,
wire_encod_5_out_2,
wire_encod_5_out_3,
wire_encod_6_out_0,
wire_encod_6_out_1,
wire_encod_6_out_2,
wire_encod_6_out_3,
wire_encod_7_out_0,
wire_encod_7_out_1,
wire_encod_7_out_2,
wire_encod_7_out_3,
wire_encod_8_out_0,
wire_encod_8_out_1,
wire_encod_8_out_2,
wire_encod_8_out_3,
wire_encod_9_out_0,
wire_encod_9_out_1,
wire_encod_9_out_2,
wire_encod_9_out_3,
wire_encod_10_out_0,
wire_encod_10_out_1,
wire_encod_10_out_2,
wire_encod_10_out_3,
wire_encod_11_out_0,
wire_encod_11_out_1,
wire_encod_11_out_2,
wire_encod_11_out_3,
clk,
clk4x,
counter,
rst_n,
symbol_out,
);
input [2:0] wire_encod_0_out_0;
input [2:0] wire_encod_0_out_1;
input [2:0] wire_encod_0_out_2;
input [2:0] wire_encod_0_out_3;
input [2:0] wire_encod_1_out_0;
input [2:0] wire_encod_1_out_1;
input [2:0] wire_encod_1_out_2;
input [2:0] wire_encod_1_out_3;
input [2:0] wire_encod_2_out_0;
input [2:0] wire_encod_2_out_1;
input [2:0] wire_encod_2_out_2;
input [2:0] wire_encod_2_out_3;
input [2:0] wire_encod_3_out_0;
input [2:0] wire_encod_3_out_1;
input [2:0] wire_encod_3_out_2;
input [2:0] wire_encod_3_out_3;
input [2:0] wire_encod_4_out_0;
input [2:0] wire_encod_4_out_1;
input [2:0] wire_encod_4_out_2;
input [2:0] wire_encod_4_out_3;
input [2:0] wire_encod_5_out_0;
input [2:0] wire_encod_5_out_1;
input [2:0] wire_encod_5_out_2;
input [2:0] wire_encod_5_out_3;
input [2:0] wire_encod_6_out_0;
input [2:0] wire_encod_6_out_1;
input [2:0] wire_encod_6_out_2;
input [2:0] wire_encod_6_out_3;
input [2:0] wire_encod_7_out_0;
input [2:0] wire_encod_7_out_1;
input [2:0] wire_encod_7_out_2;
input [2:0] wire_encod_7_out_3;
input [2:0] wire_encod_8_out_0;
input [2:0] wire_encod_8_out_1;
input [2:0] wire_encod_8_out_2;
input [2:0] wire_encod_8_out_3;
input [2:0] wire_encod_9_out_0;
input [2:0] wire_encod_9_out_1;
input [2:0] wire_encod_9_out_2;
input [2:0] wire_encod_9_out_3;
input [2:0] wire_encod_10_out_0;
input [2:0] wire_encod_10_out_1;
input [2:0] wire_encod_10_out_2;
input [2:0] wire_encod_10_out_3;
input [2:0] wire_encod_11_out_0;
input [2:0] wire_encod_11_out_1;
input [2:0] wire_encod_11_out_2;
input [2:0] wire_encod_11_out_3;
input clk;
input clk4x;
input rst_n;
input [3:0] counter;
output [2:0] symbol_out;
reg [2:0] ram_7_6 [11:0];
reg [2:0] ram_5_4 [11:0];
reg [2:0] ram_3_2 [11:0];
reg [2:0] ram_1_0 [11:0];
reg [2:0] symbol_out;
reg [1:0] addr_row;
reg [3:0] addr_line;
reg [1:0] seg_ctrl;
reg [9:0] counter_en;
reg enable;
integer row_counter;
integer line_counter;
integer symbol_counter;
always @ (posedge clk)
begin
if (counter==4'd5) begin
ram_7_6[0]<=wire_encod_0_out_0;
ram_7_6[1]<=wire_encod_1_out_0;
ram_7_6[2]<=wire_encod_2_out_0;
ram_7_6[3]<=wire_encod_3_out_0;
ram_7_6[4]<=wire_encod_4_out_0;
ram_7_6[5]<=wire_encod_5_out_0;
ram_7_6[6]<=wire_encod_6_out_0;
ram_7_6[7]<=wire_encod_7_out_0;
ram_7_6[8]<=wire_encod_8_out_0;
ram_7_6[9]<=wire_encod_9_out_0;
ram_7_6[10]<=wire_encod_10_out_0;
ram_7_6[11]<=wire_encod_11_out_0;
ram_5_4[0]<=wire_encod_0_out_1;
ram_5_4[1]<=wire_encod_1_out_1;
ram_5_4[2]<=wire_encod_2_out_1;
ram_5_4[3]<=wire_encod_3_out_1;
ram_5_4[4]<=wire_encod_4_out_1;
ram_5_4[5]<=wire_encod_5_out_1;
ram_5_4[6]<=wire_encod_6_out_1;
ram_5_4[7]<=wire_encod_7_out_1;
ram_5_4[8]<=wire_encod_8_out_1;
ram_5_4[9]<=wire_encod_9_out_1;
ram_5_4[10]<=wire_encod_10_out_1;
ram_5_4[11]<=wire_encod_11_out_1;
ram_3_2[0]<=wire_encod_0_out_2;
ram_3_2[1]<=wire_encod_1_out_2;
ram_3_2[2]<=wire_encod_2_out_2;
ram_3_2[3]<=wire_encod_3_out_2;
ram_3_2[4]<=wire_encod_4_out_2;
ram_3_2[5]<=wire_encod_5_out_2;
ram_3_2[6]<=wire_encod_6_out_2;
ram_3_2[7]<=wire_encod_7_out_2;
ram_3_2[8]<=wire_encod_8_out_2;
ram_3_2[9]<=wire_encod_9_out_2;
ram_3_2[10]<=wire_encod_10_out_2;
ram_3_2[11]<=wire_encod_11_out_2;
ram_1_0[0]<=wire_encod_0_out_3;
ram_1_0[1]<=wire_encod_1_out_3;
ram_1_0[2]<=wire_encod_2_out_3;
ram_1_0[3]<=wire_encod_3_out_3;
ram_1_0[4]<=wire_encod_4_out_3;
ram_1_0[5]<=wire_encod_5_out_3;
ram_1_0[6]<=wire_encod_6_out_3;
ram_1_0[7]<=wire_encod_7_out_3;
ram_1_0[8]<=wire_encod_8_out_3;
ram_1_0[9]<=wire_encod_9_out_3;
ram_1_0[10]<=wire_encod_10_out_3;
ram_1_0[11]<=wire_encod_11_out_3;
end
end
always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n || ~enable) begin
//row_counter=0;
//line_counter=0;
symbol_counter=0;
end
else begin
if (symbol_counter==827)
symbol_counter=0;
else
symbol_counter=symbol_counter+1;
end
end
always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n || ~enable) begin
seg_ctrl <=2'd0;
end
else if (symbol_counter==827) begin
if (seg_ctrl==2'd2)
seg_ctrl<=2'd0;
else
seg_ctrl<=seg_ctrl+1'b1;
end
end
always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n || ~enable) begin
row_counter=0;
end
else begin
if (row_counter==11)
row_counter=0;
else
row_counter=row_counter+1;
end
end
always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n || ~enable) begin
addr_row <=2'd0;
end
else if (row_counter==0) begin
if (addr_row==2'd3)
addr_row<=2'd0;
else
addr_row<=addr_row+1'b1;
end
end
always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n || ~enable) begin
addr_line <=4'd0;
//addr_row <=2'd0;
end
else begin
if (symbol_counter==0 && seg_ctrl==2'd0)
addr_line<=4'd0;
else if (symbol_counter==0 && seg_ctrl==2'd1)
addr_line<=4'd4;
else if (symbol_counter==0 && seg_ctrl==2'd2)
addr_line<=4'd8;
else if (addr_line==4'd11)
addr_line<=4'd0;
else
addr_line<=addr_line+1'b1;
end
end
always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n) begin
end
else begin
case (addr_row)
2'd0: begin
symbol_out<=ram_7_6 [addr_line];
end
2'd1:begin
symbol_out<=ram_5_4 [addr_line];
end
2'd2:begin
symbol_out<=ram_3_2 [addr_line];
end
2'd3:begin
symbol_out<=ram_1_0 [addr_line];
end
endcase
end
end
always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n)
counter_en<=10'd0;
else
counter_en<=counter_en+1'b1;
end
always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n)
enable<=1'd0;
else if (counter_en==10'd74)
enable<=1'b1;
else
enable<=enable;
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -