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

Subversion Repositories openarty

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

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
        clocked at 100~MHz, not the 50~MHz I've clocked it at before.  The
101
        memory should also be able to support pipelined 32--bit interactions
102
        over the Wishbone bus at a 200~MHz clock.  Finally, the Ethernet
103
        controller should be supported by a DMA capable interface that can
104
        drive the ethernet at its full 100Mbps rate.
105
 
106
\item Run using a 200~MHz clock, if for no other reason than to gain the
107
        experience of building logic that can run that fast.
108
 
109
\item Modify the ZipCPU to support an MMU and a data cache, and perhaps even
110
        a floating point unit.
111
 
112
\item The default configuration will also include three Pmods: a USBUART,
113
        an SDCard, and the GPS Pmod.
114
\end{enumerate}
115
 
116
I intend to demonstrate this project with a couple programs:
117
\begin{enumerate}
118
\item A very simple program that runs automatically upon startup that can be
119
        used to select from among multiple configurations.
120
\item NTP Server
121
\item A ZipOS that can actually load and run programs from the SD Card
122
\end{enumerate}
123
 
124
\chapter{Architecture}
125
 
126
 
127
\chapter{Software}
128
\section{Directory Structure}
129
\section{Zip CPU Tool Chain}
130
\section{Bench Test Software}
131
\section{Host Software}
132
\begin{itemize}
133
\item {\tt readflash}: As I am loathe to remove anything from
134
        a device that came factory installed, the
135
        {\tt readflash} program reads the original installed
136
        configuration from the flash and dumps it to a file.
137
 
138
\item {\tt wbregs}: This program offers a capability very similar to the
139
        PEEK and POKE capability Apple user's may remember from before the
140
        days of Macintosh.  {\tt wbregs <address>} will read from the
141
        Wishbone bus the value at the given address.  Likewise
142
        {\tt wbregs <address> <value>} will write the given value into the
143
        given address.  While both address and value have the semantics of
144
        numbers acceptable to {\tt strtoul()}, the address can also be a named
145
        address.  Supported names can be found in {\tt regdefs.cpp}, and their
146
        register mapping in {\tt regdefs.h}.
147
\item {\tt ziprun}:
148
\item {\tt zipload}:
149
\end{itemize}
150
 
151
\section{Zip CPU Programs}
152
\begin{itemize}
153
\item {\tt ntpserver}:
154
\item {\tt goldenstart}:
155
\end{itemize}
156
\section{ZipOS}
157
\subsection{System Calls}
158
\begin{itemize}
159
\item {\tt int wait(unsigned event\_mask, int timeout)}
160
\item {\tt int clear(unsigned event\_mask, int timeout)}
161
\item {\tt void post(unsigned event\_mask)}
162
\item {\tt void yield(void) }
163
\item {\tt int read(int fid, void *buf, int len)}
164
\item {\tt int write(int fid, void *buf, int len)}
165
\item {\tt unsigned time(void) }
166
% \item SEMGET
167
% \item SEMPUT
168
\item {\tt void *malloc(void)}
169
\item {\tt void free(void *buf)}
170
% \item FORK
171
% \item opendir
172
% \item EXEC
173
% \item OPEN
174
\end{itemize}
175
\subsection{Scheduler}
176
 
177
\chapter{Operation}
178
 
179
\chapter{Registers}
180
There are several address regions on the S6~SoC, as shown in
181
Tbl.~\ref{tbl:memregions}.
182
\begin{table}[htbp]
183
\begin{center}\begin{tabular}{|p{2.25in}|p{0.6in}|p{0.45in}|p{2.0in}|}\hline
184
\rowcolor[gray]{0.85} Binary Address & Base & Size(W) & Purpose \\\hline\hline
185
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 000x xxxx} & \scalebox{0.9}{\tt 0x00000100} & \hfill 32 & Peripheral I/O Control \\\hline
186
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0010 0yyx} & \scalebox{0.9}{\tt 0x00000120} & \hfill 8 & Debug scope control\\\hline
187
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0010 10xx} & \scalebox{0.9}{\tt 0x00000128} & \hfill 4 & RTC control\\\hline
188
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0010 11xx} & \scalebox{0.9}{\tt 0x0000012c} & \hfill 4 & SDCard controller\\\hline
189
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0011 00xx} & \scalebox{0.9}{\tt 0x00000130} & \hfill 4 & GPS Clock loop control\\\hline
190
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0011 01xx} & \scalebox{0.9}{\tt 0x00000134} & \hfill 4 & Network packet interface\\\hline
191
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0011 10xx} & \scalebox{0.9}{\tt 0x00000138} & \hfill 4 & OLEDrgb control\\\hline
192
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0011 11xx} & \scalebox{0.9}{\tt 0x0000013c} & \hfill 4 & {\em Unused}\\\hline
193
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0100 0xxx} & \scalebox{0.9}{\tt 0x00000140} & \hfill 8 & GPS Testbench\\\hline
194
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0100 1xxx} & \scalebox{0.9}{\tt 0x00000148} & \hfill  8 & {\em Unused}\\\hline
195
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 0101 xxxx} & \scalebox{0.9}{\tt 0x00000150} & \hfill 16 & {\em Unused}\\\hline
196
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 011x xxxx} & \scalebox{0.9}{\tt 0x00000160} & \hfill 32 & {\em Unused}\\\hline
197
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 100x xxxx} & \scalebox{0.9}{\tt 0x00000180} & \hfill 32 & {\em Unused}\\\hline
198
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 101x xxxx} & \scalebox{0.9}{\tt 0x000001a0} & \hfill 32 & Ethernet configuration registers\\\hline
199
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 110x xxxx} & \scalebox{0.9}{\tt 0x000001c0} & \hfill 32 & Extended Flash Control Port\\\hline
200
\scalebox{0.9}{\tt 0000 0000 0000 0000 0001 111x xxxx} & \scalebox{0.9}{\tt 0x000001e0} & \hfill 32 & ICAPE2 Configuration Port\\\hline
201
\scalebox{0.9}{\tt 0000 0000 0000 0000 10xx xxxx xxxx} & \scalebox{0.9}{\tt 0x00000800} & \hfill 1k & Ethernet TX Buffer\\\hline
202
\scalebox{0.9}{\tt 0000 0000 0000 0000 11xx xxxx xxxx} & \scalebox{0.9}{\tt 0x00000c00} & \hfill 1k & Ethernet RX Buffer\\\hline
203
\scalebox{0.9}{\tt 0000 0000 0000 1xxx xxxx xxxx xxxx} & \scalebox{0.9}{\tt 0x00008000} & \hfill 32k & On-chip Block RAM\\\hline
204
\scalebox{0.9}{\tt 0000 01xx xxxx xxxx xxxx xxxx xxxx} & \scalebox{0.9}{\tt 0x00400000} & \hfill 4M & QuadSPI Flash\\\hline
205
\scalebox{0.9}{\tt 01xx xxxx xxxx xxxx xxxx xxxx xxxx} & \scalebox{0.9}{\tt 0x04000000} & \hfill 64M & DDR3 SDRAM\\\hline
206
\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
207
\end{tabular}
208
\caption{Address Regions}\label{tbl:memregions}
209
\end{center}\end{table}
210
 
211
\begin{table}[htbp]
212
\begin{center}\begin{tabular}{|p{0.9in}|p{0.45in}|p{3.5in}|}\hline
213
\rowcolor[gray]{0.85} Base & Size(W) & Purpose \\\hline\hline
214
\scalebox{0.9}{\tt 0x0c0000000} & 1 & Primary Zip PIC\\\hline
215
\scalebox{0.9}{\tt 0x0c0000001} & 1 & Watchdog Timer\\\hline
216
\scalebox{0.9}{\tt 0x0c0000002} & 1 & Bus Watchdog Timer\\\hline
217
\scalebox{0.9}{\tt 0x0c0000003} & 1 & Alternate Zip PIC\\\hline
218
\scalebox{0.9}{\tt 0x0c0000004} & 1 & ZipTimer-A\\\hline
219
\scalebox{0.9}{\tt 0x0c0000005} & 1 & ZipTimer-B\\\hline
220
\scalebox{0.9}{\tt 0x0c0000006} & 1 & ZipTimer-C\\\hline
221
\scalebox{0.9}{\tt 0x0c0000007} & 1 & ZipJiffies\\\hline
222
\scalebox{0.9}{\tt 0x0c0000008} & 1 & Master task counter\\\hline
223
\scalebox{0.9}{\tt 0x0c0000009} & 1 & Master prefetch stall counter\\\hline
224
\scalebox{0.9}{\tt 0x0c000000a} & 1 & Master memory stall counter\\\hline
225
\scalebox{0.9}{\tt 0x0c000000b} & 1 & Master instruction counter\\\hline
226
\scalebox{0.9}{\tt 0x0c000000c} & 1 & User task counter\\\hline
227
\scalebox{0.9}{\tt 0x0c000000d} & 1 & User prefetch stall counter\\\hline
228
\scalebox{0.9}{\tt 0x0c000000e} & 1 & User memory stall counter\\\hline
229
\scalebox{0.9}{\tt 0x0c000000f} & 1 & User instruction counter\\\hline
230
\scalebox{0.9}{\tt 0x0c0000010} & 1 & DMA command register\\\hline
231
\scalebox{0.9}{\tt 0x0c0000011} & 1 & DMA length\\\hline
232
\scalebox{0.9}{\tt 0x0c0000012} & 1 & DMA source address\\\hline
233
\scalebox{0.9}{\tt 0x0c0000013} & 1 & DMA destination address\\\hline
234
\scalebox{0.9}{\tt 0x0c0000040} & 1 & {\em Reserved for MMU context register}\\\hline
235
\scalebox{0.9}{\tt 0x0c0000080} & 32 & {\em Reserved for MMU TLB}\\\hline
236
\end{tabular}
237
\caption{ZipSystem Addresses}\label{tbl:zipio}
238
\end{center}\end{table}
239
 
240
\section{Peripheral I/O Control}
241
Tbl.~\ref{tbl:ioregs}
242
\begin{table}[htbp]
243
\begin{center}\begin{reglist}
244
VERSION  &\scalebox{0.8}{\tt 0x0100} & 32 & R & Build date\\\hline
245
PIC      &\scalebox{0.8}{\tt 0x0101} & 32 & R/W & Bus Interrupt Controller \\\hline
246
BUSERR   &\scalebox{0.8}{\tt 0x0102} & 32 & R & Last Bus Error Address\\\hline
247
PWRCOUNT &\scalebox{0.8}{\tt 0x0103} & 32 & R & Ticks since startup\\\hline
248
BTNSW    &\scalebox{0.8}{\tt 0x0104} & 32 & R/W & Button/Switch controller\\\hline
249
LEDCTRL  &\scalebox{0.8}{\tt 0x0105} & 32 & R/W & LED Controller \\\hline
250
AUXSETUP &\scalebox{0.8}{\tt 0x0106} & 29 & R/W & Auxilliary UART config\\\hline
251
GPSSETUP &\scalebox{0.8}{\tt 0x0107} & 29 & R/W & GPS UART config\\\hline
252
CLR-LEDx &\scalebox{0.8}{\tt 0x0108-b} & 32 & R/W & Color LED controller\\\hline
253
RTCDATE  &\scalebox{0.8}{\tt 0x010c} & 32 & R/W & BCD Calendar Date\\\hline
254
GPIO     &\scalebox{0.8}{\tt 0x010d} & 32 & R/W & GPIO controller\\\hline
255
UARTRX   &\scalebox{0.8}{\tt 0x010e} & 32 & R/W & Aux UART receive byte\\\hline
256
UARTTX   &\scalebox{0.8}{\tt 0x010f} & 32 & R/W & Aux UART transmit byte\\\hline
257
GPSRX    &\scalebox{0.8}{\tt 0x0110} & 32 & R/W & GPS UART receive byte\\\hline
258
GPSTX    &\scalebox{0.8}{\tt 0x0111} & 32 & R/W & GPS UART transmit byte\\\hline
259
% 0x010c-0x010f
260
\end{reglist}
261
\caption{I/O Peripheral Registers}\label{tbl:ioregs}
262
\end{center}\end{table}
263
shows the addresses of various I/O peripherals included as part of the SoC.
264
We'll walk through each of these peripherals in turn, describing how they work.
265
 
266
\subsection{Interrupt Controller}
267
The OpenArty design maintains three interrupt controllers.  Two of them
268
are found within the ZipSystem, and the third is located on the bus
269
itself.  Of these, the primary interrupt controller is located in the ZipSystem.
270
This interrupt controller accepts, as interrupt inputs, the outputs of both
271
the auxilliary interrupt controller as well as the bus interrupt controller.
272
Hence, even though the CPU only supports a single interrupt line, by using
273
these three interrupt controllers many more interrupts can be supported.
274
 
275
The primary interrupt controller handles interrupts from the sources listed
276
in Tbl.~\ref{tbl:sys-ints}.  These interrupts are listed together with the
277
mask that would need to be used when referencing them to the interrupt
278
controller.  In a similar fashion, the auxilliary interrupt controller accepts
279
inputs from the sources listed in Tbl.~\ref{tbl:aux-ints}.  Finally, the
280
bus interrupt controller handles the interrupts from the sources listed in
281
Tbl.~\ref{tbl:bus-ints}.
282
 
283
\begin{table}[htbp]
284
\begin{center}\begin{tabular}{|p{0.9in}|p{0.75in}|p{0.75in}|p{3.00in}|}\hline
285
\rowcolor[gray]{0.85} Name & Bit Mask & DMAC ID &Description \\\hline\hline
286
SYS\_DMAC  & 0x0001 && The DMA controller is idle.\\\hline
287
SYS\_JIF   & 0x0002 & 1 & A Jiffies timer has expired.\\\hline
288
SYS\_TMC   & 0x0004 & 2 & Timer C has timed out.\\\hline
289
SYS\_TMB   & 0x0008 & 3 & Timer C has timed out.\\\hline
290
SYS\_TMA   & 0x0010 & 4 & Timer C has timed out.\\\hline
291
SYS\_AUX   & 0x0020 & 5 & The auxilliary interrupt controller sends an interrupt\\\hline
292
SYS\_EXT   & 0x0040 & 6 & A Bus interrupt has tripped. \\\hline
293
SYS\_PPS   & 0x0080 & 7 & An interrupt marking the top of the second\\\hline
294
SYS\_GPSRX & 0x0100 & 8& A character has been received via GPS\\\hline
295
SYS\_NETRX & 0x0200 & 9 & A packet has been received via the network\\\hline
296
SYS\_NETTX & 0x0400 & 10 & The network controller is idle, having sent its
297
                        last packet\\\hline
298
SYS\_UARTRX & 0x0800 & 11 & A character has been received via the UART\\\hline
299
SYS\_UARTTX & 0x1000 & 12 & The transmit UART is idle, and ready for its next
300
                character.\\\hline
301
SYS\_SDCARD & 0x2000 & 13 & The SD-Card controller has become idle\\\hline
302
SYS\_BUTTON & 0x4000 & 14 & A Button has been pressed. \\\hline
303
\end{tabular}
304
\caption{Primary System Interrupts}\label{tbl:sys-ints}
305
\end{center}\end{table}
306
%%%%%%%%%%%%%
307
\begin{table}[htbp]
308
\begin{center}\begin{tabular}{|p{0.9in}|p{0.75in}|p{0.75in}|p{3.00in}|}\hline
309
\rowcolor[gray]{0.85} Name & Bit Mask & DMAC ID &Description \\\hline\hline
310
AUX\_UIC & 0x0001 & 16 & The user instruction counter has overflowed.\\\hline
311
AUX\_UPC & 0x0002 & 17 & The user prefetch stall counter has overflowed.\\\hline
312
AUX\_UOC & 0x0004 & 18 & The user ops stall counter has overflowed.\\\hline
313
AUX\_UTC & 0x0008 & 19 & The user clock tick counter has overflowed.\\\hline
314
AUX\_MIC & 0x0010 & 20 & The supervisor instruction counter has overflowed.\\\hline
315
AUX\_MPC & 0x0020 & 21 & The supervisor prefetch stall counter has overflowed.\\\hline
316
AUX\_MOC & 0x0040 & 22 & The supervisor ops stall counter has overflowed.\\\hline
317
AUX\_MTC & 0x0080 & 23 & The supervisor clock tick counter has overflowed.\\\hline
318
AUX\_SWITCH & 0x0100 & 24 & A switch has changed state\\\hline
319
AUX\_FLASH  & 0x0200 & 25 & The flash controller has completed a write/erase cycle\\\hline
320
AUX\_SCOPE & 0x0400 & 26 & The Scope has completed its collection\\\hline
321
AUX\_RTC    & 0x0800 & 27& An alarm or timer has taken place (assuming the RTC
322
                is installed, and includes both alarm or timer)\\\hline
323
AUX\_GPIO   & 0x1000 & 28 & The GPIO input lines have changed values.\\\hline
324
AUX\_OLED   & 0x2000 & 29 & The OLED driver is idle\\\hline
325
\end{tabular}
326
\caption{Auxilliary System Interrupts}\label{tbl:aux-ints}
327
\end{center}\end{table}
328
 
