1 |
14 |
mjlyons |
TABLE OF CONTENTS
|
2 |
|
|
1) Peripheral Summary
|
3 |
|
|
2) Description of Generated Files
|
4 |
|
|
3) Description of Used IPIC Signals
|
5 |
|
|
4) Description of Top Level Generics
|
6 |
|
|
|
7 |
|
|
|
8 |
|
|
================================================================================
|
9 |
|
|
* 1) Peripheral Summary *
|
10 |
|
|
================================================================================
|
11 |
|
|
Peripheral Summary:
|
12 |
|
|
|
13 |
|
|
XPS project / EDK repository : C:\Users\mjlyons\workspace\vSPI\projnav\xps
|
14 |
|
|
logical library name : spiifc_v1_00_a
|
15 |
|
|
top name : spiifc
|
16 |
|
|
version : 1.00.a
|
17 |
|
|
type : PLB (v4.6) slave
|
18 |
|
|
features : slave attachment
|
19 |
|
|
interrupt control
|
20 |
|
|
user s/w registers
|
21 |
|
|
user memory spaces
|
22 |
|
|
|
23 |
|
|
Address Block for User Logic and IPIF Predefined Services
|
24 |
|
|
|
25 |
|
|
user logic slave space : C_BASEADDR + 0x00000000
|
26 |
|
|
: C_BASEADDR + 0x000000FF
|
27 |
|
|
interrupt control space : C_BASEADDR + 0x00000100
|
28 |
|
|
: C_BASEADDR + 0x000001FF
|
29 |
|
|
User logic memory space 0 : C_MEM0_BASEADDR
|
30 |
|
|
: C_MEM0_HIGHADDR
|
31 |
|
|
User logic memory space 1 : C_MEM1_BASEADDR
|
32 |
|
|
: C_MEM1_HIGHADDR
|
33 |
|
|
|
34 |
|
|
|
35 |
|
|
================================================================================
|
36 |
|
|
* 2) Description of Generated Files *
|
37 |
|
|
================================================================================
|
38 |
|
|
- HDL source file(s)
|
39 |
|
|
|
40 |
|
|
hdl/vhdl/spiifc.vhd
|
41 |
|
|
|
42 |
|
|
This is the template file for your peripheral's top design entity. It
|
43 |
|
|
configures and instantiates the corresponding design units in the way you
|
44 |
|
|
indicated in the wizard GUI and hooks it up to the stub user logic where
|
45 |
|
|
the actual functionalites should get implemented. You are not expected to
|
46 |
|
|
modify this template file except certain marked places for adding user
|
47 |
|
|
specific generics and ports.
|
48 |
|
|
|
49 |
|
|
verilog/user_logic.v
|
50 |
|
|
|
51 |
|
|
This is the template file for the stub user logic design entity, either in
|
52 |
|
|
VHDL or Verilog, where the actual functionalities should get implemented.
|
53 |
|
|
Some sample code snippet may be provided for demonstration purpose.
|
54 |
|
|
|
55 |
|
|
- XPS interface file(s)
|
56 |
|
|
|
57 |
|
|
data/spiifc_v2_1_0.mpd
|
58 |
|
|
|
59 |
|
|
This Microprocessor Peripheral Description file contains information of the
|
60 |
|
|
interface of your peripheral, so that other EDK tools can recognize your
|
61 |
|
|
peripheral.
|
62 |
|
|
|
63 |
|
|
data/spiifc_v2_1_0.pao
|
64 |
|
|
|
65 |
|
|
This Peripheral Analysis Order file defines the analysis order of all the HDL
|
66 |
|
|
source files that are used to compile your peripheral.
|
67 |
|
|
|
68 |
|
|
- ISE project file(s)
|
69 |
|
|
|
70 |
|
|
devl/projnav/spiifc.ise
|
71 |
|
|
|
72 |
|
|
This is the ProjNavigator project file. It sets up the needed logical
|
73 |
|
|
libraries and dependent library files for you to help you develop your
|
74 |
|
|
peripheral using ProjNavigator.
|
75 |
|
|
|
76 |
|
|
devl/projnav/spiifc.cli
|
77 |
|
|
|
78 |
|
|
This is the TCL command line file used to generate the .ise file.
|
79 |
|
|
|
80 |
|
|
- XST synthesis file(s)
|
81 |
|
|
|
82 |
|
|
devl/synthesis/spiifc_xst.scr
|
83 |
|
|
|
84 |
|
|
This is the XST synthesis script file to compile your peripheral.
|
85 |
|
|
Note: you may want to modify the device part option for your target.
|
86 |
|
|
|
87 |
|
|
devl/synthesis/spiifc_xst.prj
|
88 |
|
|
|
89 |
|
|
This is the XST synthesis project file used by the above script file to
|
90 |
|
|
compile your peripheral.
|
91 |
|
|
|
92 |
|
|
- Driver source file(s)
|
93 |
|
|
|
94 |
|
|
src/spiifc.h
|
95 |
|
|
|
96 |
|
|
This is the software driver header template file, which contains address offset of
|
97 |
|
|
software addressable registers in your peripheral, as well as some common masks and
|
98 |
|
|
simple register access macros or function declaration.
|
99 |
|
|
|
100 |
|
|
src/spiifc.c
|
101 |
|
|
|
102 |
|
|
This is the software driver source template file, to define all applicable driver
|
103 |
|
|
functions.
|
104 |
|
|
|
105 |
|
|
src/spiifc_selftest.c
|
106 |
|
|
|
107 |
|
|
This is the software driver self test example file, which contain self test example
|
108 |
|
|
code to test various hardware features of your peripheral.
|
109 |
|
|
|
110 |
|
|
src/Makefile
|
111 |
|
|
|
112 |
|
|
This is the software driver makefile to compile drivers.
|
113 |
|
|
|
114 |
|
|
- Driver interface file(s)
|
115 |
|
|
-user needs to add these to repositories path in SDK (Xilinx Tools-->Repositories)
|
116 |
|
|
|
117 |
|
|
data/spiifc_v2_1_0.mdd
|
118 |
|
|
|
119 |
|
|
This is the Microprocessor Driver Definition file.
|
120 |
|
|
|
121 |
|
|
data/spiifc_v2_1_0.tcl
|
122 |
|
|
|
123 |
|
|
This is the Microprocessor Driver Command file.
|
124 |
|
|
|
125 |
|
|
- Other misc file(s)
|
126 |
|
|
|
127 |
|
|
devl/ipwiz.opt
|
128 |
|
|
|
129 |
|
|
This is the option setting file for the wizard batch mode, which should
|
130 |
|
|
generate the same result as the wizard GUI mode.
|
131 |
|
|
|
132 |
|
|
devl/README.txt
|
133 |
|
|
|
134 |
|
|
This README file for your peripheral.
|
135 |
|
|
|
136 |
|
|
devl/ipwiz.log
|
137 |
|
|
|
138 |
|
|
This is the log file by operating on this wizard.
|
139 |
|
|
|
140 |
|
|
|
141 |
|
|
================================================================================
|
142 |
|
|
* 3) Description of Used IPIC Signals *
|
143 |
|
|
================================================================================
|
144 |
|
|
For more information (usage, timing diagrams, etc.) regarding the IPIC signals
|
145 |
|
|
used in the templates, please refer to the following specifications:
|
146 |
|
|
proc_common_v3_00_a
|
147 |
|
|
No documentation for this library
|
148 |
|
|
|
149 |
|
|
plbv46_slave_burst_v1_01_a
|
150 |
|
|
C:\Users\mjlyons\workspace\vSPI\projnav\xps\C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\doc\plbv46_slave_burst.pdf
|
151 |
|
|
|
152 |
|
|
interrupt_control_v2_01_a
|
153 |
|
|
C:\Users\mjlyons\workspace\vSPI\projnav\xps\C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\interrupt_control_v2_01_a\doc\interrupt_control.pdf
|
154 |
|
|
|
155 |
|
|
Bus2IP_Clk
|
156 |
|
|
Synchronization clock provided to the user logic. All IPIC signals are
|
157 |
|
|
synchronous to this clock. It is identical to the input _Clk signal of
|
158 |
|
|
the peripheral. No additional buffering is provided on the clock; it is
|
159 |
|
|
passed through as is.
|
160 |
|
|
|
161 |
|
|
Bus2IP_Reset
|
162 |
|
|
Active high reset used by the user logic. It is asserted whenever the
|
163 |
|
|
_Rst signal asserts or whenever there is a software-programmed reset
|
164 |
|
|
(if the soft reset block is included).
|
165 |
|
|
|
166 |
|
|
Bus2IP_Addr
|
167 |
|
|
Address bus to the user logic. It indicates the address of the requested
|
168 |
|
|
read or write operation. It can be used for additional address decoding or
|
169 |
|
|
as input to addressable memory devices.
|
170 |
|
|
|
171 |
|
|
Bus2IP_CS
|
172 |
|
|
Active high chip select bus. Assertion of a chip select indicates an active
|
173 |
|
|
transaction request to the chip select's target address space. This is
|
174 |
|
|
typically used for user logic memory space selection.
|
175 |
|
|
|
176 |
|
|
Bus2IP_RNW
|
177 |
|
|
Input signal to the user logic. It indicates the sense of a requested
|
178 |
|
|
operation with the user logic. High is a read and low is a write. It is
|
179 |
|
|
valid whenever at least one of the Bus2IP_CS bits is active.
|
180 |
|
|
|
181 |
|
|
Bus2IP_Data
|
182 |
|
|
Write data bus to the user logic. Write data is accepted by the user logic
|
183 |
|
|
during a write operation by assertion of the write acknowledgement signal
|
184 |
|
|
and the rising edge of the Bus2IP_Clk.
|
185 |
|
|
|
186 |
|
|
Bus2IP_BE
|
187 |
|
|
Byte Enable qualifiers for the requested read or write operation to the user
|
188 |
|
|
logic. A bit in the Bus2IP_BE set to '1' indicates that the associated byte
|
189 |
|
|
lane contains valid data. For example, if Bus2IP_BE = 0011, this indicates
|
190 |
|
|
that byte lanes 2 and 3 contain valid data.
|
191 |
|
|
|
192 |
|
|
Bus2IP_RdCE
|
193 |
|
|
Active high chip enable bus to the user logic. These chip enables are only
|
194 |
|
|
asserted during active read transaction requests with the target address
|
195 |
|
|
space and in conjunction with the corresponding sub-address within the
|
196 |
|
|
space. These are typically used for user logic readable registers selection.
|
197 |
|
|
|
198 |
|
|
Bus2IP_WrCE
|
199 |
|
|
Active high chip enable bus to the user logic. These chip enables are
|
200 |
|
|
asserted only during active write transaction requests with the target
|
201 |
|
|
address space and in conjunction with the corresponding sub-address within
|
202 |
|
|
the space. Typically used for user logic writable registers selection.
|
203 |
|
|
|
204 |
|
|
Bus2IP_Burst
|
205 |
|
|
Active high signal indicating that the active read or write operation with
|
206 |
|
|
the user logic is utilizing bursting protocol. This signal is asserted at
|
207 |
|
|
the initiation of a burst transaction with the user logic and de-asserted at
|
208 |
|
|
the completion of the second to last data beat of the burst data transfer.
|
209 |
|
|
|
210 |
|
|
Bus2IP_BurstLength
|
211 |
|
|
This value is an indication of the number of bytes being requested for
|
212 |
|
|
transfer and is valid when the cycle is of burst type Bus2IP_CS is active.
|
213 |
|
|
|
214 |
|
|
Bus2IP_RdReq
|
215 |
|
|
Active high signal indicating the initiation of a read operation with the
|
216 |
|
|
user logic. It is asserted for one Bus2IP_Clk during single data beat
|
217 |
|
|
transactions and remains high to completion on burst read operations.
|
218 |
|
|
|
219 |
|
|
Bus2IP_WrReq
|
220 |
|
|
Active high signal indicating the initiation of a write operation with the
|
221 |
|
|
user logic. It is asserted for one Bus2IP_Clk during single data beat
|
222 |
|
|
transactions and remains high to completion on burst write operations.
|
223 |
|
|
|
224 |
|
|
IP2Bus_AddrAck
|
225 |
|
|
Active high signal that advances the address counter and request state
|
226 |
|
|
during multiple data beat transfers, i.e. bursting.
|
227 |
|
|
|
228 |
|
|
IP2Bus_Data
|
229 |
|
|
Output read data bus from the user logic; data is qualified with the
|
230 |
|
|
assertion of IP2Bus_RdAck signal and the rising edge of the Bus2IP_Clk.
|
231 |
|
|
|
232 |
|
|
IP2Bus_RdAck
|
233 |
|
|
Active high read data qualifier providing the read acknowledgement from the
|
234 |
|
|
user logic. Read data on the IP2Bus_Data bus is deemed valid at the rising
|
235 |
|
|
edge of the Bus2IP_Clk and IP2Bus_RdAck asserted high by the user logic. For
|
236 |
|
|
immediate acknowledgement (such as for a register read), this signal can be
|
237 |
|
|
tied to '1'. Wait states can be inserted in the transaction by delaying the
|
238 |
|
|
assertion of the acknowledgement.
|
239 |
|
|
|
240 |
|
|
IP2Bus_WrAck
|
241 |
|
|
Active high write data qualifier providing the write acknowledgement from
|
242 |
|
|
the user logic. Write data on the Bus2IP_Data bus is deemed accepted by the
|
243 |
|
|
user logic at the rising edge of the Bus2IP_Clk and IP2Bus_WrAck asserted
|
244 |
|
|
high by the user logic. For immediate acknowledgement (such as for a
|
245 |
|
|
register write), this signal can be tied to '1'. Wait states can be inserted
|
246 |
|
|
in the transaction by delaying the assertion of the acknowledgement.
|
247 |
|
|
|
248 |
|
|
IP2Bus_Error
|
249 |
|
|
Active high signal indicating the user logic has encountered an error with
|
250 |
|
|
the requested operation. It is asserted in conjunction with the read/write
|
251 |
|
|
acknowledgement signal(s).
|
252 |
|
|
|
253 |
|
|
IP2Bus_IntrEvent
|
254 |
|
|
An output from the user logic to the IPIF that consists of interrupt event
|
255 |
|
|
signals to be detected and latched inside the IPIF.
|
256 |
|
|
|
257 |
|
|
================================================================================
|
258 |
|
|
* 4) Description of Top Level Generics *
|
259 |
|
|
================================================================================
|
260 |
|
|
C_BASEADDR/C_HIGHADDR
|
261 |
|
|
These two generics are used to define the memory mapped address space for
|
262 |
|
|
the peripheral registers, including Soft Reset register, Interrupt Source
|
263 |
|
|
Controller registers, Read/Write FIFO control/data registers, user logic
|
264 |
|
|
software accessible registers and etc., but excluding those user logic
|
265 |
|
|
memory spaces if ever existed. When instantiation, the address space
|
266 |
|
|
size determined by these two generics must be a power of 2 (e.g. 2^k =
|
267 |
|
|
C_HIGHADDR - C_BASEADDR + 1), a factor of C_BASEADDR and larger than the
|
268 |
|
|
minimum size as indicated in the template.
|
269 |
|
|
|
270 |
|
|
C_SPLB_AWIDTH
|
271 |
|
|
This is the slave interface address bus width for Processor Local Bus
|
272 |
|
|
version 4.6 (PLBv46). Value can be assigned automatically by EDK
|
273 |
|
|
tooling during system creation.
|
274 |
|
|
|
275 |
|
|
C_SPLB_DWIDTH
|
276 |
|
|
This is the slave interface data bus width for Processor Local Bus
|
277 |
|
|
version 4.6 (PLBv46). Value can be assigned automatically by EDK
|
278 |
|
|
tooling during system creation.
|
279 |
|
|
|
280 |
|
|
C_SPLB_NUM_MASTERS
|
281 |
|
|
This indicates to the slave interface the number of PLBv46 masters
|
282 |
|
|
present. Value can be assigned automatically by EDK tooling during
|
283 |
|
|
system creation.
|
284 |
|
|
|
285 |
|
|
C_SPLB_MID_WIDTH
|
286 |
|
|
This indicates to the slave interface the number of bits required
|
287 |
|
|
for the PLB_masterID input bus. It is an integer value equal to
|
288 |
|
|
log2(C_SPLB_NUM_MASTERS). Value will be assigned automatically by
|
289 |
|
|
EDK tooling during system creation.
|
290 |
|
|
|
291 |
|
|
C_SPLB_NATIVE_DWIDTH
|
292 |
|
|
This indicates to the slave interface the native bit width of the
|
293 |
|
|
internal data bus of the peripheral. Some peripheral will require
|
294 |
|
|
the value of this parameter to be fixed, while others might have
|
295 |
|
|
selectable native data widths.
|
296 |
|
|
|
297 |
|
|
C_SPLB_P2P
|
298 |
|
|
This indicates to the slave interface when it is exclusively attached
|
299 |
|
|
to a PLBv46 bus via a Point to Point interconnect scheme. In this
|
300 |
|
|
scenario, the slave interface may be able to reduce resource utilization
|
301 |
|
|
by eliminating address decode function and modifying interface behavior
|
302 |
|
|
to allow for a reduction in latency.
|
303 |
|
|
|
304 |
|
|
C_SPLB_SUPPORT_BURSTS
|
305 |
|
|
This indicates to the associated PLBv46 bus that this slave interface
|
306 |
|
|
support burst transfers to improve performance.
|
307 |
|
|
|
308 |
|
|
C_SPLB_SMALLEST_MASTER
|
309 |
|
|
This indicates the smallest native data width of any master on the
|
310 |
|
|
corresponding PLBv46 bus that may access the slave interface. It allows
|
311 |
|
|
optimizations within the slave interface logic if narrower masters don't
|
312 |
|
|
have to be supported for that application.
|
313 |
|
|
|
314 |
|
|
C_SPLB_CLK_PERIOD_PS
|
315 |
|
|
This is the period of the PLBv46 bus clock (in picoseconds) for the
|
316 |
|
|
corresponding PLBv46 slave interface attachment. It has been defined
|
317 |
|
|
for use by peripheral that needs to know the bus clock rate to improve
|
318 |
|
|
certain functions such as internal timers.
|
319 |
|
|
|
320 |
|
|
C_INCLUDE_DPHASE_TIMER
|
321 |
|
|
This indicates if the data phase timer is used or not. The value of
|
322 |
|
|
|
323 |
|
|
If C_INCLUDE_DPHASE_TIMER = 1 and after 128 SPLB_Clk cycles, as
|
324 |
|
|
measured from the assertion of Sl_AddrAck, the User IP does not
|
325 |
|
|
respond with either an IP2Bus_RdAck or IP2Bus_WrAck the
|
326 |
|
|
plbv46_slave_single will de-assert the User IP cycle request
|
327 |
|
|
signals, Bus2IP_CS and Bus2IP_RdCE or Bus2IP_WrCE, and will assert
|
328 |
|
|
Sl_rdDAck with Sl_rdDBus=zero for a read cycle or Sl_wrDAck for
|
329 |
|
|
a write cycle. This will gracefully terminate the cycle. Note
|
330 |
|
|
that the requesting master will have no knowledge that the data
|
331 |
|
|
phase of the PLB request was terminated in this manner.
|
332 |
|
|
|
333 |
|
|
C_FAMILY
|
334 |
|
|
This is to set the target FPGA architecture, s.t. virtex6, etc.
|
335 |
|
|
|
336 |
|
|
C_MEMn_BASEADDR/C_MEMn_HIGHADDR (n = 0, 1, 2, etc.)
|
337 |
|
|
These two generics are used to define the memory mapped address space for
|
338 |
|
|
user logic memory space n, which are typically used in peripherals like
|
339 |
|
|
memory controllers, bridges, that need to access memory blocks other
|
340 |
|
|
than local register space. When instantiation, the address space size
|
341 |
|
|
determined by these two generics should be a power of 2 (e.g. 2^k =
|
342 |
|
|
C_MEMn_HIGHADDR - C_MEMn_BASEADDR + 1) and a factor of C_MEMn_BASEADDR.
|
343 |
|
|
|
344 |
|
|
================================================================================
|
345 |
|
|
* 5) Location to documentation of dependent libraries *
|
346 |
|
|
* *
|
347 |
|
|
* In general, the documentation is located under: *
|
348 |
|
|
* $XILINX_EDK/hw/XilinxProcessorIPLib/pcores/$libName/doc *
|
349 |
|
|
* *
|
350 |
|
|
================================================================================
|
351 |
|
|
proc_common_v3_00_a
|
352 |
|
|
No documentation for this library
|
353 |
|
|
|
354 |
|
|
plbv46_slave_burst_v1_01_a
|
355 |
|
|
C:\Users\mjlyons\workspace\vSPI\projnav\xps\C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\doc\plbv46_slave_burst.pdf
|
356 |
|
|
|
357 |
|
|
interrupt_control_v2_01_a
|
358 |
|
|
C:\Users\mjlyons\workspace\vSPI\projnav\xps\C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\interrupt_control_v2_01_a\doc\interrupt_control.pdf
|
359 |
|
|
|