OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

[/] [eco32/] [trunk/] [fpga/] [mc/] [src/] [ser/] [rcv.v] - Blame information for rev 290

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 117 hellwig
//
2
// rcv.v -- serial line receiver
3
//
4
 
5
 
6 290 hellwig
`timescale 1ns/10ps
7
`default_nettype none
8
 
9
 
10 27 hellwig
module rcv(clk, reset, full, parallel_out, serial_in);
11
    input clk;
12
    input reset;
13
    output reg full;
14
    output [7:0] parallel_out;
15
    input serial_in;
16
 
17
  reg serial_p;
18
  reg serial_s;
19
  reg [3:0] state;
20
  reg [8:0] shift;
21
  reg [10:0] count;
22
 
23
  assign parallel_out[7:0] = shift[7:0];
24
 
25
  always @(posedge clk) begin
26
    serial_p <= serial_in;
27
    serial_s <= serial_p;
28
  end
29
 
30
  always @(posedge clk) begin
31
    if (reset == 1) begin
32
      state <= 4'h0;
33
      full <= 0;
34
    end else begin
35
      if (state == 4'h0) begin
36
        full <= 0;
37
        if (serial_s == 0) begin
38
          state <= 4'h1;
39
          count <= 651;
40
        end
41
      end else
42
      if (state == 4'hb) begin
43
        state <= 4'h0;
44
        full <= 1;
45
      end else begin
46
        if (count == 0) begin
47
          state <= state + 1;
48
          shift[8:0] <= { serial_s, shift[8:1] };
49
          count <= 1302;
50
        end else begin
51
          count <= count - 1;
52
        end
53
      end
54
    end
55
  end
56
 
57
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.