329
\begin{table}[htbp]
330
\begin{center}\begin{tabular}{|p{0.9in}|p{0.75in}|p{3.75in}|}\hline
331
\rowcolor[gray]{0.85} Name & Bit Mask & Description \\\hline\hline
332
BUS\_BUTTON & 0x0001 & A Button has been pressed. \\\hline
333
BUS\_SWITCH & 0x0002 & The Scope has completed its collection\\\hline
334
BUS\_PPS    & 0x0004 & Top of the second\\\hline
335
BUS\_RTC    & 0x0008 & An alarm or timer has taken place (assuming the RTC
336
                is installed, and includes both alarm or timer)\\\hline
337
BUS\_NETRX & 0x0010 & A packet has been received via the network\\\hline
338
BUS\_NETTX & 0x0020 & The network controller is idle, having sent its
339
                        last packet\\\hline
340
BUS\_UARTRX & 0x0040 & A character has been received via the UART\\\hline
341
BUS\_UARTTX & 0x0080 & The transmit UART is idle, and ready for its next
342
                character.\\\hline
343
BUS\_GPIO   & 0x0100 & The GPIO input lines have changed values.\\\hline
344
BUS\_FLASH  & 0x0200 & The flash device has finished either its erase or
345
                write cycle, and is ready for its next command. (Alternate
346
        config only.)\\\hline
347
BUS\_SCOPE  & 0x0400 & A scope has completed collecting.\\\hline
348
BUS\_GPSRX  & 0x0800 & A character has been received via GPS\\\hline
349
BUS\_SDCARD & 0x1000 & The SD-Card controller has become idle\\\hline
350
BUS\_OLED   & 0x2000 & The OLED interface has become idle\\\hline
351
BUS\_ZIP    & 0x4000 & True if the ZipCPU has come to a halt\\\hline
352
\end{tabular}
353
\caption{Bus Interrupts}\label{tbl:bus-ints}
354
\end{center}\end{table}
355
 
356
\subsection{Last Bus Error Address}
357
\subsection{General Purpose I/O}
358
\subsection{UART Data Register}
359
\section{Debugging Scopes}
360
\section{Internal Configuration Access Port}
361
\section{Real--Time Clock}
362
\section{On-Chip Block RAM}
363
\section{Flash Memory}
364
\begin{table}
365
\begin{center}\begin{reglist}
366
ewreg  &\scalebox{0.8}{\tt 0x0180} & 32 & R & Erase/write control and status\\\hline
367
status      &\scalebox{0.8}{\tt 0x0181} & 8 & R/W & Bus Interrupt Controller \\\hline
368
nvconf   &\scalebox{0.8}{\tt 0x0182} & 16 & R & Last Bus Error Address\\\hline
369
vconf &\scalebox{0.8}{\tt 0x0183} & 8 & R & Ticks since startup\\\hline
370
evonc    &\scalebox{0.8}{\tt 0x0184} & 8 & R/W & Button/Switch controller\\\hline
371
lock  &\scalebox{0.8}{\tt 0x0185} & 8 & R/W & LED Controller \\\hline
372
flagstatus&\scalebox{0.8}{\tt 0x0186} & 8 & R/W & Auxilliary UART config\\\hline
373
clear   &\scalebox{0.8}{\tt 0x0187} & 8 & R/W & Clear status on write\\\hline
374
Device ID &\scalebox{0.8}{\tt 0x0188-}\hfill & 5x32 & R & Device ID\\
375
        &\scalebox{0.8}{\tt -0x018c}\hfill & & & \\\hline
376
% asyncID &\scalebox{0.8}{\tt 0x018d} & 32 & R/W & Asynch Read ID.  Write starts the ASynch read, 0xff returned until complete\\\hline
377
asyncOTP  &\scalebox{0.8}{\tt 0x18e} & 32 & W & Asynch Read OTP.  Write starts the ASynch read, 0xff returned until complete\\\hline
378
OTP     &\scalebox{0.8}{\tt 0x0190-}\hfill &16x32 & R/W & OTP Memory\\
379
        &\scalebox{0.8}{\hfill\tt -0x19f} & & & \\\hline
380
% 0x010c-0x010f
381
\end{reglist}
382
\caption{Flash control registers}\label{tbl:flctl}
383
\end{center}\end{table}
384
 
385
\chapter{Wishbone}
386
 
387
The master and slave interfaces have been simplified with the following
388
requirement: the {\tt STB} line is not allowed to be high unless the {\tt CYC}
389
line is high.  In this fashion, a slave may often be able to ignore {\tt CYC}
390
and only act on the presence of {\tt STB}, knowing that {\tt CYC} must be
391
active at the same time.
392
 
