diff --git a/doc/caravel_block_diagram.ps b/doc/caravel_block_diagram.ps new file mode 100644 index 00000000..def237c1 --- /dev/null +++ b/doc/caravel_block_diagram.ps @@ -0,0 +1,358 @@ +%!PS-Adobe-3.0 +%%Title: caravel_block_diagram.ps +%%Creator: XCircuit v0.0 rev2062057973 +%%CreationDate: Thu Oct 21 22:39:16 2021 +%%Pages: 1 +%%BoundingBox: 0 0 612 792 +%%DocumentNeededResources: font Times-Roman Helvetica +%%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::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 + +/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 + + +%%EndSetup + +%%Page: caravel_block_diagram 1 +%%PageOrientation: Landscape +%%PageBoundingBox: 0 0 612 792 +/pgsave save def bop +90 rotate 52 -664 translate +0.7189 inchscale +2.6000 setlinewidth 1371 1020 translate + +(Caravel Harness Chip) {/Helvetica cf} 2 16 0.000 1.000 -1088 1120 label +1024 4.000 352 -560 352 256 912 256 912 -560 4 polygon +(User project wrapper) {/Helvetica cf} 2 21 0.000 1.000 624 -512 label +1024 4.000 -1104 -560 -1104 192 192 192 192 -560 4 polygon +(Management SoC wrapper) {/Helvetica cf} 2 21 0.000 1.000 -80 -512 label +1024 2.000 -1104 272 -1104 544 112 544 112 272 4 polygon +0 2.000 -1008 -320 -1008 128 160 128 160 -320 4 polygon +(SoC core) {/Helvetica cf} 2 16 0.000 1.000 -976 64 label +0 2.000 -1072 -544 -1072 -368 -384 -368 -384 -544 4 polygon +(Storage \(memory\)) {/Helvetica cf} 2 16 0.000 1.000 -992 -432 label +0 1.000 -976 -272 -976 32 -640 32 -640 -272 4 polygon +(CPU) {/Helvetica cf} 2 21 0.000 1.000 -848 -112 label +(SPI master) {/Helvetica cf} 2 16 0.000 1.000 -336 -176 label +(UART) {/Helvetica cf} 2 16 0.000 1.000 -336 -96 label +(Flash controller) {/Helvetica cf} 2 16 0.000 1.000 -336 -16 label +(1-bit GPIO) {/Helvetica cf} 2 16 0.000 1.000 -336 64 label +0 1.000 -608 -272 -608 112 -400 112 -400 -272 4 polygon +(bus) {CR} (Wishbone) {/Helvetica cf} 4 21 0.000 1.000 -496 -96 label +1 1.000 -640 -96 -608 -96 2 polygon +0 1.000 -352 48 -352 112 -128 112 -128 48 4 polygon +0 1.000 -352 -32 -352 32 -48 32 -48 -32 4 polygon +0 1.000 -352 -112 -352 -48 0 -48 0 -112 4 polygon +0 1.000 -352 -192 -352 -128 64 -128 64 -192 4 polygon +0 1.000 -352 -272 -352 -208 128 -208 128 -272 4 polygon +(Logic analyzer) {/Helvetica cf} 2 16 0.000 1.000 -336 -256 label +1 1.000 -400 80 -352 80 2 polygon +1 1.000 -400 0 -352 0 2 polygon +1 1.000 -400 -80 -352 -80 2 polygon +1 1.000 -400 -160 -352 -160 2 polygon +1 1.000 -400 -240 -352 -240 2 polygon +1 1.000 -496 112 -496 352 2 polygon +(Housekeeping) {/Helvetica cf} 2 16 0.000 1.000 -1024 288 label +0 1.000 -1072 384 -1072 512 -800 512 -800 384 4 polygon +(SPI) {/Helvetica cf} 2 17 0.000 1.000 -944 432 label +0 1.000 -208 336 -208 416 80 416 80 336 4 polygon +(GPIO) {/Helvetica cf} 2 16 0.000 1.000 -144 352 label +0 1.000 -640 400 -640 528 -384 528 -384 400 4 polygon +(control) {CR} (System) {/Helvetica cf} 4 1040 0.000 1.000 -576 432 label +1 1.000 128 -240 224 -240 2 polygon +0 1.000 224 -368 224 256 304 256 304 -368 4 polygon +1 1.000 304 160 352 160 2 polygon +1 1.000 304 -240 352 -240 2 polygon +(Management Protect) {/Helvetica cf} 2 21 270.000 1.000 272 -64 label +1 1.000 80 400 384 400 2 polygon +1 1.000 -1040 -368 -1040 384 2 polygon +1 1.000 -512 -272 -512 -368 2 polygon +1 1.000 624 304 624 256 2 polygon +1 1.000 -496 336 -960 336 -960 384 3 polygon +1.000 0.000 -496 336 generic::dot +1 1.000 304 -336 352 -336 2 polygon +1 1.000 224 -336 -720 -336 -720 -272 3 polygon +(IRQ) {/Helvetica cf} 2 20 0.000 1.000 368 -336 label +(wishbone) {/Helvetica cf} 2 20 0.000 1.000 368 160 label +(logic analyzer) {/Helvetica cf} 2 20 0.000 1.000 368 -240 label +0 1.000 384 304 384 480 912 480 912 304 4 polygon +(and routing) {CR} (GPIO configuration) {/Helvetica cf} 4 1045 0.000 1.000 656 +384 label +0 1.000 -1104 640 -1104 800 -928 800 -928 640 4 polygon +(\(ROM\)) {CR} (User ID) {/Helvetica cf} 4 1045 0.000 1.000 -1024 720 label +0 1.000 -896 640 -896 800 -512 800 -512 640 4 polygon +(Clocking and DLL) {/Helvetica cf} 2 21 0.000 1.000 -704 720 label +1 1.000 -576 640 -576 528 2 polygon +(serial loader) {/Helvetica cf} 2 29 0.000 1.000 240 336 label +1 1.000 48 -128 48 336 2 polygon +0 1.000 -352 432 -352 528 32 528 32 432 4 polygon +(gpio data) {/Helvetica cf} 2 17 0.000 1.000 240 416 label +(pad data routing) {/Helvetica cf} 2 21 0.000 1.000 -160 480 label +1 1.000 80 352 384 352 2 polygon +1 1.000 -16 -48 -16 336 2 polygon +1 1.000 -80 32 -80 304 -240 304 -240 432 4 polygon +1 1.000 -320 112 -320 432 2 polygon +1 1.000 -320 528 -320 832 2 polygon +(gpio) {/Helvetica cf} 2 20 270.000 1.000 -320 944 label +1 1.000 -208 352 -496 352 2 polygon +1.000 0.000 -496 352 generic::dot +1 1.000 624 480 624 832 2 polygon +(mprj_io[37:0]) {/Helvetica cf} 2 16 270.000 1.000 640 944 label +1 1.000 -240 528 -240 832 2 polygon +(flash_csb) {/Helvetica cf} 2 20 270.000 1.000 -256 944 label +1 1.000 -624 800 -624 832 2 polygon +(clock) {/Helvetica cf} 2 20 270.000 1.000 -624 944 label +1 1.000 -272 944 -272 928 -80 928 -80 944 4 polygon +(flash_clk) {/Helvetica cf} 2 20 270.000 1.000 -208 944 label +(flash_io0) {/Helvetica cf} 2 20 270.000 1.000 -160 944 label +(flash_io1) {/Helvetica cf} 2 20 270.000 1.000 -112 944 label +(read-only port) {/Helvetica cf} 2 16 270.000 1.000 -1056 -320 label +1 1.000 -496 352 -496 400 2 polygon +1 1.000 -688 640 -688 32 2 polygon +1 1.000 -672 640 -672 224 224 224 3 polygon +1 1.000 304 224 352 224 2 polygon +(user_clock) {/Helvetica cf} 2 20 0.000 1.000 368 224 label +0 1.000 -480 640 -480 800 -352 800 -352 640 4 polygon +(POR) {/Helvetica cf} 2 21 0.000 1.000 -416 720 label +(core clock) {/Helvetica cf} 2 23 270.000 1.000 -688 16 label +(IRQ) {/Helvetica cf} 2 20 270.000 1.000 -720 -256 label +(core reset) {/Helvetica cf} 2 23 270.000 1.000 -720 16 label +0 1.000 -896 832 -896 896 672 896 672 832 4 polygon +1 1.000 -240 896 -240 928 2 polygon +1 1.000 -320 896 -320 928 2 polygon +1 1.000 -624 896 -624 928 2 polygon +1 1.000 -864 896 -864 928 2 polygon +(reset) {/Helvetica cf} 2 20 270.000 1.000 -864 944 label +1 1.000 -720 640 -720 576 -720 576 -720 32 4 polygon +1 1.000 -864 800 -864 832 2 polygon +1 1.000 624 896 624 928 2 polygon +1 1.000 -1008 512 -1008 640 2 polygon +1 1.000 -208 384 -768 384 -768 448 -800 448 4 polygon +(Padframe) {/Helvetica cf} 2 17 0.000 1.000 -64 848 label +1 1.000 -416 640 -416 592 -416 592 -416 528 4 polygon +-1.000 180.000 -416 560 generic::arrowhead +1.000 0.000 -576 592 generic::arrowhead +-1.000 180.000 -672 560 generic::arrowhead +-1.000 180.000 -688 560 generic::arrowhead +-1.000 180.000 -720 560 generic::arrowhead +-1.000 180.000 -864 896 generic::arrowhead +-1.000 180.000 -864 800 generic::arrowhead +-1.000 180.000 -624 800 generic::arrowhead +-1.000 180.000 -624 896 generic::arrowhead +-1.000 180.000 -320 736 generic::arrowhead +1.000 0.000 -320 800 generic::arrowhead +1.000 0.000 -240 800 generic::arrowhead +-1.000 180.000 -240 736 generic::arrowhead +1.000 0.000 624 800 generic::arrowhead +-1.000 180.000 624 736 generic::arrowhead +1.000 0.000 -1040 384 generic::arrowhead +1.000 90.000 368 352 generic::arrowhead +1.000 90.000 368 400 generic::arrowhead +-1.000 270.000 304 400 generic::arrowhead +1.000 90.000 352 224 generic::arrowhead +-1.000 270.000 304 -336 generic::arrowhead +-1.000 360.000 -720 -272 generic::arrowhead +1.000 180.000 -688 32 generic::arrowhead +1.000 180.000 -720 32 generic::arrowhead +-1.000 180.000 -1008 512 generic::arrowhead +1 1.000 -464 112 -464 160 224 160 3 polygon +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF