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

Subversion Repositories gpio

[/] [gpio/] [tags/] [asyst_3/] [rtl/] [verilog/] [gpio_top.v] - Diff between revs 31 and 34

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 31 Rev 34
Line 43... Line 43...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.13  2002/11/18 22:35:18  lampret
 
// Bug fix. Interrupts were also asserted when condition was not met.
 
//
// Revision 1.12  2002/11/11 21:36:28  lampret
// Revision 1.12  2002/11/11 21:36:28  lampret
// Added ifdef to remove mux from clk_pad_i if mux is not allowed. This also removes RGPIO_CTRL[NEC].
// Added ifdef to remove mux from clk_pad_i if mux is not allowed. This also removes RGPIO_CTRL[NEC].
//
//
// Revision 1.11  2002/03/13 20:56:28  lampret
// Revision 1.11  2002/03/13 20:56:28  lampret
// Removed zero padding as per Avi Shamli suggestion.
// Removed zero padding as per Avi Shamli suggestion.
Line 110... Line 113...
);
);
 
 
parameter dw = 32;
parameter dw = 32;
parameter aw = `GPIO_ADDRHH+1;
parameter aw = `GPIO_ADDRHH+1;
parameter gw = `GPIO_IOS;
parameter gw = `GPIO_IOS;
 
 
//
//
// WISHBONE Interface
// WISHBONE Interface
//
//
input                   wb_clk_i;       // Clock
input                   wb_clk_i;       // Clock
input                   wb_rst_i;       // Reset
input                   wb_rst_i;       // Reset
Line 267... Line 269...
`ifdef GPIO_REGISTERED_WB_OUTPUTS
`ifdef GPIO_REGISTERED_WB_OUTPUTS
always @(posedge wb_clk_i or posedge wb_rst_i)
always @(posedge wb_clk_i or posedge wb_rst_i)
        if (wb_rst_i)
        if (wb_rst_i)
                wb_ack_o <= #1 1'b0;
                wb_ack_o <= #1 1'b0;
        else
        else
                wb_ack_o <= #1 wb_ack & ~wb_ack_o;
                wb_ack_o <= #1 wb_ack & ~wb_ack_o & (!wb_err) ;
`else
`else
assign wb_ack_o = wb_ack;
assign wb_ack_o = wb_ack;
`endif
`endif
 
 
//
//
Line 346... Line 348...
`ifdef GPIO_RGPIO_OUT
`ifdef GPIO_RGPIO_OUT
always @(posedge wb_clk_i or posedge wb_rst_i)
always @(posedge wb_clk_i or posedge wb_rst_i)
        if (wb_rst_i)
        if (wb_rst_i)
                rgpio_out <= #1 {gw{1'b0}};
                rgpio_out <= #1 {gw{1'b0}};
        else if (rgpio_out_sel && wb_we_i)
        else if (rgpio_out_sel && wb_we_i)
 
    begin
 
`ifdef GPIO_STRICT_32BIT_ACCESS
                rgpio_out <= #1 wb_dat_i[gw-1:0];
                rgpio_out <= #1 wb_dat_i[gw-1:0];
 
`endif
 
 
 
`ifdef GPIO_WB_BYTES4
 
     if ( wb_sel_i [3] == 1'b1 )
 
       rgpio_out [gw-1:24] <= #1 wb_dat_i [gw-1:24] ;
 
     if ( wb_sel_i [2] == 1'b1 )
 
       rgpio_out [23:16] <= #1 wb_dat_i [23:16] ;
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_out [15:8] <= #1 wb_dat_i [15:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_out [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES3
 
     if ( wb_sel_i [2] == 1'b1 )
 
       rgpio_out [gw-1:16] <= #1 wb_dat_i [gw-1:16] ;
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_out [15:8] <= #1 wb_dat_i [15:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_out [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES2
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_out [gw-1:8] <= #1 wb_dat_i [gw-1:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_out [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES1
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_out [gw-1:0] <= #1 wb_dat_i [gw-1:0] ;
 
`endif
 
   end
 
 
`else
`else
assign rgpio_out = `GPIO_DEF_RGPIO_OUT; // RGPIO_OUT = 0x0
assign rgpio_out = `GPIO_DEF_RGPIO_OUT; // RGPIO_OUT = 0x0
`endif
`endif
 
 
//
//
// Write to RGPIO_OE. Bits in RGPIO_OE are stored inverted.
// Write to RGPIO_OE. Bits in RGPIO_OE are stored inverted.
//
//
`ifdef GPIO_RGPIO_OE
`ifdef GPIO_RGPIO_OE
always @(posedge wb_clk_i or posedge wb_rst_i)
always @(posedge ~wb_clk_i or posedge ~wb_rst_i)
        if (wb_rst_i)
        if (~wb_rst_i)
                rgpio_oe <= #1 {gw{1'b0}};
                rgpio_oe <= #1 {gw{1'b0}};
        else if (rgpio_oe_sel && wb_we_i)
        else if (rgpio_oe_sel && ~wb_we_i)
 
  begin
 
`ifdef GPIO_STRICT_32BIT_ACCESS
                rgpio_oe <= #1 ~wb_dat_i[gw-1:0];
                rgpio_oe <= #1 ~wb_dat_i[gw-1:0];
 
`endif
 
 
 
`ifdef GPIO_WB_BYTES4
 
     if ( ~wb_sel_i [3] == 1'b1 )
 
       rgpio_oe [gw-1:24] <= #1 ~wb_dat_i [gw-1:24] ;
 
     if ( ~wb_sel_i [2] == 1'b1 )
 
       rgpio_oe [23:16] <= #1 ~wb_dat_i [23:16] ;
 
     if ( ~wb_sel_i [1] == 1'b1 )
 
       rgpio_oe [15:8] <= #1 ~wb_dat_i [15:8] ;
 
     if ( ~wb_sel_i [0] == 1'b1 )
 
       rgpio_oe [7:0] <= #1 ~wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES3
 
     if ( ~wb_sel_i [2] == 1'b1 )
 
       rgpio_oe [gw-1:16] <= #1 ~wb_dat_i [gw-1:16] ;
 
     if ( ~wb_sel_i [1] == 1'b1 )
 
       rgpio_oe [15:8] <= #1 ~wb_dat_i [15:8] ;
 
     if ( ~wb_sel_i [0] == 1'b1 )
 
       rgpio_oe [7:0] <= #1 ~wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES2
 
     if ( ~wb_sel_i [1] == 1'b1 )
 
       rgpio_oe [gw-1:8] <= #1 ~wb_dat_i [gw-1:8] ;
 
     if ( ~wb_sel_i [0] == 1'b1 )
 
       rgpio_oe [7:0] <= #1 ~wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES1
 
     if ( ~wb_sel_i [0] == 1'b1 )
 
       rgpio_oe [gw-1:0] <= #1 ~wb_dat_i [gw-1:0] ;
 
`endif
 
   end
 
 
`else
`else
assign rgpio_oe = `GPIO_DEF_RPGIO_OE;   // RGPIO_OE = 0x0
assign rgpio_oe = `GPIO_DEF_RPGIO_OE;   // RGPIO_OE = 0x0
`endif
`endif
 
 
//
//
Line 372... Line 442...
`ifdef GPIO_RGPIO_INTE
`ifdef GPIO_RGPIO_INTE
always @(posedge wb_clk_i or posedge wb_rst_i)
always @(posedge wb_clk_i or posedge wb_rst_i)
        if (wb_rst_i)
        if (wb_rst_i)
                rgpio_inte <= #1 {gw{1'b0}};
                rgpio_inte <= #1 {gw{1'b0}};
        else if (rgpio_inte_sel && wb_we_i)
        else if (rgpio_inte_sel && wb_we_i)
 
  begin
 
`ifdef GPIO_STRICT_32BIT_ACCESS
                rgpio_inte <= #1 wb_dat_i[gw-1:0];
                rgpio_inte <= #1 wb_dat_i[gw-1:0];
 
`endif
 
 
 
`ifdef GPIO_WB_BYTES4
 
     if ( wb_sel_i [3] == 1'b1 )
 
       rgpio_inte [gw-1:24] <= #1 wb_dat_i [gw-1:24] ;
 
     if ( wb_sel_i [2] == 1'b1 )
 
       rgpio_inte [23:16] <= #1 wb_dat_i [23:16] ;
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_inte [15:8] <= #1 wb_dat_i [15:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_inte [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES3
 
     if ( wb_sel_i [2] == 1'b1 )
 
       rgpio_inte [gw-1:16] <= #1 wb_dat_i [gw-1:16] ;
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_inte [15:8] <= #1 wb_dat_i [15:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_inte [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES2
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_inte [gw-1:8] <= #1 wb_dat_i [gw-1:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_inte [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES1
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_inte [gw-1:0] <= #1 wb_dat_i [gw-1:0] ;
 
`endif
 
   end
 
 
 
 
`else
`else
assign rgpio_inte = `GPIO_DEF_RPGIO_INTE;       // RGPIO_INTE = 0x0
assign rgpio_inte = `GPIO_DEF_RPGIO_INTE;       // RGPIO_INTE = 0x0
`endif
`endif
 
 
//
//
Line 385... Line 490...
`ifdef GPIO_RGPIO_PTRIG
`ifdef GPIO_RGPIO_PTRIG
always @(posedge wb_clk_i or posedge wb_rst_i)
always @(posedge wb_clk_i or posedge wb_rst_i)
        if (wb_rst_i)
        if (wb_rst_i)
                rgpio_ptrig <= #1 {gw{1'b0}};
                rgpio_ptrig <= #1 {gw{1'b0}};
        else if (rgpio_ptrig_sel && wb_we_i)
        else if (rgpio_ptrig_sel && wb_we_i)
 
  begin
 
`ifdef GPIO_STRICT_32BIT_ACCESS
                rgpio_ptrig <= #1 wb_dat_i[gw-1:0];
                rgpio_ptrig <= #1 wb_dat_i[gw-1:0];
 
`endif
 
 
 
`ifdef GPIO_WB_BYTES4
 
     if ( wb_sel_i [3] == 1'b1 )
 
       rgpio_ptrig [gw-1:24] <= #1 wb_dat_i [gw-1:24] ;
 
     if ( wb_sel_i [2] == 1'b1 )
 
       rgpio_ptrig [23:16] <= #1 wb_dat_i [23:16] ;
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_ptrig [15:8] <= #1 wb_dat_i [15:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_ptrig [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES3
 
     if ( wb_sel_i [2] == 1'b1 )
 
       rgpio_ptrig [gw-1:16] <= #1 wb_dat_i [gw-1:16] ;
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_ptrig [15:8] <= #1 wb_dat_i [15:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_ptrig [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES2
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_ptrig [gw-1:8] <= #1 wb_dat_i [gw-1:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_ptrig [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES1
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_ptrig [gw-1:0] <= #1 wb_dat_i [gw-1:0] ;
 
`endif
 
   end
 
 
`else
`else
assign rgpio_ptrig = `GPIO_DEF_RPGIO_PTRIG;     // RGPIO_PTRIG = 0x0
assign rgpio_ptrig = `GPIO_DEF_RPGIO_PTRIG;     // RGPIO_PTRIG = 0x0
`endif
`endif
 
 
//
//
Line 398... Line 537...
`ifdef GPIO_RGPIO_AUX
`ifdef GPIO_RGPIO_AUX
always @(posedge wb_clk_i or posedge wb_rst_i)
always @(posedge wb_clk_i or posedge wb_rst_i)
        if (wb_rst_i)
        if (wb_rst_i)
                rgpio_aux <= #1 {gw{1'b0}};
                rgpio_aux <= #1 {gw{1'b0}};
        else if (rgpio_aux_sel && wb_we_i)
        else if (rgpio_aux_sel && wb_we_i)
 
  begin
 
`ifdef GPIO_STRICT_32BIT_ACCESS
                rgpio_aux <= #1 wb_dat_i[gw-1:0];
                rgpio_aux <= #1 wb_dat_i[gw-1:0];
 
`endif
 
 
 
`ifdef GPIO_WB_BYTES4
 
     if ( wb_sel_i [3] == 1'b1 )
 
       rgpio_aux [gw-1:24] <= #1 wb_dat_i [gw-1:24] ;
 
     if ( wb_sel_i [2] == 1'b1 )
 
       rgpio_aux [23:16] <= #1 wb_dat_i [23:16] ;
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_aux [15:8] <= #1 wb_dat_i [15:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_aux [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES3
 
     if ( wb_sel_i [2] == 1'b1 )
 
       rgpio_aux [gw-1:16] <= #1 wb_dat_i [gw-1:16] ;
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_aux [15:8] <= #1 wb_dat_i [15:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_aux [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES2
 
     if ( wb_sel_i [1] == 1'b1 )
 
       rgpio_aux [gw-1:8] <= #1 wb_dat_i [gw-1:8] ;
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_aux [7:0] <= #1 wb_dat_i [7:0] ;
 
`endif
 
`ifdef GPIO_WB_BYTES1
 
     if ( wb_sel_i [0] == 1'b1 )
 
       rgpio_aux [gw-1:0] <= #1 wb_dat_i [gw-1:0] ;
 
`endif
 
   end
 
 
`else
`else
assign rgpio_aux = `GPIO_DEF_RPGIO_AUX; // RGPIO_AUX = 0x0
assign rgpio_aux = `GPIO_DEF_RPGIO_AUX; // RGPIO_AUX = 0x0
`endif
`endif
 
 
//
//

powered by: WebSVN 2.1.0

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