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

Subversion Repositories spislave

[/] [spislave/] [trunk/] [spislave/] [rtl/] [verilog/] [spigpio.v] - Diff between revs 10 and 13

Only display areas with differences | Details | Blame | View Log

Rev 10 Rev 13
////////////////////////////////////////////////////////////////// ////
////////////////////////////////////////////////////////////////// ////
////                                                              ////
////                                                              ////
//// SPI SLAVE IP Core                                            ////
//// SPI SLAVE IP Core                                            ////
////                                                              ////
////                                                              ////
//// This file is part of the spislave project                     ////
//// This file is part of the spislave project                     ////
//// http://www.opencores.org/project,spislave                    ////
//// http://www.opencores.org/project,spislave                    ////
////                                                              ////
////                                                              ////
//// Description                                                  ////
//// Description                                                  ////
//// Implementation of spislave IP core according to              ////
//// Implementation of spislave IP core according to              ////
//// spislave IP core specification document.                     ////
//// spislave IP core specification document.                     ////
////                                                              ////
////                                                              ////
//// To Do:                                                       ////
//// To Do:                                                       ////
////   -                                                          ////
////   -                                                          ////
////                                                              ////
////                                                              ////
//// Author(s):                                                   ////
//// Author(s):                                                   ////
////      - Sivakumar.B , email: sivabsk12@yahoo.co.in            ////
////      - Sivakumar.B , email: siva@zilogic.com                 ////
////                      email: siva12@opencores.org             ////
////                      email: siva12@opencores.org             ////
////        Engineer  Zilogic systems,chennai. www.zilogic.com    ////
////        Engineer  Zilogic systems,chennai. www.zilogic.com    ////
 
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
////                                                              ////
////                                                              ////
//// Copyright (C) 2009 Authors and OPENCORES.ORG                 ////
//// Copyright (C) 2009 Zilogic Systems and OPENCORES.ORG         ////
////                                                              ////
////                                                              ////
//// This source file may be used and distributed without         ////
//// This source file may be used and distributed without         ////
//// restriction provided that this copyright statement is not    ////
//// restriction provided that this copyright statement is not    ////
//// removed from the file and that any derivative work contains ////
//// removed from the file and that any derivative work contains  ////
//// the original copyright notice and the associated disclaimer. ////
//// the original copyright notice and the associated disclaimer. ////
////                                                              ////
////                                                              ////
//// This source file is free software; you can redistribute it   ////
//// This source file is free software; you can redistribute it   ////
//// and/or modify it under the terms of the GNU Lesser General   ////
//// and/or modify it under the terms of the GNU Lesser General   ////
//// Public License as published by the Free Software Foundation; ////
//// Public License as published by the Free Software Foundation; ////
//// either version 2.1 of the License, or (at your option) any   ////
//// either version 2.1 of the License, or (at your option) any   ////
//// later version.                                               ////
//// later version.                                               ////
////                                                              ////
////                                                              ////
//// This source is distributed in the hope that it will be       ////
//// This source is distributed in the hope that it will be       ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
//// PURPOSE. See the GNU Lesser General Public License for more ////
//// PURPOSE. See the GNU Lesser General Public License for more ////
//// details.                                                     ////
//// details.                                                     ////
////                                                              ////
////                                                              ////
//// You should have received a copy of the GNU Lesser General    ////
//// You should have received a copy of the GNU Lesser General    ////
//// Public License along with this source; if not, download it   ////
//// Public License along with this source; if not, download it   ////
//// from http://www.opencores.org/lgpl.shtml                     ////
//// from http://www.opencores.org/lgpl.shtml                     ////
////                                                              ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
////       RTL program for SPI GPIO -- shift 8 bit register       ////  
////       RTL program for SPI GPIO -- shift 8 bit register       ////  
 
 
`define         P0_P9_OP        8'b10101010 //0xAA
`define         P0_P9_OP        8'b10101010 //0xAA
`define         P0_P3_OP        8'b11111111 //0xFF
`define         P0_P3_OP        8'b11111111 //0xFF
`define         P4_P7_OP        8'b11111110 //0xFE
`define         P4_P7_OP        8'b11111110 //0xFE
 
 
module spigpio(clk, cs, sr_in, gpioout, sr_out);
module spigpio(clk, cs, sr_in, gpioout, sr_out);
 
 
        input clk, cs;
        input clk, cs;
        input sr_in;
        input sr_in;
        output sr_out;
        output sr_out;
        output [7:0] gpioout;
        output [7:0] gpioout;
 
 
        reg [7:0] gpioout;
        reg [7:0] gpioout;
        reg sr_out;
        reg sr_out;
 
 
        wire rw;
        wire rw;
        reg [7:0] sr;
        reg [7:0] sr;
 
 
        assign rw = sr[7];
        assign rw = sr[7];
 
 
        always@(posedge clk )
        always@(posedge clk )
        begin
        begin
                if (cs == 1'b0)
                if (cs == 1'b0)
                begin
                begin
                        sr_out <= sr[7];
                        sr_out <= sr[7];
                        sr[7:1] <= sr[6:0];
                        sr[7:1] <= sr[6:0];
                        sr[0] <= sr_in;
                        sr[0] <= sr_in;
                end
                end
 
 
                if (cs == 1'b1)
                if (cs == 1'b1)
                begin
                begin
 
 
                        if (rw == 1'b1)
                        if (rw == 1'b1)
                        begin
                        begin
 
 
                                case (sr)
                                case (sr)
                                `P0_P9_OP : gpioout[7:0] <= { sr[0], sr[1], sr[2], sr[3],
                                `P0_P9_OP : gpioout[7:0] <= { sr[0], sr[1], sr[2], sr[3],
                                                              sr[4], sr[5], sr[6], sr[7]};
                                                              sr[4], sr[5], sr[6], sr[7]};
                                `P0_P3_OP : gpioout[3:0] <= {sr[0], sr[1], sr[2], sr[3]};
                                `P0_P3_OP : gpioout[3:0] <= {sr[0], sr[1], sr[2], sr[3]};
                                `P4_P7_OP : gpioout[7:4] <= { sr[4], sr[5], sr[6], sr[7]};
                                `P4_P7_OP : gpioout[7:4] <= { sr[4], sr[5], sr[6], sr[7]};
                                default   : gpioout[0] <= sr[0];
                                default   : gpioout[0] <= sr[0];
                                endcase
                                endcase
                        end
                        end
                end
                end
        end
        end
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

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