From ccd0a19af71bb8edc05bf7689be83cc4b050de40 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Thu, 16 Dec 2021 17:32:38 -0500 Subject: [PATCH] Organized the documentation, corrected and extended the entries. The original datasheet has been broken up into individual pages; these can be recast into sphinx or HTML as needed, while the graphics have been exported to SVG. --- doc/{ => postscript}/caravel_block_diagram.ps | 0 doc/{ => postscript}/caravel_clocking.ps | 0 doc/{ => postscript}/caravel_floorplan.ps | 0 doc/postscript/counter_timer_function.ps | 834 ++++++++++++++ doc/postscript/gpio_function.ps | 819 +++++++++++++ doc/postscript/housekeeping_function.ps | 1010 +++++++++++++++++ doc/postscript/irq_function.ps | 267 +++++ doc/postscript/memory_map.ps | 615 ++++++++++ doc/postscript/monitor_function.ps | 526 +++++++++ doc/{ => postscript}/openframe_pinout.ps | 0 doc/postscript/qspi_function.ps | 388 +++++++ doc/postscript/spi_master_function.ps | 455 ++++++++ doc/postscript/uart_function.ps | 516 +++++++++ doc/{ => svg}/caravel_block_diagram.svg | 0 doc/{ => svg}/caravel_clocking.svg | 0 doc/{ => svg}/caravel_floorplan.svg | 0 doc/{ => svg}/housekeeping.svg | 0 doc/{ => svg}/management_core_wrapper.svg | 0 doc/{ => svg}/user_project_wrapper.svg | 0 19 files changed, 5430 insertions(+) rename doc/{ => postscript}/caravel_block_diagram.ps (100%) rename doc/{ => postscript}/caravel_clocking.ps (100%) rename doc/{ => postscript}/caravel_floorplan.ps (100%) create mode 100644 doc/postscript/counter_timer_function.ps create mode 100644 doc/postscript/gpio_function.ps create mode 100644 doc/postscript/housekeeping_function.ps create mode 100644 doc/postscript/irq_function.ps create mode 100644 doc/postscript/memory_map.ps create mode 100644 doc/postscript/monitor_function.ps rename doc/{ => postscript}/openframe_pinout.ps (100%) create mode 100644 doc/postscript/qspi_function.ps create mode 100644 doc/postscript/spi_master_function.ps create mode 100644 doc/postscript/uart_function.ps rename doc/{ => svg}/caravel_block_diagram.svg (100%) rename doc/{ => svg}/caravel_clocking.svg (100%) rename doc/{ => svg}/caravel_floorplan.svg (100%) rename doc/{ => svg}/housekeeping.svg (100%) rename doc/{ => svg}/management_core_wrapper.svg (100%) rename doc/{ => svg}/user_project_wrapper.svg (100%) diff --git a/doc/caravel_block_diagram.ps b/doc/postscript/caravel_block_diagram.ps similarity index 100% rename from doc/caravel_block_diagram.ps rename to doc/postscript/caravel_block_diagram.ps diff --git a/doc/caravel_clocking.ps b/doc/postscript/caravel_clocking.ps similarity index 100% rename from doc/caravel_clocking.ps rename to doc/postscript/caravel_clocking.ps diff --git a/doc/caravel_floorplan.ps b/doc/postscript/caravel_floorplan.ps similarity index 100% rename from doc/caravel_floorplan.ps rename to doc/postscript/caravel_floorplan.ps diff --git a/doc/postscript/counter_timer_function.ps b/doc/postscript/counter_timer_function.ps new file mode 100644 index 00000000..14cd5f70 --- /dev/null +++ b/doc/postscript/counter_timer_function.ps @@ -0,0 +1,834 @@ +%!PS-Adobe-3.0 +%%Title: counter_timer_function.ps +%%Creator: XCircuit v0.0 rev-1817832939 +%%CreationDate: Thu Dec 16 14:19:33 2021 +%%Pages: 2 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%+ font Courier-Bold +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + + +%%EndSetup + +%%Page: counter_timer 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1088 640 translate + +0.678 1.000 0.184 scb +512 1.000 -896 1280 -896 -448 352 -448 352 1280 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -896 1248 label +1 1.000 -896 1232 352 1232 2 polygon +(page 15) {/Helvetica cf} 2 31 0.000 0.700 336 1264 label +(Counter-Timer 0) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 1200 label +0 1.000 -848 928 -848 976 176 976 176 928 4 polygon +1 1.000 -816 928 -816 880 2 polygon +1 1.000 -784 928 -784 880 2 polygon +1 1.000 -752 928 -752 880 2 polygon +1 1.000 -720 928 -720 880 2 polygon +1 1.000 -688 928 -688 880 2 polygon +1 1.000 -656 928 -656 880 2 polygon +1 1.000 -624 928 -624 880 2 polygon +1 1.000 -592 928 -592 880 2 polygon +1 1.000 -560 928 -560 880 2 polygon +1 1.000 -528 928 -528 880 2 polygon +1 1.000 -496 928 -496 880 2 polygon +1 1.000 -464 928 -464 880 2 polygon +1 1.000 -432 928 -432 880 2 polygon +1 1.000 -400 928 -400 880 2 polygon +1 1.000 -368 928 -368 880 2 polygon +1 1.000 -304 928 -304 880 2 polygon +1 1.000 -272 928 -272 880 2 polygon +1 1.000 -240 928 -240 880 2 polygon +1 1.000 -208 928 -208 880 2 polygon +1 1.000 -176 928 -176 880 2 polygon +1 1.000 -144 928 -144 880 2 polygon +1 1.000 -112 928 -112 880 2 polygon +1 1.000 -80 928 -80 880 2 polygon +1 1.000 -48 928 -48 880 2 polygon +1 1.000 -16 928 -16 880 2 polygon +1 1.000 16 928 16 880 2 polygon +1 1.000 48 928 48 880 2 polygon +1 1.000 80 928 80 880 2 polygon +1 1.000 112 928 112 880 2 polygon +1 1.000 144 928 144 880 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 160 904 label +(1) {/Helvetica cf} 2 21 0.000 0.500 128 904 label +(2) {/Helvetica cf} 2 21 0.000 0.500 96 904 label +(3) {/Helvetica cf} 2 21 0.000 0.500 64 904 label +0.600 0.600 0.600 scb +(4) {/Helvetica cf} 2 21 0.000 0.500 32 904 label +(5) {/Helvetica cf} 2 21 0.000 0.500 0 904 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -32 904 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -64 904 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -96 904 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -128 904 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -160 904 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -192 904 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -224 904 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -256 904 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -288 904 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -320 904 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -352 904 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -384 904 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -416 904 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -448 904 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -480 904 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -512 904 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -544 904 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -576 904 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -608 904 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -640 904 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -672 904 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -704 904 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -736 904 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -768 904 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -800 904 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -832 904 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 208 912 label +(0x22000000) {/Courier-Bold cf} 2 16 0.000 0.700 -32 992 label +1 1.000 -80 976 -80 1024 2 polygon +1 1.000 -592 976 -592 1024 2 polygon +1 1.000 -848 1024 -848 976 2 polygon +1 1.000 176 1024 176 976 2 polygon +1 1.000 176 928 176 880 2 polygon +1 1.000 -848 928 -848 880 2 polygon +0.600 0.600 0.600 scb +(0x22000001) {/Courier-Bold cf} 2 16 360.000 0.700 -288 992 label +(0x22000002) {/Courier-Bold cf} 2 16 0.000 0.700 -544 992 label +(0x22000003) {/Courier-Bold cf} 2 16 0.000 0.700 -800 992 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 256 992 label +(value) {/Helvetica cf} 2 20 0.000 0.700 208 960 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -448 944 label +1 1.000 -848 1024 176 1024 2 polygon +1 1.000 -848 880 176 880 2 polygon +(reg_timer0_config) {/Courier-Bold cf} 2 16 0.000 0.700 -432 1040 label +1 1.000 -80 976 -80 928 2 polygon +1 1.000 -336 1024 -336 976 2 polygon +1 1.000 -336 928 -336 880 2 polygon +(Timer config) {/Helvetica cf} 2 17 360.000 0.700 48 944 label +(Table 16) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -848 1040 label +0 1.000 -848 400 -848 448 176 448 176 400 4 polygon +1 1.000 -816 400 -816 352 2 polygon +1 1.000 -784 400 -784 352 2 polygon +1 1.000 -752 400 -752 352 2 polygon +1 1.000 -720 400 -720 352 2 polygon +1 1.000 -688 400 -688 352 2 polygon +1 1.000 -656 400 -656 352 2 polygon +1 1.000 -624 400 -624 352 2 polygon +1 1.000 -592 400 -592 352 2 polygon +1 1.000 -560 400 -560 352 2 polygon +1 1.000 -528 400 -528 352 2 polygon +1 1.000 -496 400 -496 352 2 polygon +1 1.000 -464 400 -464 352 2 polygon +1 1.000 -432 400 -432 352 2 polygon +1 1.000 -400 400 -400 352 2 polygon +1 1.000 -368 400 -368 352 2 polygon +1 1.000 -304 400 -304 352 2 polygon +1 1.000 -272 400 -272 352 2 polygon +1 1.000 -240 400 -240 352 2 polygon +1 1.000 -208 400 -208 352 2 polygon +1 1.000 -176 400 -176 352 2 polygon +1 1.000 -144 400 -144 352 2 polygon +1 1.000 -112 400 -112 352 2 polygon +1 1.000 -80 400 -80 352 2 polygon +1 1.000 -48 400 -48 352 2 polygon +1 1.000 -16 400 -16 352 2 polygon +1 1.000 16 400 16 352 2 polygon +1 1.000 48 400 48 352 2 polygon +1 1.000 80 400 80 352 2 polygon +1 1.000 112 400 112 352 2 polygon +1 1.000 144 400 144 352 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 160 376 label +(1) {/Helvetica cf} 2 21 0.000 0.500 128 376 label +(2) {/Helvetica cf} 2 21 0.000 0.500 96 376 label +(3) {/Helvetica cf} 2 21 0.000 0.500 64 376 label +(4) {/Helvetica cf} 2 21 0.000 0.500 32 376 label +(5) {/Helvetica cf} 2 21 0.000 0.500 0 376 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -32 376 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -64 376 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -96 376 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -128 376 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -160 376 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -192 376 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -224 376 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -256 376 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -288 376 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -320 376 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -352 376 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -384 376 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -416 376 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -448 376 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -480 376 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -512 376 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -544 376 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -576 376 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -608 376 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -640 376 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -672 376 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -704 376 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -736 376 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -768 376 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -800 376 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -832 376 label +(bit) {/Helvetica cf} 2 20 0.000 0.700 208 384 label +(0x22000004) {/Courier-Bold cf} 2 16 0.000 0.700 -32 464 label +1 1.000 -80 448 -80 496 2 polygon +1 1.000 -592 448 -592 496 2 polygon +1 1.000 -848 496 -848 448 2 polygon +1 1.000 176 496 176 448 2 polygon +1 1.000 176 400 176 352 2 polygon +1 1.000 -848 400 -848 352 2 polygon +(address) {/Helvetica cf} 2 17 0.000 0.700 256 464 label +(value) {/Helvetica cf} 2 20 0.000 0.700 208 432 label +1 1.000 -848 496 176 496 2 polygon +1 1.000 -848 352 176 352 2 polygon +(reg_timer0_value) {/Courier-Bold cf} 2 16 360.000 0.700 -432 512 label +1 1.000 -336 496 -336 448 2 polygon +1 1.000 -336 400 -336 352 2 polygon +(Table 17) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -848 512 label +0 1.000 -848 96 -848 144 176 144 176 96 4 polygon +1 1.000 -816 96 -816 48 2 polygon +1 1.000 -784 96 -784 48 2 polygon +1 1.000 -752 96 -752 48 2 polygon +1 1.000 -720 96 -720 48 2 polygon +1 1.000 -688 96 -688 48 2 polygon +1 1.000 -656 96 -656 48 2 polygon +1 1.000 -624 96 -624 48 2 polygon +1 1.000 -592 96 -592 48 2 polygon +1 1.000 -560 96 -560 48 2 polygon +1 1.000 -528 96 -528 48 2 polygon +1 1.000 -496 96 -496 48 2 polygon +1 1.000 -464 96 -464 48 2 polygon +1 1.000 -432 96 -432 48 2 polygon +1 1.000 -400 96 -400 48 2 polygon +1 1.000 -368 96 -368 48 2 polygon +1 1.000 -304 96 -304 48 2 polygon +1 1.000 -272 96 -272 48 2 polygon +1 1.000 -240 96 -240 48 2 polygon +1 1.000 -208 96 -208 48 2 polygon +1 1.000 -176 96 -176 48 2 polygon +1 1.000 -144 96 -144 48 2 polygon +1 1.000 -112 96 -112 48 2 polygon +1 1.000 -80 96 -80 48 2 polygon +1 1.000 -48 96 -48 48 2 polygon +1 1.000 -16 96 -16 48 2 polygon +1 1.000 16 96 16 48 2 polygon +1 1.000 48 96 48 48 2 polygon +1 1.000 80 96 80 48 2 polygon +1 1.000 112 96 112 48 2 polygon +1 1.000 144 96 144 48 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 160 72 label +(1) {/Helvetica cf} 2 21 0.000 0.500 128 72 label +(2) {/Helvetica cf} 2 21 0.000 0.500 96 72 label +(3) {/Helvetica cf} 2 21 0.000 0.500 64 72 label +(4) {/Helvetica cf} 2 21 0.000 0.500 32 72 label +(5) {/Helvetica cf} 2 21 0.000 0.500 0 72 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -32 72 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -64 72 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -96 72 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -128 72 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -160 72 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -192 72 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -224 72 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -256 72 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -288 72 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -320 72 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -352 72 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -384 72 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -416 72 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -448 72 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -480 72 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -512 72 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -544 72 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -576 72 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -608 72 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -640 72 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -672 72 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -704 72 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -736 72 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -768 72 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -800 72 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -832 72 label +(bit) {/Helvetica cf} 2 20 0.000 0.700 208 80 label +(0x22000008) {/Courier-Bold cf} 2 16 0.000 0.700 -32 160 label +1 1.000 -80 144 -80 192 2 polygon +1 1.000 -592 144 -592 192 2 polygon +1 1.000 -848 192 -848 144 2 polygon +1 1.000 176 192 176 144 2 polygon +1 1.000 176 96 176 48 2 polygon +1 1.000 -848 96 -848 48 2 polygon +(0x22000009) {/Courier-Bold cf} 2 16 360.000 0.700 -288 160 label +(0x2200000a) {/Courier-Bold cf} 2 16 0.000 0.700 -544 160 label +(0x2200000b) {/Courier-Bold cf} 2 16 0.000 0.700 -800 160 label +(address) {/Helvetica cf} 2 17 0.000 0.700 256 160 label +(value) {/Helvetica cf} 2 20 0.000 0.700 208 128 label +1 1.000 -848 192 176 192 2 polygon +1 1.000 -848 48 176 48 2 polygon +(reg_timer0_data) {/Courier-Bold cf} 2 16 360.000 0.700 -432 208 label +1 1.000 -336 192 -336 144 2 polygon +1 1.000 -336 96 -336 48 2 polygon +(Table 18) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -848 208 label +(Timer value) {/Helvetica cf} 2 17 0.000 0.700 -336 416 label +(0x22000005) {/Courier-Bold cf} 2 16 0.000 0.700 -288 464 label +(0x22000006) {/Courier-Bold cf} 2 16 0.000 0.700 -544 464 label +(0x22000007) {/Courier-Bold cf} 2 16 0.000 0.700 -800 464 label +(Timer data) {/Helvetica cf} 2 17 0.000 0.700 -336 112 label +(Timer configuration bit definitions) {/Helvetica cf} 2 16 0.000 0.700 -848 832 +label +1 1.000 -848 816 176 816 2 polygon +(Bit 3) {/Helvetica cf} 2 16 0.000 0.700 -848 784 label +(Bit 2) {/Helvetica cf} 2 16 0.000 0.700 -848 720 label +(Bit 1) {/Helvetica cf} 2 16 0.000 0.700 -848 656 label +(Bit 0) {/Helvetica cf} 2 16 0.000 0.700 -848 592 label +(Counter/timer enable) {/Helvetica cf} 2 16 0.000 0.700 -736 784 label +(1 = counter/timer enabled) {/Helvetica cf} 2 16 0.000 0.700 -352 784 label +(0 = counter/timer disabled) {/Helvetica cf} 2 16 0.000 0.700 -352 752 label +(Oneshot mode) {/Helvetica cf} 2 16 0.000 0.700 -736 720 label +(1 = oneshot mode) {/Helvetica cf} 2 16 0.000 0.700 -352 720 label +(0 = continuous mode) {/Helvetica cf} 2 16 0.000 0.700 -352 688 label +(Updown) {/Helvetica cf} 2 16 0.000 0.700 -736 656 label +(1 = count up) {/Helvetica cf} 2 16 0.000 0.700 -352 656 label +(0 = count down) {/Helvetica cf} 2 16 0.000 0.700 -352 624 label +(Interrupt enable) {/Helvetica cf} 2 16 0.000 0.700 -736 592 label +(1 = interrupt enabled) {/Helvetica cf} 2 16 0.000 0.700 -352 592 label +(0 = interrupt disabled) {/Helvetica cf} 2 16 0.000 0.700 -352 560 label +(MHz, the longest single time interval is 26.84 seconds.) {qS} +(core clock rate of 80) {CR} +(variety of timing functions including one-shot counts, continuous timing, and interval interrupts. At a) +{CR} +(The counter/timer is a general-purpose 32-bit adder and subtractor that can be configured for a) +{/Helvetica cf} 8 28 0.000 0.700 -896 1168 label +(register is read-write and can be used to reset the timer.) {CR} +(The value in this register is the current value of the counter. Value is 32 bits. The) +{/Helvetica cf} 4 28 0.000 0.700 -848 320 label +(The value in this register is the reset value for the comparator.) +{/Helvetica cf} 2 28 0.000 0.700 -848 16 label +(reg_timer_value register.) {CR} +(timer in a hold state. When re-enabled, counting resumes. To reset the timer, write zero to the) +{CR} +(Note: When the counter/timer is disabled, the reg_timer_value remains unchanged, which puts the) +{/Helvetica cf} 6 16 0.000 0.700 -896 -432 label +(If counting down, the count continues until the counter reaches zero.) {CR} +(the counter is enabled. If counting up, the count continues until the counter reaches reg_timer_data.) +{CR} +(When enabled, the counter counts up or down from the value set in reg_timer_value at the time) +{/Helvetica cf} 6 28 0.000 0.700 -896 -48 label + +(reaches the value of reg_timer_data \(up count\) or zero \(down count\), and stops.) +{CR} +(In one-shot mode, the counter triggers an interrupt \(IRQ channel 10; see next page\) when it) +{/Helvetica cf} 4 28 0.000 0.700 -896 -272 label +(the counter will generate an interrupt on every cycle.) {CR} +(reg_timer_data if counting down, and the count continues immediately. If the interrupt is enabled,) +{CR} +(In continuous mode, the counter resets to zero if counting up, and resets to the value in) +{/Helvetica cf} 6 28 0.000 0.700 -896 -160 label +pgsave restore showpage + +%%Page: caravel_datasheet 2 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1024 352 translate + +0.678 1.000 0.184 scb +512 1.000 -832 1568 -832 -160 416 -160 416 1568 4 polygon +sce +1 1.000 -832 1520 416 1520 2 polygon +(page 16) {/Helvetica cf} 2 31 0.000 0.700 400 1552 label +(Counter-Timer 1) {/Helvetica-Bold cf} 2 16 0.000 0.700 -832 1488 label +0 1.000 -784 1216 -784 1264 240 1264 240 1216 4 polygon +1 1.000 -752 1216 -752 1168 2 polygon +1 1.000 -720 1216 -720 1168 2 polygon +1 1.000 -688 1216 -688 1168 2 polygon +1 1.000 -656 1216 -656 1168 2 polygon +1 1.000 -624 1216 -624 1168 2 polygon +1 1.000 -592 1216 -592 1168 2 polygon +1 1.000 -560 1216 -560 1168 2 polygon +1 1.000 -528 1216 -528 1168 2 polygon +1 1.000 -496 1216 -496 1168 2 polygon +1 1.000 -464 1216 -464 1168 2 polygon +1 1.000 -432 1216 -432 1168 2 polygon +1 1.000 -400 1216 -400 1168 2 polygon +1 1.000 -368 1216 -368 1168 2 polygon +1 1.000 -336 1216 -336 1168 2 polygon +1 1.000 -304 1216 -304 1168 2 polygon +1 1.000 -240 1216 -240 1168 2 polygon +1 1.000 -208 1216 -208 1168 2 polygon +1 1.000 -176 1216 -176 1168 2 polygon +1 1.000 -144 1216 -144 1168 2 polygon +1 1.000 -112 1216 -112 1168 2 polygon +1 1.000 -80 1216 -80 1168 2 polygon +1 1.000 -48 1216 -48 1168 2 polygon +1 1.000 -16 1216 -16 1168 2 polygon +1 1.000 16 1216 16 1168 2 polygon +1 1.000 48 1216 48 1168 2 polygon +1 1.000 80 1216 80 1168 2 polygon +1 1.000 112 1216 112 1168 2 polygon +1 1.000 144 1216 144 1168 2 polygon +1 1.000 176 1216 176 1168 2 polygon +1 1.000 208 1216 208 1168 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 224 1192 label +(1) {/Helvetica cf} 2 21 0.000 0.500 192 1192 label +(2) {/Helvetica cf} 2 21 0.000 0.500 160 1192 label +(3) {/Helvetica cf} 2 21 0.000 0.500 128 1192 label +0.600 0.600 0.600 scb +(4) {/Helvetica cf} 2 21 0.000 0.500 96 1192 label +(5) {/Helvetica cf} 2 21 0.000 0.500 64 1192 label +(6) {/Helvetica cf} 2 21 0.000 0.500 32 1192 label +(7) {/Helvetica cf} 2 21 0.000 0.500 0 1192 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -32 1192 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -64 1192 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -96 1192 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -128 1192 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -160 1192 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -192 1192 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -224 1192 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -256 1192 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -288 1192 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -320 1192 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -352 1192 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -384 1192 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -416 1192 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -448 1192 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -480 1192 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -512 1192 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -544 1192 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -576 1192 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -608 1192 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -640 1192 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -672 1192 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -704 1192 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -736 1192 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -768 1192 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 272 1200 label +(0x23000000) {/Courier-Bold cf} 2 16 0.000 0.700 32 1280 label +1 1.000 -16 1264 -16 1312 2 polygon +1 1.000 -528 1264 -528 1312 2 polygon +1 1.000 -784 1312 -784 1264 2 polygon +1 1.000 240 1312 240 1264 2 polygon +1 1.000 240 1216 240 1168 2 polygon +1 1.000 -784 1216 -784 1168 2 polygon +0.600 0.600 0.600 scb +(0x23000001) {/Courier-Bold cf} 2 16 360.000 0.700 -224 1280 label +(0x23000002) {/Courier-Bold cf} 2 16 0.000 0.700 -480 1280 label +(0x23000003) {/Courier-Bold cf} 2 16 0.000 0.700 -736 1280 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 320 1280 label +(value) {/Helvetica cf} 2 20 0.000 0.700 272 1248 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -384 1232 label +1 1.000 -784 1312 240 1312 2 polygon +1 1.000 -784 1168 240 1168 2 polygon +(reg_timer1_config) {/Courier-Bold cf} 2 16 0.000 0.700 -368 1328 label +1 1.000 -16 1264 -16 1216 2 polygon +1 1.000 -272 1312 -272 1264 2 polygon +1 1.000 -272 1216 -272 1168 2 polygon +(Timer config) {/Helvetica cf} 2 17 360.000 0.700 112 1232 label +(Table 19) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -784 1328 label +0 1.000 -784 688 -784 736 240 736 240 688 4 polygon +1 1.000 -752 688 -752 640 2 polygon +1 1.000 -720 688 -720 640 2 polygon +1 1.000 -688 688 -688 640 2 polygon +1 1.000 -656 688 -656 640 2 polygon +1 1.000 -624 688 -624 640 2 polygon +1 1.000 -592 688 -592 640 2 polygon +1 1.000 -560 688 -560 640 2 polygon +1 1.000 -528 688 -528 640 2 polygon +1 1.000 -496 688 -496 640 2 polygon +1 1.000 -464 688 -464 640 2 polygon +1 1.000 -432 688 -432 640 2 polygon +1 1.000 -400 688 -400 640 2 polygon +1 1.000 -368 688 -368 640 2 polygon +1 1.000 -336 688 -336 640 2 polygon +1 1.000 -304 688 -304 640 2 polygon +1 1.000 -240 688 -240 640 2 polygon +1 1.000 -208 688 -208 640 2 polygon +1 1.000 -176 688 -176 640 2 polygon +1 1.000 -144 688 -144 640 2 polygon +1 1.000 -112 688 -112 640 2 polygon +1 1.000 -80 688 -80 640 2 polygon +1 1.000 -48 688 -48 640 2 polygon +1 1.000 -16 688 -16 640 2 polygon +1 1.000 16 688 16 640 2 polygon +1 1.000 48 688 48 640 2 polygon +1 1.000 80 688 80 640 2 polygon +1 1.000 112 688 112 640 2 polygon +1 1.000 144 688 144 640 2 polygon +1 1.000 176 688 176 640 2 polygon +1 1.000 208 688 208 640 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 224 664 label +(1) {/Helvetica cf} 2 21 0.000 0.500 192 664 label +(2) {/Helvetica cf} 2 21 0.000 0.500 160 664 label +(3) {/Helvetica cf} 2 21 0.000 0.500 128 664 label +(4) {/Helvetica cf} 2 21 0.000 0.500 96 664 label +(5) {/Helvetica cf} 2 21 0.000 0.500 64 664 label +(6) {/Helvetica cf} 2 21 0.000 0.500 32 664 label +(7) {/Helvetica cf} 2 21 0.000 0.500 0 664 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -32 664 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -64 664 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -96 664 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -128 664 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -160 664 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -192 664 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -224 664 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -256 664 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -288 664 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -320 664 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -352 664 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -384 664 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -416 664 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -448 664 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -480 664 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -512 664 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -544 664 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -576 664 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -608 664 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -640 664 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -672 664 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -704 664 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -736 664 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -768 664 label +(bit) {/Helvetica cf} 2 20 0.000 0.700 272 672 label +(0x23000004) {/Courier-Bold cf} 2 16 0.000 0.700 32 752 label +1 1.000 -16 736 -16 784 2 polygon +1 1.000 -528 736 -528 784 2 polygon +1 1.000 -784 784 -784 736 2 polygon +1 1.000 240 784 240 736 2 polygon +1 1.000 240 688 240 640 2 polygon +1 1.000 -784 688 -784 640 2 polygon +(address) {/Helvetica cf} 2 17 0.000 0.700 320 752 label +(value) {/Helvetica cf} 2 20 0.000 0.700 272 720 label +1 1.000 -784 784 240 784 2 polygon +1 1.000 -784 640 240 640 2 polygon +(reg_timer1_value) {/Courier-Bold cf} 2 16 360.000 0.700 -368 800 label +1 1.000 -272 784 -272 736 2 polygon +1 1.000 -272 688 -272 640 2 polygon +(Table 20) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -784 800 label +0 1.000 -784 384 -784 432 240 432 240 384 4 polygon +1 1.000 -752 384 -752 336 2 polygon +1 1.000 -720 384 -720 336 2 polygon +1 1.000 -688 384 -688 336 2 polygon +1 1.000 -656 384 -656 336 2 polygon +1 1.000 -624 384 -624 336 2 polygon +1 1.000 -592 384 -592 336 2 polygon +1 1.000 -560 384 -560 336 2 polygon +1 1.000 -528 384 -528 336 2 polygon +1 1.000 -496 384 -496 336 2 polygon +1 1.000 -464 384 -464 336 2 polygon +1 1.000 -432 384 -432 336 2 polygon +1 1.000 -400 384 -400 336 2 polygon +1 1.000 -368 384 -368 336 2 polygon +1 1.000 -336 384 -336 336 2 polygon +1 1.000 -304 384 -304 336 2 polygon +1 1.000 -240 384 -240 336 2 polygon +1 1.000 -208 384 -208 336 2 polygon +1 1.000 -176 384 -176 336 2 polygon +1 1.000 -144 384 -144 336 2 polygon +1 1.000 -112 384 -112 336 2 polygon +1 1.000 -80 384 -80 336 2 polygon +1 1.000 -48 384 -48 336 2 polygon +1 1.000 -16 384 -16 336 2 polygon +1 1.000 16 384 16 336 2 polygon +1 1.000 48 384 48 336 2 polygon +1 1.000 80 384 80 336 2 polygon +1 1.000 112 384 112 336 2 polygon +1 1.000 144 384 144 336 2 polygon +1 1.000 176 384 176 336 2 polygon +1 1.000 208 384 208 336 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 224 360 label +(1) {/Helvetica cf} 2 21 0.000 0.500 192 360 label +(2) {/Helvetica cf} 2 21 0.000 0.500 160 360 label +(3) {/Helvetica cf} 2 21 0.000 0.500 128 360 label +(4) {/Helvetica cf} 2 21 0.000 0.500 96 360 label +(5) {/Helvetica cf} 2 21 0.000 0.500 64 360 label +(6) {/Helvetica cf} 2 21 0.000 0.500 32 360 label +(7) {/Helvetica cf} 2 21 0.000 0.500 0 360 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -32 360 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -64 360 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -96 360 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -128 360 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -160 360 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -192 360 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -224 360 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -256 360 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -288 360 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -320 360 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -352 360 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -384 360 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -416 360 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -448 360 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -480 360 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -512 360 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -544 360 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -576 360 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -608 360 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -640 360 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -672 360 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -704 360 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -736 360 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -768 360 label +(bit) {/Helvetica cf} 2 20 0.000 0.700 272 368 label +(0x23000008) {/Courier-Bold cf} 2 16 0.000 0.700 32 448 label +1 1.000 -16 432 -16 480 2 polygon +1 1.000 -528 432 -528 480 2 polygon +1 1.000 -784 480 -784 432 2 polygon +1 1.000 240 480 240 432 2 polygon +1 1.000 240 384 240 336 2 polygon +1 1.000 -784 384 -784 336 2 polygon +(0x23000009) {/Courier-Bold cf} 2 16 360.000 0.700 -224 448 label +(0x2300000a) {/Courier-Bold cf} 2 16 0.000 0.700 -480 448 label +(0x2300000b) {/Courier-Bold cf} 2 16 0.000 0.700 -736 448 label +(address) {/Helvetica cf} 2 17 0.000 0.700 320 448 label +(value) {/Helvetica cf} 2 20 0.000 0.700 272 416 label +1 1.000 -784 480 240 480 2 polygon +1 1.000 -784 336 240 336 2 polygon +(reg_timer1_data) {/Courier-Bold cf} 2 16 360.000 0.700 -368 496 label +1 1.000 -272 480 -272 432 2 polygon +1 1.000 -272 384 -272 336 2 polygon +(Table 21) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -784 496 label +(Timer value) {/Helvetica cf} 2 17 0.000 0.700 -272 704 label +(0x23000005) {/Courier-Bold cf} 2 16 0.000 0.700 -224 752 label +(0x23000006) {/Courier-Bold cf} 2 16 0.000 0.700 -480 752 label +(0x23000007) {/Courier-Bold cf} 2 16 0.000 0.700 -736 752 label +(Timer data) {/Helvetica cf} 2 17 0.000 0.700 -272 400 label +(Timer configuration bit definitions) {/Helvetica cf} 2 16 0.000 0.700 -784 +1120 label +1 1.000 -784 1104 240 1104 2 polygon +(Bit 3) {/Helvetica cf} 2 16 0.000 0.700 -784 1072 label +(Bit 2) {/Helvetica cf} 2 16 0.000 0.700 -784 1008 label +(Bit 1) {/Helvetica cf} 2 16 0.000 0.700 -784 944 label +(Bit 0) {/Helvetica cf} 2 16 0.000 0.700 -784 880 label +(Counter/timer enable) {/Helvetica cf} 2 16 0.000 0.700 -672 1072 label +(1 = counter/timer enabled) {/Helvetica cf} 2 16 0.000 0.700 -288 1072 label +(0 = counter/timer disabled) {/Helvetica cf} 2 16 0.000 0.700 -288 1040 label +(Oneshot mode) {/Helvetica cf} 2 16 0.000 0.700 -672 1008 label +(1 = oneshot mode) {/Helvetica cf} 2 16 0.000 0.700 -288 1008 label +(0 = continuous mode) {/Helvetica cf} 2 16 0.000 0.700 -288 976 label +(Updown) {/Helvetica cf} 2 16 0.000 0.700 -672 944 label +(1 = count up) {/Helvetica cf} 2 16 0.000 0.700 -288 944 label +(0 = count down) {/Helvetica cf} 2 16 0.000 0.700 -288 912 label +(Interrupt enable) {/Helvetica cf} 2 16 0.000 0.700 -672 880 label +(1 = interrupt enabled) {/Helvetica cf} 2 16 0.000 0.700 -288 880 label +(0 = interrupt disabled) {/Helvetica cf} 2 16 0.000 0.700 -288 848 label +(register is read-write and can be used to reset the timer.) {CR} +(The value in this register is the current value of the counter. Value is 32 bits. The) +{/Helvetica cf} 4 28 0.000 0.700 -784 608 label +(The value in this register is the reset value for the comparator.) +{/Helvetica cf} 2 28 0.000 0.700 -784 304 label +(reg_timer_value register.) {CR} +(timer in a hold state. When re-enabled, counting resumes. To reset the timer, write zero to the) +{CR} +(Note: When the counter/timer is disabled, the reg_timer_value remains unchanged, which puts the) +{/Helvetica cf} 6 16 0.000 0.700 -832 -144 label +(If counting down, the count continues until the counter reaches zero.) {CR} +(the counter is enabled. If counting up, the count continues until the counter reaches reg_timer_data.) +{CR} +(When enabled, the counter counts up or down from the value set in reg_timer_value at the time) +{/Helvetica cf} 6 28 0.000 0.700 -832 240 label + +(reaches the value of reg_timer_data \(up count\) or zero \(down count\), and stops.) +{CR} +(In one-shot mode, the counter triggers an interrupt \(IRQ channel 11; see next page\) when it) +{/Helvetica cf} 4 28 0.000 0.700 -832 16 label +(the counter will generate an interrupt on every cycle.) {CR} +(reg_timer_data if counting down, and the count continues immediately. If the interrupt is enabled,) +{CR} +(In continuous mode, the counter resets to zero if counting up, and resets to the value in) +{/Helvetica cf} 6 28 0.000 0.700 -832 128 label +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -832 1536 label +(addresses for the controls, as shown in the tables below.) {CR} +(The second counter/timer is functionally identical to the first, with different memory mapped) +{/Helvetica cf} 4 28 0.000 0.700 -832 1472 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/postscript/gpio_function.ps b/doc/postscript/gpio_function.ps new file mode 100644 index 00000000..d30a320c --- /dev/null +++ b/doc/postscript/gpio_function.ps @@ -0,0 +1,819 @@ +%!PS-Adobe-3.0 +%%Title: gpio_function.ps +%%Creator: XCircuit v0.0 rev-1817832939 +%%CreationDate: Thu Dec 16 14:18:27 2021 +%%Pages: 2 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%+ font Times-Roman Courier-Bold +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + +/analog::resistor { +begingate +1 1.000 0 64 0 36 2 polygon +1 1.000 0 -64 0 -36 2 polygon +1 1.000 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon +1.000 0.000 0.000 scb +(r.1) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(r.2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel +0.180 0.545 0.341 scb +(spice:R%i %pr.1 %pr.2 1.0K) {/Times-Roman cf} 2 0 0.000 1.000 -208 -160 +infolabel +(sim:r %pr.1 %pr.2) {/Times-Roman cf} 2 0 0.000 1.000 -208 -208 infolabel +endgate +} def + +/generic::circle { +% trivial +begingate +1 1.000 16 0 6 0.000 360.000 xcarc +1 1.000 0 0 10 0 2 polygon +1.000 0.000 0.000 scb +(out) {/Times-Roman cf} 2 4 -0.000 1.000 16 0 pinlabel +(out) {/Times-Roman cf} 2 7 -0.000 1.000 0 0 pinlabel +endgate +} def + +/generic::arrowhead { +% nonetwork +begingate +8 -28 beginpath +3 -18 3 -15 0 0 curveto +-3 -15 -3 -18 -8 -28 curveto +-2 -26 2 -26 8 -28 curveto +249 +1.000 endpath +endgate +} def + +/analog::switch { +% trivial +begingate +1 1.300 32 32 2 -43 2 polygon +1 0.600 0 -48 57 49.000 90.000 xcarc +-1.000 /sv 90.000 0 -64 generic::circle +0.600 /sv 270.000 -12 8 generic::arrowhead +1.000 90.000 0 48 generic::circle +1.000 0.000 0.000 scb +(sw.1) {/Times-Roman cf} 2 9 0.000 1.000 0 48 pinlabel +(sw.2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel +endgate +} def + +/generic::dot { +% trivial +begingate +248 1.000 0 0 6 0.000 360.000 xcarc +1.000 0.000 0.000 scb +(x) {/Times-Roman cf} 2 29 -0.000 1.000 0 0 pinlabel +endgate +} def + +/analog::vdd { +% trivial +begingate +1 1.000 0 0 0 32 2 polygon +1 1.000 -32 32 32 32 2 polygon +(Vdd) {/Times-Roman cf} 2 17 0.000 0.900 0 38 label +0.933 0.604 0.000 scb +(Vdd) {/Times-Roman cf} 2 13 0.000 1.000 0 0 pinglobal +endgate +} def + +/analog::gnd { +% trivial +begingate +1 1.000 0 0 0 -32 2 polygon +1 1.000 -32 -32 32 -32 2 polygon +1 1.000 -18 -46 18 -46 2 polygon +1 1.000 -4 -60 4 -60 2 polygon +0.933 0.604 0.000 scb +(GND) {/Times-Roman cf} 2 1 0.000 1.000 0 0 pinglobal +endgate +} def + +/digital::buffer { +% trivial +begingate +0 1.000 -32 -40 -32 40 40 0 3 polygon +1 1.000 -32 0 -48 0 2 polygon +1 1.000 40 0 64 0 2 polygon +1.000 0.000 0.000 scb +(Out) {/Times-Roman cf} 2 4 0.000 1.000 64 0 pinlabel +(In) {/Times-Roman cf} 2 7 0.000 1.000 -48 0 pinlabel +endgate +} def + + +%%EndSetup + +%%Page: gpio1 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1184 960 translate + +0.600 0.600 0.600 scb +0 1.000 -912 -32 -912 480 -368 480 -368 -32 4 polygon +0.800 0.800 0.800 scb +0 1.000 -320 -256 -320 16 208 16 208 -256 4 polygon +0.678 1.000 0.184 scb +512 1.000 -992 960 -992 -768 256 -768 256 960 4 polygon +sce +(Functional Description) {/Helvetica-Bold cf} 2 16 0.000 0.700 -992 928 label +1 1.000 -992 912 256 912 2 polygon +(GPIO \(pin E10\)) {/Helvetica cf} 2 16 0.000 0.700 -480 864 label +(General Purpose I/O) {/Helvetica-Bold cf} 2 16 0.000 0.700 -992 864 label +( are immediate. ) {/Helvetica cf} (reg_gpio_data) {/Helvetica-Bold cf} +(All reads from ) {CR} (are registered.) {/Helvetica cf} (reg_gpio_data ) +{/Courier-Bold cf} +(The basic function of the GPIO is illustrated below. All writes to ) +{/Helvetica cf} 12 16 0.000 0.700 -992 624 label +(0x21000000) {/Courier-Bold cf} 2 16 0.000 0.700 -576 -416 label +(GPIO input/output \(low bit\)) {/Helvetica cf} 2 16 0.000 0.700 -352 -416 +label +(0x21000004) {/Courier-Bold cf} 2 16 0.000 0.700 -576 -496 label +(GPIO output enable \(0 = output, 1 = input\)) {/Helvetica cf} 2 16 0.000 0.700 +-352 -496 label +(0x21000008) {/Courier-Bold cf} 2 16 0.000 0.700 -576 -544 label +(GPIO pullup enable \(1 = pullup, 0 = none\)) {/Helvetica cf} 2 16 0.000 0.700 +-352 -544 label +(0x2100000c) {/Courier-Bold cf} 2 16 0.000 0.700 -576 -592 label +(GPIO pulldown enable \(1 = pulldown, 0 = none\)) {/Helvetica cf} 2 16 0.000 +0.700 -352 -592 label +(reg_gpio_data) {/Courier-Bold cf} 2 16 0.000 0.700 -976 -416 label +(reg_gpio_ena) {/Courier-Bold cf} 2 16 0.000 0.700 -976 -496 label +(reg_gpio_pu) {/Courier-Bold cf} 2 16 0.000 0.700 -976 -544 label +(reg_gpio_pd) {/Courier-Bold cf} 2 16 0.000 0.700 -976 -592 label +(GPIO memory address map:) {/Helvetica cf} 2 16 0.000 0.700 -976 -320 label +(Pin) {/Helvetica cf} 2 23 0.000 0.700 -928 224 label +0.750 0.000 -736 368 analog::resistor +0.750 0.000 -736 80 analog::resistor +0.750 0.000 -736 288 analog::switch +1 1.000 -736 240 -736 208 2 polygon +1.000 0.000 -736 224 generic::dot +0.750 0.000 -736 176 analog::switch +0.750 0.000 -736 416 analog::vdd +0.750 0.000 -736 32 analog::gnd +0 1.000 -896 176 -896 272 -800 272 -800 176 4 polygon +1 1.000 -896 176 -800 272 2 polygon +1 1.000 -896 272 -800 176 2 polygon +(reg_gpio_pu) {/Courier-Bold cf} 2 16 0.000 0.700 -704 256 label +(reg_gpio_pd) {/Courier-Bold cf} 2 20 0.000 0.700 -704 160 label +(reg_gpio_data) {/Courier-Bold cf} 2 16 0.000 0.700 -16 192 label +-1.000 0.000 -416 288 digital::buffer +1 1.000 -416 312 -416 448 2 polygon +(reg_gpio_ena) {/Courier-Bold cf} 2 16 0.000 0.700 -312 440 label +1 1.000 -480 288 -496 288 -496 224 3 polygon +1.000 0.000 -496 224 generic::dot +1 1.000 -336 320 -336 256 -272 224 -272 352 -336 320 5 polygon +1 1.000 -80 -128 -80 -32 -144 0 -144 -160 -80 -128 5 polygon +1 1.000 -336 288 -368 288 2 polygon +1 1.000 -304 336 -304 384 -208 384 3 polygon +1 1.000 -272 320 -112 320 2 polygon +1 1.000 -272 256 -208 256 2 polygon +(0x2f000000) {/Courier-Bold cf} 2 16 360.000 0.700 -576 -640 label +(PLL clock output destination \(low bit\)) {/Helvetica cf} 2 16 0.000 0.700 +-352 -640 label +(0x2f000004) {/Courier-Bold cf} 2 16 360.000 0.700 -576 -688 label +(Trap output destination \(low bit\)) {/Helvetica cf} 2 16 0.000 0.700 -352 +-688 label +(0x2f000008) {/Courier-Bold cf} 2 16 360.000 0.700 -576 -736 label +(IRQ 7 input source \(low bit\)) {/Helvetica cf} 2 16 0.000 0.700 -352 -736 +label +(GPIO output readback \(16th bit\)) {/Helvetica cf} 2 16 0.000 0.700 -352 -448 +label +1 1.000 -800 224 -496 224 2 polygon +1 1.000 -496 224 -496 64 -32 64 3 polygon +1.000 90.000 -48 64 generic::arrowhead +-1.000 270.000 -192 192 generic::arrowhead +1 1.000 -320 448 -416 448 2 polygon +(I/O pad) {/Helvetica-Oblique cf} 2 28 0.000 0.700 -896 464 label +1 1.000 -144 192 -208 192 -208 256 3 polygon +(reg_pll_out_dest) {/Courier-Bold cf} 2 16 0.000 0.700 -976 -640 label +(reg_trap_out_dest) {/Courier-Bold cf} 2 16 0.000 0.700 -976 -688 label +(reg_irq7_source) {/Courier-Bold cf} 2 16 0.000 0.700 -976 -736 label +(address) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -576 -368 label +(description) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -352 -368 label +(C header name) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -976 -368 label +1 1.000 -976 -384 240 -384 2 polygon +(function data bit) {/Helvetica-Oblique cf} 2 20 0.000 0.700 -96 320 label +(function data enable) {/Helvetica-Oblique cf} 2 20 0.000 0.700 -192 384 label +(0) {/Helvetica cf} 2 21 0.000 0.700 -288 256 label +(1) {/Helvetica cf} 2 21 0.000 0.700 -288 320 label +0 1.000 -144 160 -144 224 -80 224 -80 160 4 polygon +(register) {/Helvetica-Oblique cf} 2 17 0.000 0.700 -112 240 label +1 1.000 -80 192 -32 192 2 polygon +1 1.000 -208 64 -208 -32 -144 -32 3 polygon +1 1.000 -112 -144 -112 -208 2 polygon +(IRQ select) {/Helvetica-Oblique cf} 2 29 0.000 0.700 -112 -224 label +1 1.000 -144 -128 -224 -128 2 polygon +1 1.000 -144 -96 -224 -96 2 polygon +1 1.000 -144 -64 -224 -64 2 polygon +(0) {/Helvetica cf} 2 23 0.000 0.700 -240 -128 label +1.000 0.000 -208 64 generic::dot +1 1.000 -352 288 -352 128 -32 128 3 polygon +1.000 90.000 -48 128 generic::arrowhead +1.000 0.000 -352 288 generic::dot +1 1.000 -80 -80 0 -80 2 polygon +(IRQ channel) {/Helvetica-Oblique cf} 2 20 0.000 0.700 16 -80 label +-1.000 270.000 -80 192 generic::arrowhead +(reg_gpio_data) {/Courier-Bold cf} 2 16 0.000 0.700 -16 128 label +(\(read, 16th bit\)) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -16 96 label +(\(read, low bit\)) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -16 32 label +(reg_gpio_data) {/Courier-Bold cf} 2 16 0.000 0.700 -16 64 label +(0) {/Helvetica cf} 2 21 0.000 0.700 -128 -128 label +(other IRQ sources) {/Helvetica-Oblique cf} 2 23 0.000 0.700 -240 -80 label +1 1.000 -96 -208 -96 -136 2 polygon +(Figure 1. GPIO channel structure) {/Helvetica-Oblique cf} 2 16 0.000 0.700 +-976 -256 label +0.800 0.800 0.800 scb +224 1.000 -992 -272 -992 496 256 496 256 -272 4 polygon +sce +(page 5) {/Helvetica cf} 2 31 0.000 0.700 240 944 label +(\(see Tables TBD\)) {/Helvetica cf} 2 20 0.000 0.700 -144 352 label +(\(see Table TBD\)) {/Helvetica cf} 2 19 0.000 0.700 -176 -176 label +(user area power supplies.) {CR} +(with the completed user projects, this pin is used to enable the voltage regulators generating the) +{CR} +(the management SoC and cannot be assigned to the user project area. On the test board provided) +{CR} +(The GPI pin is a single assignable general-purpose digital input or output that is available only to) +{/Helvetica cf} 8 28 0.000 0.700 -992 816 label +pgsave restore showpage + +%%Page: gpio2 2 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 992 992 translate + +0.678 1.000 0.184 scb +512 1.000 -800 928 -800 -800 448 -800 448 928 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -800 896 label +1 1.000 -800 880 448 880 2 polygon +(GPIO description, continued.) {/Helvetica cf} 2 16 0.000 0.700 -800 832 label +0 1.000 -752 496 -752 544 272 544 272 496 4 polygon +1 1.000 -720 496 -720 448 2 polygon +1 1.000 -688 496 -688 448 2 polygon +1 1.000 -656 496 -656 448 2 polygon +1 1.000 -624 496 -624 448 2 polygon +1 1.000 -592 496 -592 448 2 polygon +1 1.000 -560 496 -560 448 2 polygon +1 1.000 -528 496 -528 448 2 polygon +1 1.000 -496 496 -496 448 2 polygon +1 1.000 -464 496 -464 448 2 polygon +1 1.000 -432 496 -432 448 2 polygon +1 1.000 -400 496 -400 448 2 polygon +1 1.000 -368 496 -368 448 2 polygon +1 1.000 -336 496 -336 448 2 polygon +1 1.000 -304 496 -304 448 2 polygon +1 1.000 -272 496 -272 448 2 polygon +1 1.000 -240 592 -240 448 2 polygon +1 1.000 -208 496 -208 448 2 polygon +1 1.000 -176 496 -176 448 2 polygon +1 1.000 -144 496 -144 448 2 polygon +1 1.000 -112 496 -112 448 2 polygon +1 1.000 -80 496 -80 448 2 polygon +1 1.000 -48 496 -48 448 2 polygon +1 1.000 -16 496 -16 448 2 polygon +1 1.000 16 496 16 448 2 polygon +1 1.000 48 496 48 448 2 polygon +1 1.000 80 496 80 448 2 polygon +1 1.000 112 496 112 448 2 polygon +1 1.000 144 496 144 448 2 polygon +1 1.000 176 496 176 448 2 polygon +1 1.000 208 496 208 448 2 polygon +1 1.000 240 496 240 448 2 polygon +(reg_gpio_data) {/Courier-Bold cf} 2 16 0.000 0.700 -336 608 label +(0) {/Helvetica cf} 2 21 0.000 0.500 256 472 label +0.600 0.600 0.600 scb +(1) {/Helvetica cf} 2 21 0.000 0.500 224 472 label +(2) {/Helvetica cf} 2 21 0.000 0.500 192 472 label +(3) {/Helvetica cf} 2 21 0.000 0.500 160 472 label +(4) {/Helvetica cf} 2 21 0.000 0.500 128 472 label +(5) {/Helvetica cf} 2 21 0.000 0.500 96 472 label +(6) {/Helvetica cf} 2 21 0.000 0.500 64 472 label +(7) {/Helvetica cf} 2 21 0.000 0.500 32 472 label +(8) {/Helvetica cf} 2 21 0.000 0.500 0 472 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -32 472 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -64 472 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -96 472 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -128 472 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -160 472 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -192 472 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -224 472 label +sce +(16) {/Helvetica cf} 2 21 0.000 0.500 -256 472 label +0.600 0.600 0.600 scb +(17) {/Helvetica cf} 2 21 0.000 0.500 -288 472 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -320 472 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -352 472 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -384 472 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -416 472 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -448 472 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -480 472 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -512 472 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -544 472 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -576 472 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -608 472 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -640 472 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -672 472 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -704 472 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -736 472 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 304 480 label +(0x21000000) {/Courier-Bold cf} 2 16 0.000 0.700 64 560 label +1 1.000 16 544 16 592 2 polygon +1 1.000 -496 544 -496 592 2 polygon +1 1.000 -752 592 -752 544 2 polygon +1 1.000 272 592 272 544 2 polygon +1 1.000 272 496 272 448 2 polygon +1 1.000 -752 496 -752 448 2 polygon +(0x21000001) {/Courier-Bold cf} 2 16 0.000 0.700 -192 560 label +(0x21000002) {/Courier-Bold cf} 2 16 0.000 0.700 -448 560 label +(0x21000003) {/Courier-Bold cf} 2 16 0.000 0.700 -704 560 label +(address) {/Helvetica cf} 2 17 0.000 0.700 352 560 label +(value) {/Helvetica cf} 2 20 0.000 0.700 304 528 label +(GPIO output readback) {/Helvetica cf} 2 17 0.000 0.700 -496 512 label +(GPIO input/output) {/Helvetica cf} 2 17 0.000 0.700 16 512 label +1 1.000 -752 592 272 592 2 polygon +1 1.000 -752 448 272 448 2 polygon +0 1.000 -752 96 -752 144 272 144 272 96 4 polygon +1 1.000 -720 96 -720 48 2 polygon +1 1.000 -688 96 -688 48 2 polygon +1 1.000 -656 96 -656 48 2 polygon +1 1.000 -624 96 -624 48 2 polygon +1 1.000 -592 96 -592 48 2 polygon +1 1.000 -560 96 -560 48 2 polygon +1 1.000 -528 96 -528 48 2 polygon +1 1.000 -496 96 -496 48 2 polygon +1 1.000 -464 96 -464 48 2 polygon +1 1.000 -432 96 -432 48 2 polygon +1 1.000 -400 96 -400 48 2 polygon +1 1.000 -368 96 -368 48 2 polygon +1 1.000 -336 96 -336 48 2 polygon +1 1.000 -304 96 -304 48 2 polygon +1 1.000 -272 96 -272 48 2 polygon +1 1.000 -240 192 -240 48 2 polygon +1 1.000 -208 96 -208 48 2 polygon +1 1.000 -176 96 -176 48 2 polygon +1 1.000 -144 96 -144 48 2 polygon +1 1.000 -112 96 -112 48 2 polygon +1 1.000 -80 96 -80 48 2 polygon +1 1.000 -48 96 -48 48 2 polygon +1 1.000 -16 96 -16 48 2 polygon +1 1.000 16 96 16 48 2 polygon +1 1.000 48 96 48 48 2 polygon +1 1.000 80 96 80 48 2 polygon +1 1.000 112 96 112 48 2 polygon +1 1.000 144 96 144 48 2 polygon +1 1.000 176 96 176 48 2 polygon +1 1.000 208 96 208 48 2 polygon +1 1.000 240 96 240 48 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 256 72 label +0.600 0.600 0.600 scb +(1) {/Helvetica cf} 2 21 0.000 0.500 224 72 label +(2) {/Helvetica cf} 2 21 0.000 0.500 192 72 label +(3) {/Helvetica cf} 2 21 0.000 0.500 160 72 label +(4) {/Helvetica cf} 2 21 0.000 0.500 128 72 label +(5) {/Helvetica cf} 2 21 0.000 0.500 96 72 label +(6) {/Helvetica cf} 2 21 0.000 0.500 64 72 label +(7) {/Helvetica cf} 2 21 0.000 0.500 32 72 label +(8) {/Helvetica cf} 2 21 0.000 0.500 0 72 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -32 72 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -64 72 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -96 72 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -128 72 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -160 72 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -192 72 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -224 72 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -256 72 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -288 72 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -320 72 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -352 72 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -384 72 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -416 72 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -448 72 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -480 72 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -512 72 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -544 72 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -576 72 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -608 72 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -640 72 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -672 72 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -704 72 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -736 72 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 304 80 label +(0x21000004) {/Courier-Bold cf} 2 16 0.000 0.700 64 160 label +1 1.000 16 144 16 192 2 polygon +1 1.000 -496 144 -496 192 2 polygon +1 1.000 -752 192 -752 144 2 polygon +1 1.000 272 192 272 144 2 polygon +1 1.000 272 96 272 48 2 polygon +1 1.000 -752 96 -752 48 2 polygon +(0x21000005) {/Courier-Bold cf} 2 16 0.000 0.700 -192 160 label +0.600 0.600 0.600 scb +(0x21000006) {/Courier-Bold cf} 2 16 0.000 0.700 -448 160 label +(0x21000007) {/Courier-Bold cf} 2 16 0.000 0.700 -704 160 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 352 160 label +(value) {/Helvetica cf} 2 20 0.000 0.700 304 128 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -496 112 label +(GPIO output enable) {/Helvetica cf} 2 17 0.000 0.700 16 112 label +1 1.000 -752 192 272 192 2 polygon +1 1.000 -752 48 272 48 2 polygon +(Writing to the address low bit always sets the registered value at the GPIO.) +{/Helvetica cf} 2 16 0.000 0.700 -752 368 label +(Writing to address bit 16 has no effect.) {/Helvetica cf} 2 16 0.000 0.700 +-752 336 label +(Reading from the address low bit reads the value at the chip pin.) +{/Helvetica cf} 2 16 0.000 0.700 -752 304 label + +(Reading from address bit 16 reads the value at the multiplexer output \(see diagram\).) +{/Helvetica cf} 2 16 0.000 0.700 -752 272 label +(Bit 0 corresponds to the GPIO channel enable.) {/Helvetica cf} 2 16 0.000 +0.700 -752 0 label +(reg_gpio_ena) {/Courier-Bold cf} 2 16 0.000 0.700 -336 208 label +(or one 8-bit byte.) {CR} +(instruction and data type, the entire 32-bit register can be read in one instruction, or one 16-bit word,) +{CR} +(to the data bus width of the wishbone bus. Addresses, however, are in bytes. Depending on the) +{CR} +(In the memory-mapped register descriptions below, each register is shown as 32 bits corresponding) +{/Helvetica cf} 8 16 0.000 0.700 -800 688 label +(Bit value 1 indicates an output channel; 0 indicates an input.) +{/Helvetica cf} 2 16 0.000 0.700 -752 -32 label +0 1.000 -752 -224 -752 -176 272 -176 272 -224 4 polygon +1 1.000 -720 -224 -720 -272 2 polygon +1 1.000 -688 -224 -688 -272 2 polygon +1 1.000 -656 -224 -656 -272 2 polygon +1 1.000 -624 -224 -624 -272 2 polygon +1 1.000 -592 -224 -592 -272 2 polygon +1 1.000 -560 -224 -560 -272 2 polygon +1 1.000 -528 -224 -528 -272 2 polygon +1 1.000 -496 -224 -496 -272 2 polygon +1 1.000 -464 -224 -464 -272 2 polygon +1 1.000 -432 -224 -432 -272 2 polygon +1 1.000 -400 -224 -400 -272 2 polygon +1 1.000 -368 -224 -368 -272 2 polygon +1 1.000 -336 -224 -336 -272 2 polygon +1 1.000 -304 -224 -304 -272 2 polygon +1 1.000 -272 -224 -272 -272 2 polygon +1 1.000 -240 -128 -240 -272 2 polygon +1 1.000 -208 -224 -208 -272 2 polygon +1 1.000 -176 -224 -176 -272 2 polygon +1 1.000 -144 -224 -144 -272 2 polygon +1 1.000 -112 -224 -112 -272 2 polygon +1 1.000 -80 -224 -80 -272 2 polygon +1 1.000 -48 -224 -48 -272 2 polygon +1 1.000 -16 -224 -16 -272 2 polygon +1 1.000 16 -224 16 -272 2 polygon +1 1.000 48 -224 48 -272 2 polygon +1 1.000 80 -224 80 -272 2 polygon +1 1.000 112 -224 112 -272 2 polygon +1 1.000 144 -224 144 -272 2 polygon +1 1.000 176 -224 176 -272 2 polygon +1 1.000 208 -224 208 -272 2 polygon +1 1.000 240 -224 240 -272 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 256 -248 label +0.600 0.600 0.600 scb +(1) {/Helvetica cf} 2 21 0.000 0.500 224 -248 label +(2) {/Helvetica cf} 2 21 0.000 0.500 192 -248 label +(3) {/Helvetica cf} 2 21 0.000 0.500 160 -248 label +(4) {/Helvetica cf} 2 21 0.000 0.500 128 -248 label +(5) {/Helvetica cf} 2 21 0.000 0.500 96 -248 label +(6) {/Helvetica cf} 2 21 0.000 0.500 64 -248 label +(7) {/Helvetica cf} 2 21 0.000 0.500 32 -248 label +(8) {/Helvetica cf} 2 21 0.000 0.500 0 -248 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -32 -248 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -64 -248 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -96 -248 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -128 -248 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -160 -248 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -192 -248 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -224 -248 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -256 -248 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -288 -248 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -320 -248 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -352 -248 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -384 -248 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -416 -248 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -448 -248 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -480 -248 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -512 -248 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -544 -248 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -576 -248 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -608 -248 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -640 -248 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -672 -248 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -704 -248 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -736 -248 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 304 -240 label +(0x21000008) {/Courier-Bold cf} 2 16 0.000 0.700 64 -160 label +1 1.000 16 -176 16 -128 2 polygon +1 1.000 -496 -176 -496 -128 2 polygon +1 1.000 -752 -128 -752 -176 2 polygon +1 1.000 272 -128 272 -176 2 polygon +1 1.000 272 -224 272 -272 2 polygon +1 1.000 -752 -224 -752 -272 2 polygon +(0x21000009) {/Courier-Bold cf} 2 16 360.000 0.700 -192 -160 label +0.600 0.600 0.600 scb +(0x2100000a) {/Courier-Bold cf} 2 16 0.000 0.700 -448 -160 label +(0x2100000b) {/Courier-Bold cf} 2 16 0.000 0.700 -704 -160 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 352 -160 label +(value) {/Helvetica cf} 2 20 0.000 0.700 304 -192 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -496 -208 label +(GPIO pin pull-up) {/Helvetica cf} 2 17 0.000 0.700 16 -208 label +1 1.000 -752 -128 272 -128 2 polygon +1 1.000 -752 -272 272 -272 2 polygon +(Bit value 1 indicates pullup is active; 0 indicates pullup inactive.) +{/Helvetica cf} 2 16 0.000 0.700 -752 -352 label +(reg_gpio_pu) {/Courier-Bold cf} 2 16 0.000 0.700 -336 -112 label +0 1.000 -752 -544 -752 -496 272 -496 272 -544 4 polygon +1 1.000 -720 -544 -720 -592 2 polygon +1 1.000 -688 -544 -688 -592 2 polygon +1 1.000 -656 -544 -656 -592 2 polygon +1 1.000 -624 -544 -624 -592 2 polygon +1 1.000 -592 -544 -592 -592 2 polygon +1 1.000 -560 -544 -560 -592 2 polygon +1 1.000 -528 -544 -528 -592 2 polygon +1 1.000 -496 -544 -496 -592 2 polygon +1 1.000 -464 -544 -464 -592 2 polygon +1 1.000 -432 -544 -432 -592 2 polygon +1 1.000 -400 -544 -400 -592 2 polygon +1 1.000 -368 -544 -368 -592 2 polygon +1 1.000 -336 -544 -336 -592 2 polygon +1 1.000 -304 -544 -304 -592 2 polygon +1 1.000 -272 -544 -272 -592 2 polygon +1 1.000 -240 -448 -240 -592 2 polygon +1 1.000 -208 -544 -208 -592 2 polygon +1 1.000 -176 -544 -176 -592 2 polygon +1 1.000 -144 -544 -144 -592 2 polygon +1 1.000 -112 -544 -112 -592 2 polygon +1 1.000 -80 -544 -80 -592 2 polygon +1 1.000 -48 -544 -48 -592 2 polygon +1 1.000 -16 -544 -16 -592 2 polygon +1 1.000 16 -544 16 -592 2 polygon +1 1.000 48 -544 48 -592 2 polygon +1 1.000 80 -544 80 -592 2 polygon +1 1.000 112 -544 112 -592 2 polygon +1 1.000 144 -544 144 -592 2 polygon +1 1.000 176 -544 176 -592 2 polygon +1 1.000 208 -544 208 -592 2 polygon +1 1.000 240 -544 240 -592 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 256 -568 label +0.600 0.600 0.600 scb +(1) {/Helvetica cf} 2 21 0.000 0.500 224 -568 label +(2) {/Helvetica cf} 2 21 0.000 0.500 192 -568 label +(3) {/Helvetica cf} 2 21 0.000 0.500 160 -568 label +(4) {/Helvetica cf} 2 21 0.000 0.500 128 -568 label +(5) {/Helvetica cf} 2 21 0.000 0.500 96 -568 label +(6) {/Helvetica cf} 2 21 0.000 0.500 64 -568 label +(7) {/Helvetica cf} 2 21 0.000 0.500 32 -568 label +(8) {/Helvetica cf} 2 21 0.000 0.500 0 -568 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -32 -568 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -64 -568 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -96 -568 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -128 -568 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -160 -568 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -192 -568 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -224 -568 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -256 -568 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -288 -568 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -320 -568 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -352 -568 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -384 -568 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -416 -568 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -448 -568 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -480 -568 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -512 -568 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -544 -568 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -576 -568 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -608 -568 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -640 -568 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -672 -568 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -704 -568 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -736 -568 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 304 -560 label +(0x2100000c) {/Courier-Bold cf} 2 16 0.000 0.700 64 -480 label +1 1.000 16 -496 16 -448 2 polygon +1 1.000 -496 -496 -496 -448 2 polygon +1 1.000 -752 -448 -752 -496 2 polygon +1 1.000 272 -448 272 -496 2 polygon +1 1.000 272 -544 272 -592 2 polygon +1 1.000 -752 -544 -752 -592 2 polygon +(0x2100000d) {/Courier-Bold cf} 2 16 360.000 0.700 -192 -480 label +0.600 0.600 0.600 scb +(0x2100000e) {/Courier-Bold cf} 2 16 0.000 0.700 -448 -480 label +(0x2100000f) {/Courier-Bold cf} 2 16 0.000 0.700 -704 -480 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 352 -480 label +(value) {/Helvetica cf} 2 20 0.000 0.700 304 -512 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -496 -528 label +(GPIO pin pull-down \(inverted\)) {/Helvetica cf} 2 17 0.000 0.700 16 -528 +label +1 1.000 -752 -448 272 -448 2 polygon +1 1.000 -752 -592 272 -592 2 polygon +(reg_gpio_pd) {/Courier-Bold cf} 2 16 0.000 0.700 -336 -432 label +(Bit value 1 indicates pullup is active; 0 indicates pulldown is inactive.) +{/Helvetica cf} 2 16 0.000 0.700 -752 -672 label +(Table 1) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -752 608 label +(Table 2) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -752 208 label +(Table 3) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -752 -112 label +(Table 4) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -752 -432 label +(page 6) {/Helvetica cf} 2 31 0.000 0.700 432 912 label +(Bit 0 corresponds to the GPIO channel pull-up state.) {/Helvetica cf} 2 16 +0.000 0.700 -752 -320 label +(Bit 0 corresponds to the GPIO channel pull-down state.) {/Helvetica cf} 2 16 +0.000 0.700 -752 -640 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/postscript/housekeeping_function.ps b/doc/postscript/housekeeping_function.ps new file mode 100644 index 00000000..ec95aa7c --- /dev/null +++ b/doc/postscript/housekeeping_function.ps @@ -0,0 +1,1010 @@ +%!PS-Adobe-3.0 +%%Title: housekeeping_function.ps +%%Creator: XCircuit v0.0 rev1333842453 +%%CreationDate: Thu Dec 16 17:29:51 2021 +%%Pages: 6 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%+ font Courier-Bold +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + +/generic::arrowhead { +% nonetwork +begingate +8 -28 beginpath +3 -18 3 -15 0 0 curveto +-3 -15 -3 -18 -8 -28 curveto +-2 -26 2 -26 8 -28 curveto +249 +1.000 endpath +endgate +} def + +/generic::arrow { +% nonetwork +begingate +1 0.800 0 -40 0 20 2 polygon +1.000 -0.000 0 40 generic::arrowhead +endgate +} def + + +%%EndSetup + +%%Page: hkspi 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1056 736 translate + +0.361 0.675 0.933 scb +1 1.000 -144 680 -144 488 2 polygon +1 1.000 -136 680 -136 488 2 polygon +1 1.000 -656 664 -656 496 2 polygon +0.678 1.000 0.184 scb +512 1.000 -864 1184 -864 -544 384 -544 384 1184 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -864 1152 label +1 1.000 -864 1136 384 1136 2 polygon +(Housekeeping SPI) {/Helvetica-Bold cf} 2 16 0.000 0.700 -864 1088 label +(SDI \(pin F9\), CSB \(pin E8\), SCK \(pin F8\), and SDO \(pin E9\)) +{/Helvetica cf} 2 16 0.000 0.700 -368 1088 label +(SPI protocol definition) {/Helvetica-Bold cf} 2 16 0.000 0.700 -864 896 label +1 1.000 -864 -192 384 -192 2 polygon +(00000000) {/Courier-Bold cf} 2 16 0.000 0.700 -736 -224 label +(No operation) {/Helvetica cf} 2 16 0.000 0.700 -448 -224 label +(10000000) {/Courier-Bold cf} 2 16 0.000 0.700 -736 -256 label +(01000000) {/Courier-Bold cf} 2 16 0.000 0.700 -736 -288 label +(Write in streaming mode) {/Helvetica cf} 2 16 0.000 0.700 -448 -256 label +(Read in streaming mode) {/Helvetica cf} 2 16 0.000 0.700 -448 -288 label +(Simultaneous Read/Write in streaming mode) {/Helvetica cf} 2 16 0.000 0.700 +-448 -320 label +(11000000) {/Courier-Bold cf} 2 16 0.000 0.700 -736 -320 label +(10nnn000) {/Courier-Bold cf} 2 16 0.000 0.700 -736 -416 label +1 1.000 -864 -496 384 -496 2 polygon +(All input is in groups of 8 bits. Each byte is input msb first.) +{/Helvetica cf} 2 16 0.000 0.700 -864 848 label + +(The first transferred byte is the command word, interpreted according to Table 8 below.) +{/Helvetica cf} 2 16 0.000 0.700 -864 -112 label +(SCK rising edge.) {CR} +(outputs become active on the falling edge of SCK, such that data are written and read on the same) +{CR} +(when CSB is high and at all times other than the transfer of data bits on a read command. SDO) +{CR} +(on the rising edge of SCK. Output data are received on the SDO line. SDO is held high-impedance) +{CR} +(CSB pin must be low to enable an SPI transmission. Data are clocked by pin SCK, with data valid) +{/Helvetica cf} 10 28 0.000 0.700 -864 144 label + +(After CSB is set low, the SPI is always in the "command" state, awaiting a new command.) +{/Helvetica cf} 2 28 0.000 0.700 -864 -32 label +(Addresses are read in sequence from lower values to higher values.) +{/Helvetica cf} 2 28 0.000 0.700 -864 352 label + +(highest address. Any bits additional to an 8-bit boundary should be at the lowest address.) +{CR} +(Therefore groups of bits larger than 8 should be grouped such that the lowest bits are at the) +{/Helvetica cf} 4 28 0.000 0.700 -864 304 label + +(byte transfer. Multi-byte transfers should ensure that data do not change between byte reads. ) +{CR} +(Data are captured from the register map in bytes on the falling edge of the last SCK before a data) +{/Helvetica cf} 4 28 0.000 0.700 -864 224 label +(01nnn000) {/Courier-Bold cf} 2 16 0.000 0.700 -736 -448 label +(11nnn000) {/Courier-Bold cf} 2 16 0.000 0.700 -736 -480 label +(Write in n-byte mode \(up to 7 bytes\).) {/Helvetica cf} 2 16 0.000 0.700 -448 +-416 label +(Read in n-byte mode \(up to 7 bytes\).) {/Helvetica cf} 2 16 0.000 0.700 -448 +-448 label +(Simultaneous Read/Write in n-byte mode \(up to 7 bytes\).) {/Helvetica cf} 2 +16 0.000 0.700 -448 -480 label +(defined below.) {CR} +(\(8 bits\) followed by one or more data words \(8 bits each\), according to the data transfer modes) +{CR} +(Every command sequence requires one command word \(8 bits\) followed by one address word) +{/Helvetica cf} 6 28 0.000 0.700 -864 816 label + +(the next SCK rising edge\). The SPI pins are shared with user area general-purpose I/O.) +{CR} +(on the SCK rising edge, and output data presented on the falling edge of SCK \(to be sampled on) +{CR} +(standard 4-pin serial interface. The SPI implementation is mode 0, with new data on SDI captured) +{CR} +(The \252housekeeping\272 SPI is an SPI slave that can be accessed from a remote host through a) +{/Helvetica cf} 8 28 0.000 0.700 -864 1056 label +(CSB) {/Helvetica cf} 2 21 0.000 0.700 -816 656 label +(SCK) {/Helvetica cf} 2 21 0.000 0.700 -816 608 label +(SDI) {/Helvetica cf} 2 21 0.000 0.700 -816 560 label +(SDO) {/Helvetica cf} 2 21 0.000 0.700 -816 512 label +1 1.000 -736 672 -688 672 -688 640 160 640 4 polygon +1 1.000 -656 592 -656 624 -640 624 -640 592 -624 592 -624 624 -608 624 -608 592 +-592 592 -592 624 -576 624 -576 592 -560 592 -560 624 -544 624 -544 592 -528 +592 -528 624 -512 624 -512 592 -496 592 -496 624 -480 624 -480 592 -464 592 +-464 624 -448 624 -448 592 -432 592 -432 624 -416 624 -416 592 -384 592 33 +polygon +1 1.000 -384 592 -384 624 -368 624 -368 592 -352 592 -352 624 -336 624 -336 592 +-320 592 -320 624 -304 624 -304 592 -288 592 -288 624 -272 624 -272 592 -256 +592 -256 624 -240 624 -240 592 -224 592 -224 624 -208 624 -208 592 -192 592 +-192 624 -176 624 -176 592 -160 592 -160 624 -144 624 -144 592 -112 592 33 +polygon +1 1.000 -112 592 -112 624 -96 624 -96 592 -80 592 -80 624 -64 624 -64 592 -48 +592 -48 624 -32 624 -32 592 -16 592 -16 624 0 624 0 592 16 592 16 624 32 624 32 +592 48 592 48 624 64 624 64 592 80 592 80 624 96 624 96 592 112 592 112 624 128 +624 128 592 160 592 33 polygon +1 1.000 -656 592 -736 592 2 polygon +1 1.000 -736 544 -672 544 -664 576 -416 576 -408 544 -128 544 -120 576 128 576 +136 544 160 544 10 polygon +1 1.000 -672 544 -640 544 -632 576 3 polygon +1 1.000 -640 544 -608 544 -600 576 3 polygon +1 1.000 -608 544 -576 544 -568 576 3 polygon +1 1.000 -576 544 -544 544 -536 576 3 polygon +1 1.000 -544 544 -512 544 -504 576 3 polygon +1 1.000 -512 544 -480 544 -472 576 3 polygon +1 1.000 -480 544 -448 544 -440 576 3 polygon +1 1.000 -448 544 -408 544 2 polygon +1 1.000 -640 576 -632 544 2 polygon +1 1.000 -608 576 -600 544 2 polygon +1 1.000 -576 576 -568 544 2 polygon +1 1.000 -544 576 -536 544 2 polygon +1 1.000 -512 576 -504 544 2 polygon +1 1.000 -480 576 -472 544 2 polygon +1 1.000 -448 576 -440 544 2 polygon +1 1.000 -400 544 -392 576 -144 576 -136 544 4 polygon +1 1.000 -368 576 -360 544 2 polygon +1 1.000 -360 576 -368 544 2 polygon +1 1.000 -328 576 -336 544 2 polygon +1 1.000 -336 576 -328 544 2 polygon +1 1.000 -296 576 -304 544 2 polygon +1 1.000 -304 576 -296 544 2 polygon +1 1.000 -264 576 -272 544 2 polygon +1 1.000 -272 576 -264 544 2 polygon +1 1.000 -232 576 -240 544 2 polygon +1 1.000 -240 576 -232 544 2 polygon +1 1.000 -200 576 -208 544 2 polygon +1 1.000 -208 576 -200 544 2 polygon +1 1.000 -168 576 -176 544 2 polygon +1 1.000 -176 576 -168 544 2 polygon +1 1.000 -88 576 -96 544 2 polygon +1 1.000 -96 576 -88 544 2 polygon +1 1.000 -56 576 -64 544 2 polygon +1 1.000 -64 576 -56 544 2 polygon +1 1.000 -24 576 -32 544 2 polygon +1 1.000 -32 576 -24 544 2 polygon +1 1.000 8 576 0 544 2 polygon +1 1.000 0 576 8 544 2 polygon +1 1.000 40 576 32 544 2 polygon +1 1.000 32 576 40 544 2 polygon +1 1.000 72 576 64 544 2 polygon +1 1.000 64 576 72 544 2 polygon +1 1.000 104 576 96 544 2 polygon +1 1.000 96 576 104 544 2 polygon +1 1.000 -128 544 136 544 2 polygon +1 1.000 128 496 136 528 160 528 3 polygon +1 1.000 160 496 128 496 2 polygon +1 1.000 96 496 -136 496 2 polygon +0.600 0.600 0.600 scb +1 1.000 160 688 160 480 2 polygon +1 1.000 176 688 176 480 2 polygon +sce +1 1.000 176 592 304 592 2 polygon +1 1.000 176 544 304 544 2 polygon +1 1.000 176 528 192 528 2 polygon +1 1.000 176 496 192 496 2 polygon +1 1.000 192 528 196 512 2 polygon +1 1.000 196 512 192 496 2 polygon +1 1.000 196 512 304 512 2 polygon +1 1.000 -140 512 -136 496 2 polygon +1 1.000 -140 512 -136 528 96 528 104 496 4 polygon +1 1.000 -140 512 -736 512 2 polygon +1 1.000 -96 528 -88 496 2 polygon +1 1.000 -96 496 -88 528 2 polygon +1 1.000 -64 528 -56 496 2 polygon +1 1.000 -64 496 -56 528 2 polygon +1 1.000 -32 528 -24 496 2 polygon +1 1.000 -32 496 -24 528 2 polygon +1 1.000 0 528 8 496 2 polygon +1 1.000 0 496 8 528 2 polygon +1 1.000 32 528 40 496 2 polygon +1 1.000 32 496 40 528 2 polygon +1 1.000 64 528 72 496 2 polygon +1 1.000 64 496 72 528 2 polygon +1 1.000 96 496 104 528 2 polygon +1 1.000 96 528 136 528 2 polygon +1 1.000 96 496 128 496 2 polygon +1 1.000 128 528 136 496 2 polygon + +(All other words are reserved and act as no-operation if not defined by the SPI slave module.) +{/Helvetica cf} 2 16 0.000 0.700 -864 -528 label +1 1.000 176 640 192 640 192 672 304 672 4 polygon +(additional data bytes) {/Helvetica cf} 2 28 0.000 0.500 176 456 label +0.500 0.000 168 472 generic::arrow +1 1.000 -672 480 -664 472 -416 472 -408 480 4 polygon +(command) {/Helvetica cf} 2 29 0.000 0.500 -552 464 label +1 1.000 -400 480 -392 472 -136 472 -128 480 4 polygon +(address) {/Helvetica cf} 2 29 0.000 0.500 -272 464 label +1 1.000 -120 480 -112 472 160 472 3 polygon +1 1.000 176 472 200 472 208 480 3 polygon +(data) {/Helvetica cf} 2 29 0.000 0.500 16 464 label +(msb) {/Helvetica cf} 2 23 0.000 0.500 -688 568 label +(msb) {/Helvetica cf} 2 19 0.000 0.500 -152 520 label +(lsb) {/Helvetica cf} 2 16 0.000 0.500 200 520 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -652 560 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -620 560 label +(5) {/Helvetica cf} 2 21 0.000 0.500 -588 560 label +(4) {/Helvetica cf} 2 21 0.000 0.500 -556 560 label +(3) {/Helvetica cf} 2 21 0.000 0.500 -524 560 label +(2) {/Helvetica cf} 2 21 0.000 0.500 -492 560 label +(1) {/Helvetica cf} 2 21 0.000 0.500 -460 560 label +(0) {/Helvetica cf} 2 21 0.000 0.500 -428 560 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -380 560 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -348 560 label +(5) {/Helvetica cf} 2 21 0.000 0.500 -316 560 label +(4) {/Helvetica cf} 2 21 0.000 0.500 -284 560 label +(3) {/Helvetica cf} 2 21 0.000 0.500 -252 560 label +(2) {/Helvetica cf} 2 21 0.000 0.500 -220 560 label +(1) {/Helvetica cf} 2 21 0.000 0.500 -188 560 label +(0) {/Helvetica cf} 2 21 0.000 0.500 -156 560 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -108 560 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -76 560 label +(5) {/Helvetica cf} 2 21 0.000 0.500 -44 560 label +(4) {/Helvetica cf} 2 21 0.000 0.500 -12 560 label +(3) {/Helvetica cf} 2 21 0.000 0.500 20 560 label +(2) {/Helvetica cf} 2 21 0.000 0.500 52 560 label +(1) {/Helvetica cf} 2 21 0.000 0.500 84 560 label +(0) {/Helvetica cf} 2 21 0.000 0.500 116 560 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -108 512 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -76 512 label +(5) {/Helvetica cf} 2 21 0.000 0.500 -44 512 label +(4) {/Helvetica cf} 2 21 0.000 0.500 -12 512 label +(3) {/Helvetica cf} 2 21 0.000 0.500 20 512 label +(2) {/Helvetica cf} 2 21 0.000 0.500 52 512 label +(1) {/Helvetica cf} 2 21 0.000 0.500 84 512 label +(0) {/Helvetica cf} 2 21 0.000 0.500 116 512 label +(7) {/Helvetica cf} 2 21 0.000 0.500 148 512 label +(high impedence) {/Helvetica cf} 2 16 0.000 0.500 -648 520 label +(data must be valid on SCK rising edge) {/Helvetica cf} 2 16 0.000 0.500 -656 +672 label +(data valid on SCK falling edge) {/Helvetica cf} 2 16 0.000 0.500 -128 672 +label +0.361 0.675 0.933 scb +1 1.000 -112 584 -112 416 2 polygon +sce +(capture data on SCK rising edge) {/Helvetica cf} 2 16 0.000 0.500 -104 416 +label +(Table 8) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -864 -176 label +(Housekeeping SPI command word definition) {/Helvetica cf} 2 16 0.000 0.700 +-720 -176 label +(Figure 2. Housekeeping SPI signaling) {/Helvetica-Oblique cf} 2 16 0.000 +0.700 -848 400 label +0.800 0.800 0.800 scb +224 1.000 -864 384 -864 704 384 704 384 384 4 polygon +sce +(11000100) {/Courier-Bold cf} 2 16 0.000 0.700 -736 -352 label +(Pass-through \(management\) Read/Write in streaming mode) {/Helvetica cf} 2 16 +0.000 0.700 -448 -352 label +(11000110) {/Courier-Bold cf} 2 16 360.000 0.700 -736 -384 label +(Pass-through \(user\) Read/Write in streaming mode) {/Helvetica cf} 2 16 0.000 +0.700 -448 -384 label +pgsave restore showpage + +%%Page: hkspi2 2 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1023 704 translate + +0.678 1.000 0.184 scb +512 1.000 -832 1216 -832 -512 416 -512 416 1216 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -832 1184 label +1 1.000 -832 1168 416 1168 2 polygon +(transfer. ) {CR} +(incrementing for each byte. Streaming mode operation continues until CSB is raised to end the) +{CR} +(operation, data are sent or received continuously, one byte at a time, with the internal address) +{CR} +(The two basic modes of operation are "streaming mode" and "n-byte mode". In "streaming mode") +{/Helvetica cf} 8 28 0.000 0.700 -832 1088 label +(command.) {CR} +(command. No toggling of CSB is required to end the command or to initiate the following) +{CR} +(mode\). After n bytes have been read and/or written, the SPI returns to waiting for the next) +{CR} +(command word, and may have a value from 1 to 7 \(note that a value of zero implies streaming) +{CR} +(In "n-byte mode" operation, the number of bytes to be read and/or written is encoded in the) +{/Helvetica cf} 10 28 0.000 0.700 -832 944 label +(\(continued\)) {/Helvetica-Oblique cf} (SPI protocol definition ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -832 1120 label +(clock speed of the CPU. All other functions are purely for test and debug.) +{CR} +(Under normal working conditions, the SPI should not need to be accessed unless it is to adjust the) +{/Helvetica cf} 4 28 0.000 0.700 -832 -32 label +(manufacturer_ID) {/Helvetica-Bold cf} 2 16 0.000 0.700 -832 -272 label +(The 12-bit manufacturer ID for efabless is 0x456) {/Helvetica cf} 2 16 0.000 +0.700 -768 -304 label +(Housekeeping SPI registers) {/Helvetica-Bold cf} 2 16 0.000 0.700 -832 160 +label +(register address 0x01 low 4 bits and register address 0x02) {/Helvetica cf} 2 +16 0.000 0.700 -496 -272 label +(Pass-thru mode) {/Helvetica-Bold cf} 2 16 0.000 0.700 -832 752 label +(program start address. ) {CR} +(transfer to the QSPI flash. The CPU is brought out of reset, and starts executing instructions at the) +{CR} +(CSB pin is raised. When CSB is raised, the FLASH_CSB is also raised, terminating the data) +{CR} +(respectively\), and the QSPI flash data output \(pin FLASH_IO1\) is applied directly to SDO, until the) +{CR} +(signaling on SDI and SCK are applied directly to the QSPI flash \(pins FLASH_IO0 and FLASH_CLK,) +{CR} +(transfer to the QSPI flash. After the pass-thru command byte has been issued, all subsequent SPI) +{CR} +(The pass-thru mode puts the CPU into immediate reset, then sets FLASH_CSB low to initiate a data) +{/Helvetica cf} 14 28 0.000 0.700 -832 720 label + +(the housekeeping SPI, without the need for additional wiring to the QSPI flash chip.) +{CR} +(This mode allows the QSPI flash to be programmed from the same SPI communication channel as) +{/Helvetica cf} 4 28 0.000 0.700 -832 496 label +(the SPI flash in quad mode using a 6-pin interface.) {CR} +(flash chips, and so must operate only in the 4-pin SPI mode. The user project may elect to operate) +{CR} +(external access to the SPI flash. Both pass-thru modes only connect to I/O pins 0 and 1 of the SPI) +{CR} +(Caravel chip program either SPI flash chip from a host computer without requiring separate) +{CR} +(defined in the user project. The pass-thru mode allows a communications chip external to the) +{CR} +(management SoC. The second one corresponds to a secondary optional SPI flash that can be) +{CR} +(There are two pass-thru modes. The first one corresponds to the primary SPI flash used by the) +{/Helvetica cf} 14 28 0.000 0.700 -832 416 label +(frequency-locked loop generating the CPU core clock.) {CR} +(potentially can be detrimental to the CPU operation, such as adjusting the trim value of the digital) +{CR} +(reset. Some control registers in the housekeeping SPI affect the behavior of the CPU in a way that) +{CR} +(independently of the CPU. The housekeeping SPI can be accessed even when the CPU is in full) +{CR} +(The purpose of the housekeeping SPI is to give access to certain system values and controls) +{/Helvetica cf} 10 28 0.000 0.700 -832 128 label +(the SPI master description for details.) {CR} +(This configuration then allows a program to read, for example, the user project ID of the chip. See) +{CR} +(master, and enabling the bit that connects the internal SPI master directly to the housekeeping SPI.) +{CR} +(The housekeeping SPI can be accessed by the CPU from a running program by enabling the SPI) +{/Helvetica cf} 8 28 0.000 0.700 -832 -112 label +(product_ID) {/Helvetica-Bold cf} 2 16 0.000 0.700 -832 -368 label +(The product ID for the Caravel harness chip is 0x10) {/Helvetica cf} 2 16 +0.000 0.700 -768 -400 label +(register address 0x03) {/Helvetica cf} 2 16 0.000 0.700 -496 -368 label +pgsave restore showpage + +%%Page: hkspi3 3 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1088 672 translate + +0.678 1.000 0.184 scb +512 1.000 -896 1248 -896 -480 352 -480 352 1248 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -896 1216 label +1 1.000 -896 1200 352 1200 2 polygon +(\(continued\)) {/Helvetica-Oblique cf} (Housekeeping SPI registers ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -896 1152 label +(CPU reset) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 400 label +(CPU trap) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 288 label +(must be set back to zero manually to clear the reset state.) {CR} +(The CPU reset bit puts the entire CPU into a reset state. This bit is not self-resetting and) +{/Helvetica cf} 4 28 0.000 0.700 -832 384 label +(the housekeeping SPI can be used to determine the true trap state.) {CR} +(can be configured to be read from a GPIO pin, but as the GPIO state is potentially unknowable,) +{CR} +(If the CPU has stopped after encountering an error, it will raise the trap signal. The trap signal) +{/Helvetica cf} 6 28 0.000 0.700 -832 272 label +(CPU IRQ) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 544 label +(zero before it can trigger another interrupt.) {CR} +(resetting, so while the rising edge will trigger an interrupt, the signal must be manually set to) +{CR} +(This is a dedicated manual interrupt driving the CPU IRQ channel 6. The bit is not self-) +{/Helvetica cf} 6 16 0.000 0.700 -832 448 label +(PLL bypass) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 688 label +(CMOS clock\).) {CR} +(the external CMOS clock \(pin C9\). The default value is 0x1 \(CPU clock source is the external) +{CR} +(When enabled, the PLL bypass switches the clock source of the CPU from the PLL output to) +{/Helvetica cf} 6 28 0.000 0.700 -832 672 label +(register address 0x09 bit 0) {/Helvetica cf} 2 16 0.000 0.700 -560 696 label +(register address 0x0A bit 0) {/Helvetica cf} 2 16 0.000 0.700 -560 552 label +(register address 0x0B bit 0) {/Helvetica cf} 2 16 0.000 0.700 -560 408 label +(register address 0x0C bit 0) {/Helvetica cf} 2 16 0.000 0.700 -560 296 label +(PLL DCO enable) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 832 label +(PLL enable) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 976 label +(PLL trim) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 152 label +(MHz.) {hS} (MHz while the slowest output frequency is approximately 90) {hS} +(is approximately 215) {CR} (ns\). The fastest output frequency) {hS} +(ps delay \(on top of a fixed delay of 4.67) {hS} (\(approximately\) 250) {CR} +(Note that this is a thermometer-code trim, where each bit provides an additional) +{CR} +(\(trim value 0x3ffffff\) to the fastest \(trim value 0x0\). Default value is 0x3ffefff \(slow trim, -1\).) +{CR} +(The 26-bit trim value can adjust the DCO frequency over a factor of about two from the slowest) +{/Helvetica cf} 18 28 0.000 0.700 -832 120 label +(register address 0x08 bit 1) {/Helvetica cf} 2 16 0.000 0.700 -560 832 label +(register address 0x08 bit 0) {/Helvetica cf} 2 16 0.000 0.700 -560 976 label +(register addresses 0x0D \(all bits\) to 0x10 \(lower 2 bits\)) +{/Helvetica cf} 2 16 0.000 0.700 -560 152 label +(with a unique number given to each user project.) {CR} +(The 4-byte \(32 bit\) user project ID is metal-mask programmed on each project before tapeout,) +{/Helvetica cf} 4 28 0.000 0.700 -832 1072 label +(register addresses 0x04 to 0x07) {/Helvetica cf} 2 16 0.000 0.700 -560 1088 +label +(user project ID) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 1088 label +(PLL output divider \(2\)) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 -256 +label +(register address 0x11 bit 5\2613) {/Helvetica cf} 2 16 0.000 0.700 -560 -256 +label +(drive the CPU clock.) {CR} +(applied prior to turning off the PLL bypass to allow the PLL time to stabilize before using it to) +{CR} +(This bit enables the digital frequency-locked-loop clock multiplier. The enable should be) +{/Helvetica cf} 6 28 0.000 0.700 -832 960 label +(between approximately 90 to 200 MHz by setting the trim bits \(see below\).) +{CR} +(and the system operates in free-running mode, driven by the ring oscillator which can be tuned) +{CR} +(The PLL can be run in DCO mode, in which the feedback loop to the driving clock is removed,) +{/Helvetica cf} 6 28 0.000 0.700 -832 816 label +(PLL output divider) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 -64 label +(register address 0x11 bits 2\2610) {/Helvetica cf} 2 16 0.000 0.700 -560 -64 +label +(operate at these frequencies\). ) {CR} +(undivided PLL clock directly to the core \(and should not be used, as the processor does not) +{CR} +(This 3-bit divider can generate a clock divided by 2 to 7. Values 0 and 1 both pass the) +{CR} +(The PLL output can be divided down by an integer divider to provide the core clock frequency.) +{/Helvetica cf} 8 28 0.000 0.700 -832 -96 label + +(undivided PLL clock, while values 2 to 7 pass the clock divided by 2 to 7, respectively.) +{CR} +(and provided to the user project space as a secondary clock. Values 0 and 1 both pass the) +{CR} +(The PLL 90-degree phase output is passed through an independent 3-bit integer clock divider) +{/Helvetica cf} 6 28 0.000 0.700 -832 -272 label +pgsave restore showpage + +%%Page: hkspi4 4 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1080 808 translate + +0.678 1.000 0.184 scb +512 1.000 -896 1120 -896 -624 368 -624 368 1120 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -896 1088 label +1 1.000 -896 1072 368 1072 2 polygon +(\(continued\)) {/Helvetica-Oblique cf} (Housekeeping SPI registers ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -896 1024 label +(PLL feedback divider) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 960 label +(register address 0x12 bits 4\2610) {/Helvetica cf} 2 16 0.000 0.700 -560 960 +label +(MHz. ) {hS} +(implies that the external clock should be no slower than around 4 to 5) {CR} +(be set to 19 \(19 * 8 = 152\). The DCO range and the number of bits of the feedback divider) +{CR} (MHz external clock, the divider should) {hS} +(MHz\). For example, when using an 8) {hS} (approximately 150) {CR} +(divider value falls between 90 and 214 MHz \(preferably centered on this range, or) +{CR} +(feedback divider must be set such that the external clock rate multiplied by the feedback) +{CR} +(divided by the feedback divider value \(when running in PLL mode, not DCO mode\). The) +{CR} +(The PLL operates by comparing the input clock \(pin C9\) rate to the rate of the PLL clock) +{/Helvetica cf} 20 28 0.000 0.700 -832 944 label +pgsave restore showpage + +%%Page: hkspi5 5 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 808 1048 translate + +0.898 0.898 0.898 scb +496 1.000 -496 -624 -496 -528 -384 -528 -384 -624 4 polygon +496 1.000 -496 -528 -496 -432 -96 -432 -96 -528 4 polygon +496 1.000 -496 528 -496 624 -16 624 -16 528 4 polygon +496 1.000 -496 -432 -496 -336 -272 -336 -272 -432 4 polygon +496 1.000 -496 144 -496 240 208 240 208 144 4 polygon +0.678 1.000 0.184 scb +512 1.000 -624 880 -624 -864 640 -864 640 880 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -624 848 label +1 1.000 -624 832 640 832 2 polygon +0.898 0.898 0.898 scb +496 1.000 -496 -240 -496 144 336 144 336 -240 4 polygon +sce +1 1.000 -624 624 640 624 2 polygon +(msb) {/Helvetica-Oblique cf} 2 17 0.000 0.700 -448 768 label +(lsb) {/Helvetica-Oblique cf} 2 17 0.000 0.700 384 768 label +(manufacturer_ID[7:0] \(= 0x56\)) {/Helvetica cf} 2 21 0.000 0.700 -16 480 +label +1 1.000 -624 432 640 432 2 polygon +1 1.000 -624 768 -624 -624 2 polygon +(Address) {CR} (Register) {/Helvetica-Oblique cf} 4 17 0.000 0.700 -560 736 +label +1 1.000 -624 720 640 720 2 polygon +1 1.000 -624 336 640 336 2 polygon +(product_ID \(= 0x11\)) {/Helvetica cf} 2 21 0.000 0.700 0 384 label +(0x00) {/Helvetica cf} 2 17 0.000 0.700 -560 656 label +(0x01) {/Helvetica cf} 2 17 0.000 0.700 -560 560 label +1 1.000 -624 48 640 48 2 polygon +1 1.000 -384 752 -384 720 2 polygon +1 1.000 -256 752 -256 720 2 polygon +1 1.000 -128 752 -128 720 2 polygon +1 1.000 -16 752 -16 720 2 polygon +1 1.000 96 752 96 720 2 polygon +1 1.000 208 752 208 720 2 polygon +1 1.000 336 752 336 720 2 polygon +1 1.000 448 768 448 -624 2 polygon +(7) {/Helvetica cf} 2 16 0.000 0.700 -448 736 label +(6) {/Helvetica cf} 2 16 0.000 0.700 -336 736 label +(5) {/Helvetica cf} 2 16 0.000 0.700 -208 736 label +(4) {/Helvetica cf} 2 16 0.000 0.700 -80 736 label +(3) {/Helvetica cf} 2 16 0.000 0.700 32 736 label +(2) {/Helvetica cf} 2 16 0.000 0.700 144 736 label +(1) {/Helvetica cf} 2 16 0.000 0.700 256 736 label +(0) {/Helvetica cf} 2 16 0.000 0.700 384 736 label +(comments) {/Helvetica-Oblique cf} 2 17 0.000 0.700 528 736 label +1 1.000 -624 -48 640 -48 2 polygon +1 1.000 -624 -144 640 -144 2 polygon +1 1.000 -624 144 640 144 2 polygon +1 1.000 -624 240 640 240 2 polygon +1 1.000 -624 528 640 528 2 polygon +(0x02) {/Helvetica cf} 2 17 0.000 0.700 -560 480 label +1 1.000 -16 624 -16 528 2 polygon +(manufacturer_ID[11:8] \(= 0x4\)) {/Helvetica cf} 2 21 0.000 0.700 208 576 +label +(0x03) {/Helvetica cf} 2 17 0.000 0.700 -560 384 label +(0x08) {/Helvetica cf} 2 17 0.000 0.700 -560 176 label +(0x09) {/Helvetica cf} 2 17 0.000 0.700 -560 80 label +(0x0A) {/Helvetica cf} 2 17 0.000 0.700 -560 -16 label +(0x0B) {/Helvetica cf} 2 17 0.000 0.700 -560 -112 label +(0x0C) {/Helvetica cf} 2 17 0.000 0.700 -560 -208 label +(0x12) {/Helvetica cf} 2 17 0.000 0.700 -560 -496 label +(SPI status and control) {/Helvetica cf} 2 21 0.000 0.700 0 672 label +(read-only) {/Helvetica cf} 2 21 0.000 0.700 544 592 label +(read-only) {/Helvetica cf} 2 21 0.000 0.700 544 496 label +(read-only) {/Helvetica cf} 2 21 0.000 0.700 544 400 label +(undefined) {CR} (unused/) {/Helvetica cf} 4 1045 0.000 0.700 528 672 label +1 1.000 -496 768 -496 -624 2 polygon +(read-only) {/Helvetica cf} 2 21 0.000 0.700 544 -192 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -96 -192 label +1 1.000 336 240 336 144 2 polygon +1 1.000 208 240 208 144 2 polygon +(enable) {CR} (DCO) {CR} (DLL) {/Helvetica cf} 6 1045 0.000 0.700 272 192 label +(default 0x02) {/Helvetica cf} 2 21 0.000 0.700 544 192 label +1 1.000 336 144 336 48 2 polygon +(bypass) {CR} (DLL) {/Helvetica cf} 4 1045 0.000 0.700 392 96 label +(default 0x01) {/Helvetica cf} 2 21 0.000 0.700 544 96 label +1 1.000 336 48 336 -48 2 polygon +1 1.000 336 -48 336 -144 2 polygon +1 1.000 336 -144 336 -240 2 polygon +(IRQ) {CR} (CPU) {/Helvetica cf} 4 1045 0.000 0.700 384 0 label +(reset) {CR} (CPU) {/Helvetica cf} 4 1045 0.000 0.700 384 -96 label +(trap) {CR} (CPU) {/Helvetica cf} 4 1045 0.000 0.700 384 -192 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -96 -96 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -96 0 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -96 96 label +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 544 0 label +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 544 -96 label +(Housekeeping SPI register map) {/Helvetica-Bold cf} 2 16 0.000 0.700 -256 784 +label +1 1.000 -624 -240 640 -240 2 polygon +1 1.000 -624 -336 640 -336 2 polygon +1 1.000 -624 -528 640 -528 2 polygon +(0x10) {CR} (0x0D\261) {/Helvetica cf} 4 21 0.000 0.700 -560 -288 label +(0x11) {/Helvetica cf} 2 17 0.000 0.700 -560 -400 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -184 192 label +(enable) {CR} (DLL) {/Helvetica cf} 4 1045 0.000 0.700 392 192 label +1 1.000 -272 -336 -272 -432 2 polygon +(unused) {/Helvetica cf} 2 21 0.000 0.700 -384 -384 label +(default 0x12) {/Helvetica cf} 2 21 0.000 0.700 544 -384 label +(0x3ffefff) {CR} (default) {/Helvetica cf} 4 1045 0.000 0.700 544 -288 label +1 1.000 640 768 640 -624 2 polygon +1 1.000 -624 -432 640 -432 2 polygon +(0x07) {CR} (0x04\261) {/Helvetica cf} 4 21 0.000 0.700 -560 288 label +(unused) {/Helvetica cf} 2 17 0.000 0.700 -272 560 label +(user_project_ID \(unique value per project\)) {/Helvetica cf} 2 21 0.000 0.700 +-32 288 label +(read-only) {/Helvetica cf} 2 21 0.000 0.700 544 288 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -256 -480 label +1 1.000 -96 -432 -96 -528 2 polygon +1 1.000 96 -336 96 -432 2 polygon +(default 0x04) {/Helvetica cf} 2 21 0.000 0.700 544 -480 label +(PLL feedback divider) {/Helvetica cf} 2 21 0.000 0.700 176 -480 label +(PLL output divider) {/Helvetica cf} 2 21 0.000 0.700 272 -384 label +(PLL output divider 2) {/Helvetica cf} 2 21 0.000 0.700 -80 -384 label +(DCO trim \(26 bits\) \(= 0x3ffefff\)) {/Helvetica cf} 2 21 0.000 0.700 -16 +-288 label +1 1.000 -624 -624 640 -624 2 polygon +(0x13) {/Helvetica cf} 2 17 0.000 0.700 -560 -592 label +1 1.000 -384 -528 -384 -624 2 polygon +1 1.000 -256 -528 -256 -624 2 polygon +1 1.000 -128 -528 -128 -624 2 polygon +1 1.000 -16 -528 -16 -624 2 polygon +1 1.000 96 -528 96 -624 2 polygon +1 1.000 208 -528 208 -624 2 polygon +1 1.000 336 -528 336 -624 2 polygon +(data 2) {CR} (serial) {/Helvetica cf} 4 21 0.000 0.700 -320 -576 label +(data 1) {CR} (serial) {/Helvetica cf} 4 21 0.000 0.700 -192 -576 label +(clock) {CR} (serial) {/Helvetica cf} 4 21 0.000 0.700 -80 -576 label +(load) {CR} (serial) {/Helvetica cf} 4 21 0.000 0.700 32 -576 label +(reset) {ol} {CR} (serial) {/Helvetica cf} 5 21 0.000 0.700 144 -576 label +(enable) {CR} (serial) {/Helvetica cf} 4 21 0.000 0.700 272 -576 label +(busy*) {CR} (xfer/) {CR} (serial) {/Helvetica cf} 6 21 0.000 0.700 384 -576 +label +( Transfer is complete when the busy bit returns to zero.) {CR} +(* Bit is write-only for serial transfer, read-only for serial busy. During transfer, the busy bit is one.) +{/Helvetica cf} 4 16 0.000 0.700 -608 -752 label +(control.) {CR} (are bit-bang) {CR} (bits 6 to 1) {/Helvetica cf} 6 21 0.000 +0.700 544 -576 label +pgsave restore showpage + +%%Page: hkspi6 6 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 888 840 translate + +0.898 0.898 0.898 scb +496 1.000 -576 -144 -576 -48 240 -48 240 -144 4 polygon +496 1.000 -576 -48 -576 48 -112 48 -112 -48 4 polygon +496 1.000 -576 144 -576 240 -336 240 -336 144 4 polygon +496 1.000 -576 336 -576 432 128 432 128 336 4 polygon +496 1.000 -576 432 -576 528 0 528 0 432 4 polygon +496 1.000 -576 528 -576 624 -112 624 -112 528 4 polygon +496 1.000 -576 816 -576 912 128 912 128 816 4 polygon +496 1.000 -576 -448 -576 -352 -208 -352 -208 -448 4 polygon +0.678 1.000 0.184 scb +512 1.000 -704 1088 -704 -656 560 -656 560 1088 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -704 1056 label +1 1.000 -704 1040 560 1040 2 polygon +1 1.000 -704 816 560 816 2 polygon +(msb) {/Helvetica-Oblique cf} 2 17 0.000 0.700 -528 960 label +(lsb) {/Helvetica-Oblique cf} 2 17 0.000 0.700 304 960 label +1 1.000 -704 624 560 624 2 polygon +1 1.000 -704 960 -704 -144 2 polygon +(Address) {CR} (Register) {/Helvetica-Oblique cf} 4 17 0.000 0.700 -640 928 +label +1 1.000 -704 912 560 912 2 polygon +1 1.000 -704 528 560 528 2 polygon +(0x14) {/Helvetica cf} 2 17 0.000 0.700 -640 848 label +(0x15) {/Helvetica cf} 2 17 0.000 0.700 -640 768 label +1 1.000 -704 240 560 240 2 polygon +1 1.000 -464 944 -464 912 2 polygon +1 1.000 -336 944 -336 912 2 polygon +1 1.000 -208 944 -208 912 2 polygon +1 1.000 -96 944 -96 912 2 polygon +1 1.000 16 944 16 912 2 polygon +1 1.000 128 944 128 912 2 polygon +1 1.000 256 944 256 912 2 polygon +1 1.000 368 960 368 -144 2 polygon +(7) {/Helvetica cf} 2 16 0.000 0.700 -528 928 label +(6) {/Helvetica cf} 2 16 0.000 0.700 -416 928 label +(5) {/Helvetica cf} 2 16 0.000 0.700 -288 928 label +(4) {/Helvetica cf} 2 16 0.000 0.700 -160 928 label +(3) {/Helvetica cf} 2 16 0.000 0.700 -48 928 label +(2) {/Helvetica cf} 2 16 0.000 0.700 64 928 label +(1) {/Helvetica cf} 2 16 0.000 0.700 176 928 label +(0) {/Helvetica cf} 2 16 0.000 0.700 304 928 label +(comments) {/Helvetica-Oblique cf} 2 17 0.000 0.700 448 928 label +1 1.000 -704 144 560 144 2 polygon +1 1.000 -704 48 560 48 2 polygon +1 1.000 -704 336 560 336 2 polygon +1 1.000 -704 432 560 432 2 polygon +1 1.000 -704 720 560 720 2 polygon +(0x1a) {/Helvetica cf} 2 17 0.000 0.700 -640 576 label +(read-only) {/Helvetica cf} 2 21 0.000 0.700 464 672 label +(undefined) {CR} (unused/) {/Helvetica cf} 4 1045 0.000 0.700 448 0 label +1 1.000 -576 960 -576 -144 2 polygon +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 464 192 label +(Housekeeping SPI register map, continued) {/Helvetica-Bold cf} 2 16 0.000 +0.700 -352 992 label +1 1.000 -704 -48 560 -48 2 polygon +1 1.000 -704 -144 560 -144 2 polygon +1 1.000 560 960 560 -144 2 polygon +(0x19) {CR} (0x16\261) {/Helvetica cf} 4 21 0.000 0.700 -640 680 label +(0x1b) {/Helvetica cf} 2 17 0.000 0.700 -640 464 label +(0x1c) {/Helvetica cf} 2 17 0.000 0.700 -640 368 label +(0x68) {CR} (0x1d\261) {/Helvetica cf} 4 21 0.000 0.700 -640 280 label +(0x69) {/Helvetica cf} 2 17 0.000 0.700 -640 176 label +(0x6d) {CR} (0x6a\261) {/Helvetica cf} 4 21 0.000 0.700 -640 88 label +(0x6e) {/Helvetica cf} 2 17 0.000 0.700 -640 -16 label +(0x6f) {/Helvetica cf} 2 17 0.000 0.700 -640 -112 label +0 1.000 -704 -352 -704 -544 560 -544 560 -352 4 polygon +1 1.000 -704 -448 560 -448 2 polygon +1 1.000 368 -352 368 -544 2 polygon +1 1.000 -576 -352 -576 -544 2 polygon +(0x1d) {/Helvetica cf} 2 21 0.000 0.700 -640 -400 label +(0x1e) {/Helvetica cf} 2 21 0.000 0.700 -640 -496 label + +(GPIO configuration bits \(2 bytes per GPIO, using GPIO mprj_io[0] as an example\)) +{/Helvetica cf} 2 16 0.000 0.700 -704 -320 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -400 -400 label +1 1.000 -208 -448 -208 -544 2 polygon +1 1.000 16 -448 16 -544 2 polygon +1 1.000 -96 -448 -96 -544 2 polygon +1 1.000 128 -448 128 -544 2 polygon +1 1.000 256 -448 256 -544 2 polygon +1 1.000 -96 -352 -96 -448 2 polygon +1 1.000 16 -352 16 -448 2 polygon +1 1.000 128 -352 128 -448 2 polygon +1 1.000 256 -352 256 -448 2 polygon +1 1.000 -208 -352 -208 -448 2 polygon +1 1.000 -320 -448 -320 -544 2 polygon +1 1.000 -448 -448 -448 -544 2 polygon +(DM[2]) {/Helvetica cf} 2 21 0.000 0.700 -160 -400 label +(DM[1]) {/Helvetica cf} 2 21 0.000 0.700 -32 -400 label +(DM[0]) {/Helvetica cf} 2 21 0.000 0.700 80 -400 label +(point) {CR} (trip) {/Helvetica cf} 4 21 0.000 0.700 200 -400 label +(slew) {CR} (slow) {/Helvetica cf} 4 21 0.000 0.700 304 -400 label +(polarity) {CR} (analog) {/Helvetica cf} 4 21 0.000 0.700 -512 -496 label +(select) {CR} (analog) {/Helvetica cf} 4 21 0.000 0.700 -384 -496 label +(enable) {CR} (analog) {/Helvetica cf} 4 21 0.000 0.700 -272 -496 label +(select) {CR} (mode) {CR} (IB) {/Helvetica cf} 6 21 0.000 0.700 -160 -496 label +(disable) {CR} (input) {/Helvetica cf} 4 21 0.000 0.700 -48 -496 label +(value) {CR} (hold) {/Helvetica cf} 4 21 0.000 0.700 64 -496 label +(enable) {ol} {CR} (output) {/Helvetica cf} 5 21 0.000 0.700 192 -496 label +(enable) {CR} (mgmt) {/Helvetica cf} 4 21 0.000 0.700 304 -496 label +1 1.000 128 912 128 816 2 polygon +(unused) {/Helvetica cf} 2 21 0.000 0.700 -208 864 label +1 1.000 256 912 256 816 2 polygon +(r/o clock) {CR} (SRAM) {/Helvetica cf} 4 21 0.000 0.700 192 864 label +(r/o csb) {CR} (SRAM) {/Helvetica cf} 4 21 0.000 0.700 320 864 label +(SRAM read-only address) {/Helvetica cf} 2 21 0.000 0.700 -160 768 label +(SRAM read-only data \(32 bits\)) {/Helvetica cf} 2 21 0.000 0.700 -160 672 +label +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 464 768 label +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 464 864 label +1 1.000 -112 624 -112 528 2 polygon +1 1.000 0 528 0 432 2 polygon +1 1.000 128 432 128 336 2 polygon +1 1.000 0 624 0 528 2 polygon +1 1.000 128 624 128 528 2 polygon +1 1.000 128 528 128 432 2 polygon +1 1.000 256 624 256 528 2 polygon +1 1.000 256 528 256 432 2 polygon +1 1.000 256 432 256 336 2 polygon +(good) {CR} (vccd) {CR} (user1) {/Helvetica cf} 6 21 0.000 0.700 -64 576 label +(good) {CR} (vccd) {CR} (user2) {/Helvetica cf} 6 21 0.000 0.700 64 576 label +(good) {CR} (vdda) {CR} (user1) {/Helvetica cf} 6 21 0.000 0.700 192 576 label +(good) {CR} (vdda) {CR} (user2) {/Helvetica cf} 6 21 0.000 0.700 320 576 label +(read-only) {/Helvetica cf} 2 21 0.000 0.700 464 576 label +(monitor) {CR} (clock) {CR} (core) {/Helvetica cf} 6 21 0.000 0.700 64 480 +label +(monitor) {CR} (clock) {CR} (user) {/Helvetica cf} 6 21 0.000 0.700 192 480 +label +(monitor) {CR} (state) {CR} (trap) {/Helvetica cf} 6 21 0.000 0.700 320 480 +label +(source) {CR} (irq 2) {/Helvetica cf} 4 21 0.000 0.700 192 384 label +(source) {CR} (irq 1) {/Helvetica cf} 4 21 0.000 0.700 320 384 label +(GPIO configuration data staging \(see table at bottom\)) {/Helvetica cf} 2 21 +0.000 0.700 -144 288 label +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 464 480 label +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 464 384 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -336 576 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -288 480 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -240 384 label +(unused) {/Helvetica cf} 2 21 0.000 0.700 -448 192 label +1 1.000 -336 240 -336 144 2 polygon +(GPIO data for mprj_io[37:32]) {/Helvetica cf} 2 21 0.000 0.700 -32 192 label +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 464 96 label +(GPIO data for mprj_io[31:0]) {/Helvetica cf} 2 21 0.000 0.700 -96 96 label +1 1.000 -112 -48 -112 48 2 polygon +(unused) {/Helvetica cf} 2 21 0.000 0.700 -336 0 label +(user domain power control) {/Helvetica cf} 2 21 0.000 0.700 96 0 label +1 1.000 240 -48 240 -144 2 polygon +(unused) {/Helvetica cf} 2 21 0.000 0.700 -192 -96 label +(disable) {CR} (keeping) {CR} (house-) {/Helvetica cf} 6 21 0.000 0.700 304 -96 +label +(default 0x00) {/Helvetica cf} 2 21 0.000 0.700 464 -96 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/postscript/irq_function.ps b/doc/postscript/irq_function.ps new file mode 100644 index 00000000..c0116239 --- /dev/null +++ b/doc/postscript/irq_function.ps @@ -0,0 +1,267 @@ +%!PS-Adobe-3.0 +%%Title: irq_function.ps +%%Creator: XCircuit v0.0 rev-1817832939 +%%CreationDate: Thu Dec 16 14:19:39 2021 +%%Pages: 1 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + + +%%EndSetup + +%%Page: irqs 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1088 672 translate + +0.678 1.000 0.184 scb +512 1.000 -896 1248 -896 -480 352 -480 352 1248 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -896 1216 label +1 1.000 -896 1200 352 1200 2 polygon +(Interrupts \(IRQ\)) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 1152 label +(have value zero. ) {CR} +(uses only a handful, as described in the table below. All IRQ channels not in the list below always) +{CR} +(handler to memory location 0. The PicoRV32 defines 32 IRQ channels, of which the Caravel chip) +{CR} +(this location when an interrupt is received. To enable interrupts, it is necessary to copy an interrupt) +{CR} +(The interrupt vector is set to memory addres 0 \(bottom of SRAM\). The program counter switches to) +{/Helvetica cf} 10 28 0.000 0.700 -896 1120 label +(Table 19) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -832 928 label +(CPU IRQ channel definitions) {/Helvetica cf} 2 16 0.000 0.700 -672 928 label +(IRQ channel) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -768 864 label +(description) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -512 864 label +1 1.000 -768 848 160 848 2 polygon +(5) {/Helvetica cf} 2 19 0.000 0.700 -640 784 label +(6) {/Helvetica cf} 2 19 0.000 0.700 -640 752 label +(7) {/Helvetica cf} 2 19 0.000 0.700 -640 720 label + +(The Caravel PicoRV32 implementation does not enable IRQ QREGS \(see PicoRV32 description\).) +{/Helvetica cf} 2 16 0.000 0.700 -896 448 label +(description\). All interrupts are masked and must be enabled in software.) +{CR} +(The handling of interrupts is beyond the scope of this document \(see RISC-V instruction set) +{/Helvetica cf} 4 28 0.000 0.700 -896 416 label +(IRQ external pin \(pin E5\)) {/Helvetica cf} 2 16 0.000 0.700 -512 784 label +(Housekeeping SPI IRQ) {/Helvetica cf} 2 16 0.000 0.700 -512 752 label +(Assignable interrupt \(see Table 7\)) {/Helvetica cf} 2 16 0.000 0.700 -512 +720 label +(4) {/Helvetica cf} 2 19 0.000 0.700 -640 816 label +(UART data available) {/Helvetica cf} 2 16 0.000 0.700 -512 816 label +(9) {/Helvetica cf} 2 19 0.000 0.700 -640 688 label +(SPI master data available, when enabled \(see Table 14\)) {/Helvetica cf} 2 16 +0.000 0.700 -512 688 label +(10) {/Helvetica cf} 2 19 0.000 0.700 -640 656 label +(Timer 0 expired, when enabled \(see Table 16\)) {/Helvetica cf} 2 16 0.000 +0.700 -512 656 label +(page 17) {/Helvetica cf} 2 31 0.000 0.700 336 1232 label +(11) {/Helvetica cf} 2 19 0.000 0.700 -640 624 label +(Timer 1 expired, when enabled \(see Table 19\)) {/Helvetica cf} 2 16 0.000 +0.700 -512 624 label +(Management area SRAM) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 144 label + +(at address 0 \(zero\). There are additional blocks of memory above this area, size and location TBD.) +{CR} +(The Caravel chip has an on-board memory of 256 words of width 32 bits. The memory is located) +{/Helvetica cf} 4 28 0.000 0.700 -896 112 label +(Storage area SRAM) {/Helvetica-Bold cf} 2 16 0.000 0.700 -896 -208 label +(the user area.) {CR} +(area is connected into the user area 2 power supply, and so is nominally considered to be part of) +{CR} +(either the management SoC or the user project, through the wishbone bus interface. The storage) +{CR} +(The Caravel chip has a \252storage area\272 SRAM block that is auxiliary space that can be used by) +{/Helvetica cf} 8 28 0.000 0.700 -896 -240 label +(configuration of the SRAM block.) {CR} +(making use of this space, the user should notify efabless of their requirement for the size and) +{CR} +(The storage area may be used as an experimentation area for OpenRAM, so for any user project) +{/Helvetica cf} 6 28 0.000 0.700 -896 -384 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/postscript/memory_map.ps b/doc/postscript/memory_map.ps new file mode 100644 index 00000000..3d154b58 --- /dev/null +++ b/doc/postscript/memory_map.ps @@ -0,0 +1,615 @@ +%!PS-Adobe-3.0 +%%Title: memory_map.ps +%%Creator: XCircuit v0.0 rev-1793920491 +%%CreationDate: Thu Dec 16 16:53:48 2021 +%%Pages: 3 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%+ font Courier Courier-Bold +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + + +%%EndSetup + +%%Page: memmap1 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +0.8571 inchscale +2.6000 setlinewidth 1288 1456 translate + +0.678 1.000 0.184 scb +512 1.000 -1056 784 -1056 -1232 384 -1232 384 784 4 polygon +sce +1 1.000 -1056 736 384 736 2 polygon +(Memory Mapped I/O summary by address) {/Helvetica-Bold cf} 2 16 0.000 0.700 +-1056 704 label +1 1.000 -816 672 -816 -1232 2 polygon +(Address \(bytes\)) {/Helvetica cf} 2 16 360.000 0.700 -1056 656 label +1 1.000 -1056 640 384 640 2 polygon +(Function) {/Helvetica cf} 2 16 0.000 0.700 -800 656 label +(0x00 00 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 608 label +(Flash SPI / overlaid DFFRAM \(1k words\) start of memory block) +{/Helvetica cf} 2 16 0.000 0.700 -800 608 label +(0x10 00 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 448 label +(Flash SPI start of program block) {/Helvetica cf} 2 16 0.000 0.700 -800 448 +label +(0x21 00 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 160 label +(GPIO input/output \(bit 16/bit 0\)) {/Helvetica cf} 2 16 0.000 0.700 -800 160 +label +(0x21 00 00 04) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 128 label +(GPIO output enable \(1 = output, 0 = input\)) {/Helvetica cf} 2 16 360.000 +0.700 -800 128 label +(0x21 00 00 08) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 96 label +(GPIO pullup enable \(1 = pullup, 0 = none\)) {/Helvetica cf} 2 16 0.000 0.700 +-800 96 label +(0x21 00 00 0c) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 64 label +(GPIO pulldown enable \(1 = pulldown, 0 = none\)) {/Helvetica cf} 2 16 360.000 +0.700 -800 64 label +(Program to run starts here on reset.) {/Helvetica cf} 2 16 0.000 0.700 -144 +448 label +(1 general-purpose digital, management area only) {/Helvetica cf} 2 16 0.000 +0.700 -240 160 label +(Efabless Caravel SoC and user project harness) {/Helvetica cf} 2 28 0.000 +1.000 -1056 784 label +(0x00 00 0f ff) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 576 label +(End of SRAM) {/Helvetica cf} 2 16 0.000 0.700 -800 576 label +(0x1f ff ff ff) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 384 label +(MB\) with 4-byte addressing) {qS} (Maximum SPI flash addressable space \(32) +{/Helvetica cf} 4 16 0.000 0.700 -800 384 label +(0x10 ff ff ff) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 416 label +(MB\) with QSPI 3-byte addressing) {qS} +(Maximum SPI flash addressable space \(16) {/Helvetica cf} 4 16 0.000 0.700 +-800 416 label +(UART clock divider select \(system clock freq. / baud rate\)) {/Helvetica cf} +2 16 0.000 0.700 -800 304 label +(0x20 00 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 304 label +(if receiver buffer is empty\)) {/Helvetica cf} (0xffffffff ) {/Courier cf} +(UART data \(returns ) {/Helvetica cf} 6 16 360.000 0.700 -800 272 label +(0x20 00 00 04) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 272 label +(UART enable) {/Helvetica cf} 2 16 360.000 0.700 -800 240 label +(0x20 00 00 08) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 240 label +(0x22 00 00 00) {/Courier-Bold cf} 2 16 360.000 0.700 -1056 -16 label +(Counter/Timer 0 configuration register \(lower 4 bits\)) {/Helvetica cf} 2 16 +0.000 0.700 -800 -16 label +(0x22 00 00 04) {/Courier-Bold cf} 2 16 360.000 0.700 -1056 -208 label +(Counter/Timer 0 current value) {/Helvetica cf} 2 16 0.000 0.700 -800 -208 +label +(0x22 00 00 08) {/Courier-Bold cf} 2 16 360.000 0.700 -1056 -288 label +(Counter/Timer 0 reset value) {/Helvetica cf} 2 16 0.000 0.700 -800 -288 label +(bit 0 = enable \(0 = hold, 1 = count\)) {/Helvetica cf} 2 16 0.000 0.700 -736 +-64 label +(Set or read the 32-bit current value.) {/Helvetica cf} 2 16 0.000 0.700 -736 +-240 label +(Set or read the 32-bit reset \(down-count\) or compare \(up-count\) value.) +{/Helvetica cf} 2 16 0.000 0.700 -752 -320 label +(bit 1 = oneshot \(0 = continuous count, 1 = one-shot count\)) {/Helvetica cf} +2 16 0.000 0.700 -736 -96 label +(bit 2 = updown \(0 = count down, 1 = count up\)) {/Helvetica cf} 2 16 0.000 +0.700 -736 -128 label +(bit 3 = irq enable \(0 = disabled, 1 = trigger IRQ channel 10 on timeout\)) +{/Helvetica cf} 2 16 0.000 0.700 -736 -160 label +(0x23 00 00 00) {/Courier-Bold cf} 2 16 360.000 0.700 -1056 -368 label +(Counter/Timer 1 configuration register \(lower 4 bits\)) {/Helvetica cf} 2 16 +0.000 0.700 -800 -368 label +(0x23 00 00 04) {/Courier-Bold cf} 2 16 360.000 0.700 -1056 -560 label +(Counter/Timer 1 current value) {/Helvetica cf} 2 16 0.000 0.700 -800 -560 +label +(0x23 00 00 08) {/Courier-Bold cf} 2 16 360.000 0.700 -1056 -640 label +(Counter/Timer 1 reset value) {/Helvetica cf} 2 16 0.000 0.700 -800 -640 label +(bit 0 = enable \(0 = hold, 1 = count\)) {/Helvetica cf} 2 16 0.000 0.700 -736 +-416 label +(Set or read the 32-bit current value.) {/Helvetica cf} 2 16 0.000 0.700 -736 +-592 label +(Set or read the 32-bit reset \(down-count\) or compare \(up-count\) value.) +{/Helvetica cf} 2 16 0.000 0.700 -752 -672 label +(bit 1 = oneshot \(0 = continuous count, 1 = one-shot count\)) {/Helvetica cf} +2 16 0.000 0.700 -736 -448 label +(bit 2 = updown \(0 = count down, 1 = count up\)) {/Helvetica cf} 2 16 0.000 +0.700 -736 -480 label +(bit 3 = irq enable \(0 = disabled, 1 = trigger IRQ channel 11 on timeout\)) +{/Helvetica cf} 2 16 0.000 0.700 -736 -512 label +(0x24 00 00 00) {/Courier-Bold cf} 2 16 360.000 0.700 -1056 -720 label +(SPI master configuration register) {/Helvetica cf} 2 16 0.000 0.700 -800 -720 +label +(0x24 00 00 04) {/Courier-Bold cf} 2 16 360.000 0.700 -1056 -1072 label +(SPI master data register \(low 8 bits\)) {/Helvetica cf} 2 16 0.000 0.700 -800 +-1072 label + +(bits 0\2617 = prescaler \(core clock / \(prescaler + 1\) = SPI clock rate / 2\) \(default 2\)) +{/Helvetica cf} 2 16 0.000 0.700 -720 -768 label +(bit 8 = mlb \(0 = msb first, 1 = lsb first\) \(default 0\)) {/Helvetica cf} 2 +16 0.000 0.700 -720 -800 label +(bit 9 = invcsb \(0 = csb active low, 1 = csb active high\) \(default 0\)) +{/Helvetica cf} 2 16 0.000 0.700 -720 -832 label +(bit 10 = invsck \(0 = normal sck, 1 = inverted sck\) \(default 0\)) +{/Helvetica cf} 2 16 0.000 0.700 -720 -864 label + +(bit 11 = mode \(0 = read/write on opposite sck edge, 1 = same edge\) \(default 0\)) +{/Helvetica cf} 2 16 0.000 0.700 -720 -896 label + +(bit 12 = stream \(0 = raise csb after each byte, 1 = keep csb low until stream bit cleared\)) +{/Helvetica cf} 2 16 0.000 0.700 -720 -928 label +(bit 13 = enable \(0 = SPI master disabled, 1 = SPI master enabled\)) +{/Helvetica cf} 2 16 0.000 0.700 -720 -960 label + +(bit 14 = irq enable \(0 = disabled, 1 = SPI read valid triggers interrupt channel 9\)) +{/Helvetica cf} 2 16 0.000 0.700 -720 -992 label +(Write data to send to low byte or read received data from low byte.) +{/Helvetica cf} 2 16 0.000 0.700 -720 -1120 label +(bit 15 = housekeeping \(0 = disconnected, 1 = connected\)) {/Helvetica cf} 2 +16 0.000 0.700 -720 -1024 label +(0x01 00 07 ff) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 512 label +(End of SRAM) {/Helvetica cf} 2 16 0.000 0.700 -800 512 label +(0x01 00 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -1056 544 label +(Flash SPI / overlaid SRAM \(512 words\) start of memory block) +{/Helvetica cf} 2 16 0.000 0.700 -800 544 label +pgsave restore showpage + +%%Page: memmap2 2 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +0.8571 inchscale +2.6000 setlinewidth 1160 1344 translate + +0.678 1.000 0.184 scb +512 1.000 -928 896 -928 -1120 512 -1120 512 896 4 polygon +sce +1 1.000 -688 784 -688 -1120 2 polygon +(Address \(bytes\)) {/Helvetica cf} 2 16 360.000 0.700 -928 768 label +(Function) {/Helvetica cf} 2 16 0.000 0.700 -672 768 label +1 1.000 -928 752 512 752 2 polygon +(\(continued\)) {/Helvetica-Oblique cf} (Memory Mapped I/O summary by address ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -928 816 label +1 1.000 -928 848 512 848 2 polygon +(Efabless Caravel SoC and user project harness) {/Helvetica cf} 2 28 0.000 +1.000 -928 896 label +(0x25 00 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -928 704 label +(Logic Analyzer Data 0 \(bits 31 to 0\)) {/Helvetica cf} 2 16 0.000 0.700 -672 +704 label +(0x25 00 00 04) {/Courier-Bold cf} 2 16 0.000 0.700 -928 672 label +(Logic Analyzer Data 1 \(bits 63 to 32\)) {/Helvetica cf} 2 16 0.000 0.700 -672 +672 label +(0x25 00 00 08) {/Courier-Bold cf} 2 16 0.000 0.700 -928 640 label +(Logic Analyzer Data 2 \(bits 91 to 64\)) {/Helvetica cf} 2 16 0.000 0.700 -672 +640 label +(0x25 00 00 0c) {/Courier-Bold cf} 2 16 0.000 0.700 -928 608 label +(Logic Analyzer Data 3 \(bits 127 to 92\)) {/Helvetica cf} 2 16 0.000 0.700 +-672 608 label +(0x25 00 00 10) {/Courier-Bold cf} 2 16 0.000 0.700 -928 560 label +(Logic Analyzer Output Enable 0 \(sense inverted\320OEB\)) {/Helvetica cf} 2 16 +0.000 0.700 -672 560 label +(0x25 00 00 14) {/Courier-Bold cf} 2 16 0.000 0.700 -928 528 label +(Logic Analyzer Output Enable 1 \(sense inverted\320OEB\)) {/Helvetica cf} 2 16 +0.000 0.700 -672 528 label +(0x25 00 00 18) {/Courier-Bold cf} 2 16 0.000 0.700 -928 496 label +(Logic Analyzer Output Enable 2 \(sense inverted\320OEB\)) {/Helvetica cf} 2 16 +0.000 0.700 -672 496 label +(0x25 00 00 1c) {/Courier-Bold cf} 2 16 0.000 0.700 -928 464 label +(Logic Analyzer Output Enable 3 \(sense inverted\320OEB\)) {/Helvetica cf} 2 16 +0.000 0.700 -672 464 label +(0x26 00 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -928 224 label +(User project area GPIO data \(L\) \(GPIO 31 to 0\)) {/Helvetica cf} 2 16 0.000 +0.700 -672 128 label +(0x26 00 00 04) {/Courier-Bold cf} 2 16 0.000 0.700 -928 192 label +(User project area GPIO data \(H\) \(GPIO 37 to 32, upper bits unused\)) +{/Helvetica cf} 2 16 0.000 0.700 -672 96 label +(0x26 00 00 0c) {/Courier-Bold cf} 2 16 0.000 0.700 -928 128 label +(User project area GPIO data transfer \(bit 0, auto-zeroing\)) {/Helvetica cf} +2 16 0.000 0.700 -672 224 label +(0x26 00 00 24) {/Courier-Bold cf} 2 16 0.000 0.700 -928 32 label +(0x26 00 00 b8) {/Courier-Bold cf} 2 16 0.000 0.700 -928 -48 label +(. . .) {/Helvetica cf} 2 21 90.000 0.700 -816 0 label +(User project area GPIO mprj_io[0] configure) {/Helvetica cf} 2 16 0.000 0.700 +-672 32 label +(User project area GPIO mprj_io[37] configure) {/Helvetica cf} 2 16 0.000 0.700 +-672 -48 label + +(bits 10\26112 = digital mode \(see below\) \(default set in file user_defines.v\)) +{/Helvetica cf} 2 16 0.000 0.700 -608 -448 label + +(bit 0 = management control enable \(0 = user control, 1 = management control\) \(default 1\)) +{/Helvetica cf} 2 16 0.000 0.700 -608 -128 label + +(bit 1 = output disable \(0 = output enabled, 1 = output disabled\) \(default 1\)) +{/Helvetica cf} 2 16 0.000 0.700 -608 -160 label +(bit 2 = hold override value \(value = value during hold mode\) \(default 0\)) +{/Helvetica cf} 2 16 0.000 0.700 -608 -192 label +(bit 3 = input disable \(0 = input enabled, 1 = input disabled\) \(default 0\)) +{/Helvetica cf} 2 16 0.000 0.700 -608 -224 label +(bit 4 = IB mode select \(0 = , 1 = \)) {/Helvetica cf} 2 16 0.000 0.700 -608 +-256 label +(bit 5 = analog bus enable \(0 = disabled, 1 = enabled\)) {/Helvetica cf} 2 16 +0.000 0.700 -608 -288 label +(bit 6 = analog bus select \(0 = , 1 = \)) {/Helvetica cf} 2 16 0.000 0.700 +-608 -320 label +(bit 7 = analog bus polarity \(0 = , 1 = \)) {/Helvetica cf} 2 16 0.000 0.700 +-608 -352 label +(bit 8 = slow slew \(0 = fast slew, 1 = slow slew\) \(default 0\)) +{/Helvetica cf} 2 16 0.000 0.700 -608 -384 label +(bit 9 = input voltage trip point select \(0 = , 1 = \)) {/Helvetica cf} 2 16 +0.000 0.700 -608 -416 label +(Digital mode bits) {/Helvetica cf} 2 16 0.000 0.700 -672 -512 label +(Digital mode description) {/Helvetica cf} 2 16 0.000 0.700 -352 -512 label +(bit 12 11 10) {/Helvetica cf} 2 16 0.000 0.700 -640 -560 label +(0 0 0) {/Courier cf} 2 16 0.000 0.700 -576 -592 label +(0 0 1) {/Courier cf} 2 16 0.000 0.700 -576 -624 label +(0 1 0) {/Courier cf} 2 16 0.000 0.700 -576 -656 label +(0 1 1) {/Courier cf} 2 16 0.000 0.700 -576 -688 label +(1 0 0) {/Courier cf} 2 16 0.000 0.700 -576 -720 label +(1 0 1) {/Courier cf} 2 16 0.000 0.700 -576 -752 label +(1 1 0) {/Courier cf} 2 16 0.000 0.700 -576 -784 label +(1 1 1) {/Courier cf} 2 16 0.000 0.700 -576 -816 label +(0x25 00 00 20) {/Courier-Bold cf} 2 16 0.000 0.700 -928 416 label +(Logic Analyzer Input Enable 0) {/Helvetica cf} 2 16 0.000 0.700 -672 416 label +(0x25 00 00 24) {/Courier-Bold cf} 2 16 0.000 0.700 -928 384 label +(Logic Analyzer Input Enable 1) {/Helvetica cf} 2 16 0.000 0.700 -672 384 label +(0x25 00 00 28) {/Courier-Bold cf} 2 16 0.000 0.700 -928 352 label +(Logic Analyzer Input Enable 2) {/Helvetica cf} 2 16 0.000 0.700 -672 352 label +(0x25 00 00 2c) {/Courier-Bold cf} 2 16 0.000 0.700 -928 320 label +(Logic Analyzer Input Enable 3) {/Helvetica cf} 2 16 0.000 0.700 -672 320 label +(0x25 00 00 30) {/Courier-Bold cf} 2 16 0.000 0.700 -928 272 label +(Logic Analyzer Sample) {/Helvetica cf} 2 16 0.000 0.700 -672 272 label +(User project area GPIO power[0] configure) {/Helvetica cf} 2 16 0.000 0.700 +-672 192 label +(0x26 00 00 10) {/Courier-Bold cf} 2 16 0.000 0.700 -928 96 label +(\(These are currently undefined/unused.\)) {/Helvetica cf} 2 16 0.000 0.700 +-64 192 label +(analog function \(all digital buffers disabled\)) {/Helvetica cf} 2 16 0.000 +0.700 -352 -592 label +(input \(output disabled\), no pullup or pulldown) {/Helvetica cf} 2 16 0.000 +0.700 -352 -624 label +(input \(output disabled\), with pulldown) {/Helvetica cf} 2 16 0.000 0.700 +-352 -688 label +(input \(output disabled\), with pullup) {/Helvetica cf} 2 16 0.000 0.700 -352 +-656 label +(output enabled) {/Helvetica cf} 2 16 0.000 0.700 -352 -784 label +(open drain \(to power\) output) {/Helvetica cf} 2 16 0.000 0.700 -352 -720 +label +(open drain \(to ground\) output) {/Helvetica cf} 2 16 0.000 0.700 -352 -752 +label +(weak output \(through 5k resistor\)) {/Helvetica cf} 2 16 0.000 0.700 -352 +-816 label +(Mirrors housekeeping register 0x13) {/Helvetica cf} 2 19 0.000 0.700 512 224 +label +(Housekeeping register 0x6e) {/Helvetica cf} 2 19 0.000 0.700 512 160 label +(Housekeeping registers 0x6a\3200x6d) {/Helvetica cf} 2 19 0.000 0.700 512 128 +label +(Housekeeping register 0x69) {/Helvetica cf} 2 19 0.000 0.700 512 64 label +(Housekeeping registers 0x1d, 0x1e\320) {/Helvetica cf} 2 19 0.000 0.700 512 32 +label +(Housekeeping registers \3200x67, 0x68) {/Helvetica cf} 2 19 0.000 0.700 512 +-48 label +(. . .) {/Helvetica cf} 2 21 90.000 0.700 416 0 label +pgsave restore showpage + +%%Page: memmap3 3 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +0.8571 inchscale +2.6000 setlinewidth 1096 1328 translate + +0.678 1.000 0.184 scb +512 1.000 -864 912 -864 -1104 576 -1104 576 912 4 polygon +sce +1 1.000 -608 800 -608 -1104 2 polygon +(Address \(bytes\)) {/Helvetica cf} 2 16 360.000 0.700 -864 784 label +(Function) {/Helvetica cf} 2 16 0.000 0.700 -592 784 label +1 1.000 -864 768 576 768 2 polygon +1 1.000 -864 864 576 864 2 polygon +(Efabless Caravel SoC and user project harness) {/Helvetica cf} 2 28 0.000 +1.000 -864 912 label +(\(continued\)) {/Helvetica-Oblique cf} (Memory Mapped I/O summary by address ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -864 832 label +(0x26 20 00 04) {/Courier-Bold cf} 2 16 360.000 0.700 -864 128 label +(Output monitoring \(low 3 bits\)) {/Helvetica cf} 2 16 0.000 0.700 -592 128 +label +(bit 0 =) {/Helvetica cf} 2 16 0.000 0.700 -464 96 label +(bit 1 =) {/Helvetica cf} 2 16 0.000 0.700 -464 64 label +(0x26 20 00 0c) {/Courier-Bold cf} 2 16 360.000 0.700 -864 -208 label +(IRQ input source \(low 2 bits\)) {/Helvetica cf} 2 16 0.000 0.700 -592 -208 +label +(core clock monitor) {/Helvetica cf} 2 16 0.000 0.700 -352 96 label +(user clock monitor) {/Helvetica cf} 2 16 0.000 0.700 -352 64 label +(toggle the GPIO at full swing, but is detectable.) {CR} +(full-speed \(100MHz\) clock will be able to) {CR} +(for PLL clock output. It is unlikely that a) {CR} +(be used as general-purpose I/O when selected) {CR} +(the GPIO pin. The GPIO pin cannot) {CR} +(multiplied up by PLL\) can be viewed on) {CR} +(The PLL clock \(crystal oscillator clock) {/Helvetica cf} 14 28 0.000 0.700 +-16 144 label +(trap state externally.) {CR} (the GPIO pin as a way to monitor the CPU) {CR} +(The CPU fault state \(trap\) can be viewed at) {/Helvetica cf} 6 28 0.000 +0.700 -16 -64 label +(the GPIO pin must be configured as an input.) {CR} +(channel 7. When used as an IRQ source,) {CR} +(source and passed to the CPU through IRQ) {CR} +(The GPIO input can be used as an IRQ event) {/Helvetica cf} 8 28 0.000 0.700 +-16 -192 label +(0x30 00 00 00) {/Courier-Bold cf} 2 16 360.000 0.700 -864 -832 label +(User area base) {/Helvetica cf} 2 16 0.000 0.700 -592 -832 label +(at this address.) {CR} +(A user project may define additional wishbone slave modules starting) +{/Helvetica cf} 4 28 0.000 0.700 -336 -816 label +(0x2d 00 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -864 -496 label +(QSPI controller config) {/Helvetica cf} 2 16 0.000 0.700 -592 -496 label +(bits 3-0 Data bits \(bit bang mode\)) {CR} +(bit 4 Serial clock line \(bit bang mode\)) {CR} +(bit 5 Chip select line \(bit bang mode\)) {CR} +(bits 11-8 I/O output enable bits \(bit bang mode\)) {CR} +(bits 19-16 Read latency cycles) {CR} (bit 20 CRM enable) {CR} +(bit 21 QSPI enable) {CR} (bit 22 DDR enable) {CR} +(bit 31 MEMIO enable \(reset = 1\) 0 = bit-bang mode) {/Helvetica cf} 18 16 +0.000 0.700 -560 -768 label +1 1.000 96 -560 112 -576 112 -624 96 -640 4 polygon +(output.*) {CR} (configured for management) {CR} (GPIO pins 36 and 37 are) {CR} +(Note: These can only be used if) {/Helvetica cf} 8 16 0.000 0.700 160 -656 +label +(0x2f 00 00 00) {/Courier-Bold cf} 2 16 360.000 0.700 -864 -416 label +(User IRQ enables \(low 3 bits\)) {/Helvetica cf} 2 16 0.000 0.700 -592 -416 +label +(0x26 10 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -864 720 label +(0x26 10 00 04) {/Courier-Bold cf} 2 16 0.000 0.700 -864 688 label +(0x26 10 00 08) {/Courier-Bold cf} 2 16 0.000 0.700 -864 656 label +(0x26 10 00 0c) {/Courier-Bold cf} 2 16 0.000 0.700 -864 624 label +(0x26 10 00 10) {/Courier-Bold cf} 2 16 0.000 0.700 -864 592 label +(0x26 10 00 14) {/Courier-Bold cf} 2 16 0.000 0.700 -864 560 label +(0x26 10 00 18) {/Courier-Bold cf} 2 16 0.000 0.700 -864 528 label +(0x26 10 00 1c) {/Courier-Bold cf} 2 16 0.000 0.700 -864 464 label +(0x26 10 00 20) {/Courier-Bold cf} 2 16 0.000 0.700 -864 432 label +(0x26 10 00 24) {/Courier-Bold cf} 2 16 0.000 0.700 -864 400 label +(0x26 20 00 00) {/Courier-Bold cf} 2 16 0.000 0.700 -864 160 label +(Power good \(4 bits: User 1/2 vccd, user 1/2 vdda\)) {/Helvetica cf} 2 16 +0.000 0.700 -592 160 label +(bit 2 =) {/Helvetica cf} 2 16 0.000 0.700 -464 -80 label +(CPU trap monitor) {/Helvetica cf} 2 16 0.000 0.700 -352 -80 label +(bit 0 =) {/Helvetica cf} 2 16 0.000 0.700 -464 -240 label +(bit 1 =) {/Helvetica cf} 2 16 0.000 0.700 -464 -272 label +(IRQ 7 source) {/Helvetica cf} 2 16 0.000 0.700 -352 -240 label +(IRQ 8 source) {/Helvetica cf} 2 16 0.000 0.700 -352 -272 label +(0x26 20 00 10) {/Courier-Bold cf} 2 16 360.000 0.700 -864 -368 label +(Housekeeping SPI disable \(low bit\)) {/Helvetica cf} 2 16 0.000 0.700 -592 +-368 label +(0x2f 00 00 04) {/Courier-Bold cf} 2 16 360.000 0.700 -864 -448 label +(User wishbone input enable \(low bit\)) {/Helvetica cf} 2 16 0.000 0.700 -592 +-448 label +(Housekeeping SPI status \(undefined/unused\)) {/Helvetica cf} 2 16 0.000 0.700 +-592 720 label +(Chip ID \(20 bits, vendor and chip identifiers\)) {/Helvetica cf} 2 16 0.000 +0.700 -592 688 label +(User ID \(32 bits, user project and MPW run identifiers\)) {/Helvetica cf} 2 +16 0.000 0.700 -592 656 label +(DLL enables) {/Helvetica cf} 2 16 0.000 0.700 -592 624 label +(DLL bypass) {/Helvetica cf} 2 16 0.000 0.700 -592 592 label +(Manual interrupt) {/Helvetica cf} 2 16 0.000 0.700 -592 560 label + +(Manual reset \(note: this will reset the CPU, not recommended to be called from software.\)) +{/Helvetica cf} 2 16 0.000 0.700 -592 528 label +(0x26 10 00 28) {/Courier-Bold cf} 2 16 0.000 0.700 -864 368 label + +(Trap state \(note: when read from the CPU, this value can only be zero by definition.\)) +{/Helvetica cf} 2 16 0.000 0.700 -592 368 label +(DLL feedback divider) {/Helvetica cf} 2 16 0.000 0.700 -592 400 label +(DLL output dividers \(3 bits each\)) {/Helvetica cf} 2 16 0.000 0.700 -592 432 +label +(DLL manual trim for DCO mode \(28 bits\)) {/Helvetica cf} 2 16 0.000 0.700 +-592 464 label +(Mirrors housekeeping SPI register 0x00) {/Helvetica cf} 2 19 0.000 0.700 576 +720 label +(Housekeeping registers 0x01\3200x03) {/Helvetica cf} 2 19 0.000 0.700 576 688 +label +(Housekeeping registers 0x04\3200x07) {/Helvetica cf} 2 19 0.000 0.700 576 656 +label +(Housekeeping register 0x08) {/Helvetica cf} 2 19 0.000 0.700 576 624 label +(Housekeeping register 0x09) {/Helvetica cf} 2 19 0.000 0.700 576 592 label +(Housekeeping register 0x0a) {/Helvetica cf} 2 19 0.000 0.700 576 560 label +(Housekeeping registers 0x0d\3200x10) {/Helvetica cf} 2 19 0.000 0.700 576 464 +label +(Housekeeping register 0x11) {/Helvetica cf} 2 19 0.000 0.700 576 432 label +(Housekeeping register 0x12) {/Helvetica cf} 2 19 0.000 0.700 576 400 label +(Housekeeping register 0x0b) {/Helvetica cf} 2 19 0.000 0.700 576 496 label +(Housekeeping register 0x0c) {/Helvetica cf} 2 19 0.000 0.700 576 336 label +(0x26 10 00 2c) {/Courier-Bold cf} 2 16 0.000 0.700 -864 304 label +(0x26 10 00 30) {/Courier-Bold cf} 2 16 0.000 0.700 -864 272 label +(0x26 10 00 34) {/Courier-Bold cf} 2 16 0.000 0.700 -864 240 label +(SRAM read-only port data) {/Helvetica cf} 2 16 0.000 0.700 -592 304 label +(SRAM read-only port address) {/Helvetica cf} 2 16 0.000 0.700 -592 272 label +(SRAM read-only control) {/Helvetica cf} 2 16 0.000 0.700 -592 240 label +(Housekeeping registers 0x16\3200x19) {/Helvetica cf} 2 19 0.000 0.700 576 304 +label +(Housekeeping register 0x15) {/Helvetica cf} 2 19 0.000 0.700 576 272 label +(Housekeeping register 0x14) {/Helvetica cf} 2 19 0.000 0.700 576 240 label +(Housekeeping register 0x1a) {/Helvetica cf} 2 19 0.000 0.700 576 160 label +(Housekeeping register 0x1b) {/Helvetica cf} 2 19 0.000 0.700 576 -176 label +(Housekeeping register 0x1c) {/Helvetica cf} 2 19 0.000 0.700 576 -336 label +(Housekeeping register 0x6f) {/Helvetica cf} 2 19 0.000 0.700 576 -368 label +(0x3f ff ff ff) {/Courier-Bold cf} 2 16 360.000 0.700 -864 -896 label +(User area top) {/Helvetica cf} 2 16 0.000 0.700 -592 -896 label +( type of management core SoC implemented.) {CR} +(* The availability of the QSPI function is dependent on whether or not it is supported by the) +{/Helvetica cf} 4 16 0.000 0.700 -592 -1056 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/postscript/monitor_function.ps b/doc/postscript/monitor_function.ps new file mode 100644 index 00000000..11603b2c --- /dev/null +++ b/doc/postscript/monitor_function.ps @@ -0,0 +1,526 @@ +%!PS-Adobe-3.0 +%%Title: monitor_function.ps +%%Creator: XCircuit v0.0 rev-1817832939 +%%CreationDate: Thu Dec 16 14:18:44 2021 +%%Pages: 1 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%+ font Courier-Bold +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + + +%%EndSetup + +%%Page: monitor1 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1088 736 translate + +0.678 1.000 0.184 scb +512 1.000 -896 1184 -896 -544 352 -544 352 1184 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -896 1152 label +1 1.000 -896 1136 352 1136 2 polygon +(GPIO description, continued.) {/Helvetica cf} 2 16 0.000 0.700 -896 1088 label +0 1.000 -848 912 -848 960 176 960 176 912 4 polygon +1 1.000 -816 912 -816 864 2 polygon +1 1.000 -784 912 -784 864 2 polygon +1 1.000 -752 912 -752 864 2 polygon +1 1.000 -720 912 -720 864 2 polygon +1 1.000 -688 912 -688 864 2 polygon +1 1.000 -656 912 -656 864 2 polygon +1 1.000 -624 912 -624 864 2 polygon +1 1.000 -592 912 -592 864 2 polygon +1 1.000 -560 912 -560 864 2 polygon +1 1.000 -528 912 -528 864 2 polygon +1 1.000 -496 912 -496 864 2 polygon +1 1.000 -464 912 -464 864 2 polygon +1 1.000 -432 912 -432 864 2 polygon +1 1.000 -400 912 -400 864 2 polygon +1 1.000 -368 912 -368 864 2 polygon +1 1.000 -304 912 -304 864 2 polygon +1 1.000 -272 912 -272 864 2 polygon +1 1.000 -240 912 -240 864 2 polygon +1 1.000 -208 912 -208 864 2 polygon +1 1.000 -176 912 -176 864 2 polygon +1 1.000 -144 912 -144 864 2 polygon +1 1.000 -112 912 -112 864 2 polygon +1 1.000 -80 912 -80 864 2 polygon +1 1.000 -48 912 -48 864 2 polygon +1 1.000 -16 912 -16 864 2 polygon +1 1.000 16 912 16 864 2 polygon +1 1.000 48 912 48 864 2 polygon +1 1.000 80 912 80 864 2 polygon +1 1.000 112 912 112 864 2 polygon +1 1.000 144 912 144 864 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 160 888 label +0.600 0.600 0.600 scb +(1) {/Helvetica cf} 2 21 0.000 0.500 128 888 label +(2) {/Helvetica cf} 2 21 0.000 0.500 96 888 label +(3) {/Helvetica cf} 2 21 0.000 0.500 64 888 label +(4) {/Helvetica cf} 2 21 0.000 0.500 32 888 label +(5) {/Helvetica cf} 2 21 0.000 0.500 0 888 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -32 888 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -64 888 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -96 888 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -128 888 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -160 888 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -192 888 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -224 888 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -256 888 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -288 888 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -320 888 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -352 888 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -384 888 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -416 888 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -448 888 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -480 888 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -512 888 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -544 888 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -576 888 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -608 888 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -640 888 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -672 888 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -704 888 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -736 888 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -768 888 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -800 888 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -832 888 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 208 896 label +(0x2f000000) {/Courier-Bold cf} 2 16 0.000 0.700 -32 976 label +1 1.000 -80 960 -80 1008 2 polygon +1 1.000 -592 960 -592 1008 2 polygon +1 1.000 -848 1008 -848 960 2 polygon +1 1.000 176 1008 176 960 2 polygon +1 1.000 176 912 176 864 2 polygon +1 1.000 -848 912 -848 864 2 polygon +0.600 0.600 0.600 scb +(0x2f000001) {/Courier-Bold cf} 2 16 360.000 0.700 -288 976 label +(0x2f000002) {/Courier-Bold cf} 2 16 360.000 0.700 -544 976 label +(0x2f000003) {/Courier-Bold cf} 2 16 0.000 0.700 -800 976 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 256 976 label +(value) {/Helvetica cf} 2 20 0.000 0.700 208 944 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -448 928 label +1 1.000 -848 1008 176 1008 2 polygon +1 1.000 -848 864 176 864 2 polygon +(reg_pll_out_dest) {/Courier-Bold cf} 2 16 0.000 0.700 -432 1024 label +1 1.000 -80 960 -80 912 2 polygon +1 1.000 -336 1008 -336 960 2 polygon +1 1.000 -336 912 -336 864 2 polygon +(PLL clock dest.) {/Helvetica cf} 2 17 0.000 0.700 48 928 label +(according to the following table:) {CR} +(The low bit of this register directs the output of the core clock to the GPIO channel,) +{/Helvetica cf} 4 28 0.000 0.700 -848 832 label +( value) {/Helvetica cf} (0x2f000000) {/Courier-Bold cf} (Register byte ) +{/Helvetica cf} 6 16 0.000 0.700 -800 736 label +(Clock output directed to this channel) {/Helvetica cf} 2 16 0.000 0.700 -352 +736 label +(0) {/Courier-Bold cf} 2 16 0.000 0.700 -560 688 label +(1) {/Courier-Bold cf} 2 16 0.000 0.700 -560 656 label +(\(none\)) {/Helvetica cf} 2 16 0.000 0.700 -256 688 label +1 1.000 -800 720 208 720 2 polygon +1 1.000 -368 768 -368 640 2 polygon +(0) {/Helvetica cf} 2 16 0.000 0.700 -704 688 label +(1) {/Helvetica cf} 2 16 0.000 0.700 -704 656 label +0 1.000 -848 336 -848 384 176 384 176 336 4 polygon +1 1.000 -816 336 -816 288 2 polygon +1 1.000 -784 336 -784 288 2 polygon +1 1.000 -752 336 -752 288 2 polygon +1 1.000 -720 336 -720 288 2 polygon +1 1.000 -688 336 -688 288 2 polygon +1 1.000 -656 336 -656 288 2 polygon +1 1.000 -624 336 -624 288 2 polygon +1 1.000 -592 336 -592 288 2 polygon +1 1.000 -560 336 -560 288 2 polygon +1 1.000 -528 336 -528 288 2 polygon +1 1.000 -496 336 -496 288 2 polygon +1 1.000 -464 336 -464 288 2 polygon +1 1.000 -432 336 -432 288 2 polygon +1 1.000 -400 336 -400 288 2 polygon +1 1.000 -368 336 -368 288 2 polygon +1 1.000 -304 336 -304 288 2 polygon +1 1.000 -272 336 -272 288 2 polygon +1 1.000 -240 336 -240 288 2 polygon +1 1.000 -208 336 -208 288 2 polygon +1 1.000 -176 336 -176 288 2 polygon +1 1.000 -144 336 -144 288 2 polygon +1 1.000 -112 336 -112 288 2 polygon +1 1.000 -80 336 -80 288 2 polygon +1 1.000 -48 336 -48 288 2 polygon +1 1.000 -16 336 -16 288 2 polygon +1 1.000 16 336 16 288 2 polygon +1 1.000 48 336 48 288 2 polygon +1 1.000 80 336 80 288 2 polygon +1 1.000 112 336 112 288 2 polygon +1 1.000 144 336 144 288 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 160 312 label +0.600 0.600 0.600 scb +(1) {/Helvetica cf} 2 21 0.000 0.500 128 312 label +(2) {/Helvetica cf} 2 21 0.000 0.500 96 312 label +(3) {/Helvetica cf} 2 21 0.000 0.500 64 312 label +(4) {/Helvetica cf} 2 21 0.000 0.500 32 312 label +(5) {/Helvetica cf} 2 21 0.000 0.500 0 312 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -32 312 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -64 312 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -96 312 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -128 312 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -160 312 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -192 312 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -224 312 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -256 312 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -288 312 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -320 312 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -352 312 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -384 312 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -416 312 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -448 312 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -480 312 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -512 312 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -544 312 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -576 312 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -608 312 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -640 312 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -672 312 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -704 312 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -736 312 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -768 312 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -800 312 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -832 312 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 208 320 label +(0x2f000004) {/Courier-Bold cf} 2 16 0.000 0.700 -32 400 label +1 1.000 -80 384 -80 432 2 polygon +1 1.000 -592 384 -592 432 2 polygon +1 1.000 -848 432 -848 384 2 polygon +1 1.000 176 432 176 384 2 polygon +1 1.000 176 336 176 288 2 polygon +1 1.000 -848 336 -848 288 2 polygon +0.600 0.600 0.600 scb +(0x2f000005) {/Courier-Bold cf} 2 16 360.000 0.700 -288 400 label +(0x2f000006) {/Courier-Bold cf} 2 16 360.000 0.700 -544 400 label +(0x2f000007) {/Courier-Bold cf} 2 16 0.000 0.700 -800 400 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 256 400 label +(value) {/Helvetica cf} 2 20 0.000 0.700 208 368 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -448 352 label +1 1.000 -848 432 176 432 2 polygon +1 1.000 -848 288 176 288 2 polygon +(reg_trap_out_dest) {/Courier-Bold cf} 2 16 0.000 0.700 -432 448 label +1 1.000 -80 384 -80 336 2 polygon +1 1.000 -336 432 -336 384 2 polygon +1 1.000 -336 336 -336 288 2 polygon +(trap signal dest.) {/Helvetica cf} 2 17 0.000 0.700 48 352 label +(channel, according to the following table:) {CR} +(The low bit of this register directs the output of the processor trap signal to the GPIO) +{/Helvetica cf} 4 28 0.000 0.700 -848 256 label +( value) {/Helvetica cf} (0x2f000004) {/Courier-Bold cf} (Register byte ) +{/Helvetica cf} 6 16 0.000 0.700 -800 160 label +(Trap signal output directed to this channel) {/Helvetica cf} 2 16 0.000 0.700 +-320 160 label +(0) {/Courier-Bold cf} 2 16 0.000 0.700 -560 112 label +(1) {/Courier-Bold cf} 2 16 0.000 0.700 -560 80 label +(GPIO) {/Helvetica cf} 2 16 0.000 0.700 -320 80 label +(\(none\)) {/Helvetica cf} 2 16 0.000 0.700 -320 112 label +1 1.000 -800 144 208 144 2 polygon +1 1.000 -368 192 -368 64 2 polygon +(0) {/Helvetica cf} 2 16 0.000 0.700 -704 112 label +(1) {/Helvetica cf} 2 16 0.000 0.700 -704 80 label +(Table 5) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -848 1024 label +(Table 6) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -848 448 label +(page 7) {/Helvetica cf} 2 31 0.000 0.700 336 1168 label +(GPIO output.) {CR} (MHz\) may be unable to generate a full swing on the) {qS} +(80) {/Helvetica cf} (e.g., ) {/Helvetica-Oblique cf} +(Note that a high rate core clock \() {/Helvetica cf} 10 28 0.000 0.700 -848 +560 label +(Core PLL clock to GPIO out) {/Helvetica cf} 2 16 0.000 0.700 -352 656 label +0 1.000 -864 -192 -864 -144 160 -144 160 -192 4 polygon +1 1.000 -832 -192 -832 -240 2 polygon +1 1.000 -800 -192 -800 -240 2 polygon +1 1.000 -768 -192 -768 -240 2 polygon +1 1.000 -736 -192 -736 -240 2 polygon +1 1.000 -704 -192 -704 -240 2 polygon +1 1.000 -672 -192 -672 -240 2 polygon +1 1.000 -640 -192 -640 -240 2 polygon +1 1.000 -608 -192 -608 -240 2 polygon +1 1.000 -576 -192 -576 -240 2 polygon +1 1.000 -544 -192 -544 -240 2 polygon +1 1.000 -512 -192 -512 -240 2 polygon +1 1.000 -480 -192 -480 -240 2 polygon +1 1.000 -448 -192 -448 -240 2 polygon +1 1.000 -416 -192 -416 -240 2 polygon +1 1.000 -384 -192 -384 -240 2 polygon +1 1.000 -320 -192 -320 -240 2 polygon +1 1.000 -288 -192 -288 -240 2 polygon +1 1.000 -256 -192 -256 -240 2 polygon +1 1.000 -224 -192 -224 -240 2 polygon +1 1.000 -192 -192 -192 -240 2 polygon +1 1.000 -160 -192 -160 -240 2 polygon +1 1.000 -128 -192 -128 -240 2 polygon +1 1.000 -96 -192 -96 -240 2 polygon +1 1.000 -64 -192 -64 -240 2 polygon +1 1.000 -32 -192 -32 -240 2 polygon +1 1.000 0 -192 0 -240 2 polygon +1 1.000 32 -192 32 -240 2 polygon +1 1.000 64 -192 64 -240 2 polygon +1 1.000 96 -192 96 -240 2 polygon +1 1.000 128 -192 128 -240 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 144 -216 label +0.600 0.600 0.600 scb +(1) {/Helvetica cf} 2 21 0.000 0.500 112 -216 label +(2) {/Helvetica cf} 2 21 0.000 0.500 80 -216 label +(3) {/Helvetica cf} 2 21 0.000 0.500 48 -216 label +(4) {/Helvetica cf} 2 21 0.000 0.500 16 -216 label +(5) {/Helvetica cf} 2 21 0.000 0.500 -16 -216 label +(6) {/Helvetica cf} 2 21 0.000 0.500 -48 -216 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -80 -216 label +(8) {/Helvetica cf} 2 21 0.000 0.500 -112 -216 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -144 -216 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -176 -216 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -208 -216 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -240 -216 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -272 -216 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -304 -216 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -336 -216 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -368 -216 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -400 -216 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -432 -216 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -464 -216 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -496 -216 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -528 -216 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -560 -216 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -592 -216 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -624 -216 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -656 -216 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -688 -216 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -720 -216 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -752 -216 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -784 -216 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -816 -216 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -848 -216 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 192 -208 label +(0x2f000008) {/Courier-Bold cf} 2 16 0.000 0.700 -48 -128 label +1 1.000 -96 -144 -96 -96 2 polygon +1 1.000 -608 -144 -608 -96 2 polygon +1 1.000 -864 -96 -864 -144 2 polygon +1 1.000 160 -96 160 -144 2 polygon +1 1.000 160 -192 160 -240 2 polygon +1 1.000 -864 -192 -864 -240 2 polygon +0.600 0.600 0.600 scb +(0x2f000009) {/Courier-Bold cf} 2 16 360.000 0.700 -304 -128 label +(0x2f00000a) {/Courier-Bold cf} 2 16 360.000 0.700 -560 -128 label +(0x2f00000b) {/Courier-Bold cf} 2 16 0.000 0.700 -816 -128 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 240 -128 label +(value) {/Helvetica cf} 2 20 0.000 0.700 192 -160 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -464 -176 label +1 1.000 -864 -96 160 -96 2 polygon +1 1.000 -864 -240 160 -240 2 polygon +(reg_irq7_source) {/Courier-Bold cf} 2 16 0.000 0.700 -448 -80 label +1 1.000 -96 -144 -96 -192 2 polygon +1 1.000 -352 -96 -352 -144 2 polygon +1 1.000 -352 -192 -352 -240 2 polygon +(IRQ 7 source) {/Helvetica cf} 2 17 0.000 0.700 32 -176 label +(according to the following table:) {CR} +(The low bit of this register directs the input of the GPIO to the processor\251s IRQ7 channel,) +{/Helvetica cf} 4 28 0.000 0.700 -864 -272 label +( value) {/Helvetica cf} (0x2f000008) {/Courier-Bold cf} (Register byte ) +{/Helvetica cf} 6 16 0.000 0.700 -816 -368 label +(This channel directed to IRQ channel 7) {/Helvetica cf} 2 16 0.000 0.700 -336 +-368 label +(00) {/Courier-Bold cf} 2 16 0.000 0.700 -576 -416 label +(01) {/Courier-Bold cf} 2 16 0.000 0.700 -576 -448 label +(GPIO) {/Helvetica cf} 2 16 0.000 0.700 -304 -448 label +(\(none\)) {/Helvetica cf} 2 16 0.000 0.700 -304 -416 label +1 1.000 -816 -384 192 -384 2 polygon +1 1.000 -384 -336 -384 -448 2 polygon +(0) {/Helvetica cf} 2 16 0.000 0.700 -720 -416 label +(1) {/Helvetica cf} 2 16 0.000 0.700 -720 -448 label +(Table 7) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -864 -80 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/openframe_pinout.ps b/doc/postscript/openframe_pinout.ps similarity index 100% rename from doc/openframe_pinout.ps rename to doc/postscript/openframe_pinout.ps diff --git a/doc/postscript/qspi_function.ps b/doc/postscript/qspi_function.ps new file mode 100644 index 00000000..fd06aba3 --- /dev/null +++ b/doc/postscript/qspi_function.ps @@ -0,0 +1,388 @@ +%!PS-Adobe-3.0 +%%Title: qspi_function.ps +%%Creator: XCircuit v0.0 rev-1817832939 +%%CreationDate: Thu Dec 16 14:19:06 2021 +%%Pages: 1 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%+ font Courier-Bold +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + + +%%EndSetup + +%%Page: spimemio 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 1184 1408 translate + +0.678 1.000 0.184 scb +512 1.000 -992 512 -992 -1216 256 -1216 256 512 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -992 480 label +1 1.000 -992 464 256 464 2 polygon +(QSPI Flash interface) {/Helvetica-Bold cf} 2 16 0.000 0.700 -992 416 label +(flash io0\2611 \(pins D10 to D9\), flash csb \(pin C10\), and) {/Helvetica cf} +2 16 0.000 0.700 -416 416 label +(flash clk \(pin D8\)) {/Helvetica cf} 2 16 0.000 0.700 -416 384 label +(S25FL256L.) {CR} (Cypress) {/Helvetica cf} (e.g., ) {/Helvetica-Oblique cf} +("flash io1" acting as SDO \(data from CPU to flash\). Protocol is according to, ) +{CR} +(sequence in single-bit mode with pin "flash io0" acting as SDI \(data from flash to CPU\) and pin) +{CR} +(The QSPI flash controller is automatically enabled on power-up, and will immediately initiate a read) +{/Helvetica cf} 12 28 0.000 0.700 -992 352 label +0 1.000 -944 -336 -944 -288 80 -288 80 -336 4 polygon +1 1.000 -912 -336 -912 -384 2 polygon +1 1.000 -880 -336 -880 -384 2 polygon +1 1.000 -848 -336 -848 -384 2 polygon +1 1.000 -816 -336 -816 -384 2 polygon +1 1.000 -784 -336 -784 -384 2 polygon +1 1.000 -752 -336 -752 -384 2 polygon +1 1.000 -720 -336 -720 -384 2 polygon +1 1.000 -688 -336 -688 -384 2 polygon +1 1.000 -656 -336 -656 -384 2 polygon +1 1.000 -624 -336 -624 -384 2 polygon +1 1.000 -592 -336 -592 -384 2 polygon +1 1.000 -560 -336 -560 -384 2 polygon +1 1.000 -528 -336 -528 -384 2 polygon +1 1.000 -496 -336 -496 -384 2 polygon +1 1.000 -464 -336 -464 -384 2 polygon +1 1.000 -400 -336 -400 -384 2 polygon +1 1.000 -368 -336 -368 -384 2 polygon +1 1.000 -336 -336 -336 -384 2 polygon +1 1.000 -304 -336 -304 -384 2 polygon +1 1.000 -272 -336 -272 -384 2 polygon +1 1.000 -240 -336 -240 -384 2 polygon +1 1.000 -208 -336 -208 -384 2 polygon +1 1.000 -176 -336 -176 -384 2 polygon +1 1.000 -144 -336 -144 -384 2 polygon +1 1.000 -112 -336 -112 -384 2 polygon +1 1.000 -80 -336 -80 -384 2 polygon +1 1.000 -48 -336 -48 -384 2 polygon +1 1.000 -16 -336 -16 -384 2 polygon +1 1.000 16 -336 16 -384 2 polygon +1 1.000 48 -336 48 -384 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 64 -360 label +(1) {/Helvetica cf} 2 21 0.000 0.500 32 -360 label +(2) {/Helvetica cf} 2 21 0.000 0.500 0 -360 label +(3) {/Helvetica cf} 2 21 0.000 0.500 -32 -360 label +(4) {/Helvetica cf} 2 21 0.000 0.500 -64 -360 label +(5) {/Helvetica cf} 2 21 0.000 0.500 -96 -360 label +0.600 0.600 0.600 scb +(6) {/Helvetica cf} 2 21 0.000 0.500 -128 -360 label +(7) {/Helvetica cf} 2 21 0.000 0.500 -160 -360 label +sce +(8) {/Helvetica cf} 2 21 0.000 0.500 -192 -360 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -224 -360 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -256 -360 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -288 -360 label +0.600 0.600 0.600 scb +(12) {/Helvetica cf} 2 21 0.000 0.500 -320 -360 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -352 -360 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -384 -360 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -416 -360 label +sce +(16) {/Helvetica cf} 2 21 0.000 0.500 -448 -360 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -480 -360 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -512 -360 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -544 -360 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -576 -360 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -608 -360 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -640 -360 label +0.600 0.600 0.600 scb +(23) {/Helvetica cf} 2 21 0.000 0.500 -672 -360 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -704 -360 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -736 -360 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -768 -360 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -800 -360 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -832 -360 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -864 -360 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -896 -360 label +sce +(31) {/Helvetica cf} 2 21 0.000 0.500 -928 -360 label +(bit) {/Helvetica cf} 2 20 0.000 0.700 112 -352 label +(0x2d000000) {/Courier-Bold cf} 2 16 0.000 0.700 -128 -272 label +1 1.000 -176 -288 -176 -240 2 polygon +1 1.000 -688 -288 -688 -240 2 polygon +1 1.000 -944 -240 -944 -288 2 polygon +1 1.000 80 -240 80 -288 2 polygon +1 1.000 80 -336 80 -384 2 polygon +1 1.000 -944 -336 -944 -384 2 polygon +(0x2d000001) {/Courier-Bold cf} 2 16 360.000 0.700 -384 -272 label +(0x2d000002) {/Courier-Bold cf} 2 16 360.000 0.700 -640 -272 label +(0x2d000003) {/Courier-Bold cf} 2 16 0.000 0.700 -896 -272 label +(address) {/Helvetica cf} 2 17 0.000 0.700 160 -272 label +(value) {/Helvetica cf} 2 20 0.000 0.700 112 -304 label +1 1.000 -944 -240 80 -240 2 polygon +1 1.000 -944 -384 80 -384 2 polygon +(reg_spictrl) {/Courier-Bold cf} 2 16 0.000 0.700 -528 -224 label +1 1.000 -432 -240 -432 -288 2 polygon +1 1.000 -432 -336 -432 -384 2 polygon +(\(see below\)) {/Helvetica cf} 2 17 0.000 0.700 -528 -320 label +(mask bit) {/Helvetica cf} 2 16 0.000 0.700 -896 -432 label +(description) {/Helvetica cf} 2 16 0.000 0.700 -400 -432 label +1 1.000 -912 -448 96 -448 2 polygon +(31) {/Helvetica cf} 2 16 0.000 0.700 -896 -480 label +1 1.000 -912 -336 -912 -288 2 polygon +1 1.000 -656 -336 -656 -288 2 polygon +(\(unused\)) {/Helvetica cf} 2 17 0.000 0.700 -784 -320 label +1 1.000 -432 -288 -432 -336 2 polygon +1 1.000 -304 -288 -304 -336 2 polygon +(\(unused\)) {/Helvetica cf} 2 17 0.000 0.700 -368 -320 label +1 1.000 -176 -288 -176 -336 2 polygon +1 1.000 -112 -288 -112 -336 2 polygon +(22\26120) {/Helvetica cf} 2 16 0.000 0.700 -896 -512 label +(19\26116) {/Helvetica cf} 2 16 0.000 0.700 -896 -544 label +(11\2618) {/Helvetica cf} 2 16 0.000 0.700 -896 -576 label +(5) {/Helvetica cf} 2 16 0.000 0.700 -896 -608 label +(4) {/Helvetica cf} 2 16 0.000 0.700 -896 -640 label +(3\2610) {/Helvetica cf} 2 16 0.000 0.700 -896 -672 label +(default) {/Helvetica cf} 2 16 0.000 0.700 -704 -432 label +(1) {/Helvetica cf} 2 16 0.000 0.700 -688 -480 label +(QSPI flash interface enable) {/Helvetica cf} 2 16 0.000 0.700 -400 -480 label +(0) {/Helvetica cf} 2 16 0.000 0.700 -688 -512 label +(Access mode \(see table below\)) {/Helvetica cf} 2 16 0.000 0.700 -400 -512 +label +(8) {/Helvetica cf} 2 16 0.000 0.700 -688 -544 label +(Dummy clock cycle count) {/Helvetica cf} 2 16 0.000 0.700 -400 -544 label +(Bit-bang OE FLASH_IO3\261FLASH_IO0) {/Helvetica cf} 2 16 0.000 0.700 -400 -576 +label +(Bit-bang FLASH_CSB) {/Helvetica cf} 2 16 0.000 0.700 -400 -608 label +(Bit-bang FLASH_CLK) {/Helvetica cf} 2 16 0.000 0.700 -400 -640 label +(Bit-bang value FLASH_IO3\261FLASH_IO0) {/Helvetica cf} 2 16 0.000 0.700 -400 +-672 label +(0) {/Helvetica cf} 2 16 0.000 0.700 -688 -576 label +(0) {/Helvetica cf} 2 16 0.000 0.700 -688 -608 label +(0) {/Helvetica cf} 2 16 0.000 0.700 -688 -640 label +(0) {/Helvetica cf} 2 16 0.000 0.700 -688 -672 label +(0xFF) {/Courier-Bold cf} 2 16 0.000 0.700 -928 128 label +(0xAB) {/Courier-Bold cf} 2 16 0.000 0.700 -928 96 label +(Mode bit reset) {/Helvetica cf} 2 16 0.000 0.700 -800 128 label +(Release from deep power-down) {/Helvetica cf} 2 16 0.000 0.700 -800 96 label +(0x03) {/Courier-Bold cf} 2 16 0.000 0.700 -928 64 label +(Read w/3 byte address) {/Helvetica cf} 2 16 0.000 0.700 -800 64 label +(0x00) {/Courier-Bold cf} 2 16 0.000 0.700 -928 32 label +(0x00) {/Courier-Bold cf} 2 16 0.000 0.700 -928 0 label +(0x00) {/Courier-Bold cf} 2 16 0.000 0.700 -928 -32 label +(\) \(3 bytes\) \(upper byte is ignored\)) {/Helvetica cf} (0x10000000) +{/Courier-Bold cf} (Program start address \() {/Helvetica cf} 6 16 0.000 0.700 +-800 32 label +(The initial SPI instruction sequence is as follows:) {/Helvetica cf} 2 16 +0.000 0.700 -992 176 label +(read command to read from a new address.) {CR} +(The QSPI flash continues to read bytes, either sequentially on the same command, or issuing a new) +{/Helvetica cf} 4 28 0.000 0.700 -992 -64 label + +(The behavior of the QSPI flash controller can be modified by changing values in the register below:) +{/Helvetica cf} 2 16 0.000 0.700 -992 -160 label +(Access mode bit selection \(bits 22\26120\):) {/Helvetica cf} 2 16 0.000 0.700 +-976 -720 label +(0) {/Helvetica cf} 2 16 0.000 0.700 -976 -768 label +(1) {/Helvetica cf} 2 16 0.000 0.700 -976 -800 label +(000) {/Courier-Bold cf} 2 16 0.000 0.700 -912 -768 label +(001) {/Courier-Bold cf} 2 16 0.000 0.700 -912 -800 label +(Single bit per clock) {/Helvetica cf} 2 16 0.000 0.700 -784 -768 label +(Single bit per clock \(same as 0\)) {/Helvetica cf} 2 16 0.000 0.700 -784 -800 +label +1 1.000 -976 -736 -64 -736 2 polygon + +(entire routine to access the SPI flash must be read into SRAM and executed from the SRAM.) +{CR} +(The SPI flash can be accessed by bit banging when the enable is off. To do this from the CPU, the) +{/Helvetica cf} 4 16 0.000 0.700 -992 -976 label +(Table 10) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -944 -224 label +(page 12) {/Helvetica cf} 2 31 0.000 0.700 240 496 label +(\(see below\)) {/Helvetica cf} 2 17 0.000 0.700 -16 -320 label +(has pins for data lines 0 and 1.) {CR} +(All additional modes \(QSPI dual and quad modes\) cannot be used, as the management SoC only) +{/Helvetica cf} 4 28 0.000 0.700 -992 -832 label +(Interrupt) {/Helvetica-Bold cf} 2 16 0.000 0.700 -992 -1120 label +(IRQ \(pin E5\)) {/Helvetica cf} 2 16 0.000 0.700 -480 -1120 label +(The interrupt pin triggers the CPU interrupt channel 5.) {/Helvetica cf} 2 28 +0.000 0.700 -928 -1152 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/postscript/spi_master_function.ps b/doc/postscript/spi_master_function.ps new file mode 100644 index 00000000..a36881d0 --- /dev/null +++ b/doc/postscript/spi_master_function.ps @@ -0,0 +1,455 @@ +%!PS-Adobe-3.0 +%%Title: spi_master_function.ps +%%Creator: XCircuit v0.0 rev-1817832939 +%%CreationDate: Thu Dec 16 14:19:26 2021 +%%Pages: 1 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%+ font Courier-Bold +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + + +%%EndSetup + +%%Page: spi_master 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 928 768 translate + +0.678 1.000 0.184 scb +512 1.000 -736 1152 -736 -576 512 -576 512 1152 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -736 1120 label +1 1.000 -736 1104 512 1104 2 polygon +(SPI Master) {/Helvetica-Bold cf} 2 16 0.000 0.700 -736 1056 label +0 1.000 -688 832 -688 880 336 880 336 832 4 polygon +1 1.000 -656 832 -656 784 2 polygon +1 1.000 -624 832 -624 784 2 polygon +1 1.000 -592 832 -592 784 2 polygon +1 1.000 -560 832 -560 784 2 polygon +1 1.000 -528 832 -528 784 2 polygon +1 1.000 -496 832 -496 784 2 polygon +1 1.000 -464 832 -464 784 2 polygon +1 1.000 -432 832 -432 784 2 polygon +1 1.000 -400 832 -400 784 2 polygon +1 1.000 -368 832 -368 784 2 polygon +1 1.000 -336 832 -336 784 2 polygon +1 1.000 -304 832 -304 784 2 polygon +1 1.000 -272 832 -272 784 2 polygon +1 1.000 -240 832 -240 784 2 polygon +1 1.000 -208 832 -208 784 2 polygon +1 1.000 -144 832 -144 784 2 polygon +1 1.000 -112 832 -112 784 2 polygon +1 1.000 -80 832 -80 784 2 polygon +1 1.000 -48 832 -48 784 2 polygon +1 1.000 -16 832 -16 784 2 polygon +1 1.000 16 832 16 784 2 polygon +1 1.000 48 832 48 784 2 polygon +1 1.000 80 832 80 784 2 polygon +1 1.000 112 832 112 784 2 polygon +1 1.000 144 832 144 784 2 polygon +1 1.000 176 832 176 784 2 polygon +1 1.000 208 832 208 784 2 polygon +1 1.000 240 832 240 784 2 polygon +1 1.000 272 832 272 784 2 polygon +1 1.000 304 832 304 784 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 320 808 label +(1) {/Helvetica cf} 2 21 0.000 0.500 288 808 label +(2) {/Helvetica cf} 2 21 0.000 0.500 256 808 label +(3) {/Helvetica cf} 2 21 0.000 0.500 224 808 label +(4) {/Helvetica cf} 2 21 0.000 0.500 192 808 label +(5) {/Helvetica cf} 2 21 0.000 0.500 160 808 label +(6) {/Helvetica cf} 2 21 0.000 0.500 128 808 label +(7) {/Helvetica cf} 2 21 0.000 0.500 96 808 label +(8) {/Helvetica cf} 2 21 0.000 0.500 64 808 label +(9) {/Helvetica cf} 2 21 0.000 0.500 32 808 label +(10) {/Helvetica cf} 2 21 0.000 0.500 0 808 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -32 808 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -64 808 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -96 808 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -128 808 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -160 808 label +0.600 0.600 0.600 scb +(16) {/Helvetica cf} 2 21 0.000 0.500 -192 808 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -224 808 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -256 808 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -288 808 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -320 808 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -352 808 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -384 808 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -416 808 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -448 808 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -480 808 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -512 808 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -544 808 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -576 808 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -608 808 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -640 808 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -672 808 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 368 816 label +(0x24000000) {/Courier-Bold cf} 2 16 0.000 0.700 128 896 label +1 1.000 80 880 80 928 2 polygon +1 1.000 -432 880 -432 928 2 polygon +1 1.000 -688 928 -688 880 2 polygon +1 1.000 336 928 336 880 2 polygon +1 1.000 336 832 336 784 2 polygon +1 1.000 -688 832 -688 784 2 polygon +(0x24000001) {/Courier-Bold cf} 2 16 360.000 0.700 -128 896 label +0.600 0.600 0.600 scb +(0x24000002) {/Courier-Bold cf} 2 16 0.000 0.700 -384 896 label +(0x24000003) {/Courier-Bold cf} 2 16 0.000 0.700 -640 896 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 416 896 label +(value) {/Helvetica cf} 2 20 0.000 0.700 368 864 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -400 848 label +1 1.000 -688 928 336 928 2 polygon +1 1.000 -688 784 336 784 2 polygon +(reg_spi_config) {/Courier-Bold cf} 2 16 0.000 0.700 -272 944 label +1 1.000 -176 880 -176 832 2 polygon +1 1.000 -176 928 -176 880 2 polygon +1 1.000 -176 832 -176 784 2 polygon +(SPI master configuration) {/Helvetica cf} 2 17 0.000 0.700 80 848 label +(Table 14) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -688 944 label +0 1.000 -688 -128 -688 -80 336 -80 336 -128 4 polygon +1 1.000 -656 -128 -656 -176 2 polygon +1 1.000 -624 -128 -624 -176 2 polygon +1 1.000 -592 -128 -592 -176 2 polygon +1 1.000 -560 -128 -560 -176 2 polygon +1 1.000 -528 -128 -528 -176 2 polygon +1 1.000 -496 -128 -496 -176 2 polygon +1 1.000 -464 -128 -464 -176 2 polygon +1 1.000 -432 -128 -432 -176 2 polygon +1 1.000 -400 -128 -400 -176 2 polygon +1 1.000 -368 -128 -368 -176 2 polygon +1 1.000 -336 -128 -336 -176 2 polygon +1 1.000 -304 -128 -304 -176 2 polygon +1 1.000 -272 -128 -272 -176 2 polygon +1 1.000 -240 -128 -240 -176 2 polygon +1 1.000 -208 -128 -208 -176 2 polygon +1 1.000 -144 -128 -144 -176 2 polygon +1 1.000 -112 -128 -112 -176 2 polygon +1 1.000 -80 -128 -80 -176 2 polygon +1 1.000 -48 -128 -48 -176 2 polygon +1 1.000 -16 -128 -16 -176 2 polygon +1 1.000 16 -128 16 -176 2 polygon +1 1.000 48 -128 48 -176 2 polygon +1 1.000 80 -128 80 -176 2 polygon +1 1.000 112 -128 112 -176 2 polygon +1 1.000 144 -128 144 -176 2 polygon +1 1.000 176 -128 176 -176 2 polygon +1 1.000 208 -128 208 -176 2 polygon +1 1.000 240 -128 240 -176 2 polygon +1 1.000 272 -128 272 -176 2 polygon +1 1.000 304 -128 304 -176 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 320 -152 label +(1) {/Helvetica cf} 2 21 0.000 0.500 288 -152 label +(2) {/Helvetica cf} 2 21 0.000 0.500 256 -152 label +(3) {/Helvetica cf} 2 21 0.000 0.500 224 -152 label +(4) {/Helvetica cf} 2 21 0.000 0.500 192 -152 label +(5) {/Helvetica cf} 2 21 0.000 0.500 160 -152 label +(6) {/Helvetica cf} 2 21 0.000 0.500 128 -152 label +(7) {/Helvetica cf} 2 21 0.000 0.500 96 -152 label +0.600 0.600 0.600 scb +(8) {/Helvetica cf} 2 21 0.000 0.500 64 -152 label +(9) {/Helvetica cf} 2 21 0.000 0.500 32 -152 label +(10) {/Helvetica cf} 2 21 0.000 0.500 0 -152 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -32 -152 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -64 -152 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -96 -152 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -128 -152 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -160 -152 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -192 -152 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -224 -152 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -256 -152 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -288 -152 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -320 -152 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -352 -152 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -384 -152 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -416 -152 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -448 -152 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -480 -152 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -512 -152 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -544 -152 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -576 -152 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -608 -152 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -640 -152 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -672 -152 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 368 -144 label +(0x24000004) {/Courier-Bold cf} 2 16 0.000 0.700 128 -64 label +1 1.000 80 -80 80 -32 2 polygon +1 1.000 -432 -80 -432 -32 2 polygon +1 1.000 -688 -32 -688 -80 2 polygon +1 1.000 336 -32 336 -80 2 polygon +1 1.000 336 -128 336 -176 2 polygon +1 1.000 -688 -128 -688 -176 2 polygon +0.600 0.600 0.600 scb +(0x24000005) {/Courier-Bold cf} 2 16 360.000 0.700 -128 -64 label +(0x24000006) {/Courier-Bold cf} 2 16 0.000 0.700 -384 -64 label +(0x24000007) {/Courier-Bold cf} 2 16 0.000 0.700 -640 -64 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 416 -64 label +(value) {/Helvetica cf} 2 20 0.000 0.700 368 -96 label +(\(undefined, reads zero\)) {/Helvetica cf} 2 17 0.000 0.700 -288 -112 label +1 1.000 -688 -32 336 -32 2 polygon +1 1.000 -688 -176 336 -176 2 polygon +(reg_spi_data) {/Courier-Bold cf} 2 16 360.000 0.700 -272 -16 label +1 1.000 80 -80 80 -128 2 polygon +1 1.000 -176 -32 -176 -80 2 polygon +1 1.000 -176 -128 -176 -176 2 polygon +(SPI data) {/Helvetica cf} 2 17 0.000 0.700 208 -112 label +(Table 15) {/Helvetica-Oblique cf} 2 16 360.000 0.700 -688 -16 label + +(spi sdi \(pin E9\), spi csb \(pin E8\), spi sck \(pin F8\), and spi sdo \(pin F9\)) +{/Helvetica cf} 2 16 360.000 0.700 -480 1056 label +(The byte at 0x24000004 holds the SPI data \(either read or write\)) +{/Helvetica cf} 2 28 0.000 0.700 -688 -208 label +(Bit 14) {/Helvetica cf} 2 16 0.000 0.700 -688 624 label +(Bit 13) {/Helvetica cf} 2 16 0.000 0.700 -688 560 label +(Bit 12) {/Helvetica cf} 2 16 0.000 0.700 -688 496 label +(Bit 11) {/Helvetica cf} 2 16 0.000 0.700 -688 432 label +(Bit 10) {/Helvetica cf} 2 16 0.000 0.700 -688 368 label +(Bit 9) {/Helvetica cf} 2 16 0.000 0.700 -688 304 label +(Bit 8) {/Helvetica cf} 2 16 0.000 0.700 -688 240 label +(Bits 7\2610) {/Helvetica cf} 2 16 0.000 0.700 -688 176 label +(SPI interrupt enable) {/Helvetica cf} 2 16 0.000 0.700 -544 624 label +(SPI system enable) {/Helvetica cf} 2 16 0.000 0.700 -544 560 label +(stream) {/Helvetica cf} 2 16 0.000 0.700 -544 496 label +(mode) {/Helvetica cf} 2 16 0.000 0.700 -544 432 label +(invert SCK) {/Helvetica cf} 2 16 0.000 0.700 -544 368 label +(invert CSB) {/Helvetica cf} 2 16 0.000 0.700 -544 304 label +(MLB) {/Helvetica cf} 2 16 0.000 0.700 -544 240 label +(prescaler) {/Helvetica cf} 2 16 0.000 0.700 -544 176 label +(0 = apply/release CSB separately for each byte) {/Helvetica cf} 2 16 0.000 +0.700 -256 496 label +(1 = apply CSB until stream bit is cleared \(manually\)) {/Helvetica cf} 2 16 +0.000 0.700 -256 464 label +(0 = read and change data on opposite SCK edges) {/Helvetica cf} 2 16 0.000 +0.700 -256 432 label +(1 = read and change data on the same SCK edge) {/Helvetica cf} 2 16 0.000 +0.700 -256 400 label +(0 = normal SCK) {/Helvetica cf} 2 16 0.000 0.700 -256 368 label +(1= inverted SCK) {/Helvetica cf} 2 16 0.000 0.700 -256 336 label +(0 = normal CSB \(low is active\)) {/Helvetica cf} 2 16 0.000 0.700 -256 304 +label +(1 = inverted CSB \(high is active\)) {/Helvetica cf} 2 16 0.000 0.700 -256 272 +label +(count \(in master clock cycles\) of 1/2 SCK cycle) {/Helvetica cf} 2 16 0.000 +0.700 -256 176 label +(0 = msb first) {/Helvetica cf} 2 16 0.000 0.700 -256 240 label +(1 = lsb first) {/Helvetica cf} 2 16 0.000 0.700 -256 208 label +(0 = SPI disabled) {/Helvetica cf} 2 16 0.000 0.700 -256 560 label +(1 = SPI enabled) {/Helvetica cf} 2 16 0.000 0.700 -256 528 label +(0 = interrupt disabled) {/Helvetica cf} 2 16 0.000 0.700 -256 624 label +(1 = interrupt enabled) {/Helvetica cf} 2 16 0.000 0.700 -256 592 label +(\(default value 2\)) {/Helvetica cf} 2 16 0.000 0.700 -256 144 label +1 1.000 -688 720 416 720 2 polygon +(Configuration bit defintions) {/Helvetica cf} 2 16 0.000 0.700 -688 736 label +(All configuration bits other than the prescaler default to value zero.) +{/Helvetica cf} 2 16 0.000 0.700 -688 96 label +(there is no FIFO associated with the SPI master.) {CR} +(relatively expensive operations that tie up the CPU, but will not lose or overwrite data. Note that) +{CR} +(is still in progress. There is no FIFO buffer for data. Therefore SPI reads and writes are) +{CR} +(still in progress. Reading from the SPI will also stall the CPU if an incomplete SPI transmission) +{CR} +(is similar to the UART. A write operation will stall the CPU if an incomplete SPI transmission is) +{CR} +(in the configuration register, and writing values to or reading from reg_spi_data. The protocol) +{CR} +(Reading to and writing from the SPI master is simply a matter of setting the required values) +{/Helvetica cf} 14 28 0.000 0.700 -688 -288 label +(page 14) {/Helvetica cf} 2 31 0.000 0.700 496 1136 label +(Bit 15) {/Helvetica cf} 2 16 0.000 0.700 -688 688 label +(Housekeeping) {/Helvetica cf} 2 16 0.000 0.700 -544 688 label +(0 = SPI master connected to external pins) {/Helvetica cf} 2 16 0.000 0.700 +-256 688 label +(1 = SPI master connected directly to housekeeping SPI) {/Helvetica cf} 2 16 +0.000 0.700 -256 656 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/postscript/uart_function.ps b/doc/postscript/uart_function.ps new file mode 100644 index 00000000..98427e55 --- /dev/null +++ b/doc/postscript/uart_function.ps @@ -0,0 +1,516 @@ +%!PS-Adobe-3.0 +%%Title: uart_function.ps +%%Creator: XCircuit v0.0 rev-1817832939 +%%CreationDate: Thu Dec 16 14:19:15 2021 +%%Pages: 1 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Helvetica Helvetica-Bold Helvetica-Oblique +%%+ font Courier-Bold +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce dup type /nametype eq { pop } if translate 0 0 moveto + neg rotate dup type /nametype eq not { dup abs currentlinewidth exch + div setlinewidth } { pop } ifelse dup abs scale clipped 1 and 1 eq + {/clipped clipped 1 add def} if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {} imagemask} bind +{8 8 true tmpa {} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + + +%%EndSetup + +%%Page: uart 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 992 736 translate + +0.678 1.000 0.184 scb +512 1.000 -800 1184 -800 -544 448 -544 448 1184 4 polygon +sce +(\(cont.\)) {/Helvetica-Oblique cf} (Functional Description ) +{/Helvetica-Bold cf} 4 16 0.000 0.700 -800 1152 label +1 1.000 -800 1136 448 1136 2 polygon +(External clock) {/Helvetica-Bold cf} 2 16 0.000 0.700 -800 1088 label +(UART) {/Helvetica-Bold cf} 2 16 0.000 0.700 -800 864 label +(ser tx \(pin F7\) and ser rx \(pin E7\)) {/Helvetica cf} 2 16 0.000 0.700 -288 +864 label +(clock \(pin C9\)) {/Helvetica cf} 2 16 0.000 0.700 -288 1088 label + +(blocking operations which will generate CPU wait states until the data transfer is completed.) +{CR} +(at a fixed baud rate. Although the UART operates independently of the CPU, data transfers are) +{CR} +(The UART is a standard 2-pin serial interface that can communicate with most similar interfaces) +{/Helvetica cf} 6 28 0.000 0.700 -800 832 label +0 1.000 -752 512 -752 560 272 560 272 512 4 polygon +1 1.000 -720 512 -720 464 2 polygon +1 1.000 -688 512 -688 464 2 polygon +1 1.000 -656 512 -656 464 2 polygon +1 1.000 -624 512 -624 464 2 polygon +1 1.000 -592 512 -592 464 2 polygon +1 1.000 -560 512 -560 464 2 polygon +1 1.000 -528 512 -528 464 2 polygon +1 1.000 -496 512 -496 464 2 polygon +1 1.000 -464 512 -464 464 2 polygon +1 1.000 -432 512 -432 464 2 polygon +1 1.000 -400 512 -400 464 2 polygon +1 1.000 -368 512 -368 464 2 polygon +1 1.000 -336 512 -336 464 2 polygon +1 1.000 -304 512 -304 464 2 polygon +1 1.000 -272 512 -272 464 2 polygon +1 1.000 -208 512 -208 464 2 polygon +1 1.000 -176 512 -176 464 2 polygon +1 1.000 -144 512 -144 464 2 polygon +1 1.000 -112 512 -112 464 2 polygon +1 1.000 -80 512 -80 464 2 polygon +1 1.000 -48 512 -48 464 2 polygon +1 1.000 -16 512 -16 464 2 polygon +1 1.000 16 512 16 464 2 polygon +1 1.000 48 512 48 464 2 polygon +1 1.000 80 512 80 464 2 polygon +1 1.000 112 512 112 464 2 polygon +1 1.000 144 512 144 464 2 polygon +1 1.000 176 512 176 464 2 polygon +1 1.000 208 512 208 464 2 polygon +1 1.000 240 512 240 464 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 256 488 label +(1) {/Helvetica cf} 2 21 0.000 0.500 224 488 label +(2) {/Helvetica cf} 2 21 0.000 0.500 192 488 label +(3) {/Helvetica cf} 2 21 0.000 0.500 160 488 label +(4) {/Helvetica cf} 2 21 0.000 0.500 128 488 label +(5) {/Helvetica cf} 2 21 0.000 0.500 96 488 label +(6) {/Helvetica cf} 2 21 0.000 0.500 64 488 label +(7) {/Helvetica cf} 2 21 0.000 0.500 32 488 label +(8) {/Helvetica cf} 2 21 0.000 0.500 0 488 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -32 488 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -64 488 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -96 488 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -128 488 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -160 488 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -192 488 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -224 488 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -256 488 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -288 488 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -320 488 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -352 488 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -384 488 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -416 488 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -448 488 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -480 488 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -512 488 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -544 488 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -576 488 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -608 488 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -640 488 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -672 488 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -704 488 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -736 488 label +(bit) {/Helvetica cf} 2 20 0.000 0.700 304 496 label +(0x20000000) {/Courier-Bold cf} 2 16 0.000 0.700 64 576 label +1 1.000 16 560 16 608 2 polygon +1 1.000 -496 560 -496 608 2 polygon +1 1.000 -752 608 -752 560 2 polygon +1 1.000 272 608 272 560 2 polygon +1 1.000 272 512 272 464 2 polygon +1 1.000 -752 512 -752 464 2 polygon +(0x20000001) {/Courier-Bold cf} 2 16 360.000 0.700 -192 576 label +(0x20000002) {/Courier-Bold cf} 2 16 360.000 0.700 -448 576 label +(0x20000003) {/Courier-Bold cf} 2 16 0.000 0.700 -704 576 label +(address) {/Helvetica cf} 2 17 0.000 0.700 352 576 label +(value) {/Helvetica cf} 2 20 0.000 0.700 304 544 label +1 1.000 -752 608 272 608 2 polygon +1 1.000 -752 464 272 464 2 polygon +(reg_uart_clkdiv) {/Courier-Bold cf} 2 16 0.000 0.700 -336 624 label +1 1.000 -240 608 -240 560 2 polygon +1 1.000 -240 512 -240 464 2 polygon + +(The behavior of the UART can be modified by changing values in the registers below:) +{/Helvetica cf} 2 16 0.000 0.700 -800 688 label +(Table 11) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -752 624 label +0 1.000 -752 96 -752 144 272 144 272 96 4 polygon +1 1.000 -720 96 -720 48 2 polygon +1 1.000 -688 96 -688 48 2 polygon +1 1.000 -656 96 -656 48 2 polygon +1 1.000 -624 96 -624 48 2 polygon +1 1.000 -592 96 -592 48 2 polygon +1 1.000 -560 96 -560 48 2 polygon +1 1.000 -528 96 -528 48 2 polygon +1 1.000 -496 96 -496 48 2 polygon +1 1.000 -464 96 -464 48 2 polygon +1 1.000 -432 96 -432 48 2 polygon +1 1.000 -400 96 -400 48 2 polygon +1 1.000 -368 96 -368 48 2 polygon +1 1.000 -336 96 -336 48 2 polygon +1 1.000 -304 96 -304 48 2 polygon +1 1.000 -272 96 -272 48 2 polygon +1 1.000 -208 96 -208 48 2 polygon +1 1.000 -176 96 -176 48 2 polygon +1 1.000 -144 96 -144 48 2 polygon +1 1.000 -112 96 -112 48 2 polygon +1 1.000 -80 96 -80 48 2 polygon +1 1.000 -48 96 -48 48 2 polygon +1 1.000 -16 96 -16 48 2 polygon +1 1.000 16 96 16 48 2 polygon +1 1.000 48 96 48 48 2 polygon +1 1.000 80 96 80 48 2 polygon +1 1.000 112 96 112 48 2 polygon +1 1.000 144 96 144 48 2 polygon +1 1.000 176 96 176 48 2 polygon +1 1.000 208 96 208 48 2 polygon +1 1.000 240 96 240 48 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 256 72 label +(1) {/Helvetica cf} 2 21 0.000 0.500 224 72 label +(2) {/Helvetica cf} 2 21 0.000 0.500 192 72 label +(3) {/Helvetica cf} 2 21 0.000 0.500 160 72 label +(4) {/Helvetica cf} 2 21 0.000 0.500 128 72 label +(5) {/Helvetica cf} 2 21 0.000 0.500 96 72 label +(6) {/Helvetica cf} 2 21 0.000 0.500 64 72 label +(7) {/Helvetica cf} 2 21 0.000 0.500 32 72 label +0.600 0.600 0.600 scb +(8) {/Helvetica cf} 2 21 0.000 0.500 0 72 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -32 72 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -64 72 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -96 72 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -128 72 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -160 72 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -192 72 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -224 72 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -256 72 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -288 72 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -320 72 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -352 72 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -384 72 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -416 72 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -448 72 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -480 72 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -512 72 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -544 72 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -576 72 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -608 72 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -640 72 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -672 72 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -704 72 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -736 72 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 304 80 label +(0x20000004) {/Courier-Bold cf} 2 16 0.000 0.700 64 160 label +1 1.000 16 144 16 192 2 polygon +1 1.000 -496 144 -496 192 2 polygon +1 1.000 -752 192 -752 144 2 polygon +1 1.000 272 192 272 144 2 polygon +1 1.000 272 96 272 48 2 polygon +1 1.000 -752 96 -752 48 2 polygon +0.600 0.600 0.600 scb +(0x20000005) {/Courier-Bold cf} 2 16 360.000 0.700 -192 160 label +(0x20000006) {/Courier-Bold cf} 2 16 360.000 0.700 -448 160 label +(0x20000007) {/Courier-Bold cf} 2 16 0.000 0.700 -704 160 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 352 160 label +(value) {/Helvetica cf} 2 20 0.000 0.700 304 128 label +1 1.000 -752 192 272 192 2 polygon +1 1.000 -752 48 272 48 2 polygon +(reg_uart_data) {/Courier-Bold cf} 2 16 0.000 0.700 -336 208 label +1 1.000 -240 192 -240 144 2 polygon +1 1.000 -240 96 -240 48 2 polygon +(\(unused, value is 0x0\)) {/Helvetica cf} 2 17 0.000 0.700 -352 112 label +1 1.000 16 144 16 96 2 polygon +(Table 12) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -752 208 label +(UART clock divider) {/Helvetica cf} 2 17 0.000 0.700 -240 528 label +(data bit rate \(baud rate\). The default value is 1.) {CR} +(The entire 32 bit word encodes the number of CPU core cycles to divide down to get the UART) +{/Helvetica cf} 4 28 0.000 0.700 -752 432 label +(To get 9600 baud, 100E6 / 9600 = 10417 \(hex value 0x28b1\).) {CR} (MHz.) {qS} +(MHz, then the core CPU clock runs at 100) {qS} +(If the external crystal is 12.5) {/Helvetica cf} (Example: ) +{/Helvetica-Oblique cf} 10 28 0.000 0.700 -752 336 label + +(buffer for additional reads. Note that there is no FIFO associated with the UART.) +{CR} +(the receive buffer, and returns the value of the receive buffer otherwise, and clears the receive) +{CR} +(buffer overflow. Reading a value from this register returns 255 \(0xff\) if no valid data byte is in) +{CR} +(expensive operation on the CPU, but avoids the necessity of buffering data and checking for) +{CR} +(is complete before starting the new write operation. This makes the UART transmit a relatively) +{CR} +(UART write operation is pending, then the CPU will be blocked with wait states until the transfer) +{CR} +(Writing a value to this register will immediately start a data transfer on the SER_TX pin. If a) +{/Helvetica cf} 14 28 0.000 0.700 -752 16 label +(page 13) {/Helvetica cf} 2 31 0.000 0.700 432 1168 label +(processor is driven by a trimmed free-running ring oscillator.) {CR} +(clock is multiplied up by the feedback divider value to obtain the core clock. In DCO mode, the) +{CR} +(SPI to set the processor into PLL mode or DCO free-running mode. In PLL mode, the external) +{CR} +(runs at the same rate as the external clock. The processor program may access the housekeeping) +{CR} +(The external clock functions as the source clock for the entire processor. On start-up, the processor) +{/Helvetica cf} 10 28 0.000 0.700 -800 1056 label +0 1.000 -752 -368 -752 -320 272 -320 272 -368 4 polygon +1 1.000 -720 -368 -720 -416 2 polygon +1 1.000 -688 -368 -688 -416 2 polygon +1 1.000 -656 -368 -656 -416 2 polygon +1 1.000 -624 -368 -624 -416 2 polygon +1 1.000 -592 -368 -592 -416 2 polygon +1 1.000 -560 -368 -560 -416 2 polygon +1 1.000 -528 -368 -528 -416 2 polygon +1 1.000 -496 -368 -496 -416 2 polygon +1 1.000 -464 -368 -464 -416 2 polygon +1 1.000 -432 -368 -432 -416 2 polygon +1 1.000 -400 -368 -400 -416 2 polygon +1 1.000 -368 -368 -368 -416 2 polygon +1 1.000 -336 -368 -336 -416 2 polygon +1 1.000 -304 -368 -304 -416 2 polygon +1 1.000 -272 -368 -272 -416 2 polygon +1 1.000 -208 -368 -208 -416 2 polygon +1 1.000 -176 -368 -176 -416 2 polygon +1 1.000 -144 -368 -144 -416 2 polygon +1 1.000 -112 -368 -112 -416 2 polygon +1 1.000 -80 -368 -80 -416 2 polygon +1 1.000 -48 -368 -48 -416 2 polygon +1 1.000 -16 -368 -16 -416 2 polygon +1 1.000 16 -368 16 -416 2 polygon +1 1.000 48 -368 48 -416 2 polygon +1 1.000 80 -368 80 -416 2 polygon +1 1.000 112 -368 112 -416 2 polygon +1 1.000 144 -368 144 -416 2 polygon +1 1.000 176 -368 176 -416 2 polygon +1 1.000 208 -368 208 -416 2 polygon +1 1.000 240 -368 240 -416 2 polygon +(0) {/Helvetica cf} 2 21 0.000 0.500 256 -392 label +0.600 0.600 0.600 scb +(1) {/Helvetica cf} 2 21 0.000 0.500 224 -392 label +(2) {/Helvetica cf} 2 21 0.000 0.500 192 -392 label +(3) {/Helvetica cf} 2 21 0.000 0.500 160 -392 label +(4) {/Helvetica cf} 2 21 0.000 0.500 128 -392 label +(5) {/Helvetica cf} 2 21 0.000 0.500 96 -392 label +(6) {/Helvetica cf} 2 21 0.000 0.500 64 -392 label +(7) {/Helvetica cf} 2 21 0.000 0.500 32 -392 label +(8) {/Helvetica cf} 2 21 0.000 0.500 0 -392 label +(9) {/Helvetica cf} 2 21 0.000 0.500 -32 -392 label +(10) {/Helvetica cf} 2 21 0.000 0.500 -64 -392 label +(11) {/Helvetica cf} 2 21 0.000 0.500 -96 -392 label +(12) {/Helvetica cf} 2 21 0.000 0.500 -128 -392 label +(13) {/Helvetica cf} 2 21 0.000 0.500 -160 -392 label +(14) {/Helvetica cf} 2 21 0.000 0.500 -192 -392 label +(15) {/Helvetica cf} 2 21 0.000 0.500 -224 -392 label +(16) {/Helvetica cf} 2 21 0.000 0.500 -256 -392 label +(17) {/Helvetica cf} 2 21 0.000 0.500 -288 -392 label +(18) {/Helvetica cf} 2 21 0.000 0.500 -320 -392 label +(19) {/Helvetica cf} 2 21 0.000 0.500 -352 -392 label +(20) {/Helvetica cf} 2 21 0.000 0.500 -384 -392 label +(21) {/Helvetica cf} 2 21 0.000 0.500 -416 -392 label +(22) {/Helvetica cf} 2 21 0.000 0.500 -448 -392 label +(23) {/Helvetica cf} 2 21 0.000 0.500 -480 -392 label +(24) {/Helvetica cf} 2 21 0.000 0.500 -512 -392 label +(25) {/Helvetica cf} 2 21 0.000 0.500 -544 -392 label +(26) {/Helvetica cf} 2 21 0.000 0.500 -576 -392 label +(27) {/Helvetica cf} 2 21 0.000 0.500 -608 -392 label +(28) {/Helvetica cf} 2 21 0.000 0.500 -640 -392 label +(29) {/Helvetica cf} 2 21 0.000 0.500 -672 -392 label +(30) {/Helvetica cf} 2 21 0.000 0.500 -704 -392 label +(31) {/Helvetica cf} 2 21 0.000 0.500 -736 -392 label +sce +(bit) {/Helvetica cf} 2 20 0.000 0.700 304 -384 label +(0x20000008) {/Courier-Bold cf} 2 16 0.000 0.700 64 -304 label +1 1.000 16 -320 16 -272 2 polygon +1 1.000 -496 -320 -496 -272 2 polygon +1 1.000 -752 -272 -752 -320 2 polygon +1 1.000 272 -272 272 -320 2 polygon +1 1.000 272 -368 272 -416 2 polygon +1 1.000 -752 -368 -752 -416 2 polygon +0.600 0.600 0.600 scb +(0x20000009) {/Courier-Bold cf} 2 16 360.000 0.700 -192 -304 label +(0x2000000a) {/Courier-Bold cf} 2 16 360.000 0.700 -448 -304 label +(0x2000000b) {/Courier-Bold cf} 2 16 0.000 0.700 -704 -304 label +sce +(address) {/Helvetica cf} 2 17 0.000 0.700 352 -304 label +(value) {/Helvetica cf} 2 20 0.000 0.700 304 -336 label +1 1.000 -752 -272 272 -272 2 polygon +1 1.000 -752 -416 272 -416 2 polygon +(reg_uart_enable) {/Courier-Bold cf} 2 16 0.000 0.700 -336 -256 label +1 1.000 -240 -272 -240 -320 2 polygon +1 1.000 -240 -368 -240 -416 2 polygon +(\(unused, value is 0x0\)) {/Helvetica cf} 2 17 0.000 0.700 -352 -352 label +1 1.000 16 -320 16 -368 2 polygon +(Table 13) {/Helvetica-Oblique cf} 2 16 0.000 0.700 -752 -256 label +(The UART must be enabled to run \(default disabled\)) {/Helvetica cf} 2 16 +0.000 0.700 -752 -464 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/caravel_block_diagram.svg b/doc/svg/caravel_block_diagram.svg similarity index 100% rename from doc/caravel_block_diagram.svg rename to doc/svg/caravel_block_diagram.svg diff --git a/doc/caravel_clocking.svg b/doc/svg/caravel_clocking.svg similarity index 100% rename from doc/caravel_clocking.svg rename to doc/svg/caravel_clocking.svg diff --git a/doc/caravel_floorplan.svg b/doc/svg/caravel_floorplan.svg similarity index 100% rename from doc/caravel_floorplan.svg rename to doc/svg/caravel_floorplan.svg diff --git a/doc/housekeeping.svg b/doc/svg/housekeeping.svg similarity index 100% rename from doc/housekeeping.svg rename to doc/svg/housekeeping.svg diff --git a/doc/management_core_wrapper.svg b/doc/svg/management_core_wrapper.svg similarity index 100% rename from doc/management_core_wrapper.svg rename to doc/svg/management_core_wrapper.svg diff --git a/doc/user_project_wrapper.svg b/doc/svg/user_project_wrapper.svg similarity index 100% rename from doc/user_project_wrapper.svg rename to doc/svg/user_project_wrapper.svg