OpenCores
URL https://opencores.org/ocsvn/s1_core/s1_core/trunk

Subversion Repositories s1_core

[/] [s1_core/] [trunk/] [docs/] [SPEC.txt] - Blame information for rev 114

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 114 albert.wat
S1 Core - Functional Specification
2
==================================
3 4 fafa1971
 
4
Preface
5
-------
6
The S1 is a CPU core that makes use of a single SPARC Core
7
extracted from the OpenSPARC T1, with the addition of a
8
Wishbone Bridge, a Reset Controller and an Interrupt
9
Controller.
10
           ___________________________________
11 114 albert.wat
          |             S1 Core               |
12 4 fafa1971
          | _______  _____ ________  ________ |
13
          ||       ||     ||       ||        ||
14
          || Reset || Int || SPARC ||Wishbone||
15
          || Ctrl. ||Ctrl.|| Core  || Bridge ||
16
          ||       ||     ||       ||        ||
17
          | -------  -----  -------  -------- |
18
           -----------------------------------
19
 
20
Instruction Set Architecture
21
----------------------------
22
The CPU inside the S1 Core is the SPARC Core of the
23
OpenSPARC T1 microprocessor, so you can read OpenSPARC
24
documents for the specification of this CPU.
25
Basically it follows the SPARC v9 64-bit ISA, specified
26
in the documents freely available on the opensparc.net
27
website; for the full documentation you also have to read
28
the datasheet and other specs included in the download
29
file of the T1 design.
30
 
31
Software Support
32
----------------
33
The SPARC v9 ISA is obviously supported by the GCC compiler;
34
also GNU/Linux is supported and the latest versions of the
35
kernel are ready for the T1.
36
There's also a complete GNU/Linux distribution, Ubuntu,
37
that comes ready for the SPARC Core of the T1 and could be
38 114 albert.wat
used in a seamless way also for S1 based micros.
39 4 fafa1971
 
40
S1 Memory Map
41
-------------
42
The S1 Core has 64-bit wide Data Bus and Address Bus.
43
Each bit of the Address Bus has a different meaning:
44
- bits [63:59] specify the one-hot encoding for the T1 target region number;
45
- bits [58:40] are 19 bits always hardwired to zero;
46
- bits [39:0] are the 40-bit Physical Address as it comes from the SPARC Core.
47
 
48
For most applications the lowest 40-bit address coming from the SPARC Core
49
should be enough, so it should be safe to ignore the other bits (unless
50
you suspect that for instance Physical Address zero in region 0 is
51
different from address zero in region 1 and so forth).
52
 
53
S1 Physical Address [63:56]
54
---------------------------
55
the first byte specifies the T1 target region number (one-hot encoded
56
on the most significant 5 bits, the 3 least significant bits are
57
hardwired to zero):
58
- 0x08           RAM Bank 0 (bit 59 set)
59
- 0x10           RAM Bank 1 (bit 60 set)
60
- 0x20           RAM Bank 2 (bit 61 set)
61
- 0x40           RAM Bank 3 (bit 62 set)
62
- 0x80           I/O Bridge (bit 63 set)
63
 
64
As you can see one of the five most significant bits of the
65
address must be always set depending on the target region.
66
 
67
S1 Physical Address [39:32]
68
---------------------------
69
In the T1 bit 39 is zero for all memory addresses and 1 for I/O
70
addresses. Then the T1, from which the S1 is derived, uses the
71
following memory map for bits [39:32] (please note that this
72
mapping is NOT used by the S1):
73
- 0x00-0x7F      RAM
74
- 0x80           JBus
75
- 0x81-0x95      
76
- 0x96           Clock Unit
77
- 0x97           RAM Controller
78
- 0x98           I/O Bridge Management Block
79
- 0x99           TAP Unit
80
- 0x9A-0x9D      
81
- 0x9E           TAP2ASI
82
- 0x9F           I/O Bridge Interrupt Table
83
- 0xA0-0xBF      L2 Control Registers
84
- 0xC0-0xFE      JBus
85
- 0xFF           Boot ROM
86
 
87
For the S1 Core the memory map is different and the following
88
table applies:
89
- 0x00-0x7F     RAM
90
- 0x80-0x95     
91
- 0x96          Real Time Clock
92
- 0x97          RAM Controller
93
- 0x98          Wishbone Interconnect Arbiter
94
- 0x99          DMA Controller
95
- 0x9A-0x9D     
96
- 0x9E          General Purpose I/O
97
- 0x9F          Interrupt Controller
98
- 0xA0-0xFE     
99
- 0xFF          Boot ROM
100
 
101
If you intend to use in your system not only the least significant
102
40 bits generated by the SPARC Core, take into account that for
103
accesses not directed to RAM but to configuration registers it
104
should be an access to the I/O region (bit 63 set), so for instance
105
the full 64-bit base address for the Interrupt Controller should
106
be 0x8000_009F_0000_0000.
107
 
108
S1 Physical Address [2:0]
109
-------------------------
110
The S1 Core implements a Wishbone Master interface with a data bus
111
of 64 bits and a granularity of 1 byte.
112
Then the address generated by the S1 is always aligned on 64-bit
113
boundaries, i.e. bits [2:0] are always zero; the information
114
about the bytes that have to be accessed during a Wishbone
115
bus cycle is obviously encoded on the SEL signals described
116
in the Wishbone spec.
117
 
118
Reset Controller
119
----------------
120
The boot sequence of the T1 is quite complex; we have then written
121
a reset controller for the S1 that just takes one reset signal
122
and generates all the signals required by the SPARC Core to boot
123
up properly.
124
 
125
Interrupt Controller
126
--------------------
127
Early versions of the S1 Core feature a very basic Interrupt
128
Controller that latches interrupt requests arriving to the core
129
that are then signaled to the SPARC Core with the proper CPX
130
packet.
131
Currently this block is untested and it will be enhanced in
132
the future.
133
 
134
Wishbone Bridge
135
---------------
136
The eight SPARC Cores inside the OpenSPARC T1 microprocessor
137
make use of a proprietary protocol to communicate with the
138
rest of the chip; this protocol is often referred to as
139
PCX/CPX protocol, where PCX stands for "Processor-to-Cache
140
Xbar" and is used for the requests outgoing the SPARC Cores
141
and CPX stands for "Cache-to-Processor Xbar" and is used for
142
incoming packets.
143
The main block designed specifically for the S1 Core is the
144
"SPARC Core to Wishbone Master interface bridge" that translates
145
the requests and return packets of the SPARC Core into the
146
Wishbone protocol.
147
You can find the full specification of the Wishbone protocol
148
on the OpenCores site at http://www.opencores.org
149
 
150
Interface Details
151
-----------------
152
These are the features of the bus interface of the S1 Core
153
(they can also be referred to as "Wishbone Datasheet"):
154
- Wishbone Master interface that follows revision B.3;
155
- standard signals names identified by leading "wbm_" chars;
156
- no ERR/RTY support;
157
- 64-bit Address Bus (with some bits unused, see above);
158
- 64-bit Data Bus supporting 8, 16, 32 and 64 bit accesses;
159
- data transfer ordering is Big Endian;
160
- supports Single Read/Write Cycles.
161
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.