📄 pci_pciw_pcir_fifos.v
字号:
////////////////////////////////////////////////////////////////////////// //////// File name "pciw_pcir_fifos.v" //////// //////// This file is part of the "PCI bridge" project //////// http://www.opencores.org/cores/pci/ //////// //////// Author(s): //////// - Miha Dolenc (mihad@opencores.org) //////// //////// All additional information is avaliable in the README //////// file. //////// //////// ////////////////////////////////////////////////////////////////////////////// //////// Copyright (C) 2000 Miha Dolenc, mihad@opencores.org //////// //////// 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 source file is free software; you can redistribute it //////// and/or modify it under the terms of the GNU Lesser General //////// Public License as published by the Free Software Foundation; //////// either version 2.1 of the License, or (at your option) any //////// later version. //////// //////// This source is distributed in the hope that it will be //////// useful, but WITHOUT ANY WARRANTY; without even the implied //////// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //////// PURPOSE. See the GNU Lesser General Public License for more //////// details. //////// //////// You should have received a copy of the GNU Lesser General //////// Public License along with this source; if not, download it //////// from http://www.opencores.org/lgpl.shtml //////// ////////////////////////////////////////////////////////////////////////////// CVS Revision History//// $Log: pci_pciw_pcir_fifos.v,v $// Revision 1.6 2003/10/17 09:11:52 markom// mbist signals updated according to newest convention//// Revision 1.5 2003/08/14 13:06:03 simons// synchronizer_flop replaced with pci_synchronizer_flop, artisan ram instance updated.//// Revision 1.4 2003/08/08 16:36:33 tadejm// Added 'three_left_out' to pci_pciw_fifo signaling three locations before full. Added comparison between current registered cbe and next unregistered cbe to signal wb_master whether it is allowed to performe burst or not. Due to this, I needed 'three_left_out' so that writing to pci_pciw_fifo can be registered, otherwise timing problems would occure.//// Revision 1.3 2003/03/26 13:16:18 mihad// Added the reset value parameter to the synchronizer flop module.// Added resets to all synchronizer flop instances.// Repaired initial sync value in fifos.//// Revision 1.2 2003/01/30 22:01:08 mihad// Updated synchronization in top level fifo modules.//// Revision 1.1 2003/01/27 16:49:31 mihad// Changed module and file names. Updated scripts accordingly. FIFO synchronizations changed.//// Revision 1.10 2002/10/18 03:36:37 tadejm// Changed wrong signal name mbist_sen into mbist_ctrl_i.//// Revision 1.9 2002/10/17 22:51:08 tadejm// Changed BIST signals for RAMs.//// Revision 1.8 2002/10/11 10:09:01 mihad// Added additional testcase and changed rst name in BIST to trst//// Revision 1.7 2002/10/08 17:17:06 mihad// Added BIST signals for RAMs.//// Revision 1.6 2002/09/30 16:03:04 mihad// Added meta flop module for easier meta stable FF identification during synthesis//// Revision 1.5 2002/09/25 15:53:52 mihad// Removed all logic from asynchronous reset network//// Revision 1.4 2002/03/05 11:53:47 mihad// Added some testcases, removed un-needed fifo signals//// Revision 1.3 2002/02/01 15:25:13 mihad// Repaired a few bugs, updated specification, added test bench files and design document//// Revision 1.2 2001/10/05 08:14:30 mihad// Updated all files with inclusion of timescale file for simulation purposes.//// Revision 1.1.1.1 2001/10/02 15:33:47 mihad// New project directory structure////`include "pci_constants.v"// synopsys translate_off`include "timescale.v"// synopsys translate_onmodule pci_pciw_pcir_fifos( wb_clock_in, pci_clock_in, reset_in, pciw_wenable_in, pciw_addr_data_in, pciw_cbe_in, pciw_control_in, pciw_renable_in, pciw_addr_data_out, pciw_cbe_out, pciw_control_out,// pciw_flush_in, // not used pciw_three_left_out, pciw_two_left_out, pciw_almost_full_out, pciw_full_out, pciw_almost_empty_out, pciw_empty_out, pciw_transaction_ready_out, pcir_wenable_in, pcir_data_in, pcir_be_in, pcir_control_in, pcir_renable_in, pcir_data_out, pcir_be_out, pcir_control_out, pcir_flush_in, pcir_full_out, pcir_almost_empty_out, pcir_empty_out, pcir_transaction_ready_out`ifdef PCI_BIST , // debug chain signals mbist_si_i, // bist scan serial in mbist_so_o, // bist scan serial out mbist_ctrl_i // bist chain shift control`endif) ;/*-----------------------------------------------------------------------------------------------------------System inputs:wb_clock_in - WISHBONE bus clockpci_clock_in - PCI bus clockreset_in - reset from control logic-------------------------------------------------------------------------------------------------------------*/input wb_clock_in, pci_clock_in, reset_in ;/*-----------------------------------------------------------------------------------------------------------PCI WRITE FIFO interface signals prefixed with pciw_ - FIFO is used for posted writes initiated by externalPCI master through PCI target interface, traveling through FIFO and are completed on WISHBONE byWISHBONE master interfacewrite enable signal:pciw_wenable_in = write enable input for PCIW_FIFO - driven by PCI TARGET interfacedata input signals:pciw_addr_data_in = data input - data from PCI bus - first entry of transaction is address others are data entriespciw_cbe_in = bus command/byte enable(~#BE[3:0]) input - first entry of transaction is bus command, other are byte enablespciw_control_in = control input - encoded control bus inputread enable signal:pciw_renable_in = read enable input driven by WISHBONE master interfacedata output signals:pciw_addr_data_out = data output - data from PCI bus - first entry of transaction is address, others are data entriespciw_cbe_out = bus command/byte enable output - first entry of transaction is bus command, others are byte enablespciw_control_out = control input - encoded control bus inputstatus signals - monitored by various resources in the corepciw_flush_in = flush signal input for PCIW_FIFO - when asserted, fifo is flushed(emptied)pciw_almost_full_out = almost full output from PCIW_FIFOpciw_full_out = full output from PCIW_FIFOpciw_almost_empty_out = almost empty output from PCIW_FIFOpciw_empty_out = empty output from PCIW_FIFOpciw_transaction_ready_out = output indicating that one complete transaction is waiting in PCIW_FIFO-----------------------------------------------------------------------------------------------------------*/// input control and datainput pciw_wenable_in ;input [31:0] pciw_addr_data_in ;input [3:0] pciw_cbe_in ;input [3:0] pciw_control_in ;// output control and datainput pciw_renable_in ;output [31:0] pciw_addr_data_out ;output [3:0] pciw_cbe_out ;output [3:0] pciw_control_out ;// flush input//input pciw_flush_in ; // not used// status outputsoutput pciw_three_left_out ;output pciw_two_left_out ;output pciw_almost_full_out ;output pciw_full_out ;output pciw_almost_empty_out ;output pciw_empty_out ;output pciw_transaction_ready_out ;/*-----------------------------------------------------------------------------------------------------------PCI READ FIFO interface signals prefixed with pcir_ - FIFO is used for holding delayed read completionsinitiated by master on PCI bus and completed on WISHBONE bus,write enable signal:pcir_wenable_in = write enable input for PCIR_FIFO - driven by WISHBONE master interfacedata input signals:pcir_data_in = data input - data from WISHBONE bus - there is no address entry here, since address is stored in separate registerpcir_be_in = byte enable(~SEL[3:0]) input - byte enables - same through one transactionpcir_control_in = control input - encoded control bus inputread enable signal:pcir_renable_in = read enable input driven by PCI target interfacedata output signals:pcir_data_out = data output - data from WISHBONE buspcir_be_out = byte enable output(~SEL)pcir_control_out = control output - encoded control bus outputstatus signals - monitored by various resources in the corepcir_flush_in = flush signal input for PCIR_FIFO - when asserted, fifo is flushed(emptied)pcir full_out = full output from PCIR_FIFOpcir_almost_empty_out = almost empty output from PCIR_FIFOpcir_empty_out = empty output from PCIR_FIFOpcir_transaction_ready_out = output indicating that one complete transaction is waiting in PCIR_FIFO-----------------------------------------------------------------------------------------------------------*/// input control and datainput pcir_wenable_in ;input [31:0] pcir_data_in ;input [3:0] pcir_be_in ;input [3:0] pcir_control_in ;// output control and datainput pcir_renable_in ;output [31:0] pcir_data_out ;output [3:0] pcir_be_out ;output [3:0] pcir_control_out ;// flush inputinput pcir_flush_in ;// status outputsoutput pcir_full_out ;output pcir_almost_empty_out ;output pcir_empty_out ;output pcir_transaction_ready_out ;`ifdef PCI_BIST/*-----------------------------------------------------BIST debug chain port signals-----------------------------------------------------*/input mbist_si_i; // bist scan serial inoutput mbist_so_o; // bist scan serial outinput [`PCI_MBIST_CTRL_WIDTH - 1:0] mbist_ctrl_i; // bist chain shift control`endif/*-----------------------------------------------------------------------------------------------------------Address length parameters:PCIW_DEPTH = defines PCIW_FIFO depthPCIR_DEPTH = defines PCIR_FIFO depthPCIW_ADDR_LENGTH = defines PCIW_FIFO's location address length - log2(PCIW_DEPTH)PCIR_ADDR_LENGTH = defines PCIR_FIFO's location address length - log2(PCIR_DEPTH)-----------------------------------------------------------------------------------------------------------*/parameter PCIW_DEPTH = `PCIW_DEPTH ;parameter PCIW_ADDR_LENGTH = `PCIW_ADDR_LENGTH ;parameter PCIR_DEPTH = `PCIR_DEPTH ;parameter PCIR_ADDR_LENGTH = `PCIR_ADDR_LENGTH ;/*-----------------------------------------------------------------------------------------------------------pciw_wallow = PCIW_FIFO write allow wire - writes to FIFO are allowed when FIFO isn't full and write enable is 1pciw_rallow = PCIW_FIFO read allow wire - reads from FIFO are allowed when FIFO isn't empty and read enable is 1-----------------------------------------------------------------------------------------------------------*/wire pciw_wallow ;wire pciw_rallow ;/*-----------------------------------------------------------------------------------------------------------pcir_wallow = PCIR_FIFO write allow wire - writes to FIFO are allowed when FIFO isn't full and write enable is 1pcir_rallow = PCIR_FIFO read allow wire - reads from FIFO are allowed when FIFO isn't empty and read enable is 1-----------------------------------------------------------------------------------------------------------*/wire pcir_wallow ;wire pcir_rallow ;/*-----------------------------------------------------------------------------------------------------------wires for address port conections from PCIW_FIFO control logic to RAM blocks used for PCIW_FIFO-----------------------------------------------------------------------------------------------------------*/wire [(PCIW_ADDR_LENGTH - 1):0] pciw_raddr ;wire [(PCIW_ADDR_LENGTH - 1):0] pciw_waddr ;/*-----------------------------------------------------------------------------------------------------------wires for address port conections from PCIR_FIFO control logic to RAM blocks used for PCIR_FIFO-----------------------------------------------------------------------------------------------------------*/wire [(PCIR_ADDR_LENGTH - 1):0] pcir_raddr ;wire [(PCIR_ADDR_LENGTH - 1):0] pcir_waddr ;/*-----------------------------------------------------------------------------------------------------------PCIW_FIFO transaction counters: used to count incoming transactions and outgoing transactions. When number ofinput transactions is equal to number of output transactions, it means that there isn't any complete transactioncurrently present in the FIFO.-----------------------------------------------------------------------------------------------------------*/reg [(PCIW_ADDR_LENGTH - 1):0] pciw_inTransactionCount ;reg [(PCIW_ADDR_LENGTH - 1):0] pciw_outTransactionCount ;/*-----------------------------------------------------------------------------------------------------------FlipFlops for indicating if complete delayed read completion is present in the FIFO-----------------------------------------------------------------------------------------------------------*//*reg pcir_inTransactionCount ;reg pcir_outTransactionCount ;*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -