Skip to content

Commit 6f38afd

Browse files
committed
rtl: code clean up
1 parent e2a0036 commit 6f38afd

15 files changed

+383
-356
lines changed

rtl/edge_detect.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ module edge_detect(
1818

1919
logic data_a, data_b;
2020

21-
assign pos_edge_out = data_a & ~data_b;
21+
assign pos_edge_out = ~data_b & data_a;
2222
assign neg_edge_out = ~data_a & data_b;
2323
assign both_edge_out = data_a ^ data_b;
2424

rtl/layer_cfg.sv

Lines changed: 0 additions & 51 deletions
This file was deleted.

rtl/layer_code.sv

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* layer_code.sv
3+
*
4+
* Created on: 2020-04-06 23:09
5+
* Author: Jack Chen <redchenjs@live.com>
6+
*/
7+
8+
module layer_code(
9+
input logic clk_in,
10+
input logic rst_n_in,
11+
12+
input logic wr_en_in,
13+
input logic wr_done_in,
14+
input logic [5:0] wr_addr_in,
15+
input logic [7:0] wr_data_in,
16+
input logic [3:0] wr_byte_en_in,
17+
18+
input logic [ 7:0] t0h_cnt_in,
19+
input logic [ 7:0] t0l_cnt_in,
20+
input logic [ 7:0] t1h_cnt_in,
21+
input logic [ 7:0] t1l_cnt_in,
22+
input logic [15:0] rst_cnt_in,
23+
24+
output logic ws2812_code_out
25+
);
26+
27+
logic rd_en;
28+
logic [ 5:0] rd_addr;
29+
logic [31:0] rd_data;
30+
31+
logic bit_rdy, bit_data, bit_done;
32+
33+
ram64 ram64(
34+
.aclr(~rst_n_in),
35+
.byteena_a(wr_byte_en_in),
36+
.clock(clk_in),
37+
.data({wr_data_in, wr_data_in, wr_data_in, wr_data_in}),
38+
.rdaddress(rd_addr),
39+
.rden(rd_en),
40+
.wraddress(wr_addr_in),
41+
.wren(wr_en_in),
42+
.q(rd_data)
43+
);
44+
45+
ws2812_ctrl ws2812_ctrl(
46+
.clk_in(clk_in),
47+
.rst_n_in(rst_n_in),
48+
49+
.bit_done_in(bit_done),
50+
51+
.wr_done_in(wr_done_in),
52+
.rd_data_in(rd_data),
53+
.rst_cnt_in(rst_cnt_in),
54+
55+
.bit_rdy_out(bit_rdy),
56+
.bit_data_out(bit_data),
57+
58+
.rd_en_out(rd_en),
59+
.rd_addr_out(rd_addr)
60+
);
61+
62+
ws2812_code ws2812_code(
63+
.clk_in(clk_in),
64+
.rst_n_in(rst_n_in),
65+
66+
.bit_rdy_in(bit_rdy),
67+
.bit_data_in(bit_data),
68+
69+
.t0h_cnt_in(t0h_cnt_in),
70+
.t0l_cnt_in(t0l_cnt_in),
71+
.t1h_cnt_in(t1h_cnt_in),
72+
.t1l_cnt_in(t1l_cnt_in),
73+
74+
.bit_done_out(bit_done),
75+
.bit_code_out(ws2812_code_out)
76+
);
77+
78+
endmodule

rtl/layer_conf.sv

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
* layer_conf.sv
3+
*
4+
* Created on: 2020-04-29 20:16
5+
* Author: Jack Chen <redchenjs@live.com>
6+
*/
7+
8+
module layer_conf(
9+
input logic clk_in,
10+
input logic rst_n_in,
11+
12+
input logic wr_en_in,
13+
input logic [5:0] wr_addr_in,
14+
input logic [7:0] wr_data_in,
15+
16+
output logic [ 7:0] t0h_cnt_out,
17+
output logic [ 7:0] t0l_cnt_out,
18+
output logic [ 7:0] t1h_cnt_out,
19+
output logic [ 7:0] t1l_cnt_out,
20+
output logic [15:0] rst_cnt_out
21+
);
22+
23+
logic [ 7:0] t0h_cnt;
24+
logic [ 7:0] t0l_cnt;
25+
logic [ 7:0] t1h_cnt;
26+
logic [ 7:0] t1l_cnt;
27+
logic [15:0] rst_cnt;
28+
29+
assign t0h_cnt_out = t0h_cnt;
30+
assign t0l_cnt_out = t0l_cnt;
31+
assign t1h_cnt_out = t1h_cnt;
32+
assign t1l_cnt_out = t1l_cnt;
33+
assign rst_cnt_out = rst_cnt;
34+
35+
always_ff @(posedge clk_in or negedge rst_n_in)
36+
begin
37+
if (!rst_n_in) begin
38+
t0h_cnt <= 8'h00;
39+
t0l_cnt <= 8'h00;
40+
t1h_cnt <= 8'h00;
41+
t1l_cnt <= 8'h00;
42+
rst_cnt <= 16'h0000;
43+
end else begin
44+
if (wr_en_in) begin
45+
case (wr_addr_in[2:0])
46+
3'h0:
47+
t0h_cnt <= wr_data_in;
48+
3'h1:
49+
t0l_cnt <= wr_data_in;
50+
3'h2:
51+
t1h_cnt <= wr_data_in;
52+
3'h3:
53+
t1l_cnt <= wr_data_in;
54+
3'h4:
55+
rst_cnt[15:8] <= wr_data_in;
56+
3'h5:
57+
rst_cnt[ 7:0] <= wr_data_in;
58+
endcase
59+
end
60+
end
61+
end
62+
63+
endmodule

rtl/layer_ctl.sv renamed to rtl/layer_ctrl.sv

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
/*
2-
* layer_ctl.sv
2+
* layer_ctrl.sv
33
*
44
* Created on: 2020-04-06 23:08
55
* Author: Jack Chen <redchenjs@live.com>
66
*/
77

8-
module layer_ctl(
8+
module layer_ctrl(
99
input logic clk_in,
1010
input logic rst_n_in,
1111

1212
input logic dc_in,
1313

14-
input logic byte_rdy_in,
14+
input logic byte_rdy_in,
1515
input logic [7:0] byte_data_in,
1616

17-
output logic wr_done_out,
1817
output logic [8:0] wr_en_out,
18+
output logic wr_done_out,
1919
output logic [5:0] wr_addr_out,
2020
output logic [3:0] wr_byte_en_out
2121
);
@@ -24,88 +24,91 @@ parameter [7:0] CUBE0414_CONF_WR = 8'h2a;
2424
parameter [7:0] CUBE0414_ADDR_WR = 8'h2b;
2525
parameter [7:0] CUBE0414_DATA_WR = 8'h2c;
2626

27-
logic conf_wr;
28-
logic [7:0] data_wr;
27+
logic conf_wr;
28+
logic [7:0] code_wr;
2929

30-
logic addr_en;
31-
logic [2:0] color_en;
30+
logic addr_en;
31+
logic [2:0] data_en;
3232

33-
wire conf_done = (wr_addr_out == 6'd5);
34-
wire data_done = data_wr[0];
33+
logic [5:0] wr_addr;
3534

36-
wire addr_done = (wr_addr_out == 6'd63);
37-
wire color_done = color_en[0];
35+
wire conf_done = (wr_addr == 6'd5);
36+
wire code_done = code_wr[0];
3837

39-
wire layer_done = addr_done & color_done;
40-
wire frame_done = data_done & layer_done;
38+
wire addr_done = (wr_addr == 6'd63);
39+
wire data_done = data_en[0];
4140

42-
assign wr_done_out = byte_rdy_in & frame_done;
41+
wire layer_done = addr_done & data_done;
42+
wire frame_done = code_done & layer_done;
4343

4444
assign wr_en_out[8] = byte_rdy_in & conf_wr;
45-
assign wr_en_out[7] = byte_rdy_in & data_wr[7];
46-
assign wr_en_out[6] = byte_rdy_in & data_wr[6];
47-
assign wr_en_out[5] = byte_rdy_in & data_wr[5];
48-
assign wr_en_out[4] = byte_rdy_in & data_wr[4];
49-
assign wr_en_out[3] = byte_rdy_in & data_wr[3];
50-
assign wr_en_out[2] = byte_rdy_in & data_wr[2];
51-
assign wr_en_out[1] = byte_rdy_in & data_wr[1];
52-
assign wr_en_out[0] = byte_rdy_in & data_wr[0];
45+
assign wr_en_out[7] = byte_rdy_in & code_wr[7];
46+
assign wr_en_out[6] = byte_rdy_in & code_wr[6];
47+
assign wr_en_out[5] = byte_rdy_in & code_wr[5];
48+
assign wr_en_out[4] = byte_rdy_in & code_wr[4];
49+
assign wr_en_out[3] = byte_rdy_in & code_wr[3];
50+
assign wr_en_out[2] = byte_rdy_in & code_wr[2];
51+
assign wr_en_out[1] = byte_rdy_in & code_wr[1];
52+
assign wr_en_out[0] = byte_rdy_in & code_wr[0];
53+
54+
assign wr_done_out = byte_rdy_in & frame_done;
55+
assign wr_addr_out = wr_addr;
5356

54-
assign wr_byte_en_out = {addr_en, color_en};
57+
assign wr_byte_en_out = {addr_en, data_en};
5558

5659
always_ff @(posedge clk_in or negedge rst_n_in)
5760
begin
5861
if (!rst_n_in) begin
5962
conf_wr <= 1'b0;
60-
data_wr <= 8'h00;
63+
code_wr <= 8'h00;
6164

6265
addr_en <= 1'b0;
63-
color_en <= 3'b000;
66+
data_en <= 3'b000;
6467

65-
wr_addr_out <= 6'h00;
68+
wr_addr <= 6'h00;
6669
end else begin
6770
if (byte_rdy_in) begin
6871
if (!dc_in) begin // Command
6972
case (byte_data_in)
7073
CUBE0414_CONF_WR: begin // Write Reg Conf
7174
conf_wr <= 1'b1;
72-
data_wr <= 8'h00;
75+
code_wr <= 8'h00;
7376

7477
addr_en <= 1'b0;
75-
color_en <= 3'b000;
78+
data_en <= 3'b000;
7679
end
7780
CUBE0414_ADDR_WR: begin // Write RAM Addr
7881
conf_wr <= 1'b0;
79-
data_wr <= 8'hff;
82+
code_wr <= 8'hff;
8083

8184
addr_en <= 1'b1;
82-
color_en <= 3'b000;
85+
data_en <= 3'b000;
8386
end
8487
CUBE0414_DATA_WR: begin // Write RAM Data
8588
conf_wr <= 1'b0;
86-
data_wr <= 8'h80;
89+
code_wr <= 8'h80;
8790

8891
addr_en <= 1'b0;
89-
color_en <= 3'b100;
92+
data_en <= 3'b100;
9093
end
9194
default: begin
9295
conf_wr <= 1'b0;
93-
data_wr <= 8'h00;
96+
code_wr <= 8'h00;
9497

9598
addr_en <= 1'b0;
96-
color_en <= 3'b000;
99+
data_en <= 3'b000;
97100
end
98101
endcase
99102

100-
wr_addr_out <= 6'h00;
103+
wr_addr <= 6'h00;
101104
end else begin // Data
102105
conf_wr <= conf_wr & ~conf_done;
103-
data_wr <= data_wr >> (~(conf_wr | addr_en) & layer_done);
106+
code_wr <= code_wr >> (~(conf_wr | addr_en) & layer_done);
104107

105108
addr_en <= addr_en & ~addr_done;
106-
color_en <= {color_en[0], color_en[2:1]};
109+
data_en <= {data_en[0], data_en[2:1]};
107110

108-
wr_addr_out <= wr_addr_out + (conf_wr | addr_en | color_done);
111+
wr_addr <= wr_addr + (conf_wr | addr_en | data_done);
109112
end
110113
end
111114
end

0 commit comments

Comments
 (0)