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

Subversion Repositories openarty

[/] [openarty/] [trunk/] [doc/] [src/] [spec.tex] - Blame information for rev 30

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dgisselq
\documentclass{gqtekspec}
2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3
%%
4
%% Filename:    spec.tex
5
%%
6
%% Project:     OpenArty, an entirely open SoC based upon the Arty platform
7
%%
8
%% Purpose:
9
%%
10
%% Creator:     Dan Gisselquist, Ph.D.
11
%%              Gisselquist Technology, LLC
12
%%
13
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14
%%
15
%% Copyright (C) 2015-2016, Gisselquist Technology, LLC
16
%%
17
%% This program is free software (firmware): you can redistribute it and/or
18
%% modify it under the terms of  the GNU General Public License as published
19
%% by the Free Software Foundation, either version 3 of the License, or (at
20
%% your option) any later version.
21
%%
22
%% This program is distributed in the hope that it will be useful, but WITHOUT
23
%% ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
24
%% FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
25
%% for more details.
26
%%
27
%% You should have received a copy of the GNU General Public License along
28
%% with this program.  (It's in the $(ROOT)/doc directory, run make with no
29
%% target there if the PDF file isn't present.)  If not, see
30
%% <http://www.gnu.org/licenses/> for a copy.
31
%%
32
%% License:     GPL, v3, as defined and found on www.gnu.org,
33
%%              http://www.gnu.org/licenses/gpl.html
34
%%
35
%%
36
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37
%%
38
%%
39
\usepackage{import}
40
\usepackage{bytefield}
41
\project{OpenArty}
42
\title{Specification}
43
\author{Dan Gisselquist, Ph.D.}
44
\email{dgisselq (at) opencores.org}
45
\revision{Rev.~0.0}
46
\begin{document}
47
\pagestyle{gqtekspecplain}
48
\titlepage
49
\begin{license}
50
Copyright (C) \theyear\today, Gisselquist Technology, LLC
51
 
52
This project is free software (firmware): you can redistribute it and/or
53
modify it under the terms of  the GNU General Public License as published
54
by the Free Software Foundation, either version 3 of the License, or (at
55
your option) any later version.
56
 
57
This program is distributed in the hope that it will be useful, but WITHOUT
58
ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
59
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
60
for more details.
61
 
62
You should have received a copy of the GNU General Public License along
63
with this program.  If not, see \texttt{http://www.gnu.org/licenses/} for a copy.
64
\end{license}
65
\begin{revisionhistory}
66
0.0 & 6/20/2016 & Gisselquist & First Draft \\\hline
67
\end{revisionhistory}
68
% Revision History
69
% Table of Contents, named Contents
70
\tableofcontents
71
\listoffigures
72
\listoftables
73
\begin{preface}
74
\end{preface}
75
 
76
\chapter{Introduction}
77
\pagenumbering{arabic}
78
\setcounter{page}{1}
79
 
80
% What is old
81
%       Arty, XuLA
82
% What does the old lack?
83
%       Arty lacks open interfaces, instead using MIG and CoreGen w/ AXI bus
84
% What is new
85
%       OpenArty has its own memory interface controller, and runs everything
86
%       off of an open Wishbone bus structure.
87
% What does the new have that the old lacks
88
%
89
% What performance gain can be expected?
90
%
91
 
92
The goals of this project include:
93
\begin{enumerate}
94
\item Use entirely open interfaces
95
 
96
        This means not using the Memory Interface Generator (MIG), the
97
        Xilinx CoreGen IP, etc.  Further, I wish to use all of Arty's on--board
98
        hardware: Flash, DDR3-SDRAM, Ethernet, and everything else at their
99
        full and fastest speed(s).  For example, the flash will need to be
100 30 dgisselq
        clocked at 82~MHz, not the 50~MHz I've clocked it at before.  The
101 2 dgisselq
        memory should also be able to support pipelined 32--bit interactions
102 30 dgisselq
        over the Wishbone bus at a 162~MHz clock.  Finally, the Ethernet
103 2 dgisselq
        controller should be supported by a DMA capable interface that can
104
        drive the ethernet at its full 100Mbps rate.
105
 
106 30 dgisselq
\item Run using a 162.5~MHz clock, if for no other reason than to gain the
107
        experience of building logic that can run that fast.\footnote{The
108
        original goal was to run at 200~MHz.  However, the memory controller
109
        cannot run faster than 83~MHz.  If we run it at 81.25~MHz and double
110
        that clock to get our logic clock, that now places us at 162.5~MHz.
111
        200~MHz is \ldots too fast for DDR3 transfers using the Artix--7 chip
112
        on the Arty.}
113 2 dgisselq
 
114
\item Modify the ZipCPU to support an MMU and a data cache, and perhaps even
115
        a floating point unit.
116
 
117
\item The default configuration will also include three Pmods: a USBUART,
118
        an SDCard, and the GPS Pmod.
119
\end{enumerate}
120
 
121
I intend to demonstrate this project with a couple programs:
122
\begin{enumerate}
123
\item A very simple program that runs automatically upon startup that can be
124
        used to select from among multiple configurations.
125
\item NTP Server
126
\item A ZipOS that can actually load and run programs from the SD Card
127
\end{enumerate}
128
 
129
\chapter{Architecture}
130
 
131
 
132
\chapter{Software}
133
\section{Directory Structure}
134
\section{Zip CPU Tool Chain}
135
\section{Bench Test Software}
136
\section{Host Software}
137
\begin{itemize}
138
\item {\tt readflash}: As I am loathe to remove anything from
139
        a device that came factory installed, the
140
        {\tt readflash} program reads the original installed
141
        configuration from the flash and dumps it to a file.
142
 
143
\item {\tt wbregs}: This program offers a capability very similar to the
144
        PEEK and POKE capability Apple user's may remember from before the
145
        days of Macintosh.  {\tt wbregs <address>} will read from the
146
        Wishbone bus the value at the given address.  Likewise
147
        {\tt wbregs <address> <value>} will write the given value into the
148
        given address.  While both address and value have the semantics of
149
        numbers acceptable to {\tt strtoul()}, the address can also be a named
150
        address.  Supported names can be found in {\tt regdefs.cpp}, and their
151
        register mapping in {\tt regdefs.h}.
152
\item {\tt ziprun}:
153
\item {\tt zipload}:
154
\end{itemize}
155
 
156
\section{Zip CPU Programs}
157
\begin{itemize}
158
\item {\tt ntpserver}:
159
\item {\tt goldenstart}:
160
\end{itemize}
161
\section{ZipOS}
162
\subsection{System Calls}
163
\begin{itemize}
164
\item {\tt int wait(unsigned event\_mask, int timeout)}
165
\item {\tt int clear(unsigned event\_mask, int timeout)}
166
\item {\tt void post(unsigned event\_mask)}
167
\item {\tt void yield(void) }
168
\item {\tt int read(int fid, void *buf, int len)}
169
\item {\tt int write(int fid, void *buf, int len)}
170
\item {\tt unsigned time(void) }
171
% \item SEMGET
172
% \item SEMPUT
173
\item {\tt void *malloc(void)}
174
\item {\tt void free(void *buf)}
175
% \item FORK
176
% \item opendir
177
% \item EXEC
178
% \item OPEN
179
\end{itemize}
180
\subsection{Scheduler}
181
 
182
\chapter{Operation}
183
 
184
\chapter{Registers}
185
There are several address regions on the S6~SoC, as shown in
186
Tbl.~\ref{tbl:memregions}.
187
\begin{table}[htbp]
188
\begin{center}\begin{tabular}{|p{2.25in}|p{0.6in}|p{0.45in}|p{2.0in}|}\hline
189
\rowcolor[gray]{0.85} Binary Address & Base & Size(W) & Purpose \\\hline\hline
190
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 000x xxxx} & \scalebox{0.9}{\tt 0x00000100} & \hfill 32 & Peripheral I/O Control \\\hline
191
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0010 0yyx} & \scalebox{0.9}{\tt 0x00000120} & \hfill 8 & Debug scope control\\\hline
192
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0010 10xx} & \scalebox{0.9}{\tt 0x00000128} & \hfill 4 & RTC control\\\hline
193
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0010 11xx} & \scalebox{0.9}{\tt 0x0000012c} & \hfill 4 & SDCard controller\\\hline
194
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0011 00xx} & \scalebox{0.9}{\tt 0x00000130} & \hfill 4 & GPS Clock loop control\\\hline
195 30 dgisselq
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0011 01xx} & \scalebox{0.9}{\tt 0x00000134} & \hfill 4 & OLEDrgb control\\\hline
196
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0011 1xxx} & \scalebox{0.9}{\tt 0x00000138} & \hfill 8 & Network packet interface\\\hline
197 2 dgisselq
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0100 0xxx} & \scalebox{0.9}{\tt 0x00000140} & \hfill 8 & GPS Testbench\\\hline
198
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0100 1xxx} & \scalebox{0.9}{\tt 0x00000148} & \hfill  8 & {\em Unused}\\\hline
199
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0101 xxxx} & \scalebox{0.9}{\tt 0x00000150} & \hfill 16 & {\em Unused}\\\hline
200
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 011x xxxx} & \scalebox{0.9}{\tt 0x00000160} & \hfill 32 & {\em Unused}\\\hline
201
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 100x xxxx} & \scalebox{0.9}{\tt 0x00000180} & \hfill 32 & {\em Unused}\\\hline
202
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 101x xxxx} & \scalebox{0.9}{\tt 0x000001a0} & \hfill 32 & Ethernet configuration registers\\\hline
203
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 110x xxxx} & \scalebox{0.9}{\tt 0x000001c0} & \hfill 32 & Extended Flash Control Port\\\hline
204
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 111x xxxx} & \scalebox{0.9}{\tt 0x000001e0} & \hfill 32 & ICAPE2 Configuration Port\\\hline
205 30 dgisselq
\scalebox{0.9}{\tt 0000 0000 0000 0000 10xx xxxx xxxx} & \scalebox{0.9}{\tt 0x00000800} & \hfill 1k & Ethernet RX Buffer\\\hline
206
\scalebox{0.9}{\tt 0000 0000 0000 0000 11xx xxxx xxxx} & \scalebox{0.9}{\tt 0x00000c00} & \hfill 1k & Ethernet TX Buffer\\\hline
207 2 dgisselq
\scalebox{0.9}{\tt 0000 0000 0000 1xxx xxxx xxxx xxxx} & \scalebox{0.9}{\tt 0x00008000} & \hfill 32k & On-chip Block RAM\\\hline
208
\scalebox{0.9}{\tt 0000 01xx xxxx xxxx xxxx xxxx xxxx} & \scalebox{0.9}{\tt 0x00400000} & \hfill 4M & QuadSPI Flash\\\hline
209 30 dgisselq
\scalebox{0.9}{\tt 0000 0100 0000 0000 0000 0000 0000} & \scalebox{0.9}{\tt 0x00400000} & & Configuration Start\\\hline
210
\scalebox{0.9}{\tt 0000 0100 0111 0000 0000 0000 0000} & \scalebox{0.9}{\tt 0x00470000} & & Alternate Configuration\\\hline
211
\scalebox{0.9}{\tt 0000 0100 1110 0000 0000 0000 0000} & \scalebox{0.9}{\tt 0x004e0000} & & CPU Reset Address\\\hline
212 2 dgisselq
\scalebox{0.9}{\tt 01xx xxxx xxxx xxxx xxxx xxxx xxxx} & \scalebox{0.9}{\tt 0x04000000} & \hfill 64M & DDR3 SDRAM\\\hline
213
\scalebox{0.9}{\tt 1000 0000 0000 0000 0000 0000 000x} & \scalebox{0.9}{\tt 0x08000000} & \hfill 2 & ZipCPU debug control port---only visible to debug WB master\\\hline
214
\end{tabular}
215
\caption{Address Regions}\label{tbl:memregions}
216
\end{center}\end{table}
217
 
218
\begin{table}[htbp]
219
\begin{center}\begin{tabular}{|p{0.9in}|p{0.45in}|p{3.5in}|}\hline
220
\rowcolor[gray]{0.85} Base & Size(W) & Purpose \\\hline\hline
221
\scalebox{0.9}{\tt 0x0c0000000} & 1 & Primary Zip PIC\\\hline
222
\scalebox{0.9}{\tt 0x0c0000001} & 1 & Watchdog Timer\\\hline
223
\scalebox{0.9}{\tt 0x0c0000002} & 1 & Bus Watchdog Timer\\\hline
224
\scalebox{0.9}{\tt 0x0c0000003} & 1 & Alternate Zip PIC\\\hline
225
\scalebox{0.9}{\tt 0x0c0000004} & 1 & ZipTimer-A\\\hline
226
\scalebox{0.9}{\tt 0x0c0000005} & 1 & ZipTimer-B\\\hline
227
\scalebox{0.9}{\tt 0x0c0000006} & 1 & ZipTimer-C\\\hline
228
\scalebox{0.9}{\tt 0x0c0000007} & 1 & ZipJiffies\\\hline
229
\scalebox{0.9}{\tt 0x0c0000008} & 1 & Master task counter\\\hline
230
\scalebox{0.9}{\tt 0x0c0000009} & 1 & Master prefetch stall counter\\\hline
231
\scalebox{0.9}{\tt 0x0c000000a} & 1 & Master memory stall counter\\\hline
232
\scalebox{0.9}{\tt 0x0c000000b} & 1 & Master instruction counter\\\hline
233
\scalebox{0.9}{\tt 0x0c000000c} & 1 & User task counter\\\hline
234
\scalebox{0.9}{\tt 0x0c000000d} & 1 & User prefetch stall counter\\\hline
235
\scalebox{0.9}{\tt 0x0c000000e} & 1 & User memory stall counter\\\hline
236
\scalebox{0.9}{\tt 0x0c000000f} & 1 & User instruction counter\\\hline
237
\scalebox{0.9}{\tt 0x0c0000010} & 1 & DMA command register\\\hline
238
\scalebox{0.9}{\tt 0x0c0000011} & 1 & DMA length\\\hline
239
\scalebox{0.9}{\tt 0x0c0000012} & 1 & DMA source address\\\hline
240
\scalebox{0.9}{\tt 0x0c0000013} & 1 & DMA destination address\\\hline
241
\scalebox{0.9}{\tt 0x0c0000040} & 1 & {\em Reserved for MMU context register}\\\hline
242
\scalebox{0.9}{\tt 0x0c0000080} & 32 & {\em Reserved for MMU TLB}\\\hline
243
\end{tabular}
244
\caption{ZipSystem Addresses}\label{tbl:zipio}
245
\end{center}\end{table}
246
 
247
\section{Peripheral I/O Control}
248
Tbl.~\ref{tbl:ioregs}
249
\begin{table}[htbp]
250
\begin{center}\begin{reglist}
251
VERSION  &\scalebox{0.8}{\tt 0x0100} & 32 & R & Build date\\\hline
252
PIC      &\scalebox{0.8}{\tt 0x0101} & 32 & R/W & Bus Interrupt Controller \\\hline
253
BUSERR   &\scalebox{0.8}{\tt 0x0102} & 32 & R & Last Bus Error Address\\\hline
254
PWRCOUNT &\scalebox{0.8}{\tt 0x0103} & 32 & R & Ticks since startup\\\hline
255
BTNSW    &\scalebox{0.8}{\tt 0x0104} & 32 & R/W & Button/Switch controller\\\hline
256
LEDCTRL  &\scalebox{0.8}{\tt 0x0105} & 32 & R/W & LED Controller \\\hline
257
AUXSETUP &\scalebox{0.8}{\tt 0x0106} & 29 & R/W & Auxilliary UART config\\\hline
258
GPSSETUP &\scalebox{0.8}{\tt 0x0107} & 29 & R/W & GPS UART config\\\hline
259
CLR-LEDx &\scalebox{0.8}{\tt 0x0108-b} & 32 & R/W & Color LED controller\\\hline
260
RTCDATE  &\scalebox{0.8}{\tt 0x010c} & 32 & R/W & BCD Calendar Date\\\hline
261
GPIO     &\scalebox{0.8}{\tt 0x010d} & 32 & R/W & GPIO controller\\\hline
262
UARTRX   &\scalebox{0.8}{\tt 0x010e} & 32 & R/W & Aux UART receive byte\\\hline
263
UARTTX   &\scalebox{0.8}{\tt 0x010f} & 32 & R/W & Aux UART transmit byte\\\hline
264
GPSRX    &\scalebox{0.8}{\tt 0x0110} & 32 & R/W & GPS UART receive byte\\\hline
265
GPSTX    &\scalebox{0.8}{\tt 0x0111} & 32 & R/W & GPS UART transmit byte\\\hline
266
% 0x010c-0x010f
267
\end{reglist}
268
\caption{I/O Peripheral Registers}\label{tbl:ioregs}
269
\end{center}\end{table}
270
shows the addresses of various I/O peripherals included as part of the SoC.
271
We'll walk through each of these peripherals in turn, describing how they work.
272
 
273
\subsection{Interrupt Controller}
274
The OpenArty design maintains three interrupt controllers.  Two of them
275
are found within the ZipSystem, and the third is located on the bus
276
itself.  Of these, the primary interrupt controller is located in the ZipSystem.
277
This interrupt controller accepts, as interrupt inputs, the outputs of both
278
the auxilliary interrupt controller as well as the bus interrupt controller.
279
Hence, even though the CPU only supports a single interrupt line, by using
280
these three interrupt controllers many more interrupts can be supported.
281
 
282
The primary interrupt controller handles interrupts from the sources listed
283
in Tbl.~\ref{tbl:sys-ints}.  These interrupts are listed together with the
284
mask that would need to be used when referencing them to the interrupt
285
controller.  In a similar fashion, the auxilliary interrupt controller accepts
286
inputs from the sources listed in Tbl.~\ref{tbl:aux-ints}.  Finally, the
287
bus interrupt controller handles the interrupts from the sources listed in
288
Tbl.~\ref{tbl:bus-ints}.
289
 
290
\begin{table}[htbp]
291
\begin{center}\begin{tabular}{|p{0.9in}|p{0.75in}|p{0.75in}|p{3.00in}|}\hline
292
\rowcolor[gray]{0.85} Name & Bit Mask & DMAC ID &Description \\\hline\hline
293
SYS\_DMAC  & 0x0001 && The DMA controller is idle.\\\hline
294
SYS\_JIF   & 0x0002 & 1 & A Jiffies timer has expired.\\\hline
295
SYS\_TMC   & 0x0004 & 2 & Timer C has timed out.\\\hline
296
SYS\_TMB   & 0x0008 & 3 & Timer C has timed out.\\\hline
297
SYS\_TMA   & 0x0010 & 4 & Timer C has timed out.\\\hline
298
SYS\_AUX   & 0x0020 & 5 & The auxilliary interrupt controller sends an interrupt\\\hline
299
SYS\_EXT   & 0x0040 & 6 & A Bus interrupt has tripped. \\\hline
300
SYS\_PPS   & 0x0080 & 7 & An interrupt marking the top of the second\\\hline
301
SYS\_GPSRX & 0x0100 & 8& A character has been received via GPS\\\hline
302
SYS\_NETRX & 0x0200 & 9 & A packet has been received via the network\\\hline
303
SYS\_NETTX & 0x0400 & 10 & The network controller is idle, having sent its
304
                        last packet\\\hline
