📄 pci_target32_interface.v
字号:
////////////////////////////////////////////////////////////////////////// //////// File name: pci_target32_interface.v //////// //////// This file is part of the "PCI bridge" project //////// http://www.opencores.org/cores/pci/ //////// //////// Author(s): //////// - Tadej Markovic, tadej@opencores.org //////// //////// All additional information is avaliable in the README.txt //////// file. //////// //////// ////////////////////////////////////////////////////////////////////////////// //////// Copyright (C) 2000 Tadej Markovic, tadej@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_target32_interface.v,v $// Revision 1.10 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.9 2003/08/21 20:55:14 tadejm// Corrected bug when writing to FIFO (now it is registered).//// Revision 1.8 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.7 2003/01/27 16:49:31 mihad// Changed module and file names. Updated scripts accordingly. FIFO synchronizations changed.//// Revision 1.6 2003/01/21 16:06:56 mihad// Bug fixes, testcases added.//// Revision 1.5 2002/08/22 13:28:04 mihad// Updated for synthesis purposes. Gate level simulation was failing in some configurations//// Revision 1.4 2002/02/19 16:32:37 mihad// Modified testbench and fixed some bugs//// Revision 1.3 2002/02/01 15:25:12 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 "bus_commands.v"`include "pci_constants.v"// synopsys translate_off`include "timescale.v"// synopsys translate_onmodule pci_target32_interface( // system inputs clk_in, reset_in, // PCI Target side of INTERFACE address_in, addr_claim_out, bc_in, bc0_in, data_in, data_out, be_in, next_be_in, req_in, rdy_in, addr_phase_in, bckp_devsel_in, bckp_trdy_in, bckp_stop_in, last_reg_in, frame_reg_in, fetch_pcir_fifo_in, load_medium_reg_in, sel_fifo_mreg_in, sel_conf_fifo_in, load_to_pciw_fifo_in, load_to_conf_in, same_read_out, norm_access_to_config_out, read_completed_out, read_processing_out, target_abort_out, disconect_wo_data_out, disconect_w_data_out, pciw_fifo_full_out, pcir_fifo_data_err_out, wbw_fifo_empty_out, wbu_del_read_comp_pending_out, // Delayed synchronizacion module signals req_out, done_out, in_progress_out, req_req_pending_in, req_comp_pending_in, addr_out, be_out, we_out, bc_out, burst_ok_out, strd_addr_in, strd_bc_in, status_in, comp_flush_in, // FIFO signals pcir_fifo_renable_out, pcir_fifo_data_in, pcir_fifo_be_in, pcir_fifo_control_in, pcir_fifo_flush_out, pcir_fifo_almost_empty_in, pcir_fifo_empty_in, pciw_fifo_wenable_out, pciw_fifo_addr_data_out, pciw_fifo_cbe_out, pciw_fifo_control_out, pciw_fifo_three_left_in, pciw_fifo_two_left_in, pciw_fifo_almost_full_in, pciw_fifo_full_in, wbw_fifo_empty_in, wbu_del_read_comp_pending_in, // Configuration space signals conf_addr_out, conf_data_out, conf_data_in, conf_be_out, conf_we_out, conf_re_out, mem_enable_in, io_enable_in, mem_io_addr_space0_in, mem_io_addr_space1_in, mem_io_addr_space2_in, mem_io_addr_space3_in, mem_io_addr_space4_in, mem_io_addr_space5_in, pre_fetch_en0_in, pre_fetch_en1_in, pre_fetch_en2_in, pre_fetch_en3_in, pre_fetch_en4_in, pre_fetch_en5_in, pci_base_addr0_in, pci_base_addr1_in, pci_base_addr2_in, pci_base_addr3_in, pci_base_addr4_in, pci_base_addr5_in, pci_addr_mask0_in, pci_addr_mask1_in, pci_addr_mask2_in, pci_addr_mask3_in, pci_addr_mask4_in, pci_addr_mask5_in, pci_tran_addr0_in, pci_tran_addr1_in, pci_tran_addr2_in, pci_tran_addr3_in, pci_tran_addr4_in, pci_tran_addr5_in, addr_tran_en0_in, addr_tran_en1_in, addr_tran_en2_in, addr_tran_en3_in, addr_tran_en4_in, addr_tran_en5_in) ;/*==================================================================================================================System inputs.==================================================================================================================*/// PCI side clock and resetinput clk_in, reset_in ;/*==================================================================================================================Side of the PCI Target state machine==================================================================================================================*/// Data, byte enables, bus commands and address portsinput [31:0] address_in ; // current request address input - registeredoutput addr_claim_out ; // current request address claim outputinput [3:0] bc_in ; // current request bus command input - registeredinput bc0_in ; // current cycle RW signaloutput [31:0] data_out ; // for read operations - current dataphase data outputinput [31:0] data_in ; // for write operations - current request data input - registeredinput [3:0] be_in ; // current dataphase byte enable inputs - registeredinput [3:0] next_be_in ; // next dataphase byte enable inputs - NOT registered// Port connection control signals from PCI FSMinput req_in ; // Read is requested to WB master from PCI sideinput rdy_in ; // DATA / ADDRESS selection from PCI side when read or write - registeredinput addr_phase_in ; // Indicates address phase and also fast-back-to-back address phase - registeredinput bckp_devsel_in ; // DEVSEL input (which is registered) equivalentinput bckp_trdy_in ; // TRDY input (which is registered) equivalentinput bckp_stop_in ; // STOP input (which is registered) equivalentinput last_reg_in ; // Indicates last data phase - registeredinput frame_reg_in ; // FRAME input signal - registeredinput fetch_pcir_fifo_in ;// Read enable for PCIR_FIFO when when read is finishen on WB sideinput load_medium_reg_in ;// Load data from PCIR_FIFO to medium register (first data must be prepared on time)input sel_fifo_mreg_in ; // Read data selection between PCIR_FIFO and medium registerinput sel_conf_fifo_in ; // Read data selection between Configuration registers and "FIFO"input load_to_pciw_fifo_in ;// Write enable to PCIW_FIFOinput load_to_conf_in ; // Write enable to Configuration space registers/*==================================================================================================================Status outputs to PCI side (FSM)==================================================================================================================*/output same_read_out ; // Indicates the same read request (important when read is finished on WB side)output norm_access_to_config_out ; // Indicates the access to Configuration space with MEMORY commandsoutput read_completed_out ; // Indicates that read request is completed on WB sideoutput read_processing_out ; // Indicates that read request is processing on WB sideoutput target_abort_out ; // Indicates target abort terminationoutput disconect_wo_data_out ; // Indicates disconnect without data terminationoutput disconect_w_data_out ; // Indicates disconnect with data terminationoutput pciw_fifo_full_out ; // Indicates that write PCIW_FIFO is fulloutput pcir_fifo_data_err_out ; // Indicates data error on current data read from PCIR_FIFOoutput wbw_fifo_empty_out ; // Indicates that WB SLAVE has no data to be written to PCI busoutput wbu_del_read_comp_pending_out ; // Indicates that WB Unit has a delayed read poending!/*==================================================================================================================Read request interface through Delayed sinchronization module to WB Master==================================================================================================================*/// request, completion, done and progress indicator outputs for delayed_sync module where they are synchronizedoutput req_out, // request qualifier - when 1 it indicates that valid data is provided on outputs done_out, // done output - when 1 indicates that PCI Target has completed a cycle on its bus in_progress_out ; // out progress indicator - indicates that current completion is in progress on // PCI Target side// pending indication inputs - PCI Target side must know about requests and completionsinput req_req_pending_in ; // request pending input for PCI Target sideinput req_comp_pending_in ; // completion pending input for PCI Target side - it indicates when completion // is ready for completing on PCI Target bus// various data outputs - PCI Target sets address, bus command, byte enables, write enable and burstoutput [31:0] addr_out ; // address bus outputoutput [3:0] be_out ; // byte enable outputoutput we_out ; // write enable output - read/write request indication 1 = write request / 0 = read requestoutput [3:0] bc_out ; // bus command outputoutput burst_ok_out ; // pre-fetch enable & burst read - qualifies pre-fetch for access to current image space// completion side signals encoded termination status - 0 = normal completion / 1 = error terminated completioninput [31:0] strd_addr_in ; // Stored requested read access addressinput [3:0] strd_bc_in ; // Stored requested read access bus commandinput status_in ; // Error status reported - NOT USED because FIFO control bits determin data error statusinput comp_flush_in ; // If completition counter (2^16 clk periods) has expired, PCIR_FIFO must flush data/*==================================================================================================================PCIR_PCIW_FIFO signals from pci side==================================================================================================================*/// PCIR_FIFO control signals used for fetching data from PCIR_FIFOoutput pcir_fifo_renable_out ; // read enable output to PCIR_FIFOinput [31:0] pcir_fifo_data_in ; // data input from PCIR_FIFOinput [3:0] pcir_fifo_be_in ; // byte enable input from PCIR_FIFOinput [3:0] pcir_fifo_control_in ; // control signals input from PCIR_FIFOoutput pcir_fifo_flush_out ; // flush PCIR_FIFOinput pcir_fifo_almost_empty_in ; // almost empty indicator from PCIR_FIFOinput pcir_fifo_empty_in ; // empty indicator// PCIW_FIFO control signals used for sinking data into PCIW_FIFO and status monitoringoutput pciw_fifo_wenable_out ; // write enable output to PCIW_FIFOwire pciw_fifo_wenable ; // not registered weoutput [31:0] pciw_fifo_addr_data_out ; // address / data output signals to PCIW_FIFOoutput [3:0] pciw_fifo_cbe_out ; // command / byte enable signals to PCIW_FIFOoutput [3:0] pciw_fifo_control_out ; // control signals to PCIW_FIFOinput pciw_fifo_three_left_in ; // three data spaces left in PCIW_FIFOinput pciw_fifo_two_left_in ; // two data spaces left in PCIW_FIFOinput pciw_fifo_almost_full_in ; // almost full indicator from PCIW_FIFOinput pciw_fifo_full_in ; // full indicator from PCIW_FIFO// WBW_FIFO empy control signal used when delayed read is complete in PCIR_FIFOinput wbw_fifo_empty_in ; // empty indicator from WBW_FIFOinput wbu_del_read_comp_pending_in ; // delayed read pending indicator from WB Unit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -