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

Subversion Repositories neopixel_fpga

[/] [neopixel_fpga/] [trunk/] [rtl/] [simple_spi_slave.v] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 splinedriv
/*
2
 *  FpgaNeoPixel - A spi to ws2812 machine
3
 *
4
 *  Copyright (C) 2020  Hirosh Dabui <hirosh@dabui.de>
5
 *
6
 *  Permission to use, copy, modify, and/or distribute this software for any
7
 *  purpose with or without fee is hereby granted, provided that the above
8
 *  copyright notice and this permission notice appear in all copies.
9
 *
10
 *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
 *  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
 *  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
 *  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
 *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
 *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
 *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
 *
18
 */
19
module spi_slave(resetn, clk, sck, mosi, miso, cs, done, rx_data);
20
input clk;
21
input resetn;
22
 
23
input cs;
24
input sck;
25
input mosi;
26
output miso;
27
output reg done = 0;
28
output reg[31:0]  rx_data = 0;
29
 
30
reg [4:0] bit_counter = 0;
31
reg [2:0] rx_done_ccd = 0;
32
reg [31:0] r_rx = 0;
33
reg rx_done = 0;
34
 
35
assign miso = 0;
36
 
37
always @(posedge clk) rx_done_ccd <= {rx_done_ccd[1:0], rx_done};
38
 
39
always @(posedge clk)
40
begin
41
  if (rx_done_ccd[2:1] == 2'b01) begin
42
    done <= 1;
43
    rx_data <= r_rx;
44
  end else
45
    done <= 0;
46
end
47
 
48
always @(posedge sck)
49
begin
50
  if (cs) begin
51
    bit_counter <= 0;
52
  end else begin
53
    r_rx <= {r_rx[30:0], mosi};
54
    bit_counter <= bit_counter + 1;
55
    rx_done <= (bit_counter == 31);
56
  end
57
end
58
endmodule

powered by: WebSVN 2.1.0

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