📄 pci_conf_space.v
字号:
////////////////////////////////////////////////////////////////////////// //////// File name: pci_conf_space.v //////// //////// This file is part of the "PCI bridge" project //////// http://www.opencores.org/cores/pci/ //////// //////// Author(s): //////// - tadej@opencores.org //////// - Tadej Markovic //////// //////// 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_conf_space.v,v $// Revision 1.7 2004/01/24 11:54:18 mihad// Update! SPOCI Implemented!//// Revision 1.6 2003/12/28 09:54:48 fr2201// def_wb_imagex_addr_map defined correctly//// Revision 1.5 2003/12/28 09:20:00 fr2201// Reset values for PCI, WB defined (PCI_TAx,WB_BAx,WB_TAx,WB_AMx,WB_BAx_MEM_IO)//// Revision 1.4 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.3 2003/08/14 13:06:02 simons// synchronizer_flop replaced with pci_synchronizer_flop, artisan ram instance updated.//// Revision 1.2 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.1 2003/01/27 16:49:31 mihad// Changed module and file names. Updated scripts accordingly. FIFO synchronizations changed.//// Revision 1.4 2002/08/13 11:03:53 mihad// Added a few testcases. Repaired wrong reset value for PCI_AM5 register. Repaired Parity Error Detected bit setting. Changed PCI_AM0 to always enabled(regardles of PCI_AM0 define), if image 0 is used as configuration image//// 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:28 mihad// Updated all files with inclusion of timescale file for simulation purposes.//// Revision 1.1.1.1 2001/10/02 15:33:46 mihad// New project directory structure////`include "pci_constants.v"// synopsys translate_off`include "timescale.v"// synopsys translate_on/*----------------------------------------------------------------------------------------------------------- w_ prefix is a sign for Write (and read) side of Dual-Port registers r_ prefix is a sign for Read only side of Dual-Port registersIn the first line there are DATA and ADDRESS ports, in the second line there are write enable and readenable signals with chip-select (conf_hit) for config. space.In the third line there are output signlas from Command register of the PCI configuration header !!!In the fourth line there are input signals to Status register of the PCI configuration header !!!In the fifth line there is output from Latency Timer & r_Interrupt pin registers of the PCI conf. header !!!Following are IMAGE specific registers, from which PCI_BASE_ADDR registers are the same as base addressregisters from the PCI conf. header !!!-----------------------------------------------------------------------------------------------------------*/ // normal R/W address, data and controlmodule pci_conf_space ( w_conf_address_in, w_conf_data_in, w_conf_data_out, r_conf_address_in, r_conf_data_out, w_we_i, w_re, r_re, w_byte_en_in, w_clock, reset, pci_clk, wb_clk, // outputs from command register of the PCI header serr_enable, perr_response, pci_master_enable, memory_space_enable, io_space_enable, // inputs to status register of the PCI header perr_in, serr_in, master_abort_recv, target_abort_recv, target_abort_set, master_data_par_err, // output from cache_line_size, latency timer and r_interrupt_pin register of the PCI header cache_line_size_to_pci, cache_line_size_to_wb, cache_lsize_not_zero_to_wb, latency_tim, // output from all pci IMAGE registers pci_base_addr0, pci_base_addr1, pci_base_addr2, pci_base_addr3, pci_base_addr4, pci_base_addr5, pci_memory_io0, pci_memory_io1, pci_memory_io2, pci_memory_io3, pci_memory_io4, pci_memory_io5, pci_addr_mask0, pci_addr_mask1, pci_addr_mask2, pci_addr_mask3, pci_addr_mask4, pci_addr_mask5, pci_tran_addr0, pci_tran_addr1, pci_tran_addr2, pci_tran_addr3, pci_tran_addr4, pci_tran_addr5, pci_img_ctrl0, pci_img_ctrl1, pci_img_ctrl2, pci_img_ctrl3, pci_img_ctrl4, pci_img_ctrl5, // input to pci error control and status register, error address and error data registers pci_error_be, pci_error_bc, pci_error_rty_exp, pci_error_es, pci_error_sig, pci_error_addr, pci_error_data, // output from all wishbone IMAGE registers wb_base_addr0, wb_base_addr1, wb_base_addr2, wb_base_addr3, wb_base_addr4, wb_base_addr5, wb_memory_io0, wb_memory_io1, wb_memory_io2, wb_memory_io3, wb_memory_io4, wb_memory_io5, wb_addr_mask0, wb_addr_mask1, wb_addr_mask2, wb_addr_mask3, wb_addr_mask4, wb_addr_mask5, wb_tran_addr0, wb_tran_addr1, wb_tran_addr2, wb_tran_addr3, wb_tran_addr4, wb_tran_addr5, wb_img_ctrl0, wb_img_ctrl1, wb_img_ctrl2, wb_img_ctrl3, wb_img_ctrl4, wb_img_ctrl5, // input to wb error control and status register, error address and error data registers wb_error_be, wb_error_bc, wb_error_rty_exp, wb_error_es, wb_error_sig, wb_error_addr, wb_error_data, // output from conf. cycle generation register (sddress), int. control register & interrupt output config_addr, icr_soft_res, int_out, // input to interrupt status register isr_sys_err_int, isr_par_err_int, isr_int_prop, pci_init_complete_out, wb_init_complete_out `ifdef PCI_CPCI_HS_IMPLEMENT , pci_cpci_hs_enum_oe_o, pci_cpci_hs_led_oe_o, pci_cpci_hs_es_i `endif `ifdef PCI_SPOCI , spoci_scl_oe_o, spoci_sda_i, spoci_sda_oe_o `endif ) ;/*###########################################################################################################///////////////////////////////////////////////////////////////////////////////////////////////////////////// Input and output ports ======================/////////////////////////////////////////////////////////////////////////////////////////////////////////////###########################################################################################################*/// output dataoutput [31 : 0] w_conf_data_out ;output [31 : 0] r_conf_data_out ;reg [31 : 0] w_conf_data_out ;`ifdef NO_CNF_IMAGE`elsereg [31 : 0] r_conf_data_out ;`endif// input datainput [31 : 0] w_conf_data_in ;wire [31 : 0] w_conf_pdata_reduced ; // reduced data written into PCI image registerswire [31 : 0] w_conf_wdata_reduced ; // reduced data written into WB image registers// input addressinput [11 : 0] w_conf_address_in ;input [11 : 0] r_conf_address_in ;// input control signalsinput w_we_i ;input w_re ;input r_re ;input [3 : 0] w_byte_en_in ;input w_clock ;input reset ;input pci_clk ;input wb_clk ;// PCI header outputs from command registeroutput serr_enable ;output perr_response ;output pci_master_enable ;output memory_space_enable ;output io_space_enable ;// PCI header inputs to status registerinput perr_in ;input serr_in ;input master_abort_recv ;input target_abort_recv ;input target_abort_set ;input master_data_par_err ;// PCI header output from cache_line_size, latency timer and interrupt pinoutput [7 : 0] cache_line_size_to_pci ; // sinchronized to PCI clockoutput [7 : 0] cache_line_size_to_wb ; // sinchronized to WB clockoutput cache_lsize_not_zero_to_wb ; // used in WBU and PCIUoutput [7 : 0] latency_tim ;//output [2 : 0] int_pin ; // only 3 LSbits are important!// PCI output from image registersoutput [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_base_addr0 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_base_addr1 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_base_addr2 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_base_addr3 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_base_addr4 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_base_addr5 ;output pci_memory_io0 ;output pci_memory_io1 ;output pci_memory_io2 ;output pci_memory_io3 ;output pci_memory_io4 ;output pci_memory_io5 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_addr_mask0 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_addr_mask1 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_addr_mask2 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_addr_mask3 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_addr_mask4 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_addr_mask5 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_tran_addr0 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_tran_addr1 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_tran_addr2 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_tran_addr3 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_tran_addr4 ;output [31:(32-`PCI_NUM_OF_DEC_ADDR_LINES)] pci_tran_addr5 ;output [2 : 1] pci_img_ctrl0 ;output [2 : 1] pci_img_ctrl1 ;output [2 : 1] pci_img_ctrl2 ;output [2 : 1] pci_img_ctrl3 ;output [2 : 1] pci_img_ctrl4 ;output [2 : 1] pci_img_ctrl5 ;// PCI input to pci error control and status register, error address and error data registersinput [3 : 0] pci_error_be ;input [3 : 0] pci_error_bc ;input pci_error_rty_exp ;input pci_error_es ;input pci_error_sig ;input [31 : 0] pci_error_addr ;input [31 : 0] pci_error_data ;// WISHBONE output from image registersoutput [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_base_addr0 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_base_addr1 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_base_addr2 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_base_addr3 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_base_addr4 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_base_addr5 ;output wb_memory_io0 ;output wb_memory_io1 ;output wb_memory_io2 ;output wb_memory_io3 ;output wb_memory_io4 ;output wb_memory_io5 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_addr_mask0 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_addr_mask1 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_addr_mask2 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_addr_mask3 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_addr_mask4 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_addr_mask5 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_tran_addr0 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_tran_addr1 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_tran_addr2 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_tran_addr3 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_tran_addr4 ;output [31:(32-`WB_NUM_OF_DEC_ADDR_LINES)] wb_tran_addr5 ;output [2 : 0] wb_img_ctrl0 ;output [2 : 0] wb_img_ctrl1 ;output [2 : 0] wb_img_ctrl2 ;output [2 : 0] wb_img_ctrl3 ;output [2 : 0] wb_img_ctrl4 ;output [2 : 0] wb_img_ctrl5 ;// WISHBONE input to wb error control and status register, error address and error data registers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -