From 11fe006532199e2f0fe64a2019dfdd10923a9e97 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Fri, 29 Oct 2021 12:09:20 -0400 Subject: [PATCH] Added documentation on the clocking and DLL blocks. --- doc/caravel_clocking.ps | 306 +++++++++++++++++++++++++++++++++++++++ doc/caravel_clocking.svg | 149 +++++++++++++++++++ 2 files changed, 455 insertions(+) create mode 100644 doc/caravel_clocking.ps create mode 100644 doc/caravel_clocking.svg diff --git a/doc/caravel_clocking.ps b/doc/caravel_clocking.ps new file mode 100644 index 00000000..8349f060 --- /dev/null +++ b/doc/caravel_clocking.ps @@ -0,0 +1,306 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: caravel_clocking.ps +%%Creator: XCircuit v0.0 rev-898010603 +%%CreationDate: Fri Oct 29 12:08:37 2021 +%%Pages: 1 +%%BoundingBox: 68 68 830 361 +%%DocumentNeededResources: font Helvetica Times-Roman +%%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::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 + + +%%EndSetup + +%%Page: caravel_clocking 1 +%%PageOrientation: Portrait +/pgsave save def bop +% 32.00 8.00 gridspace +1.0000 inchscale +2.6000 setlinewidth 1212 328 translate + +0 1.000 -608 176 -608 512 -192 512 -192 176 4 polygon +(DLL) {/Helvetica cf} 2 21 0.000 1.000 -400 464 label +1 1.000 -192 352 64 352 2 polygon +1 1.000 -192 416 64 416 2 polygon +(0\312 phase) {/Helvetica cf} 2 16 0.000 1.000 -176 432 label +(90\312 phase) {/Helvetica cf} 2 16 0.000 1.000 -176 368 label +1 1.000 -336 176 -336 -16 2 polygon +1 1.000 -608 384 -784 384 2 polygon +(osc) {/Helvetica cf} 2 20 0.000 1.000 -592 384 label +(clockp) {/Helvetica cf} 2 23 0.000 1.000 -208 384 label +1 1.000 -528 176 -528 -16 2 polygon +1 1.000 -464 176 -464 -16 2 polygon +1 1.000 -400 176 -400 -16 2 polygon +1 1.000 -272 176 -272 -16 2 polygon +(resetb) {/Helvetica cf} 2 20 270.000 1.000 -528 192 label +(enable) {/Helvetica cf} 2 20 270.000 1.000 -464 192 label +(div) {/Helvetica cf} 2 20 270.000 1.000 -400 192 label +(dco) {/Helvetica cf} 2 20 270.000 1.000 -336 192 label +(ext_trim) {/Helvetica cf} 2 20 270.000 1.000 -272 192 label +1 1.000 -416 112 -384 144 2 polygon +1 1.000 -288 112 -256 144 2 polygon +(5) {/Helvetica cf} 2 28 0.000 1.000 -384 128 label +(26) {/Helvetica cf} 2 28 0.000 1.000 -256 128 label +1.000 90.000 -608 384 generic::arrowhead +1.000 90.000 48 416 generic::arrowhead +1.000 90.000 48 352 generic::arrowhead +1.000 360.000 -528 176 generic::arrowhead +1.000 360.000 -464 176 generic::arrowhead +1.000 360.000 -400 176 generic::arrowhead +1.000 360.000 -336 176 generic::arrowhead +1.000 360.000 -272 176 generic::arrowhead +0 1.000 64 -32 64 624 864 624 864 -32 4 polygon +(caravel_clocking) {/Helvetica cf} 2 17 0.000 1.000 480 576 label +1 1.000 -720 384 -720 592 -96 592 -96 496 64 496 5 polygon +1.000 90.000 48 496 generic::arrowhead +1.000 0.000 -720 384 generic::dot +0 1.000 -848 352 -848 416 -784 416 -784 352 4 polygon +(clock pin) {/Helvetica cf} 2 23 0.000 1.000 -864 384 label +1 1.000 -848 352 -784 416 2 polygon +1 1.000 -848 416 -784 352 2 polygon +(ext_clk) {/Helvetica cf} 2 16 0.000 1.000 80 512 label +(pll_clk) {/Helvetica cf} 2 16 0.000 1.000 80 432 label +(pll_clk90) {/Helvetica cf} 2 16 0.000 1.000 80 368 label +1 1.000 64 416 368 416 2 polygon +1 1.000 64 352 240 352 2 polygon +1 1.000 64 496 240 496 2 polygon +1 1.000 864 416 992 416 2 polygon +1 1.000 864 256 992 256 2 polygon +1 1.000 672 416 864 416 2 polygon +1 1.000 672 256 864 256 2 polygon +(core_clk) {/Helvetica cf} 2 19 0.000 1.000 848 432 label +(user_clk) {/Helvetica cf} 2 19 0.000 1.000 848 272 label +0 1.000 240 464 240 544 336 544 336 464 4 polygon +1 1.000 288 416 288 464 2 polygon +(sync) {/Helvetica cf} 2 21 0.000 1.000 288 496 label +1.000 0.000 288 416 generic::dot +1 1.000 336 496 584 496 2 polygon +1 1.000 672 224 672 288 624 320 624 192 672 224 5 polygon +1 1.000 672 384 672 448 624 480 624 352 672 384 5 polygon +1 1.000 648 368 648 -136 2 polygon +(ext_clk_sel) {/Helvetica cf} 2 19 270.000 1.000 632 176 label +1 1.000 240 352 240 264 280 264 3 polygon +0 1.000 368 352 368 464 512 464 512 352 4 polygon +0 1.000 280 216 280 320 424 320 424 216 4 polygon +1 1.000 464 352 464 -136 2 polygon +1 1.000 360 216 360 -136 2 polygon +(sel2) {/Helvetica cf} 2 16 270.000 1.000 352 -16 label +(sel) {/Helvetica cf} 2 16 270.000 1.000 456 -16 label +1.000 360.000 360 -32 generic::arrowhead +1.000 360.000 464 -32 generic::arrowhead +1.000 360.000 648 -32 generic::arrowhead +(\(1-8\)) {CR} (div) {/Helvetica cf} 4 21 0.000 1.000 440 408 label +(\(1-8\)) {CR} (div) {/Helvetica cf} 4 21 0.000 1.000 352 272 label +1 1.000 424 264 520 264 520 216 624 216 4 polygon +1 1.000 512 416 552 416 552 376 624 376 4 polygon +1 1.000 584 496 584 296 624 296 3 polygon +1 1.000 584 456 624 456 2 polygon +1.000 0.000 584 456 generic::dot +1 1.000 344 -96 376 -72 2 polygon +1 1.000 448 -96 480 -72 2 polygon +(3) {/Helvetica cf} 2 28 0.000 1.000 368 -88 label +(3) {/Helvetica cf} 2 28 0.000 1.000 472 -88 label +1.000 90.000 920 416 generic::arrowhead +1.000 90.000 920 256 generic::arrowhead +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/doc/caravel_clocking.svg b/doc/caravel_clocking.svg new file mode 100644 index 00000000..13b1c1c1 --- /dev/null +++ b/doc/caravel_clocking.svg @@ -0,0 +1,149 @@ + + +XCircuit Version 3.10 +File "caravel_clocking.ps" Page 1 + + + + +DLL + + + + +0˚ phase + + +90˚ phase + + + + +osc + + +clockp + + + + + + +resetb + + +enable + + +div + + +dco + + +ext_trim + + + + +5 + + +26 + + + + + + + + + + + +caravel_clocking + + + + + + +clock pin + + + + +ext_clk + + +pll_clk + + +pll_clk90 + + + + + + + + + +core_clk + + +user_clk + + + + +sync + + + + + + + +ext_clk_sel + + + + + + + +sel2 + + +sel + + + + + +div(1-8) + + +div(1-8) + + + + + + + + + +3 + + +3 + + + + +