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

Subversion Repositories lpc

[/] [lpc/] [trunk/] [gpio/] [rtl/] [lpc_gpio_top.v] - Rev 5

Compare with Previous | Blame | View Log

/////////////////////////////////////////////////////////////////////
////                                                             ////
////  LPC(Low Pin Count) GPIO(General Purpose Input Output)      ////
////                                                             ////
////                                                             ////
////  Author: Junbing Liang                                      ////
////          Junbing.Liang@googlemail.com                       ////
////                                                             ////
////                                                             ////
////  Downloaded from: http://www.opencores.org/                 ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
////                                                             ////
//// Copyright (C) 2007 Junbing Liang                            ////
////                                                             ////
////                                                             ////
//// This source file may be used and distributed without        ////
//// restriction provided that this copyright statement is not   ////
//// removed from the file and that any derivative work contains ////
//// the original copyright notice and the associated disclaimer.////
////                                                             ////
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
 
module  lpc_gpio_top;
 
 
reg    [3:0]   LAD;
reg            LFRAME;
reg            LRESET;
reg            LCLK;
 
wire   [7:0]   gpio_out;
 
wire    [3:0]   LAD_w;
 
 
//LCLK
initial
begin
       LCLK=1;
end
 
//LRESET
initial
begin
 
 
//write date to gpio    
       LRESET = 0;
#50   LRESET = 1; 
#10    LFRAME = 0;
       LAD = 4'b0000;   //1-start
#10    LFRAME = 1;
       LAD = 4'b0010;   //2- CT-DIR, 0010- IO WRITE
#10    LFRAME = 1;
       LAD = 4'b0000;   //3- address A15-A12
#10    LFRAME = 1;
       LAD = 4'b0100;   //4- A11-A8
#10    LFRAME = 1;
       LAD = 4'b0010;   //5- A7-A4
#10    LFRAME = 1;
       LAD = 4'b0001;   //6- A3-A0
#10    LFRAME = 1;
       LAD = 4'b0101;   //7- D3-D0
#10    LFRAME = 1;
       LAD = 4'b1010;   //8- D7-D4
#10    LFRAME = 1;
       LAD = 4'b1111;   //9- TAR
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //10- TAR       
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //11- SYNC
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //12- TAR
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //13- TAR
#50   LFRAME = 1;
       LAD = 4'bzzzz;   //13- TAR
 
 
#20    LFRAME = 0;
       LAD = 4'b0000;   //start
#10    LFRAME = 1;
       LAD = 4'b0010;   //CT-DIR, 0010- IO WRITE
#10    LFRAME = 1;
       LAD = 4'b0000;   //address A15-A12
#10    LFRAME = 1;
       LAD = 4'b0100;   //A11-A8
#10    LFRAME = 1;
       LAD = 4'b0010;   //A7-A4
#10    LFRAME = 1;
       LAD = 4'b0101;   //A3-A0
#10    LFRAME = 1;
       LAD = 4'b1011;   //D3-D0
#10    LFRAME = 1;
       LAD = 4'b0010;   //D7-D4
#10    LFRAME = 1;
       LAD = 4'b1111;   //TAR
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //TAR
#50    LFRAME = 1;
       LAD = 4'bzzzz;   //SYNC
 
 
//read data from LPC GPIO       
 
       LRESET = 0;
#50   LRESET = 1; 
#10    LFRAME = 0;
       LAD = 4'b0000;   //1-start
#10    LFRAME = 1;
       LAD = 4'b0000;   //2- CT-DIR, 0000- IO READ
#10    LFRAME = 1;
       LAD = 4'b0000;   //3- address A15-A12
#10    LFRAME = 1;
       LAD = 4'b0100;   //4- A11-A8
#10    LFRAME = 1;
       LAD = 4'b0010;   //5- A7-A4
#10    LFRAME = 1;
       LAD = 4'b0001;   //6- A3-A0
#10    LFRAME = 1;
       LAD = 4'b1111;   //7- TAR
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //8- TAR       
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //9- SYNC
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //10 D3-D0
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //11 D7-D4       
#10    LFRAME = 1;
       LAD = 4'bzzzz;   //12- TAR
#100   LFRAME = 1;
       LAD = 4'bzzzz;   //13- TAR       
 
 
 
end
 
//LFRAME, LAD
initial
begin
    LFRAME = 0;
    LAD = 0;
end
 
//LCLK
always
begin
	#5 LCLK = !LCLK;
end
 
//hookup the gpip module
lpc_gpio gpio1(
   .LAD(LAD_w),
   .LFRAME(LFRAME),
   .LRESET(LRESET),
   .LCLK(LCLK),
   .gpio_addr_i(16'h0421),
   .gpio_i(8'ha5),
   .gpio_o(gpio_out)
   );
 
assign LAD_w = LAD;
 
 
 
 
endmodule
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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