305
SYS\_UARTRX & 0x0800 & 11 & A character has been received via the UART\\\hline
306
SYS\_UARTTX & 0x1000 & 12 & The transmit UART is idle, and ready for its next
307
                character.\\\hline
308
SYS\_SDCARD & 0x2000 & 13 & The SD-Card controller has become idle\\\hline
309
SYS\_BUTTON & 0x4000 & 14 & A Button has been pressed. \\\hline
310
\end{tabular}
311
\caption{Primary System Interrupts}\label{tbl:sys-ints}
312
\end{center}\end{table}
313
%%%%%%%%%%%%%
314
\begin{table}[htbp]
315
\begin{center}\begin{tabular}{|p{0.9in}|p{0.75in}|p{0.75in}|p{3.00in}|}\hline
316
\rowcolor[gray]{0.85} Name & Bit Mask & DMAC ID &Description \\\hline\hline
317
AUX\_UIC & 0x0001 & 16 & The user instruction counter has overflowed.\\\hline
318
AUX\_UPC & 0x0002 & 17 & The user prefetch stall counter has overflowed.\\\hline
319
AUX\_UOC & 0x0004 & 18 & The user ops stall counter has overflowed.\\\hline
320
AUX\_UTC & 0x0008 & 19 & The user clock tick counter has overflowed.\\\hline
321
AUX\_MIC & 0x0010 & 20 & The supervisor instruction counter has overflowed.\\\hline
322
AUX\_MPC & 0x0020 & 21 & The supervisor prefetch stall counter has overflowed.\\\hline
323
AUX\_MOC & 0x0040 & 22 & The supervisor ops stall counter has overflowed.\\\hline
324
AUX\_MTC & 0x0080 & 23 & The supervisor clock tick counter has overflowed.\\\hline
325
AUX\_SWITCH & 0x0100 & 24 & A switch has changed state\\\hline
326
AUX\_FLASH  & 0x0200 & 25 & The flash controller has completed a write/erase cycle\\\hline
327
AUX\_SCOPE & 0x0400 & 26 & The Scope has completed its collection\\\hline
328
AUX\_RTC    & 0x0800 & 27& An alarm or timer has taken place (assuming the RTC
329
                is installed, and includes both alarm or timer)\\\hline