393
\chapter{Clocks}
394
\begin{table}\begin{center}
395
\begin{clocklist}
396
{\tt i\_clk\_100mhz} & Ext & \multicolumn{2}{c|}{100~MHz} &
397
        100~MHz Crystal Oscillator \\\hline
398
{\tt s\_clk} & PLL & 200~MHz & & Internal Logic, Wishbone Clock \\\hline
399
{\tt ram\_clk} & PLL & 200~MHz & & DDR3 SDRAM Clock \\\hline
400
{\tt o\_sck} & Logic & 108~MHz & 50~MHz & QSPI Flash clock \\\hline
401
{\tt o\_sdclk} & Logic & 50~MHz & 100~kHz & SD--Card clock \\\hline
402
\end{clocklist}
403
\caption{OpenArty clocks}\label{tbl:clocks}
404
\end{center}\end{table}
405
 
406
\chapter{I/O Ports}
407
 
408
Table.~\ref{tbl:ioports}
409
\begin{table}[htbp]
410
\begin{center}
411
\begin{portlist}
412
i\_clk\_100mhz & 1 & Input & Clock\\\hline
413
o\_qspi\_cs\_n & 1 & Output & Quad SPI Flash chip select\\\hline
414
o\_qspi\_sck & 1 & Output & Quad SPI Flash clock\\\hline
415
io\_qspi\_dat & 4 & Input/Output & Four-wire SPI flash data bus\\\hline
416
i\_btn & 4 & Input  & Inputs from the two on-board push-buttons\\\hline
417
i\_sw  & 4 & Input  & Inputs from the two on-board push-buttons\\\hline
418
o\_led & 4 & Output & Outputs controlling the four on-board LED's\\\hline
419
o\_clr\_led0 & 3 & Output & \\\hline
420
o\_clr\_led1 & 3 & Output & \\\hline
421
o\_clr\_led2 & 3 & Output & \\\hline
422
o\_clr\_led3 & 3 & Output & \\\hline
423
i\_uart\_rx & 1 & Input &  UART receive input\\\hline
424
o\_uart\_tx & 1 & Output & UART transmit output\\\hline\hline
425
i\_aux\_rx & 1 & Input &  Auxiliary/Pmod UART receive input\\\hline
426
o\_aux\_tx & 1 & Output & Auxiliary/Pmod UART transmit output\\\hline
427
i\_aux\_rts & 1 & Input &  Auxiliary/Pmod UART receive input\\\hline
428
o\_aux\_cts & 1 & Output & Auxiliary/Pmod UART transmit output\\\hline\hline
429
i\_gps\_rx & 1 & Input &  GPS/Pmod UART receive input\\\hline
430
o\_gps\_tx & 1 & Output & GPS/Pmod UART transmit output\\\hline
431
i\_gps\_pps & 1 & Input & GPS Part-per-second (PPS) signal\\\hline
432
i\_gps\_3df & 1 & Input & GPS\\\hline\hline
433
o\_oled\_cs\_n & 1 & Output & \\\hline
434
o\_oled\_sck & 1 & Output & \\\hline
435
o\_oled\_mosi & 1 & Output & \\\hline
436
i\_oled\_miso & 1 & Input & \\\hline
437
o\_oled\_reset & 1 & Output & \\\hline
438
o\_oled\_dc & 1 & Output & \\\hline
439
o\_oled\_en & 1 & Output & \\\hline
440
o\_oled\_pmen & 1 & Output & \\\hline\hline
441
o\_sd\_sck & 1 & Output & SD Clock\\\hline
442
i\_sd\_cd & 1 & Input & Card Detect\\\hline
443
i\_sd\_wp & 1 & Input & Write Protect\\\hline
444
io\_cmd & 1 & In/Output & SD Bi-directional command wire\\\hline
445
io\_sd & 4 & In/Output & SD Bi-directional data lines\\\hline\hline
446
o\_cls\_cs\_n & 1 & Output & CLS Display chip select\\\hline
447
o\_cls\_sck & 1 & Output & CLS Display clock\\\hline
448
o\_cls\_mosi & 1 & Output & CLS Display MOSI\\\hline
449
i\_cls\_miso & 1 & Input & CLS Display MISO\\\hline\hline
450
\end{portlist}
451
\caption{List of IO ports}\label{tbl:ioports}
452
\end{center}\end{table}
453
lists the various I/O ports associated with OpenArty.
454
 
455
 
456
% Appendices
457
% Index
458
\end{document}
459
 
460
 

powered by: WebSVN 2.1.0

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