]> git.zerfleddert.de Git - raggedstone/blame - ethernet/source/pci/pci_target32_sm.v
+= use xilinx block ram for ethernet
[raggedstone] / ethernet / source / pci / pci_target32_sm.v
Content-type: text/html ]> git.zerfleddert.de Git - raggedstone/blame - ethernet/source/pci/pci_target32_sm.v


500 - Internal Server Error

Malformed UTF-8 character (fatal) at (eval 6) line 1, <$fd> line 526.
Impressum, Datenschutz
CommitLineData
40a1f26c 1//////////////////////////////////////////////////////////////////////
2//// ////
3//// File name: pci_target32_sm.v ////
4//// ////
5//// This file is part of the "PCI bridge" project ////
6//// http://www.opencores.org/cores/pci/ ////
7//// ////
8//// Author(s): ////
9//// - Tadej Markovic, tadej@opencores.org ////
10//// ////
11//// All additional information is avaliable in the README.txt ////
12//// file. ////
13//// ////
14//// ////
15//////////////////////////////////////////////////////////////////////
16//// ////
17//// Copyright (C) 2000 Tadej Markovic, tadej@opencores.org ////
18//// ////
19//// This source file may be used and distributed without ////
20//// restriction provided that this copyright statement is not ////
21//// removed from the file and that any derivative work contains ////
22//// the original copyright notice and the associated disclaimer. ////
23//// ////
24//// This source file is free software; you can redistribute it ////
25//// and/or modify it under the terms of the GNU Lesser General ////
26//// Public License as published by the Free Software Foundation; ////
27//// either version 2.1 of the License, or (at your option) any ////
28//// later version. ////
29//// ////
30//// This source is distributed in the hope that it will be ////
31//// useful, but WITHOUT ANY WARRANTY; without even the implied ////
32//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////
33//// PURPOSE. See the GNU Lesser General Public License for more ////
34//// details. ////
35//// ////
36//// You should have received a copy of the GNU Lesser General ////
37//// Public License along with this source; if not, download it ////
38//// from http://www.opencores.org/lgpl.shtml ////
39//// ////
40//////////////////////////////////////////////////////////////////////
41//
42// CVS Revision History
43//
44// $Log: pci_target32_sm.v,v $
45// Revision 1.1 2007-03-20 17:50:56 sithglan
46// add shit
47//
48// Revision 1.11 2003/12/19 11:11:30 mihad
49// Compact PCI Hot Swap support added.
50// New testcases added.
51// Specification updated.
52// Test application changed to support WB B3 cycles.
53//
54// Revision 1.10 2003/08/08 16:36:33 tadejm
55// 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.
56//
57// Revision 1.9 2003/01/27 16:49:31 mihad
58// Changed module and file names. Updated scripts accordingly. FIFO synchronizations changed.
59//
60// Revision 1.8 2003/01/21 16:06:56 mihad
61// Bug fixes, testcases added.
62//
63// Revision 1.7 2002/09/24 19:09:17 mihad
64// Number of state bits define was removed
65//
66// Revision 1.6 2002/09/24 18:30:00 mihad
67// Changed state machine encoding to true one-hot
68//
69// Revision 1.5 2002/08/22 09:07:06 mihad
70// Fixed a bug and provided testcase for it. Target was responding to configuration cycle type 1 transactions.
71//
72// Revision 1.4 2002/02/19 16:32:37 mihad
73// Modified testbench and fixed some bugs
74//
75// Revision 1.3 2002/02/01 15:25:12 mihad
76// Repaired a few bugs, updated specification, added test bench files and design document
77//
78// Revision 1.2 2001/10/05 08:14:30 mihad
79// Updated all files with inclusion of timescale file for simulation purposes.
80//
81// Revision 1.1.1.1 2001/10/02 15:33:47 mihad
82// New project directory structure
83//
84//
85
86`include "pci_constants.v"
87
88// synopsys translate_off
89`include "timescale.v"
90// synopsys translate_on
91
92module pci_target32_sm
93(
94 // system inputs
95 clk_in,
96 reset_in,
97 // master inputs
98 pci_frame_in,
99 pci_irdy_in,
100 pci_idsel_in,
101 pci_frame_reg_in,
102 pci_irdy_reg_in,
103 pci_idsel_reg_in,
104 // target response outputs
105 pci_trdy_out,
106 pci_stop_out,
107 pci_devsel_out,
108 pci_trdy_en_out,
109 pci_stop_en_out,
110 pci_devsel_en_out,
111 ad_load_out,
112 ad_load_on_transfer_out,
113 // address, data, bus command, byte enable in/outs
114 pci_ad_reg_in,
115 pci_ad_out,
116 pci_ad_en_out,
117 pci_cbe_reg_in,
118 pci_cbe_in,
119 bckp_trdy_en_in,
120 bckp_devsel_in,
121 bckp_trdy_in,
122 bckp_stop_in,
123 pci_trdy_reg_in,
124 pci_stop_reg_in,
125
126 // backend side of state machine with control signals to pci_io_mux ...
127 address_out,
128 addr_claim_in,
129 bc_out,
130 bc0_out,
131 data_out,
132 data_in,
133 be_out,
134 next_be_out,
135 req_out,
136 rdy_out,
137 addr_phase_out,
138 bckp_devsel_out,
139 bckp_trdy_out,
140 bckp_stop_out,
141 last_reg_out,
142 frame_reg_out,
143 fetch_pcir_fifo_out,
144 load_medium_reg_out,
145 sel_fifo_mreg_out,
146 sel_conf_fifo_out,
147 load_to_pciw_fifo_out,
148 load_to_conf_out,
149 same_read_in,
150 norm_access_to_config_in,
151 read_completed_in,
152 read_processing_in,
153 target_abort_in,
154 disconect_wo_data_in,
155 disconect_w_data_in,
156 target_abort_set_out,
157 pciw_fifo_full_in,
158 pcir_fifo_data_err_in,
159 wbw_fifo_empty_in,
160 wbu_del_read_comp_pending_in,
161 wbu_frame_en_in
162
163) ;
164
165/*----------------------------------------------------------------------------------------------------------------------
166Various parameters needed for state machine and other stuff
167----------------------------------------------------------------------------------------------------------------------*/
168parameter S_IDLE = 3'b001 ;
169parameter S_WAIT = 3'b010 ;
170parameter S_TRANSFERE = 3'b100 ;
171
172
173/*==================================================================================================================
174System inputs.
175==================================================================================================================*/
176// PCI side clock and reset
177input clk_in,
178 reset_in ;
179
180
181/*==================================================================================================================
182PCI interface signals - bidirectional signals are divided to inputs and outputs in I/O cells instantiation
183module. Enables are separate signals.
184==================================================================================================================*/
185// master inputs
186input pci_frame_in,
187 pci_irdy_in,
188 pci_idsel_in ;
189input pci_frame_reg_in,
190 pci_irdy_reg_in,
191 pci_idsel_reg_in ;
192
193// target response outputs
194output pci_trdy_out,
195 pci_stop_out,
196 pci_devsel_out ;
197output pci_trdy_en_out,
198 pci_stop_en_out,
199 pci_devsel_en_out ;
200output ad_load_out ;
201output ad_load_on_transfer_out ;
202// address, data, bus command, byte enable in/outs
203input [31:0] pci_ad_reg_in ;
204output [31:0] pci_ad_out ;
205output pci_ad_en_out ;
206input [3:0] pci_cbe_reg_in ;
207input [3:0] pci_cbe_in ;
208input bckp_trdy_en_in ;
209input bckp_devsel_in ;
210input bckp_trdy_in ;
211input bckp_stop_in ;
212input pci_trdy_reg_in ;
213input pci_stop_reg_in ;
214
215
216/*==================================================================================================================
217Other side of PCI Target state machine
218==================================================================================================================*/
219// Data, byte enables, bus commands and address ports
220output [31:0] address_out ; // current request address output - registered
221input addr_claim_in ; // current request address claim input
222output [3:0] bc_out ; // current request bus command output - registered
223output bc0_out ; // current cycle RW signal output
224input [31:0] data_in ; // for read operations - current dataphase data input
225output [31:0] data_out ; // for write operations - current request data output - registered
226output [3:0] be_out ; // current dataphase byte enable outputs - registered
227output [3:0] next_be_out ; // next dataphase byte enable outputs - NOT registered
228// Port connection control signals from PCI FSM
229output req_out ; // Read is requested to WB master
230output rdy_out ; // DATA / ADDRESS selection when read or write - registered
231output addr_phase_out ; // Indicates address phase and also fast-back-to-back address phase - registered
232output bckp_devsel_out ; // DEVSEL output (which is registered) equivalent
233output bckp_trdy_out ; // TRDY output (which is registered) equivalent
234output bckp_stop_out ; // STOP output (which is registered) equivalent
235output last_reg_out ; // Indicates last data phase - registered
236output frame_reg_out ; // FRAME output signal - registered
237output fetch_pcir_fifo_out ;// Read enable for PCIR_FIFO when when read is finishen on WB side
238output load_medium_reg_out ;// Load data from PCIR_FIFO to medium register (first data must be prepared on time)
239output sel_fifo_mreg_out ; // Read data selection between PCIR_FIFO and medium register
240output sel_conf_fifo_out ; // Read data selection between Configuration registers and "FIFO"
241output load_to_pciw_fifo_out ;// Write enable to PCIW_FIFO
242output load_to_conf_out ; // Write enable to Configuration space registers
243
244
245/*==================================================================================================================
246Status
247==================================================================================================================*/
248input same_read_in ; // Indicates the same read request (important when read is finished on WB side)
249input norm_access_to_config_in ; // Indicates the access to Configuration space with MEMORY commands
250input read_completed_in ; // Indicates that read request is completed on WB side
251input read_processing_in ; // Indicates that read request is processing on WB side
252input target_abort_in ; // Indicates target abort termination
253input disconect_wo_data_in ; // Indicates disconnect without data termination
254input disconect_w_data_in ; // Indicates disconnect with data termination
255input pciw_fifo_full_in ; // Indicates that write PCIW_FIFO is full
256input pcir_fifo_data_err_in ; // Indicates data error on current data read from PCIR_FIFO
257input wbw_fifo_empty_in ; // Indicates that WB SLAVE UNIT has no data to be written to PCI bus
258