Line 40... |
Line 40... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.6 2003/12/19 11:11:30 mihad
|
|
// Compact PCI Hot Swap support added.
|
|
// New testcases added.
|
|
// Specification updated.
|
|
// Test application changed to support WB B3 cycles.
|
|
//
|
// Revision 1.5 2003/10/17 09:11:52 markom
|
// Revision 1.5 2003/10/17 09:11:52 markom
|
// mbist signals updated according to newest convention
|
// mbist signals updated according to newest convention
|
//
|
//
|
// Revision 1.4 2003/08/14 13:06:03 simons
|
// Revision 1.4 2003/08/14 13:06:03 simons
|
// synchronizer_flop replaced with pci_synchronizer_flop, artisan ram instance updated.
|
// synchronizer_flop replaced with pci_synchronizer_flop, artisan ram instance updated.
|
Line 92... |
Line 98... |
|
|
// synopsys translate_off
|
// synopsys translate_off
|
`include "timescale.v"
|
`include "timescale.v"
|
// synopsys translate_on
|
// synopsys translate_on
|
|
|
|
|
|
|
module pci_wbw_wbr_fifos
|
module pci_wbw_wbr_fifos
|
(
|
(
|
wb_clock_in,
|
wb_clock_in,
|
pci_clock_in,
|
pci_clock_in,
|
reset_in,
|
reset_in,
|
Line 110... |
Line 118... |
// wbw_flush_in, write fifo flush not used
|
// wbw_flush_in, write fifo flush not used
|
wbw_almost_full_out,
|
wbw_almost_full_out,
|
wbw_full_out,
|
wbw_full_out,
|
wbw_empty_out,
|
wbw_empty_out,
|
wbw_transaction_ready_out,
|
wbw_transaction_ready_out,
|
|
wbw_half_full_out, ////Robert, burst issue
|
wbr_wenable_in,
|
wbr_wenable_in,
|
wbr_data_in,
|
wbr_data_in,
|
wbr_be_in,
|
wbr_be_in,
|
wbr_control_in,
|
wbr_control_in,
|
wbr_renable_in,
|
wbr_renable_in,
|
Line 121... |
Line 130... |
wbr_be_out,
|
wbr_be_out,
|
wbr_control_out,
|
wbr_control_out,
|
wbr_flush_in,
|
wbr_flush_in,
|
wbr_empty_out
|
wbr_empty_out
|
|
|
|
|
`ifdef PCI_BIST
|
`ifdef PCI_BIST
|
,
|
,
|
// debug chain signals
|
// debug chain signals
|
mbist_si_i, // bist scan serial in
|
mbist_si_i, // bist scan serial in
|
mbist_so_o, // bist scan serial out
|
mbist_so_o, // bist scan serial out
|
Line 185... |
Line 195... |
// status outputs
|
// status outputs
|
output wbw_almost_full_out ;
|
output wbw_almost_full_out ;
|
output wbw_full_out ;
|
output wbw_full_out ;
|
output wbw_empty_out ;
|
output wbw_empty_out ;
|
output wbw_transaction_ready_out ;
|
output wbw_transaction_ready_out ;
|
|
output wbw_half_full_out; ////Robert, burst issue
|
|
|
/*-----------------------------------------------------------------------------------------------------------
|
/*-----------------------------------------------------------------------------------------------------------
|
WISHBONE READ FIFO interface signals prefixed with wbr_ - FIFO is used for holding delayed read completions
|
WISHBONE READ FIFO interface signals prefixed with wbr_ - FIFO is used for holding delayed read completions
|
initiated by master on WISHBONE bus and completed on PCI bus,
|
initiated by master on WISHBONE bus and completed on PCI bus,
|
|
|
Line 357... |
Line 368... |
`endif
|
`endif
|
|
|
// instantiate and connect two generic rams - one for wishbone write fifo and one for wishbone read fifo
|
// instantiate and connect two generic rams - one for wishbone write fifo and one for wishbone read fifo
|
pci_wb_tpram #(`WB_FIFO_RAM_ADDR_LENGTH, 40) wbw_fifo_storage
|
pci_wb_tpram #(`WB_FIFO_RAM_ADDR_LENGTH, 40) wbw_fifo_storage
|
(
|
(
|
// Generic synchronous two-port RAM interface
|
/////////////////Generic synchronous two-port RAM interface
|
.clk_a(wb_clock_in),
|
.clk_a(wb_clock_in),
|
.rst_a(reset_in),
|
.rst_a(reset_in),
|
.ce_a(1'b1),
|
.ce_a(1'b1),
|
.we_a(wbw_wallow),
|
.we_a(wbw_wallow),
|
.oe_a(1'b1),
|
.oe_a(1'b1),
|
Line 413... |
Line 424... |
.mbist_so_o (mbist_so_o),
|
.mbist_so_o (mbist_so_o),
|
.mbist_ctrl_i (mbist_ctrl_i)
|
.mbist_ctrl_i (mbist_ctrl_i)
|
`endif
|
`endif
|
);
|
);
|
|
|
|
|
`else // RAM blocks sharing between two fifos
|
`else // RAM blocks sharing between two fifos
|
|
|
/*-----------------------------------------------------------------------------------------------------------
|
/*-----------------------------------------------------------------------------------------------------------
|
Code section under this ifdef is used for implementation where RAM instances are too expensive. In this
|
Code section under this ifdef is used for implementation where RAM instances are too expensive. In this
|
case one RAM instance is used for both - WISHBONE read and WISHBONE write fifo.
|
case one RAM instance is used for both - WISHBONE read and WISHBONE write fifo.
|
Line 476... |
Line 488... |
`endif
|
`endif
|
);
|
);
|
|
|
`endif
|
`endif
|
|
|
|
|
/*-----------------------------------------------------------------------------------------------------------
|
/*-----------------------------------------------------------------------------------------------------------
|
Instantiation of two control logic modules - one for WBW_FIFO and one for WBR_FIFO
|
Instantiation of two control logic modules - one for WBW_FIFO and one for WBR_FIFO
|
-----------------------------------------------------------------------------------------------------------*/
|
-----------------------------------------------------------------------------------------------------------*/
|
pci_wbw_fifo_control #(WBW_ADDR_LENGTH) wbw_fifo_ctrl
|
pci_wbw_fifo_control #(WBW_ADDR_LENGTH) wbw_fifo_ctrl
|
(
|
(
|
.rclock_in(pci_clock_in),
|
.rclock_in(pci_clock_in),
|
.wclock_in(wb_clock_in),
|
.wclock_in(wb_clock_in),
|
.renable_in(wbw_renable_in),
|
.renable_in(wbw_renable_in),
|
.wenable_in(wbw_wenable_in),
|
.wenable_in(wbw_wenable_in),
|
.reset_in(reset_in),
|
.reset_in(reset_in),
|
// .flush_in(wbw_flush_in),
|
////////////////////////////// .flush_in(wbw_flush_in),
|
.almost_full_out(wbw_almost_full_out),
|
.almost_full_out(wbw_almost_full_out),
|
.full_out(wbw_full_out),
|
.full_out(wbw_full_out),
|
.empty_out(wbw_empty),
|
.empty_out(wbw_empty),
|
.waddr_out(wbw_waddr),
|
.waddr_out(wbw_waddr),
|
.raddr_out(wbw_raddr),
|
.raddr_out(wbw_raddr),
|
.rallow_out(wbw_rallow),
|
.rallow_out(wbw_rallow),
|
.wallow_out(wbw_wallow)
|
.wallow_out(wbw_wallow),
|
|
.half_full_out(wbw_half_full_out) ////Robert, burst issue
|
);
|
);
|
|
|
pci_wbr_fifo_control #(WBR_ADDR_LENGTH) wbr_fifo_ctrl
|
pci_wbr_fifo_control #(WBR_ADDR_LENGTH) wbr_fifo_ctrl
|
( .rclock_in(wb_clock_in),
|
( .rclock_in(wb_clock_in),
|
.wclock_in(pci_clock_in),
|
.wclock_in(pci_clock_in),
|