330
AUX\_GPIO   & 0x1000 & 28 & The GPIO input lines have changed values.\\\hline
331
AUX\_OLED   & 0x2000 & 29 & The OLED driver is idle\\\hline
332
\end{tabular}
333
\caption{Auxilliary System Interrupts}\label{tbl:aux-ints}
334
\end{center}\end{table}
335
 
336
\begin{table}[htbp]
337
\begin{center}\begin{tabular}{|p{0.9in}|p{0.75in}|p{3.75in}|}\hline
338
\rowcolor[gray]{0.85} Name & Bit Mask & Description \\\hline\hline
339
BUS\_BUTTON & 0x0001 & A Button has been pressed. \\\hline
340
BUS\_SWITCH & 0x0002 & The Scope has completed its collection\\\hline
341
BUS\_PPS    & 0x0004 & Top of the second\\\hline
342
BUS\_RTC    & 0x0008 & An alarm or timer has taken place (assuming the RTC
343
                is installed, and includes both alarm or timer)\\\hline
344
BUS\_NETRX & 0x0010 & A packet has been received via the network\\\hline
345
BUS\_NETTX & 0x0020 & The network controller is idle, having sent its
346
                        last packet\\\hline
347
BUS\_UARTRX & 0x0040 & A character has been received via the UART\\\hline
348
BUS\_UARTTX & 0x0080 & The transmit UART is idle, and ready for its next
349
                character.\\\hline
350
BUS\_GPIO   & 0x0100 & The GPIO input lines have changed values.\\\hline
351
BUS\_FLASH  & 0x0200 & The flash device has finished either its erase or
352
                write cycle, and is ready for its next command. (Alternate
353
        config only.)\\\hline
354
BUS\_SCOPE  & 0x0400 & A scope has completed collecting.\\\hline
355
BUS\_GPSRX  & 0x0800 & A character has been received via GPS\\\hline
356
BUS\_SDCARD & 0x1000 & The SD-Card controller has become idle\\\hline
357
BUS\_OLED   & 0x2000 & The OLED interface has become idle\\\hline
358
BUS\_ZIP    & 0x4000 & True if the ZipCPU has come to a halt\\\hline
359
\end{tabular}
360
\caption{Bus Interrupts}\label{tbl:bus-ints}
361
\end{center}\end{table}
362
 
363
\subsection{Last Bus Error Address}
364
\subsection{General Purpose I/O}
365
\subsection{UART Data Register}
366
\section{Debugging Scopes}
367
\section{Internal Configuration Access Port}
368
\section{Real--Time Clock}
369
\section{On-Chip Block RAM}
370
\section{Flash Memory}
371
\begin{table}
372
\begin{center}\begin{reglist}
373
ewreg  &\scalebox{0.8}{\tt 0x0180} & 32 & R & Erase/write control and status\\\hline
374
status      &\scalebox{0.8}{\tt 0x0181} & 8 & R/W & Bus Interrupt Controller \\\hline
375
nvconf   &\scalebox{0.8}{\tt 0x0182} & 16 & R & Last Bus Error Address\\\hline
376
vconf &\scalebox{0.8}{\tt 0x0183} & 8 & R & Ticks since startup\\\hline
377
evonc    &\scalebox{0.8}{\tt 0x0184} & 8 & R/W & Button/Switch controller\\\hline
378
lock  &\scalebox{0.8}{\tt 0x0185} & 8 & R/W & LED Controller \\\hline
379
flagstatus&\scalebox{0.8}{\tt 0x0186} & 8 & R/W & Auxilliary UART config\\\hline
380
clear   &\scalebox{0.8}{\tt 0x0187} & 8 & R/W & Clear status on write\\\hline
381
Device ID &\scalebox{0.8}{\tt 0x0188-}\hfill & 5x32 & R & Device ID\\
382
        &\scalebox{0.8}{\tt -0x018c}\hfill & & & \\\hline
383
% asyncID &\scalebox{0.8}{\tt 0x018d} & 32 & R/W & Asynch Read ID.  Write starts the ASynch read, 0xff returned until complete\\\hline
384
asyncOTP  &\scalebox{0.8}{\tt 0x18e} & 32 & W & Asynch Read OTP.  Write starts the ASynch read, 0xff returned until complete\\\hline
385
OTP     &\scalebox{0.8}{\tt 0x0190-}\hfill &16x32 & R/W & OTP Memory\\
386
        &\scalebox{0.8}{\hfill\tt -0x19f} & & & \\\hline
387
% 0x010c-0x010f
388
\end{reglist}
389
\caption{Flash control registers}\label{tbl:flctl}
390
\end{center}\end{table}
391
 
392 30 dgisselq
\chapter{Wishbone Datasheet}\label{ch:wishbone}
393 2 dgisselq
 
394
The master and slave interfaces have been simplified with the following
395
requirement: the {\tt STB} line is not allowed to be high unless the {\tt CYC}
396
line is high.  In this fashion, a slave may often be able to ignore {\tt CYC}
397
and only act on the presence of {\tt STB}, knowing that {\tt CYC} must be
398
active at the same time.
399
 
400 30 dgisselq
\chapter{Clocks}\label{ch:clocks}
401 2 dgisselq
\begin{table}\begin{center}
402
\begin{clocklist}
403 30 dgisselq
{\tt i\_clk\_100mhz} & Ext & \multicolumn{2}{c|}{100} &
404 2 dgisselq
        100~MHz Crystal Oscillator \\\hline
405 30 dgisselq
{\em Future }{\tt s\_clk} & PLL & 152 & 166 & Internal Logic, Wishbone Clock \\\hline
406
{\tt s\_clk} & PLL & 83.33 & 75.76& DDR3 SDRAM Controller Clock \\\hline
407
\multicolumn{2}{|c|}{\tt mem\_clk\_200mhz} & 200~MHz & & MIG Reference clock for PHASERs\\\hline
408
{\tt ddr3\_ck\_}$x$ & DDR & 166.67 & 303 & DDR3 Command Clock\\\hline
409
{\tt o\_qspi\_sck} & DDR & 95 & & QSPI Flash clock \\\hline
410
{\tt o\_sd\_clk} & Logic & 50 & 0.100 & SD--Card clock \\\hline
411
{\tt o\_oled\_sck} & Logic & 166 & & OLED SPI clock \\\hline
412
{\tt o\_eth\_mdclk} & Logic & 25 & 2.5 & Ethernet MDIO controller clock\\\hline
413 2 dgisselq
\end{clocklist}
414
\caption{OpenArty clocks}\label{tbl:clocks}
415
\end{center}\end{table}
416
 
417
\chapter{I/O Ports}
418
 
419
Table.~\ref{tbl:ioports}
420
\begin{table}[htbp]
421
\begin{center}
422
\begin{portlist}
423
i\_clk\_100mhz & 1 & Input & Clock\\\hline
424
o\_qspi\_cs\_n & 1 & Output & Quad SPI Flash chip select\\\hline
425
o\_qspi\_sck & 1 & Output & Quad SPI Flash clock\\\hline
426
io\_qspi\_dat & 4 & Input/Output & Four-wire SPI flash data bus\\\hline
427
i\_btn & 4 & Input  & Inputs from the two on-board push-buttons\\\hline
428
i\_sw  & 4 & Input  & Inputs from the two on-board push-buttons\\\hline
429
o\_led & 4 & Output & Outputs controlling the four on-board LED's\\\hline
430
o\_clr\_led0 & 3 & Output & \\\hline
431
o\_clr\_led1 & 3 & Output & \\\hline
432
o\_clr\_led2 & 3 & Output & \\\hline
433
o\_clr\_led3 & 3 & Output & \\\hline
434
i\_uart\_rx & 1 & Input &  UART receive input\\\hline
435
o\_uart\_tx & 1 & Output & UART transmit output\\\hline\hline
436
i\_aux\_rx & 1 & Input &  Auxiliary/Pmod UART receive input\\\hline
437
o\_aux\_tx & 1 & Output & Auxiliary/Pmod UART transmit output\\\hline
438
i\_aux\_rts & 1 & Input &  Auxiliary/Pmod UART receive input\\\hline
439
o\_aux\_cts & 1 & Output & Auxiliary/Pmod UART transmit output\\\hline\hline
440
i\_gps\_rx & 1 & Input &  GPS/Pmod UART receive input\\\hline
441
o\_gps\_tx & 1 & Output & GPS/Pmod UART transmit output\\\hline
442
i\_gps\_pps & 1 & Input & GPS Part-per-second (PPS) signal\\\hline
443
i\_gps\_3df & 1 & Input & GPS\\\hline\hline
444
o\_oled\_cs\_n & 1 & Output & \\\hline
445
o\_oled\_sck & 1 & Output & \\\hline
446
o\_oled\_mosi & 1 & Output & \\\hline
447
i\_oled\_miso & 1 & Input & \\\hline
448
o\_oled\_reset & 1 & Output & \\\hline
449
o\_oled\_dc & 1 & Output & \\\hline
450
o\_oled\_en & 1 & Output & \\\hline
451
o\_oled\_pmen & 1 & Output & \\\hline\hline
452
o\_sd\_sck & 1 & Output & SD Clock\\\hline
453
i\_sd\_cd & 1 & Input & Card Detect\\\hline
454
i\_sd\_wp & 1 & Input & Write Protect\\\hline
455
io\_cmd & 1 & In/Output & SD Bi-directional command wire\\\hline
456
io\_sd & 4 & In/Output & SD Bi-directional data lines\\\hline\hline
457
o\_cls\_cs\_n & 1 & Output & CLS Display chip select\\\hline
458
o\_cls\_sck & 1 & Output & CLS Display clock\\\hline
459
o\_cls\_mosi & 1 & Output & CLS Display MOSI\\\hline
460
i\_cls\_miso & 1 & Input & CLS Display MISO\\\hline\hline
461
\end{portlist}
462
\caption{List of IO ports}\label{tbl:ioports}
463
\end{center}\end{table}
464
lists the various I/O ports associated with OpenArty.
465
 
466
 
467
% Appendices
468
% Index
469
\end{document}
470
 
471
 

powered by: WebSVN 2.1.0

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