Skip to content

Commit 81c9389

Browse files
committed
rtl: code refactoring
1 parent ad35e09 commit 81c9389

File tree

4 files changed

+26
-32
lines changed

4 files changed

+26
-32
lines changed

rtl/channel_ctl.sv

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,13 @@ logic [15:0] data_wr;
4848
wire addr_done = (wr_addr == reg_chan_len_i) & addr_en;
4949
wire data_done = (wr_addr == reg_chan_len_i) & data_en[0];
5050

51-
genvar i;
52-
generate
53-
for (i = 0; i < 16; i++) begin: ram_wr_en
54-
assign ram_wr_en_o[i] = spi_byte_vld_i & data_wr[i];
55-
end
56-
endgenerate
57-
5851
assign reg_rd_addr_o = rd_addr;
5952

60-
assign reg_wr_en_o = spi_byte_vld_i & conf_wr;
53+
assign reg_wr_en_o = conf_wr & spi_byte_vld_i;
6154
assign reg_wr_addr_o = wr_addr;
6255

63-
assign ram_wr_done_o = spi_byte_vld_i & data_wr[reg_chan_cnt_i] & data_done;
56+
assign ram_wr_en_o = data_wr & {16{spi_byte_vld_i}};
57+
assign ram_wr_done_o = data_wr[reg_chan_cnt_i] & data_done & spi_byte_vld_i;
6458
assign ram_wr_addr_o = wr_addr;
6559

6660
assign ram_wr_byte_en_o = {addr_en, data_en};

rtl/regfile.sv

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ module regfile(
1717
input logic [2:0] reg_wr_addr_i,
1818
input logic [7:0] reg_wr_data_i,
1919

20+
output logic [7:0] reg_rd_data_o,
21+
2022
output logic [7:0] reg_t0h_time_o,
2123
output logic [8:0] reg_t0s_time_o,
2224
output logic [7:0] reg_t1h_time_o,
2325
output logic [8:0] reg_t1s_time_o,
2426

2527
output logic [7:0] reg_chan_len_o,
26-
output logic [3:0] reg_chan_cnt_o,
27-
28-
output logic [7:0] reg_rd_data_o
28+
output logic [3:0] reg_chan_cnt_o
2929
);
3030

3131
logic [7:0] regs[5:0];
@@ -39,15 +39,15 @@ generate
3939
for (i = 0; i < 6; i++) begin: rd_data
4040
assign data[i + 2] = regs[i];
4141
end
42-
endgenerate
4342

44-
assign reg_t0h_time_o = regs[0];
45-
assign reg_t0s_time_o = regs[0] + regs[1];
46-
assign reg_t1h_time_o = regs[2];
47-
assign reg_t1s_time_o = regs[2] + regs[3];
43+
assign reg_t0h_time_o = regs[0];
44+
assign reg_t0s_time_o = regs[0] + regs[1];
45+
assign reg_t1h_time_o = regs[2];
46+
assign reg_t1s_time_o = regs[2] + regs[3];
4847

49-
assign reg_chan_len_o = regs[4];
50-
assign reg_chan_cnt_o = regs[5];
48+
assign reg_chan_len_o = regs[4];
49+
assign reg_chan_cnt_o = regs[5];
50+
endgenerate
5151

5252
assign reg_rd_data_o = data[reg_rd_addr_i];
5353

rtl/spi_slave.sv

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,28 @@ module spi_slave(
2121
output logic [7:0] spi_byte_data_o
2222
);
2323

24-
logic spi_sclk;
24+
logic spi_sclk_p;
25+
logic spi_sclk_n;
2526

2627
logic [2:0] bit_sel;
2728
logic bit_mosi;
2829

29-
logic byte_vld;
30-
logic [1:0] byte_rdy;
30+
logic byte_vld;
3131

3232
logic [7:0] byte_mosi;
3333
logic [7:0] byte_miso;
3434

35-
assign spi_miso_o = byte_miso[7];
35+
assign spi_miso_o = byte_miso[7];
36+
3637
assign spi_byte_vld_o = byte_vld;
3738
assign spi_byte_data_o = byte_mosi;
3839

3940
edge2en spi_sclk_en(
4041
.clk_i(clk_i),
4142
.rst_n_i(rst_n_i),
4243
.data_i(spi_sclk_i),
43-
.pos_edge_o(spi_sclk)
44+
.pos_edge_o(spi_sclk_p),
45+
.neg_edge_o(spi_sclk_n)
4446
);
4547

4648
always_ff @(posedge clk_i or negedge rst_n_i)
@@ -50,19 +52,17 @@ begin
5052
bit_mosi <= 1'b0;
5153

5254
byte_vld <= 1'b0;
53-
byte_rdy <= 2'b00;
5455

5556
byte_mosi <= 8'h00;
5657
byte_miso <= 8'h00;
5758
end else begin
58-
bit_sel <= spi_cs_n_i ? 3'h0 : bit_sel + spi_sclk;
59+
bit_sel <= spi_cs_n_i ? 3'h0 : bit_sel + spi_sclk_p;
5960
bit_mosi <= spi_mosi_i;
6061

61-
byte_vld <= spi_sclk & (bit_sel == 3'h7);
62-
byte_rdy <= {byte_rdy[0], byte_vld};
62+
byte_vld <= spi_sclk_p & (bit_sel == 3'h7);
6363

64-
byte_mosi <= spi_sclk ? {byte_mosi[6:0], bit_mosi} : byte_mosi;
65-
byte_miso <= byte_rdy[1] ? spi_byte_data_i : (spi_sclk ? {byte_miso[6:0], 1'b0} : byte_miso);
64+
byte_mosi <= spi_sclk_p ? {byte_mosi[6:0], bit_mosi} : byte_mosi;
65+
byte_miso <= spi_sclk_n ? ((bit_sel == 3'h0) ? spi_byte_data_i : {byte_miso[6:0], 1'b0}) : byte_miso;
6666
end
6767
end
6868

sim/test_spi_slave.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ initial begin
4343
clk_i <= 1'b1;
4444
rst_n_i <= 1'b0;
4545

46-
spi_byte_data_i <= 8'h7e;
46+
spi_byte_data_i <= 8'h6e;
4747

4848
spi_cs_n_i <= 1'b1;
4949
spi_sclk_i <= 1'b0;
@@ -129,7 +129,7 @@ always begin
129129
spi_mosi_i <= 1'b1; // BIT0
130130
#15 spi_sclk_i <= 1'b1;
131131

132-
for (integer i = 0; i < 24; i++) begin
132+
for (integer i = 0; i < 1024; i++) begin
133133
#15 spi_sclk_i <= 1'b0;
134134
spi_mosi_i <= 1'b0;
135135
#15 spi_sclk_i <= 1'b1;

0 commit comments

Comments
 (0)