Some renamings
[clump.git] / reader.v
CommitLineData
3f6eb730
MG
1`define STATE_IDLE 2'd0
2`define STATE_LENGTH 2'd1
3`define STATE_READ1 2'd2
4`define STATE_READ2 2'd3
5
5284821b 6module READER (input clk, input clk_enable, input [7:0] rx_byte, input rx_signal, output reg active, output reg ram_we, output [12:0] ram_addr, output reg [15:0] ram_di);
3f6eb730
MG
7 reg [1:0] state = `STATE_IDLE;
8
eb54e6d0 9 reg [12:0] words_left = 0;
3f6eb730
MG
10 reg [12:0] current_index = 0;
11
12 assign ram_addr = current_index;
13
14 always @ (posedge clk)
15 if (clk_enable) begin
5284821b 16 if(!rx_signal) ram_we <= 0;
3f6eb730
MG
17
18 case(state)
19 `STATE_IDLE: begin
5284821b
MG
20 if(rx_signal) begin
21 words_left[12:8] <= rx_byte[4:0];
eb54e6d0 22 words_left[7:0] <= 0;
3f6eb730
MG
23 current_index <= -1;
24 active <= 1;
25 state <= `STATE_LENGTH;
26 end else
27 active <= 0;
28 end
29
30 `STATE_LENGTH: begin
5284821b
MG
31 if(rx_signal) begin
32 words_left[7:0] <= rx_byte;
3f6eb730
MG
33 state <= `STATE_READ1;
34 end
35 end
36
37 `STATE_READ1: begin
5284821b
MG
38 if(rx_signal) begin
39 ram_di[15:8] <= rx_byte;
3f6eb730 40 current_index <= current_index + 1;
eb54e6d0 41 words_left <= words_left - 1;
3f6eb730
MG
42 state <= `STATE_READ2;
43 end
44 end
45
46 `STATE_READ2: begin
5284821b
MG
47 if(rx_signal) begin
48 ram_di[7:0] <= rx_byte;
3f6eb730 49 ram_we <= 1;
eb54e6d0 50 state <= |words_left ? `STATE_READ1 : `STATE_IDLE;
3f6eb730
MG
51 end
52 end
53 endcase
54 end
55endmodule
This page took 0.012769 seconds and 4 git commands to generate.